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 $
15 #include "util.h" /* gtr_hbox_new */
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
);
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 );
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 );
46 hig_workarea_add_section_title( GtkWidget
* t
, guint
* row
, const char * section_title
)
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
);
59 rowNew( GtkWidget
* w
)
62 GtkWidget
* h
= gtr_hbox_new( FALSE
, 0 );
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 );
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 );
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 );
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
,
102 hig_workarea_add_wide_checkbutton( GtkWidget
* t
,
104 const char * mnemonic_string
,
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
);
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 );
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
);
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
,
139 GTK_EXPAND
| GTK_SHRINK
| GTK_FILL
,
140 GTK_EXPAND
| GTK_SHRINK
| GTK_FILL
,
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
,
152 GTK_EXPAND
| GTK_SHRINK
| GTK_FILL
, 0, 0, 0 );
156 hig_workarea_add_row_w( GtkWidget
* t
,
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
);
171 hig_workarea_add_row( GtkWidget
* t
,
173 const char * mnemonic_string
,
175 GtkWidget
* mnemonic
)
177 GtkWidget
* l
= gtk_label_new_with_mnemonic( mnemonic_string
);
179 hig_workarea_add_row_w( t
, row
, l
, control
, mnemonic
);
184 hig_workarea_add_tall_row( GtkWidget
* table
,
186 const char * mnemonic_string
,
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
);
208 hig_workarea_finish( GtkWidget
* t
, guint
* row
)
210 gtk_table_resize( GTK_TABLE( t
), *row
, 2 );