source: trunk/gtk/hig.c @ 11599

Last change on this file since 11599 was 11599, checked in by charles, 11 years ago

(trunk) Join the 21st century and use only 1 space at the end sentences. This commit is nearly as important as the semi-annual ones that remove trailing spaces from the ends of lines of code... :)

  • Property svn:keywords set to Date Rev Author Id
File size: 6.6 KB
Line 
1/*
2 * This file Copyright (C) 2007-2010 Mnemosyne LLC
3 *
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.
9 *
10 * $Id: hig.c 11599 2010-12-27 19:18:17Z charles $
11 */
12
13#include <gtk/gtk.h>
14#include "hig.h"
15
16GtkWidget*
17hig_workarea_create( void )
18{
19    GtkWidget * t = gtk_table_new( 1, 2, FALSE );
20
21    gtk_container_set_border_width( GTK_CONTAINER( t ), GUI_PAD_BIG );
22    gtk_table_set_col_spacing( GTK_TABLE( t ), 0, GUI_PAD_BIG );
23    gtk_table_set_row_spacings( GTK_TABLE( t ), GUI_PAD );
24    return t;
25}
26
27void
28hig_workarea_add_section_divider( GtkWidget * t,
29                                  int *       row )
30{
31    GtkWidget * w = gtk_alignment_new( 0.0f, 0.0f, 0.0f, 0.0f );
32
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;
36}
37
38void
39hig_workarea_add_section_title_widget( GtkWidget * t,
40                                       int *       row,
41                                       GtkWidget * w )
42{
43    gtk_table_attach( GTK_TABLE( t ), w, 0, 2, *row, *row + 1, ~0, 0, 0, 0 );
44    ++ * row;
45}
46
47void
48hig_workarea_add_section_title( GtkWidget *  t,
49                                int *        row,
50                                const char * section_title )
51{
52    char        buf[512];
53    GtkWidget * l;
54
55    g_snprintf( buf, sizeof( buf ), "<b>%s</b>", section_title );
56    l = gtk_label_new( buf );
57    gtk_misc_set_alignment( GTK_MISC( l ), 0.0f, 0.5f );
58    gtk_label_set_use_markup( GTK_LABEL( l ), TRUE );
59    hig_workarea_add_section_title_widget( t, row, l );
60}
61
62static GtkWidget*
63rowNew( GtkWidget * w )
64{
65    GtkWidget * a;
66    GtkWidget * h = gtk_hbox_new( FALSE, 0 );
67
68    /* spacer */
69    a = gtk_alignment_new( 0.0f, 0.0f, 0.0f, 0.0f );
70    gtk_widget_set_size_request( a, 18u, 0u );
71    gtk_box_pack_start( GTK_BOX( h ), a, FALSE, FALSE, 0 );
72
73    /* lhs widget */
74    if( GTK_IS_MISC( w ) )
75        gtk_misc_set_alignment( GTK_MISC( w ), 0.0f, 0.5f );
76    if( GTK_IS_LABEL( w ) )
77        gtk_label_set_use_markup( GTK_LABEL( w ), TRUE );
78    gtk_box_pack_start( GTK_BOX( h ), w, TRUE, TRUE, 0 );
79
80    return h;
81}
82
83void
84hig_workarea_add_wide_control( GtkWidget * t,
85                               int *       row,
86                               GtkWidget * w )
87{
88    GtkWidget * r = rowNew( w );
89
90    gtk_table_attach( GTK_TABLE( t ), r, 0, 2, *row, *row + 1, GTK_FILL, 0, 0, 0 );
91    ++ * row;
92}
93
94void
95hig_workarea_add_wide_tall_control( GtkWidget * t,
96                                    int *       row,
97                                    GtkWidget * w )
98{
99    GtkWidget * r = rowNew( w );
100
101    gtk_table_attach( GTK_TABLE( t ), r, 0, 2, *row, *row + 1,
102                      GTK_EXPAND | GTK_SHRINK | GTK_FILL,
103                      GTK_EXPAND | GTK_SHRINK | GTK_FILL,
104                      0, 0 );
105
106    ++ * row;
107}
108
109GtkWidget *
110hig_workarea_add_wide_checkbutton( GtkWidget *  t,
111                                   int *        row,
112                                   const char * mnemonic_string,
113                                   gboolean     is_active )
114{
115    GtkWidget * w = gtk_check_button_new_with_mnemonic( mnemonic_string );
116
117    gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( w ), is_active );
118    hig_workarea_add_wide_control( t, row, w );
119    return w;
120}
121
122void
123hig_workarea_add_label_w( GtkWidget * t,
124                          int         row,
125                          GtkWidget * l )
126{
127    GtkWidget * w = rowNew( l );
128
129    gtk_table_attach( GTK_TABLE( t ), w, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0 );
130}
131
132GtkWidget*
133hig_workarea_add_label( GtkWidget *  t,
134                        int          row,
135                        const char * mnemonic_string )
136{
137    GtkWidget * l = gtk_label_new_with_mnemonic( mnemonic_string );
138
139    hig_workarea_add_label_w( t, row, l );
140    return l;
141}
142
143static void
144hig_workarea_add_tall_control( GtkWidget * t,
145                               int         row,
146                               GtkWidget * control )
147{
148    if( GTK_IS_MISC( control ) )
149        gtk_misc_set_alignment( GTK_MISC( control ), 0.0f, 0.5f );
150
151    gtk_table_attach( GTK_TABLE( t ), control,
152                      1, 2, row, row + 1,
153                      GTK_EXPAND | GTK_SHRINK | GTK_FILL,
154                      GTK_EXPAND | GTK_SHRINK | GTK_FILL,
155                      0, 0 );
156}
157
158static void
159hig_workarea_add_control( GtkWidget * t,
160                          int         row,
161                          GtkWidget * control )
162{
163    if( GTK_IS_MISC( control ) )
164        gtk_misc_set_alignment( GTK_MISC( control ), 0.0f, 0.5f );
165
166    gtk_table_attach( GTK_TABLE( t ), control,
167                      1, 2, row, row + 1,
168                      GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0, 0 );
169}
170
171void
172hig_workarea_add_row_w( GtkWidget * t,
173                        int *       row,
174                        GtkWidget * label,
175                        GtkWidget * control,
176                        GtkWidget * mnemonic )
177{
178    hig_workarea_add_label_w( t, *row, label );
179    hig_workarea_add_control( t, *row, control );
180    if( GTK_IS_LABEL( label ) )
181        gtk_label_set_mnemonic_widget( GTK_LABEL( label ),
182                                       mnemonic ? mnemonic : control );
183    ++ * row;
184}
185
186GtkWidget*
187hig_workarea_add_row( GtkWidget *  t,
188                      int *        row,
189                      const char * mnemonic_string,
190                      GtkWidget *  control,
191                      GtkWidget *  mnemonic )
192{
193    GtkWidget * l = gtk_label_new_with_mnemonic( mnemonic_string );
194
195    hig_workarea_add_row_w( t, row, l, control, mnemonic );
196    return l;
197}
198
199GtkWidget*
200hig_workarea_add_tall_row( GtkWidget *  table,
201                           int *        row,
202                           const char * mnemonic_string,
203                           GtkWidget *  control,
204                           GtkWidget *  mnemonic )
205{
206    GtkWidget * l = gtk_label_new_with_mnemonic( mnemonic_string );
207    GtkWidget * h = gtk_hbox_new( FALSE, 0 );
208    GtkWidget * v = gtk_vbox_new( FALSE, 0 );
209    gtk_box_pack_start( GTK_BOX( h ), l, FALSE, FALSE, 0 );
210    gtk_box_pack_start( GTK_BOX( v ), h, FALSE, FALSE, GUI_PAD_SMALL );
211
212    hig_workarea_add_label_w( table, *row, v );
213    hig_workarea_add_tall_control( table, *row, control );
214
215    if( GTK_IS_LABEL( l ) )
216        gtk_label_set_mnemonic_widget( GTK_LABEL( l ),
217                                       mnemonic ? mnemonic : control );
218
219    ++ * row;
220    return l;
221}
222
223void
224hig_workarea_finish( GtkWidget * t,
225                     int *       row )
226{
227    gtk_table_resize( GTK_TABLE( t ), *row, 2 );
228}
Note: See TracBrowser for help on using the repository browser.