Transmission: update to 2.76
[tomato.git] / release / src / router / transmission / gtk / hig.c
blob317a19b7040589f0261589921bbe3d95dca84336
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 13739 2013-01-03 23:41:02Z jordan $
13 #include <gtk/gtk.h>
14 #include "hig.h"
16 GtkWidget*
17 hig_workarea_create (void)
19 GtkWidget * grid = gtk_grid_new ();
21 gtk_container_set_border_width (GTK_CONTAINER (grid), GUI_PAD_BIG);
22 gtk_grid_set_row_spacing (GTK_GRID (grid), GUI_PAD);
23 gtk_grid_set_column_spacing (GTK_GRID (grid), GUI_PAD_BIG);
25 return grid;
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_grid_attach (GTK_GRID (t), w, 0, *row, 2, 1);
35 ++ * row;
38 void
39 hig_workarea_add_section_title_widget (GtkWidget * t, guint * row, GtkWidget * w)
41 gtk_widget_set_hexpand (w, TRUE);
42 gtk_grid_attach (GTK_GRID (t), w, 0, *row, 2, 1);
43 ++ * row;
46 void
47 hig_workarea_add_section_title (GtkWidget * t, guint * row, const char * section_title)
49 char buf[512];
50 GtkWidget * l;
52 g_snprintf (buf, sizeof (buf), "<b>%s</b>", section_title);
53 l = gtk_label_new (buf);
54 gtk_misc_set_alignment (GTK_MISC (l), 0.0f, 0.5f);
55 gtk_label_set_use_markup (GTK_LABEL (l), TRUE);
56 hig_workarea_add_section_title_widget (t, row, l);
59 void
60 hig_workarea_add_wide_control (GtkWidget * t, guint * row, GtkWidget * w)
62 gtk_widget_set_hexpand (w, TRUE);
63 gtk_widget_set_margin_left (w, 18);
64 gtk_grid_attach (GTK_GRID (t), w, 0, *row, 2, 1);
65 ++ * row;
67 void
68 hig_workarea_add_wide_tall_control (GtkWidget * t, guint * row, GtkWidget * w)
70 gtk_widget_set_hexpand (w, TRUE);
71 gtk_widget_set_vexpand (w, TRUE);
72 hig_workarea_add_wide_control (t, row, w);
75 GtkWidget *
76 hig_workarea_add_wide_checkbutton (GtkWidget * t,
77 guint * row,
78 const char * mnemonic_string,
79 gboolean is_active)
81 GtkWidget * w = gtk_check_button_new_with_mnemonic (mnemonic_string);
83 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (w), is_active);
84 hig_workarea_add_wide_control (t, row, w);
85 return w;
88 void
89 hig_workarea_add_label_w (GtkWidget * t, guint row, GtkWidget * w)
91 gtk_widget_set_margin_left (w, 18);
92 if (GTK_IS_MISC (w))
93 gtk_misc_set_alignment (GTK_MISC (w), 0.0f, 0.5f);
94 if (GTK_IS_LABEL (w))
95 gtk_label_set_use_markup (GTK_LABEL (w), TRUE);
96 gtk_grid_attach (GTK_GRID (t), w, 0, row, 1, 1);
99 static void
100 hig_workarea_add_tall_control (GtkWidget * t, guint row, GtkWidget * control)
102 if (GTK_IS_MISC (control))
103 gtk_misc_set_alignment (GTK_MISC (control), 0.0f, 0.5f);
105 g_object_set (control, "expand", TRUE, NULL);
106 gtk_grid_attach (GTK_GRID (t), control, 1, row, 1, 1);
109 static void
110 hig_workarea_add_control (GtkWidget * t, guint row, GtkWidget * control)
112 if (GTK_IS_MISC (control))
113 gtk_misc_set_alignment (GTK_MISC (control), 0.0f, 0.5f);
115 gtk_widget_set_hexpand (control, TRUE);
116 gtk_grid_attach (GTK_GRID (t), control, 1, row, 1, 1);
119 void
120 hig_workarea_add_row_w (GtkWidget * t,
121 guint * row,
122 GtkWidget * label,
123 GtkWidget * control,
124 GtkWidget * mnemonic)
126 hig_workarea_add_label_w (t, *row, label);
127 hig_workarea_add_control (t, *row, control);
128 if (GTK_IS_LABEL (label))
129 gtk_label_set_mnemonic_widget (GTK_LABEL (label),
130 mnemonic ? mnemonic : control);
131 ++ * row;
134 GtkWidget*
135 hig_workarea_add_row (GtkWidget * t,
136 guint * row,
137 const char * mnemonic_string,
138 GtkWidget * control,
139 GtkWidget * mnemonic)
141 GtkWidget * l = gtk_label_new_with_mnemonic (mnemonic_string);
143 hig_workarea_add_row_w (t, row, l, control, mnemonic);
144 return l;
147 GtkWidget*
148 hig_workarea_add_tall_row (GtkWidget * table,
149 guint * row,
150 const char * mnemonic_string,
151 GtkWidget * control,
152 GtkWidget * mnemonic)
154 GtkWidget * l = gtk_label_new_with_mnemonic (mnemonic_string);
155 GtkWidget * h = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
156 GtkWidget * v = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
157 gtk_box_pack_start (GTK_BOX (h), l, FALSE, FALSE, 0);
158 gtk_box_pack_start (GTK_BOX (v), h, FALSE, FALSE, GUI_PAD_SMALL);
160 hig_workarea_add_label_w (table, *row, v);
161 hig_workarea_add_tall_control (table, *row, control);
163 if (GTK_IS_LABEL (l))
164 gtk_label_set_mnemonic_widget (GTK_LABEL (l),
165 mnemonic ? mnemonic : control);
167 ++ * row;
168 return l;