(gtk) HIG window layout

This commit is contained in:
Charles Kerr 2008-02-12 16:56:44 +00:00
parent 22cbdfb624
commit 446855bb4a
6 changed files with 98 additions and 141 deletions

205
gtk/hig.c
View File

@ -16,165 +16,150 @@
GtkWidget*
hig_workarea_create (void)
{
GtkWidget * t = gtk_table_new (4, 100, FALSE);
gtk_table_set_row_spacings (GTK_TABLE(t), 6);
gtk_container_set_border_width (GTK_CONTAINER(t), 12);
return t;
GtkWidget * t = gtk_table_new( 1, 2, FALSE );
gtk_container_set_border_width( GTK_CONTAINER( t ), 12 );
gtk_table_set_col_spacings( GTK_TABLE( t ), 12 );
gtk_table_set_row_spacings( GTK_TABLE( t ), 6 );
return t;
}
void
hig_workarea_add_section_divider (GtkWidget * table,
int * row)
hig_workarea_add_section_divider( GtkWidget * t,
int * row )
{
GtkWidget * w = gtk_alignment_new (0.0f, 0.0f, 0.0f, 0.0f);
gtk_widget_set_size_request (w, 0u, 6u);
gtk_table_attach (GTK_TABLE(table), w, 0, 4, *row, *row+1, 0, 0, 0, 0);
++*row;
GtkWidget * w = gtk_alignment_new( 0.0f, 0.0f, 0.0f, 0.0f );
gtk_widget_set_size_request( w, 0u, 6u );
gtk_table_attach( GTK_TABLE( t ), w, 0, 2, *row, *row+1, 0, 0, 0, 0 );
++*row;
}
void
hig_workarea_add_section_title (GtkWidget * table,
int * row,
const char * section_title)
hig_workarea_add_section_title( GtkWidget * t,
int * row,
const char * section_title )
{
char buf[512];
GtkWidget * l;
char buf[512];
GtkWidget * l;
g_snprintf (buf, sizeof(buf), "<b>%s</b>", section_title);
l = gtk_label_new (buf);
gtk_misc_set_alignment (GTK_MISC(l), 0.0f, 0.5f);
gtk_label_set_use_markup (GTK_LABEL(l), TRUE);
gtk_table_attach (GTK_TABLE(table), l, 0, 4, *row, *row+1, GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
++*row;
g_snprintf( buf, sizeof(buf), "<b>%s</b>", section_title );
l = gtk_label_new( buf );
gtk_misc_set_alignment( GTK_MISC( l ), 0.0f, 0.5f );
gtk_label_set_use_markup( GTK_LABEL( l ), TRUE );
gtk_table_attach( GTK_TABLE( t ), l, 0, 2, *row, *row+1, GTK_FILL, 0, 0, 0 );
++*row;
}
void
hig_workarea_add_section_spacer (GtkWidget * table,
int row,
int items_in_section)
static GtkWidget*
control_row_new( GtkWidget * w )
{
GtkWidget * w;
GtkWidget * a;
GtkWidget * h = gtk_hbox_new( FALSE, 0 );
/* spacer to move the fields a little to the right of the name header */
w = gtk_alignment_new (0.0f, 0.0f, 0.0f, 0.0f);
gtk_widget_set_size_request (w, 12u, 0u);
gtk_table_attach (GTK_TABLE(table), w, 0, 1, row, row+items_in_section, 0, 0, 0, 0);
/* spacer */
a = gtk_alignment_new( 0.0f, 0.0f, 0.0f, 0.0f );
gtk_widget_set_size_request( a, 18u, 0u );
gtk_box_pack_start( GTK_BOX( h ), a, FALSE, FALSE, 0 );
/* spacer between the controls and their labels */
w = gtk_alignment_new (0.0f, 0.0f, 0.0f, 0.0f);
gtk_widget_set_size_request (w, 12u, 0u);
gtk_table_attach (GTK_TABLE(table), w, 2, 3, row, row+items_in_section, 0, 0, 0, 0);
/* lhs widget */
if( GTK_IS_MISC( w ) )
gtk_misc_set_alignment( GTK_MISC( w ), 0.0f, 0.5f );
if( GTK_IS_LABEL( w ) )
gtk_label_set_use_markup( GTK_LABEL( w ), TRUE );
gtk_box_pack_start( GTK_BOX( h ), w, TRUE, TRUE, 0 );
return h;
}
void
hig_workarea_add_wide_control (GtkWidget * table,
hig_workarea_add_wide_control( GtkWidget * t,
int * row,
GtkWidget * w)
GtkWidget * w )
{
gtk_table_attach (GTK_TABLE(table), w,
1, 4, *row, *row+1,
GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
++*row;
}
void
hig_workarea_add_double_control (GtkWidget * table,
int * row,
GtkWidget * wl,
GtkWidget * wr)
{
gtk_table_attach (GTK_TABLE(table), wl,
1, 2, *row, *row+1,
GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
gtk_table_attach (GTK_TABLE(table), wr,
3, 4, *row, *row+1,
GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
++*row;
GtkWidget * r = control_row_new( w );
gtk_table_attach( GTK_TABLE( t ), r, 0, 2, *row, *row+1, GTK_FILL, 0, 0, 0 );
++*row;
}
GtkWidget *
hig_workarea_add_wide_checkbutton (GtkWidget * table,
int * row,
const char * mnemonic_string,
gboolean is_active)
hig_workarea_add_wide_checkbutton( GtkWidget * t,
int * row,
const char * mnemonic_string,
gboolean is_active)
{
GtkWidget * w = gtk_check_button_new_with_mnemonic (mnemonic_string);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(w), is_active);
hig_workarea_add_wide_control (table, row, w);
return w;
GtkWidget * w = gtk_check_button_new_with_mnemonic( mnemonic_string );
gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( w ), is_active );
hig_workarea_add_wide_control( t, row, w);
return w;
}
void
hig_workarea_add_label_w (GtkWidget * table,
hig_workarea_add_label_w( GtkWidget * t,
int row,
GtkWidget * l)
GtkWidget * l )
{
if (GTK_IS_MISC(l))
gtk_misc_set_alignment (GTK_MISC(l), 0.0f, 0.5f);
if (GTK_IS_LABEL(l))
gtk_label_set_use_markup (GTK_LABEL(l), TRUE);
gtk_table_attach (GTK_TABLE(table), l, 1, 2, row, row+1, GTK_FILL, GTK_FILL, 0, 0);
GtkWidget * w = control_row_new( l );
gtk_table_attach( GTK_TABLE( t ), w, 0, 1, row, row+1, GTK_FILL, GTK_FILL, 0, 0 );
}
GtkWidget*
hig_workarea_add_label (GtkWidget * table,
int row,
const char * mnemonic_string)
hig_workarea_add_label( GtkWidget * t,
int row,
const char * mnemonic_string )
{
GtkWidget * l = gtk_label_new_with_mnemonic (mnemonic_string);
hig_workarea_add_label_w (table, row, l);
return l;
GtkWidget * l = gtk_label_new_with_mnemonic( mnemonic_string );
hig_workarea_add_label_w( t, row, l );
return l;
}
void
hig_workarea_add_control (GtkWidget * table,
hig_workarea_add_control( GtkWidget * t,
int row,
GtkWidget * control)
GtkWidget * control )
{
if (GTK_IS_MISC(control))
gtk_misc_set_alignment (GTK_MISC(control), 0.0f, 0.5f);
if ( GTK_IS_MISC( control ) )
gtk_misc_set_alignment( GTK_MISC(control), 0.0f, 0.5f );
gtk_table_attach (GTK_TABLE(table), control,
3, 4, row, row+1,
GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0);
gtk_table_attach( GTK_TABLE( t ), control,
1, 2, row, row+1,
GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0 );
}
void
hig_workarea_add_row_w (GtkWidget * table,
int * row,
GtkWidget * label,
GtkWidget * control,
GtkWidget * mnemonic)
hig_workarea_add_row_w( GtkWidget * t,
int * row,
GtkWidget * label,
GtkWidget * control,
GtkWidget * mnemonic )
{
hig_workarea_add_label_w (table, *row, label);
hig_workarea_add_control (table, *row, control);
if (GTK_IS_LABEL(label))
gtk_label_set_mnemonic_widget (GTK_LABEL(label),
mnemonic ? mnemonic : control);
hig_workarea_add_label_w( t, *row, label );
hig_workarea_add_control( t, *row, control );
if ( GTK_IS_LABEL( label ) )
gtk_label_set_mnemonic_widget( GTK_LABEL( label ),
mnemonic ? mnemonic : control );
++*row;
}
GtkWidget*
hig_workarea_add_row (GtkWidget * table,
int * row,
const char * mnemonic_string,
GtkWidget * control,
GtkWidget * mnemonic)
hig_workarea_add_row( GtkWidget * t,
int * row,
const char * mnemonic_string,
GtkWidget * control,
GtkWidget * mnemonic )
{
GtkWidget * l = gtk_label_new_with_mnemonic (mnemonic_string);
hig_workarea_add_row_w (table, row, l, control, mnemonic);
return l;
GtkWidget * l = gtk_label_new_with_mnemonic( mnemonic_string );
hig_workarea_add_row_w( t, row, l, control, mnemonic );
return l;
}
void
hig_workarea_finish (GtkWidget * table,
int * row)
hig_workarea_finish( GtkWidget * t,
int * row)
{
GtkWidget * w = gtk_alignment_new (0.0f, 0.0f, 0.0f, 0.0f);
gtk_widget_set_size_request (w, 0u, 6u);
gtk_table_attach_defaults (GTK_TABLE(table), w, 0, 4, *row, *row+1);
GtkWidget * w = gtk_alignment_new( 0.0f, 0.0f, 0.0f, 0.0f );
gtk_widget_set_size_request( w, 0u, 6u );
gtk_table_attach_defaults( GTK_TABLE( t ), w, 0, 4, *row, *row+1 );
++*row;
gtk_table_resize( GTK_TABLE( t ), *row, 2 );
}
void
@ -182,6 +167,6 @@ hig_message_dialog_set_text (GtkMessageDialog * dialog,
const char * primary,
const char * secondary)
{
gtk_message_dialog_set_markup (dialog, primary);
gtk_message_dialog_format_secondary_text (dialog, "%s", secondary);
gtk_message_dialog_set_markup (dialog, primary);
gtk_message_dialog_format_secondary_text (dialog, "%s", secondary);
}

View File

@ -31,22 +31,11 @@ hig_workarea_add_section_title (GtkWidget * table,
int * row,
const char * section_title);
void
hig_workarea_add_section_spacer (GtkWidget * table,
int row,
int items_in_section);
void
hig_workarea_add_wide_control (GtkWidget * table,
int * row,
GtkWidget * w);
void
hig_workarea_add_double_control (GtkWidget * table,
int * row,
GtkWidget * wl,
GtkWidget * wr);
GtkWidget*
hig_workarea_add_wide_checkbutton (GtkWidget * table,
int * row,

View File

@ -247,7 +247,6 @@ make_meta_ui( GtkWindow * parent, tr_handle * handle )
t = hig_workarea_create ();
hig_workarea_add_section_title (t, &row, _("Files"));
hig_workarea_add_section_spacer (t, row, 3);
g_snprintf( name, sizeof(name), "%s:", _("File _Type"));
h = gtk_hbox_new( FALSE, GUI_PAD_SMALL );
@ -285,7 +284,6 @@ make_meta_ui( GtkWindow * parent, tr_handle * handle )
hig_workarea_add_section_divider( t, &row );
hig_workarea_add_section_title (t, &row, _("Torrent"));
hig_workarea_add_section_spacer (t, row, 3);
g_snprintf( name, sizeof(name), _("Private to this Tracker") );
w = ui->private_check = hig_workarea_add_wide_checkbutton( t, &row, name, FALSE );

View File

@ -94,7 +94,6 @@ stats_dialog_create( GtkWindow * parent, TrCore * core )
ui->core = core;
hig_workarea_add_section_title( t, &row, _( "Current Session" ) );
hig_workarea_add_section_spacer( t, row, 4 );
l = ui->one_up_lb = gtk_label_new( NULL );
hig_workarea_add_row( t, &row, _("Uploaded:"), l, NULL );
l = ui->one_down_lb = gtk_label_new( NULL );
@ -105,7 +104,6 @@ stats_dialog_create( GtkWindow * parent, TrCore * core )
hig_workarea_add_row( t, &row, _("Duration:"), l, NULL );
hig_workarea_add_section_divider( t, &row );
hig_workarea_add_section_title( t, &row, _("Cumulative") );
hig_workarea_add_section_spacer( t, row, 5 );
l = ui->all_sessions_lb = gtk_label_new( _("Program started %d times") );
hig_workarea_add_label_w( t, row++, l );
l = ui->all_up_lb = gtk_label_new( NULL );

View File

@ -666,7 +666,6 @@ static GtkWidget* info_page_new (tr_torrent * tor)
const tr_info * info = tr_torrentInfo(tor);
hig_workarea_add_section_title (t, &row, _("Torrent Information"));
hig_workarea_add_section_spacer (t, row, 5);
g_snprintf (name, sizeof(name), namefmt, _("Tracker"));
track = info->trackerList->list;
@ -712,7 +711,6 @@ static GtkWidget* info_page_new (tr_torrent * tor)
hig_workarea_add_section_divider (t, &row);
hig_workarea_add_section_title (t, &row, _("Created by"));
hig_workarea_add_section_spacer (t, row, 2);
g_snprintf (name, sizeof(name), namefmt, _("Creator"));
l = gtk_label_new (*info->creator ? info->creator : _("N/A"));
@ -726,7 +724,6 @@ static GtkWidget* info_page_new (tr_torrent * tor)
hig_workarea_add_section_divider (t, &row);
hig_workarea_add_section_title (t, &row, _("Location"));
hig_workarea_add_section_spacer (t, row, 3);
g_snprintf (name, sizeof(name), namefmt, _("Downloaded data"));
l = gtk_label_new (tr_torrentGetFolder (tor));
@ -840,7 +837,6 @@ activity_page_new (TrTorrent * gtor)
a->gtor = gtor;
hig_workarea_add_section_title (t, &row, _("Transfer"));
hig_workarea_add_section_spacer (t, row, 8);
l = a->state_lb = gtk_label_new (NULL);
hig_workarea_add_row (t, &row, _("State:"), l, NULL);
@ -871,7 +867,6 @@ activity_page_new (TrTorrent * gtor)
hig_workarea_add_section_divider (t, &row);
hig_workarea_add_section_title (t, &row, _("Completeness"));
hig_workarea_add_section_spacer (t, row, 1);
w = a->availability_da = gtk_drawing_area_new ();
gtk_widget_set_size_request (w, 0u, 100u);
@ -881,7 +876,6 @@ activity_page_new (TrTorrent * gtor)
hig_workarea_add_section_divider (t, &row);
hig_workarea_add_section_title (t, &row, _("Dates"));
hig_workarea_add_section_spacer (t, row, 3);
l = a->date_added_lb = gtk_label_new (NULL);
hig_workarea_add_row (t, &row, _("Date added:"), l, NULL);
@ -983,7 +977,6 @@ options_page_new ( TrTorrent * gtor )
row = 0;
t = hig_workarea_create ();
hig_workarea_add_section_title (t, &row, _("Speed Limits") );
hig_workarea_add_section_spacer (t, row, 2);
tb = gtk_check_button_new_with_mnemonic (_("Limit _download speed to:"));
b = tr_torrentGetSpeedMode(tor,TR_DOWN) == TR_SPEEDLIMIT_SINGLE;
@ -1021,7 +1014,6 @@ options_page_new ( TrTorrent * gtor )
hig_workarea_add_section_divider (t, &row);
hig_workarea_add_section_title (t, &row, _("Peer Connections"));
hig_workarea_add_section_spacer (t, row, 1);
maxConnectedPeers = tr_torrentGetMaxConnectedPeers( tor );
w = gtk_spin_button_new_with_range( 1, 3000, 5 );

View File

@ -299,32 +299,30 @@ tr_prefs_dialog_new( GObject * core, GtkWindow * parent )
t = hig_workarea_create ();
hig_workarea_add_section_title (t, &row, _("Speed Limits"));
hig_workarea_add_section_spacer (t, row, 2);
s = _("_Limit upload speed (KiB/s)");
w = new_check_button( s, PREF_KEY_UL_LIMIT_ENABLED, core );
w2 = new_spin_button( PREF_KEY_UL_LIMIT, core, 0, INT_MAX, 5 );
gtk_widget_set_sensitive( GTK_WIDGET(w2), pref_flag_get( PREF_KEY_UL_LIMIT_ENABLED ) );
g_signal_connect( w, "toggled", G_CALLBACK(target_cb), w2 );
hig_workarea_add_double_control( t, &row, w, w2 );
hig_workarea_add_row_w( t, &row, w, w2, NULL );
s = _("Li_mit download speed (KiB/s)");
w = new_check_button( s, PREF_KEY_DL_LIMIT_ENABLED, core );
w2 = new_spin_button( PREF_KEY_DL_LIMIT, core, 0, INT_MAX, 5 );
gtk_widget_set_sensitive( GTK_WIDGET(w2), pref_flag_get( PREF_KEY_DL_LIMIT_ENABLED ) );
g_signal_connect( w, "toggled", G_CALLBACK(target_cb), w2 );
hig_workarea_add_double_control( t, &row, w, w2 );
hig_workarea_add_row_w( t, &row, w, w2, NULL );
hig_workarea_add_section_divider( t, &row );
hig_workarea_add_section_title (t, &row, _("Downloads"));
hig_workarea_add_section_spacer (t, row, 3);
s = _("P_rompt for download directory");
w = new_check_button( s, PREF_KEY_DIR_ASK, core );
w2 = new_path_chooser_button( PREF_KEY_DIR_DEFAULT, core );
gtk_widget_set_sensitive( GTK_WIDGET(w2), !pref_flag_get( PREF_KEY_DIR_ASK ) );
g_signal_connect( w, "toggled", G_CALLBACK(target_invert_cb), w2 );
hig_workarea_add_double_control( t, &row, w, w2 );
hig_workarea_add_row_w( t, &row, w, w2, NULL );
w = new_action_combo( PREF_KEY_ADDSTD, core );
s = _("For torrents added _normally:");
@ -336,7 +334,6 @@ tr_prefs_dialog_new( GObject * core, GtkWindow * parent )
hig_workarea_add_section_divider( t, &row );
hig_workarea_add_section_title( t, &row, _( "Peer Connections" ) );
hig_workarea_add_section_spacer(t , row, 2 );
w = new_spin_button( PREF_KEY_MAX_PEERS_GLOBAL, core, 1, 3000, 5 );
hig_workarea_add_row( t, &row, _( "Global maximum connected peers:" ), w, NULL );
@ -345,7 +342,6 @@ tr_prefs_dialog_new( GObject * core, GtkWindow * parent )
hig_workarea_add_section_divider( t, &row );
hig_workarea_add_section_title (t, &row, _("Network"));
hig_workarea_add_section_spacer (t, row, 2);
s = _("_Automatically map port" );
w = new_check_button( s, PREF_KEY_NAT, core );
@ -369,7 +365,6 @@ tr_prefs_dialog_new( GObject * core, GtkWindow * parent )
hig_workarea_add_section_divider( t, &row );
hig_workarea_add_section_title (t, &row, _("Options"));
hig_workarea_add_section_spacer (t, row, 3);
s = _("Use peer _exchange if possible");
w = new_check_button( s, PREF_KEY_PEX, core );