source: trunk/gtk/hig.c @ 5024

Last change on this file since 5024 was 5024, checked in by charles, 14 years ago

(gtk) minor hig tweaks to the preferences dialog -- spacing, capitalization

  • Property svn:keywords set to Date Rev Author Id
File size: 5.0 KB
Line 
1/*
2 * This file Copyright (C) 2007-2008 Charles Kerr <charles@rebelbase.com>
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 5024 2008-02-13 15:23:16Z 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    gtk_container_set_border_width( GTK_CONTAINER( t ), 12 );
21    gtk_table_set_col_spacing( GTK_TABLE( t ), 0, 12 );
22    gtk_table_set_row_spacings( GTK_TABLE( t ), 6 );
23    return t;
24}
25
26void
27hig_workarea_add_section_divider( GtkWidget   * t,
28                                  int         * row )
29{
30    GtkWidget * w = gtk_alignment_new( 0.0f, 0.0f, 0.0f, 0.0f );
31    gtk_widget_set_size_request( w, 0u, 6u );
32    gtk_table_attach( GTK_TABLE( t ), w, 0, 2, *row, *row+1, 0, 0, 0, 0 );
33    ++*row;
34}
35
36void
37hig_workarea_add_section_title( GtkWidget   * t,
38                                int         * row,
39                                const char  * section_title )
40{
41    char buf[512];
42    GtkWidget * l;
43
44    g_snprintf( buf, sizeof(buf), "<b>%s</b>", section_title );
45    l = gtk_label_new( buf );
46    gtk_misc_set_alignment( GTK_MISC( l ), 0.0f, 0.5f );
47    gtk_label_set_use_markup( GTK_LABEL( l ), TRUE );
48    gtk_table_attach( GTK_TABLE( t ), l, 0, 2, *row, *row+1, GTK_FILL, 0, 0, 0 );
49    ++*row;
50}
51
52static GtkWidget*
53control_row_new( GtkWidget * w )
54{
55    GtkWidget * a;
56    GtkWidget * h = gtk_hbox_new( FALSE, 0 );
57
58    /* spacer */
59    a = gtk_alignment_new( 0.0f, 0.0f, 0.0f, 0.0f );
60    gtk_widget_set_size_request( a, 18u, 0u );
61    gtk_box_pack_start( GTK_BOX( h ), a, FALSE, FALSE, 0 );
62
63    /* lhs widget */
64    if( GTK_IS_MISC( w ) )
65        gtk_misc_set_alignment( GTK_MISC( w ), 0.0f, 0.5f );
66    if( GTK_IS_LABEL( w ) )
67        gtk_label_set_use_markup( GTK_LABEL( w ), TRUE );
68    gtk_box_pack_start( GTK_BOX( h ), w, TRUE, TRUE, 0 );
69
70    return h;
71}
72
73void
74hig_workarea_add_wide_control( GtkWidget * t,
75                               int       * row,
76                               GtkWidget * w )
77{
78    GtkWidget * r = control_row_new( w );
79    gtk_table_attach( GTK_TABLE( t ), r, 0, 2, *row, *row+1, GTK_FILL, 0, 0, 0 );
80    ++*row;
81}
82
83GtkWidget *
84hig_workarea_add_wide_checkbutton( GtkWidget   * t,
85                                   int         * row,
86                                   const char  * mnemonic_string,
87                                   gboolean      is_active)
88{
89    GtkWidget * w = gtk_check_button_new_with_mnemonic( mnemonic_string );
90    gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( w ), is_active );
91    hig_workarea_add_wide_control( t, row, w);
92    return w;
93}
94
95void
96hig_workarea_add_label_w( GtkWidget   * t,
97                          int           row,
98                          GtkWidget   * l )
99{
100    GtkWidget * w = control_row_new( l );
101    gtk_table_attach( GTK_TABLE( t ), w, 0, 1, row, row+1, GTK_FILL, GTK_FILL, 0, 0 );
102}
103
104GtkWidget*
105hig_workarea_add_label( GtkWidget   * t,
106                        int           row,
107                        const char  * mnemonic_string )
108{
109    GtkWidget * l = gtk_label_new_with_mnemonic( mnemonic_string );
110    hig_workarea_add_label_w( t, row, l );
111    return l;
112}
113
114void
115hig_workarea_add_control( GtkWidget   * t,
116                          int           row,
117                          GtkWidget   * control )
118{
119    if ( GTK_IS_MISC( control ) )
120        gtk_misc_set_alignment( GTK_MISC(control), 0.0f, 0.5f );
121
122    gtk_table_attach( GTK_TABLE( t ), control,
123                      1, 2, row, row+1,
124                      GTK_EXPAND|GTK_SHRINK|GTK_FILL, 0, 0, 0 );
125}
126
127void
128hig_workarea_add_row_w( GtkWidget  * t,
129                        int        * row,
130                        GtkWidget  * label,
131                        GtkWidget  * control,
132                        GtkWidget  * mnemonic )
133{
134   hig_workarea_add_label_w( t, *row, label );
135   hig_workarea_add_control( t, *row, control );
136   if ( GTK_IS_LABEL( label ) )
137      gtk_label_set_mnemonic_widget( GTK_LABEL( label ),
138                                      mnemonic ? mnemonic : control );
139  ++*row;
140}
141
142GtkWidget*
143hig_workarea_add_row( GtkWidget   * t,
144                      int         * row,
145                      const char  * mnemonic_string,
146                      GtkWidget   * control,
147                      GtkWidget   * mnemonic )
148{
149    GtkWidget * l = gtk_label_new_with_mnemonic( mnemonic_string );
150    hig_workarea_add_row_w( t, row, l, control, mnemonic );
151    return l;
152}
153
154void
155hig_workarea_finish( GtkWidget   * t,
156                     int         * row)
157{
158    gtk_table_resize( GTK_TABLE( t ), *row, 2 );
159}
160
161void
162hig_message_dialog_set_text (GtkMessageDialog * dialog,
163                             const char       * primary,
164                             const char       * secondary)
165{
166    gtk_message_dialog_set_markup (dialog, primary);
167    gtk_message_dialog_format_secondary_text (dialog, "%s", secondary);
168}
Note: See TracBrowser for help on using the repository browser.