Transmission: update from 2.42 to 2.50
[tomato.git] / release / src / router / transmission / gtk / hig.c
blobaf40b61055d8f0cc9b4ad915ce860c8b9a03ee13
1 /*
2 * This file Copyright (C) Mnemosyne LLC
4 * This file is licensed by the GPL version 2. Works owned by the
5 * Transmission project are granted a special exemption to clause 2(b)
6 * so that the bulk of its code can remain under the MIT license.
7 * This exemption does not extend to derived works not owned by
8 * the Transmission project.
10 * $Id: hig.c 12963 2011-10-11 04:11:08Z jordan $
13 #include <gtk/gtk.h>
14 #include "hig.h"
15 #include "util.h" /* gtr_hbox_new */
17 GtkWidget*
18 hig_workarea_create( void )
20 GtkWidget * t = gtk_table_new( 1, 2, FALSE );
22 gtk_container_set_border_width( GTK_CONTAINER( t ), GUI_PAD_BIG );
23 gtk_table_set_col_spacing( GTK_TABLE( t ), 0, GUI_PAD_BIG );
24 gtk_table_set_row_spacings( GTK_TABLE( t ), GUI_PAD );
25 return t;
28 void
29 hig_workarea_add_section_divider( GtkWidget * t, guint * row )
31 GtkWidget * w = gtk_alignment_new( 0.0f, 0.0f, 0.0f, 0.0f );
33 gtk_widget_set_size_request( w, 0u, 6u );
34 gtk_table_attach( GTK_TABLE( t ), w, 0, 2, *row, *row + 1, 0, 0, 0, 0 );
35 ++ * row;
38 void
39 hig_workarea_add_section_title_widget( GtkWidget * t, guint * row, GtkWidget * w )
41 gtk_table_attach( GTK_TABLE( t ), w, 0, 2, *row, *row + 1, ~0, 0, 0, 0 );
42 ++ * row;
45 void
46 hig_workarea_add_section_title( GtkWidget * t, guint * row, const char * section_title )
48 char buf[512];
49 GtkWidget * l;
51 g_snprintf( buf, sizeof( buf ), "<b>%s</b>", section_title );
52 l = gtk_label_new( buf );
53 gtk_misc_set_alignment( GTK_MISC( l ), 0.0f, 0.5f );
54 gtk_label_set_use_markup( GTK_LABEL( l ), TRUE );
55 hig_workarea_add_section_title_widget( t, row, l );
58 static GtkWidget*
59 rowNew( GtkWidget * w )
61 GtkWidget * a;
62 GtkWidget * h = gtr_hbox_new( FALSE, 0 );
64 /* spacer */
65 a = gtk_alignment_new( 0.0f, 0.0f, 0.0f, 0.0f );
66 gtk_widget_set_size_request( a, 18u, 0u );
67 gtk_box_pack_start( GTK_BOX( h ), a, FALSE, FALSE, 0 );
69 /* lhs widget */
70 if( GTK_IS_MISC( w ) )
71 gtk_misc_set_alignment( GTK_MISC( w ), 0.0f, 0.5f );
72 if( GTK_IS_LABEL( w ) )
73 gtk_label_set_use_markup( GTK_LABEL( w ), TRUE );
74 gtk_box_pack_start( GTK_BOX( h ), w, TRUE, TRUE, 0 );
76 return h;
79 void
80 hig_workarea_add_wide_control( GtkWidget * t, guint * row, GtkWidget * w )
82 GtkWidget * r = rowNew( w );
84 gtk_table_attach( GTK_TABLE( t ), r, 0, 2, *row, *row + 1, GTK_FILL, 0, 0, 0 );
85 ++ * row;
88 void
89 hig_workarea_add_wide_tall_control( GtkWidget * t, guint * row, GtkWidget * w )
91 GtkWidget * r = rowNew( w );
93 gtk_table_attach( GTK_TABLE( t ), r, 0, 2, *row, *row + 1,
94 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
95 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
96 0, 0 );
98 ++ * row;
101 GtkWidget *
102 hig_workarea_add_wide_checkbutton( GtkWidget * t,
103 guint * row,
104 const char * mnemonic_string,
105 gboolean is_active )
107 GtkWidget * w = gtk_check_button_new_with_mnemonic( mnemonic_string );
109 gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( w ), is_active );
110 hig_workarea_add_wide_control( t, row, w );
111 return w;
114 void
115 hig_workarea_add_label_w( GtkWidget * t, guint row, GtkWidget * l )
117 GtkWidget * w = rowNew( l );
119 gtk_table_attach( GTK_TABLE( t ), w, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0 );
122 GtkWidget*
123 hig_workarea_add_label( GtkWidget * t, guint row, const char * mnemonic_string )
125 GtkWidget * l = gtk_label_new_with_mnemonic( mnemonic_string );
127 hig_workarea_add_label_w( t, row, l );
128 return l;
131 static void
132 hig_workarea_add_tall_control( GtkWidget * t, guint row, GtkWidget * control )
134 if( GTK_IS_MISC( control ) )
135 gtk_misc_set_alignment( GTK_MISC( control ), 0.0f, 0.5f );
137 gtk_table_attach( GTK_TABLE( t ), control,
138 1, 2, row, row + 1,
139 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
140 GTK_EXPAND | GTK_SHRINK | GTK_FILL,
141 0, 0 );
144 static void
145 hig_workarea_add_control( GtkWidget * t, guint row, GtkWidget * control )
147 if( GTK_IS_MISC( control ) )
148 gtk_misc_set_alignment( GTK_MISC( control ), 0.0f, 0.5f );
150 gtk_table_attach( GTK_TABLE( t ), control,
151 1, 2, row, row + 1,
152 GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0, 0 );
155 void
156 hig_workarea_add_row_w( GtkWidget * t,
157 guint * row,
158 GtkWidget * label,
159 GtkWidget * control,
160 GtkWidget * mnemonic )
162 hig_workarea_add_label_w( t, *row, label );
163 hig_workarea_add_control( t, *row, control );
164 if( GTK_IS_LABEL( label ) )
165 gtk_label_set_mnemonic_widget( GTK_LABEL( label ),
166 mnemonic ? mnemonic : control );
167 ++ * row;
170 GtkWidget*
171 hig_workarea_add_row( GtkWidget * t,
172 guint * row,
173 const char * mnemonic_string,
174 GtkWidget * control,
175 GtkWidget * mnemonic )
177 GtkWidget * l = gtk_label_new_with_mnemonic( mnemonic_string );
179 hig_workarea_add_row_w( t, row, l, control, mnemonic );
180 return l;
183 GtkWidget*
184 hig_workarea_add_tall_row( GtkWidget * table,
185 guint * row,
186 const char * mnemonic_string,
187 GtkWidget * control,
188 GtkWidget * mnemonic )
190 GtkWidget * l = gtk_label_new_with_mnemonic( mnemonic_string );
191 GtkWidget * h = gtr_hbox_new( FALSE, 0 );
192 GtkWidget * v = gtr_vbox_new( FALSE, 0 );
193 gtk_box_pack_start( GTK_BOX( h ), l, FALSE, FALSE, 0 );
194 gtk_box_pack_start( GTK_BOX( v ), h, FALSE, FALSE, GUI_PAD_SMALL );
196 hig_workarea_add_label_w( table, *row, v );
197 hig_workarea_add_tall_control( table, *row, control );
199 if( GTK_IS_LABEL( l ) )
200 gtk_label_set_mnemonic_widget( GTK_LABEL( l ),
201 mnemonic ? mnemonic : control );
203 ++ * row;
204 return l;
207 void
208 hig_workarea_finish( GtkWidget * t, guint * row )
210 gtk_table_resize( GTK_TABLE( t ), *row, 2 );