source: branches/1.5x/gtk/hig.c @ 8205

Last change on this file since 8205 was 8205, checked in by charles, 13 years ago

(1.5x gtk) minor backports:
(1) remove dead code
(2) minor improvements to the filterbar buttons
(3) various minor formatting changes to reduce the diffs between 1.52 and trunk

  • Property svn:keywords set to Date Rev Author Id
File size: 5.2 KB
Line 
1/*
2 * This file Copyright (C) 2007-2009 Charles Kerr <charles@transmissionbt.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 8205 2009-04-10 17:44: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
94GtkWidget *
95hig_workarea_add_wide_checkbutton( GtkWidget *  t,
96                                   int *        row,
97                                   const char * mnemonic_string,
98                                   gboolean     is_active )
99{
100    GtkWidget * w = gtk_check_button_new_with_mnemonic( mnemonic_string );
101
102    gtk_toggle_button_set_active( GTK_TOGGLE_BUTTON( w ), is_active );
103    hig_workarea_add_wide_control( t, row, w );
104    return w;
105}
106
107void
108hig_workarea_add_label_w( GtkWidget * t,
109                          int         row,
110                          GtkWidget * l )
111{
112    GtkWidget * w = rowNew( l );
113
114    gtk_table_attach( GTK_TABLE( t ), w, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, 0, 0 );
115}
116
117GtkWidget*
118hig_workarea_add_label( GtkWidget *  t,
119                        int          row,
120                        const char * mnemonic_string )
121{
122    GtkWidget * l = gtk_label_new_with_mnemonic( mnemonic_string );
123
124    hig_workarea_add_label_w( t, row, l );
125    return l;
126}
127
128void
129hig_workarea_add_control( GtkWidget * t,
130                          int         row,
131                          GtkWidget * control )
132{
133    if( GTK_IS_MISC( control ) )
134        gtk_misc_set_alignment( GTK_MISC( control ), 0.0f, 0.5f );
135
136    gtk_table_attach( GTK_TABLE( t ), control,
137                      1, 2, row, row + 1,
138                      GTK_EXPAND | GTK_SHRINK | GTK_FILL, 0, 0, 0 );
139}
140
141void
142hig_workarea_add_row_w( GtkWidget * t,
143                        int *       row,
144                        GtkWidget * label,
145                        GtkWidget * control,
146                        GtkWidget * mnemonic )
147{
148    hig_workarea_add_label_w( t, *row, label );
149    hig_workarea_add_control( t, *row, control );
150    if( GTK_IS_LABEL( label ) )
151        gtk_label_set_mnemonic_widget( GTK_LABEL( label ),
152                                       mnemonic ? mnemonic : control );
153    ++ * row;
154}
155
156GtkWidget*
157hig_workarea_add_row( GtkWidget *  t,
158                      int *        row,
159                      const char * mnemonic_string,
160                      GtkWidget *  control,
161                      GtkWidget *  mnemonic )
162{
163    GtkWidget * l = gtk_label_new_with_mnemonic( mnemonic_string );
164
165    hig_workarea_add_row_w( t, row, l, control, mnemonic );
166    return l;
167}
168
169void
170hig_workarea_finish( GtkWidget * t,
171                     int *       row )
172{
173    gtk_table_resize( GTK_TABLE( t ), *row, 2 );
174}
175
176void
177hig_message_dialog_set_text( GtkMessageDialog * dialog,
178                             const char *       primary,
179                             const char *       secondary )
180{
181    gtk_message_dialog_set_markup ( dialog, primary );
182    gtk_message_dialog_format_secondary_text ( dialog, "%s", secondary );
183}
184
Note: See TracBrowser for help on using the repository browser.