| 143 |
143 |
| 144 gtk_widget_show_all(dialog); |
144 gtk_widget_show_all(dialog); |
| 145 } |
145 } |
| 146 |
146 |
| 147 static GtkWidget * |
147 static GtkWidget * |
| 148 pidgin_theme_create_color_selector(const char *text, const char *prop, |
148 pidgin_theme_create_color_selector(const char *text, const char *blurb, const char *prop, |
| 149 GtkSizeGroup *sizegroup) |
149 GtkSizeGroup *sizegroup) |
| 150 { |
150 { |
| 151 GtkWidget *color; |
151 GtkWidget *color; |
| 152 GtkWidget *hbox, *label; |
152 GtkWidget *hbox, *label; |
| 153 |
153 |
| 155 |
155 |
| 156 label = gtk_label_new(_(text)); |
156 label = gtk_label_new(_(text)); |
| 157 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
157 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
| 158 gtk_size_group_add_widget(sizegroup, label); |
158 gtk_size_group_add_widget(sizegroup, label); |
| 159 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
159 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| |
160 #if GTK_CHECK_VERSION(2, 12, 0) |
| |
161 gtk_widget_set_tooltip_text(label, blurb); |
| |
162 #endif |
| 160 |
163 |
| 161 color = pidgin_pixbuf_button_from_stock("", GTK_STOCK_SELECT_COLOR, |
164 color = pidgin_pixbuf_button_from_stock("", GTK_STOCK_SELECT_COLOR, |
| 162 PIDGIN_BUTTON_HORIZONTAL); |
165 PIDGIN_BUTTON_HORIZONTAL); |
| 163 g_signal_connect(G_OBJECT(color), "clicked", G_CALLBACK(theme_color_select), |
166 g_signal_connect(G_OBJECT(color), "clicked", G_CALLBACK(theme_color_select), |
| 164 (gpointer)prop); |
167 (gpointer)prop); |
| 166 |
169 |
| 167 return hbox; |
170 return hbox; |
| 168 } |
171 } |
| 169 |
172 |
| 170 static GtkWidget * |
173 static GtkWidget * |
| 171 pidgin_theme_create_font_selector(const char *text, const char *prop, |
174 pidgin_theme_create_font_selector(const char *text, const char *blurb, const char *prop, |
| 172 GtkSizeGroup *sizegroup) |
175 GtkSizeGroup *sizegroup) |
| 173 { |
176 { |
| 174 GtkWidget *color, *font; |
177 GtkWidget *color, *font; |
| 175 GtkWidget *hbox, *label; |
178 GtkWidget *hbox, *label; |
| 176 |
179 |
| 178 |
181 |
| 179 label = gtk_label_new(_(text)); |
182 label = gtk_label_new(_(text)); |
| 180 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
183 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
| 181 gtk_size_group_add_widget(sizegroup, label); |
184 gtk_size_group_add_widget(sizegroup, label); |
| 182 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
185 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| |
186 #if GTK_CHECK_VERSION(2, 12, 0) |
| |
187 gtk_widget_set_tooltip_text(label, blurb); |
| |
188 #endif |
| 183 |
189 |
| 184 font = pidgin_pixbuf_button_from_stock("", GTK_STOCK_SELECT_FONT, |
190 font = pidgin_pixbuf_button_from_stock("", GTK_STOCK_SELECT_FONT, |
| 185 PIDGIN_BUTTON_HORIZONTAL); |
191 PIDGIN_BUTTON_HORIZONTAL); |
| 186 g_signal_connect(G_OBJECT(font), "clicked", G_CALLBACK(theme_font_select_face), |
192 g_signal_connect(G_OBJECT(font), "clicked", G_CALLBACK(theme_font_select_face), |
| 187 (gpointer)prop); |
193 (gpointer)prop); |
| 252 GParamSpec *spec; |
258 GParamSpec *spec; |
| 253 |
259 |
| 254 vbox = pidgin_make_frame(box, _(sections[i].header)); |
260 vbox = pidgin_make_frame(box, _(sections[i].header)); |
| 255 for (j = 0; sections[i].props[j]; j++) { |
261 for (j = 0; sections[i].props[j]; j++) { |
| 256 const char *label; |
262 const char *label; |
| |
263 const char *blurb; |
| 257 spec = g_object_class_find_property(klass, sections[i].props[j]); |
264 spec = g_object_class_find_property(klass, sections[i].props[j]); |
| 258 label = g_param_spec_get_nick(spec); |
265 label = g_param_spec_get_nick(spec); |
| |
266 blurb = g_param_spec_get_blurb(spec); |
| 259 if (G_IS_PARAM_SPEC_BOXED(spec)) { |
267 if (G_IS_PARAM_SPEC_BOXED(spec)) { |
| 260 hbox = pidgin_theme_create_color_selector(label, |
268 hbox = pidgin_theme_create_color_selector(label, blurb, |
| 261 sections[i].props[j], group); |
269 sections[i].props[j], group); |
| 262 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
270 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
| 263 } else { |
271 } else { |
| 264 hbox = pidgin_theme_create_font_selector(label, |
272 hbox = pidgin_theme_create_font_selector(label, blurb, |
| 265 sections[i].props[j], group); |
273 sections[i].props[j], group); |
| 266 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
274 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
| 267 } |
275 } |
| 268 } |
276 } |
| 269 } |
277 } |