Mercurial > pidgin.yaz
comparison plugins/gaimrc.c @ 12973:e25a2315d9e3
[gaim-migrate @ 15326]
GtkTreeView::indent_expanders is a boolean value not an integer, so change
gaimrc to match. Also fix how changing settings works, all settings should be
instant-apply-on-change for gtk > 2.4, and will either work better or worse
than they did before with gtk < 2.4 (I'm not sure and don't have anywhere to
test.)
committer: Tailor Script <tailor@pidgin.im>
author | Etan Reisner <pidgin@unreliablesource.net> |
---|---|
date | Sat, 21 Jan 2006 00:46:36 +0000 |
parents | ff267281e882 |
children | b553326bc468 |
comparison
equal
deleted
inserted
replaced
12972:bbf068a15a53 | 12973:e25a2315d9e3 |
---|---|
44 }; | 44 }; |
45 static GtkWidget *color_widgets[G_N_ELEMENTS(color_prefs)]; | 45 static GtkWidget *color_widgets[G_N_ELEMENTS(color_prefs)]; |
46 | 46 |
47 static const char *widget_size_prefs[] = { | 47 static const char *widget_size_prefs[] = { |
48 "/plugins/gtk/gaimrc/size/GtkTreeView::expander_size", | 48 "/plugins/gtk/gaimrc/size/GtkTreeView::expander_size", |
49 "/plugins/gtk/gaimrc/size/GtkTreeView::indent_expanders", | |
50 "/plugins/gtk/gaimrc/size/GtkTreeView::horizontal_separator" | 49 "/plugins/gtk/gaimrc/size/GtkTreeView::horizontal_separator" |
51 }; | 50 }; |
52 static const char *widget_size_prefs_set[] = { | 51 static const char *widget_size_prefs_set[] = { |
53 "/plugins/gtk/gaimrc/set/size/GtkTreeView::expander_size", | 52 "/plugins/gtk/gaimrc/set/size/GtkTreeView::expander_size", |
54 "/plugins/gtk/gaimrc/set/size/GtkTreeView::indent_expanders", | |
55 "/plugins/gtk/gaimrc/set/size/GtkTreeView::horizontal_separator" | 53 "/plugins/gtk/gaimrc/set/size/GtkTreeView::horizontal_separator" |
56 }; | 54 }; |
57 static const char *widget_size_names[] = { | 55 static const char *widget_size_names[] = { |
58 N_("GtkTreeView Expander Size"), | 56 N_("GtkTreeView Expander Size"), |
59 N_("GtkTreeView Expander Indentation"), | |
60 N_("GtkTreeView Horizontal Separation") | 57 N_("GtkTreeView Horizontal Separation") |
61 }; | 58 }; |
62 static GtkWidget *widget_size_widgets[G_N_ELEMENTS(widget_size_prefs)]; | 59 static GtkWidget *widget_size_widgets[G_N_ELEMENTS(widget_size_prefs)]; |
63 | 60 |
64 static const char *font_prefs[] = { | 61 static const char *font_prefs[] = { |
82 N_("Request Dialog"), | 79 N_("Request Dialog"), |
83 N_("Notify Dialog") | 80 N_("Notify Dialog") |
84 }; | 81 }; |
85 static GtkWidget *font_widgets[G_N_ELEMENTS(font_prefs)]; | 82 static GtkWidget *font_widgets[G_N_ELEMENTS(font_prefs)]; |
86 | 83 |
84 static const char *widget_bool_prefs[] = { | |
85 "/plugins/gtk/gaimrc/bool/GtkTreeView::indent_expanders", | |
86 }; | |
87 static const char *widget_bool_prefs_set[] = { | |
88 "/plugins/gtk/gaimrc/set/bool/GtkTreeView::indent_expanders", | |
89 }; | |
90 static const char *widget_bool_names[] = { | |
91 N_("GtkTreeView Indent Expanders"), | |
92 }; | |
93 static GtkWidget *widget_bool_widgets[G_N_ELEMENTS(widget_bool_prefs)]; | |
94 | |
87 static void | 95 static void |
88 gaimrc_make_changes() | 96 gaimrc_make_changes() |
89 { | 97 { |
90 int i; | 98 int i; |
99 char *prefbase = NULL; | |
100 #if GTK_CHECK_VERSION(2,4,0) | |
101 GtkSettings *setting = NULL; | |
102 #endif | |
91 GString *style_string = g_string_new(""); | 103 GString *style_string = g_string_new(""); |
92 char *prefbase = NULL; | |
93 | 104 |
94 if (gaim_prefs_get_bool("/plugins/gtk/gaimrc/set/gtk-font-name")) { | 105 if (gaim_prefs_get_bool("/plugins/gtk/gaimrc/set/gtk-font-name")) { |
95 const char *pref = gaim_prefs_get_string("/plugins/gtk/gaimrc/gtk-font-name"); | 106 const char *pref = gaim_prefs_get_string("/plugins/gtk/gaimrc/gtk-font-name"); |
96 g_string_append_printf(style_string, "gtk-font-name = \"%s\"\n", pref); | 107 g_string_append_printf(style_string, "gtk-font-name = \"%s\"\n", pref); |
97 } | 108 } |
117 if (gaim_prefs_get_bool(widget_size_prefs_set[i])) { | 128 if (gaim_prefs_get_bool(widget_size_prefs_set[i])) { |
118 prefbase = g_path_get_basename(widget_size_prefs[i]); | 129 prefbase = g_path_get_basename(widget_size_prefs[i]); |
119 g_string_append_printf(style_string, | 130 g_string_append_printf(style_string, |
120 "%s = %d\n", prefbase, | 131 "%s = %d\n", prefbase, |
121 gaim_prefs_get_int(widget_size_prefs[i])); | 132 gaim_prefs_get_int(widget_size_prefs[i])); |
133 g_free(prefbase); | |
134 } | |
135 } | |
136 | |
137 for (i = 0; i < G_N_ELEMENTS(widget_bool_prefs); i++) { | |
138 if (gaim_prefs_get_bool(widget_bool_prefs_set[i])) { | |
139 prefbase = g_path_get_basename(widget_bool_prefs[i]); | |
140 g_string_append_printf(style_string, | |
141 "%s = %d\n", prefbase, | |
142 gaim_prefs_get_bool(widget_bool_prefs[i])); | |
122 g_free(prefbase); | 143 g_free(prefbase); |
123 } | 144 } |
124 } | 145 } |
125 | 146 |
126 g_string_append(style_string, "}"); | 147 g_string_append(style_string, "}"); |
139 g_free(prefbase); | 160 g_free(prefbase); |
140 } | 161 } |
141 } | 162 } |
142 | 163 |
143 gtk_rc_parse_string(style_string->str); | 164 gtk_rc_parse_string(style_string->str); |
144 | |
145 g_string_free(style_string, TRUE); | 165 g_string_free(style_string, TRUE); |
166 | |
167 #if GTK_CHECK_VERSION(2,4,0) | |
168 setting = gtk_settings_get_default(); | |
169 gtk_rc_reset_styles(setting); | |
170 #endif | |
146 } | 171 } |
147 | 172 |
148 static void | 173 static void |
149 gaimrc_write(GtkWidget *widget, gpointer data) | 174 gaimrc_write(GtkWidget *widget, gpointer data) |
150 { | 175 { |
178 if (gaim_prefs_get_bool(widget_size_prefs_set[i])) { | 203 if (gaim_prefs_get_bool(widget_size_prefs_set[i])) { |
179 prefbase = g_path_get_basename(widget_size_prefs[i]); | 204 prefbase = g_path_get_basename(widget_size_prefs[i]); |
180 g_string_append_printf(style_string, | 205 g_string_append_printf(style_string, |
181 "%s = %d\n", prefbase, | 206 "%s = %d\n", prefbase, |
182 gaim_prefs_get_int(widget_size_prefs[i])); | 207 gaim_prefs_get_int(widget_size_prefs[i])); |
208 g_free(prefbase); | |
209 } | |
210 } | |
211 | |
212 for (i = 0; i < G_N_ELEMENTS(widget_bool_prefs); i++) { | |
213 if (gaim_prefs_get_bool(widget_bool_prefs_set[i])) { | |
214 prefbase = g_path_get_basename(widget_bool_prefs[i]); | |
215 g_string_append_printf(style_string, | |
216 "%s = %d\n", prefbase, | |
217 gaim_prefs_get_bool(widget_bool_prefs[i])); | |
183 g_free(prefbase); | 218 g_free(prefbase); |
184 } | 219 } |
185 } | 220 } |
186 | 221 |
187 g_string_append(style_string, "}"); | 222 g_string_append(style_string, "}"); |
208 | 243 |
209 static void | 244 static void |
210 gaimrc_reread(GtkWidget *widget, gpointer data) | 245 gaimrc_reread(GtkWidget *widget, gpointer data) |
211 { | 246 { |
212 gtk_rc_reparse_all(); | 247 gtk_rc_reparse_all(); |
213 /* I don't know if this is necessary but it shouldn't hurt. */ | 248 /* I don't know if this is necessary but if not it shouldn't hurt. */ |
214 gaimrc_make_changes(); | 249 gaimrc_make_changes(); |
215 } | 250 } |
216 | 251 |
217 static void | 252 static void |
218 gaimrc_pref_changed_cb(const char *name, GaimPrefType type, | 253 gaimrc_pref_changed_cb(const char *name, GaimPrefType type, |
219 gconstpointer value, gpointer data) | 254 gconstpointer value, gpointer data) |
220 { | 255 { |
221 GString *style_string = g_string_new(""); | 256 gaimrc_make_changes(); |
222 char *prefbase = NULL; | |
223 | |
224 prefbase = g_path_get_basename(name); | |
225 | |
226 if (strncmp(name, "/plugins/gtk/gaimrc/color", 25) == 0) { | |
227 g_string_printf(style_string, | |
228 "style \"gaimrc_style\" { %s = \"%s\" }" | |
229 "widget_class \"*\" style \"gaimrc_style\"", | |
230 prefbase, (char *)value); | |
231 } else if (strncmp(name, "/plugins/gtk/gaimrc/size", 24) == 0) { | |
232 g_string_printf(style_string, | |
233 "style \"gaimrc_style\" { %s = \"%d\" }" | |
234 "widget_class \"*\" style \"gaimrc_style\"", | |
235 prefbase, GPOINTER_TO_INT(value)); | |
236 } else if (strncmp(name, "/plugins/gtk/gaimrc/font", 24) == 0) { | |
237 g_string_printf(style_string, "style \"%s_style\"" | |
238 "{ font_name = \"%s\" } widget \"%s\"" | |
239 "style \"%s_style\"", | |
240 prefbase, (char *)value, prefbase, prefbase); | |
241 } else if (strncmp(name, "/plugins/gtk/gaimrc/set", 23) == 0) { | |
242 if (value) | |
243 gaimrc_make_changes(); | |
244 g_string_free(style_string, TRUE); | |
245 g_free(prefbase); | |
246 | |
247 return; | |
248 } else { | |
249 g_string_printf(style_string, "%s = \"%s\"", | |
250 prefbase, (char *)value); | |
251 } | |
252 gtk_rc_parse_string(style_string->str); | |
253 | |
254 g_string_free(style_string, TRUE); | |
255 g_free(prefbase); | |
256 } | 257 } |
257 | 258 |
258 static void | 259 static void |
259 gaimrc_color_response(GtkDialog *color_dialog, gint response, gpointer data) | 260 gaimrc_color_response(GtkDialog *color_dialog, gint response, gpointer data) |
260 { | 261 { |
449 */ | 450 */ |
450 gtk_widget_set_sensitive(widget, | 451 gtk_widget_set_sensitive(widget, |
451 gaim_prefs_get_bool("/plugins/gtk/gaimrc/set/gtk-key-theme-name")); | 452 gaim_prefs_get_bool("/plugins/gtk/gaimrc/set/gtk-key-theme-name")); |
452 g_signal_connect(G_OBJECT(check), "toggled", | 453 g_signal_connect(G_OBJECT(check), "toggled", |
453 G_CALLBACK(gaim_gtk_toggle_sensitive), widget); | 454 G_CALLBACK(gaim_gtk_toggle_sensitive), widget); |
455 | |
456 for (i = 0; i < G_N_ELEMENTS(widget_bool_prefs); i++) { | |
457 hbox = gtk_hbox_new(FALSE, GAIM_HIG_CAT_SPACE); | |
458 gtk_box_pack_start(GTK_BOX(frame), hbox, FALSE, FALSE, 0); | |
459 | |
460 check = gaim_gtk_prefs_checkbox(_(widget_bool_names[i]), | |
461 widget_bool_prefs_set[i], hbox); | |
462 gtk_size_group_add_widget(labelsg, check); | |
463 | |
464 widget_bool_widgets[i] = gaim_gtk_prefs_checkbox("", widget_bool_prefs[i], hbox); | |
465 /* | |
466 gtk_size_group_add_widget(widgetsb, widget_bool_widgets[i]); | |
467 */ | |
468 gtk_widget_set_sensitive(widget_bool_widgets[i], | |
469 gaim_prefs_get_bool(widget_bool_prefs_set[i])); | |
470 g_signal_connect(G_OBJECT(check), "toggled", | |
471 G_CALLBACK(gaim_gtk_toggle_sensitive), | |
472 widget_bool_widgets[i]); | |
473 } | |
454 | 474 |
455 frame = gaim_gtk_make_frame(ret, "Interface colors"); | 475 frame = gaim_gtk_make_frame(ret, "Interface colors"); |
456 /* imhtml stuff */ | 476 /* imhtml stuff */ |
457 for (i = 0; i < G_N_ELEMENTS(color_prefs); i++) { | 477 for (i = 0; i < G_N_ELEMENTS(color_prefs); i++) { |
458 hbox = gtk_hbox_new(FALSE, GAIM_HIG_CAT_SPACE); | 478 hbox = gtk_hbox_new(FALSE, GAIM_HIG_CAT_SPACE); |
518 font_widgets[i]); | 538 font_widgets[i]); |
519 g_signal_connect(G_OBJECT(font_widgets[i]), "clicked", | 539 g_signal_connect(G_OBJECT(font_widgets[i]), "clicked", |
520 G_CALLBACK(gaimrc_set_font), GINT_TO_POINTER(i)); | 540 G_CALLBACK(gaimrc_set_font), GINT_TO_POINTER(i)); |
521 } | 541 } |
522 | 542 |
523 frame = gaim_gtk_make_frame(ret, "General"); | 543 frame = gaim_gtk_make_frame(ret, _("Tools")); |
524 | 544 |
525 vbox = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE); | 545 vbox = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE); |
526 gtk_box_pack_start(GTK_BOX(frame), vbox, FALSE, FALSE, 0); | 546 gtk_box_pack_start(GTK_BOX(frame), vbox, FALSE, FALSE, 0); |
527 | 547 |
528 tmp = g_strdup_printf(_("Write settings to %s%sgtkrc-2.0"), gaim_user_dir(), G_DIR_SEPARATOR_S); | 548 tmp = g_strdup_printf(_("Write settings to %s%sgtkrc-2.0"), gaim_user_dir(), G_DIR_SEPARATOR_S); |
609 gaim_prefs_add_none("/plugins/gtk/gaimrc/set/font"); | 629 gaim_prefs_add_none("/plugins/gtk/gaimrc/set/font"); |
610 for (i = 0; i < G_N_ELEMENTS(font_prefs); i++) { | 630 for (i = 0; i < G_N_ELEMENTS(font_prefs); i++) { |
611 gaim_prefs_add_string(font_prefs[i], ""); | 631 gaim_prefs_add_string(font_prefs[i], ""); |
612 gaim_prefs_add_bool(font_prefs_set[i], FALSE); | 632 gaim_prefs_add_bool(font_prefs_set[i], FALSE); |
613 } | 633 } |
634 | |
635 gaim_prefs_add_none("/plugins/gtk/gaimrc/bool"); | |
636 gaim_prefs_add_none("/plugins/gtk/gaimrc/set/bool"); | |
637 for (i = 0; i < G_N_ELEMENTS(widget_bool_prefs); i++) { | |
638 gaim_prefs_add_bool(widget_bool_prefs[i], TRUE); | |
639 gaim_prefs_add_bool(widget_bool_prefs_set[i], FALSE); | |
640 } | |
614 } | 641 } |
615 | 642 |
616 GAIM_INIT_PLUGIN(gaimrc, gaimrc_init, gaimrc_info) | 643 GAIM_INIT_PLUGIN(gaimrc, gaimrc_init, gaimrc_info) |