pidgin: b774861e: Reduce some code duplication in the Pref...
qulogic at pidgin.im
qulogic at pidgin.im
Thu Aug 26 00:40:47 EDT 2010
----------------------------------------------------------------------
Revision: b774861efdbf45332c7737f9a02bb448aa253702
Parent: 368296936e15c70f7c6d75a25cf4c21bf1f752c0
Author: nix at go-nix.ca
Date: 08/26/10 00:37:24
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/b774861efdbf45332c7737f9a02bb448aa253702
Changelog:
Reduce some code duplication in the Prefs dialog creation function.
Patch from nix_nix, though I dropped the strdups.
Fixes #12473.
Changes against parent 368296936e15c70f7c6d75a25cf4c21bf1f752c0
patched pidgin/gtkprefs.c
-------------- next part --------------
============================================================
--- pidgin/gtkprefs.c 67ddbe590e997263e49a6a6303213dc12b32a20c
+++ pidgin/gtkprefs.c 52e7b0b2999d951e62e7ae5010f2e20f6f212f46
@@ -1042,11 +1042,40 @@ static GtkWidget *
}
static GtkWidget *
+add_theme_prefs_combo(GtkWidget *vbox,
+ GtkSizeGroup *combo_sg, GtkSizeGroup *label_sg,
+ GtkListStore *theme_store,
+ GCallback combo_box_cb, gpointer combo_box_cb_user_data,
+ const char *label_str, const char *prefs_path,
+ const char *theme_type)
+{
+ GtkWidget *label;
+ GtkWidget *combo_box = NULL;
+ GtkWidget *themesel_hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
+
+ label = gtk_label_new(label_str);
+ gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+ gtk_size_group_add_widget(label_sg, label);
+ gtk_box_pack_start(GTK_BOX(themesel_hbox), label, FALSE, FALSE, 0);
+
+ combo_box = prefs_build_theme_combo_box(theme_store,
+ purple_prefs_get_string(prefs_path),
+ theme_type);
+ g_signal_connect(G_OBJECT(combo_box), "changed",
+ (GCallback)combo_box_cb, combo_box_cb_user_data);
+ gtk_size_group_add_widget(combo_sg, combo_box);
+ gtk_box_pack_start(GTK_BOX(themesel_hbox), combo_box, TRUE, TRUE, 0);
+
+ gtk_box_pack_start(GTK_BOX(vbox), themesel_hbox, FALSE, FALSE, 0);
+
+ return combo_box;
+}
+
+static GtkWidget *
theme_page(void)
{
- GtkWidget *ret, *vbox;
GtkWidget *label;
- GtkWidget *themesel_hbox;
+ GtkWidget *ret, *vbox;
GtkSizeGroup *label_sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
GtkSizeGroup *combo_sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
@@ -1067,77 +1096,29 @@ theme_page(void)
gtk_widget_show(label);
/* Buddy List Themes */
- themesel_hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
+ prefs_blist_themes_combo_box = add_theme_prefs_combo(
+ vbox, combo_sg, label_sg, prefs_blist_themes,
+ (GCallback)prefs_set_blist_theme_cb, NULL,
+ _("Buddy List Theme:"), PIDGIN_PREFS_ROOT "/blist/theme", "blist");
- label = gtk_label_new(_("Buddy List Theme:"));
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
- gtk_size_group_add_widget(label_sg, label);
- gtk_box_pack_start(GTK_BOX(themesel_hbox), label, FALSE, FALSE, 0);
-
- prefs_blist_themes_combo_box = prefs_build_theme_combo_box(prefs_blist_themes,
- purple_prefs_get_string(PIDGIN_PREFS_ROOT "/blist/theme"),
- "blist");
- g_signal_connect(G_OBJECT(prefs_blist_themes_combo_box), "changed",
- (GCallback)prefs_set_blist_theme_cb, NULL);
- gtk_size_group_add_widget(combo_sg, prefs_blist_themes_combo_box);
- gtk_box_pack_start(GTK_BOX(themesel_hbox), prefs_blist_themes_combo_box, TRUE, TRUE, 0);
-
- gtk_box_pack_start(GTK_BOX(vbox), themesel_hbox, FALSE, FALSE, 0);
-
/* Status Icon Themes */
- themesel_hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
+ prefs_status_themes_combo_box = add_theme_prefs_combo(
+ vbox, combo_sg, label_sg, prefs_status_icon_themes,
+ (GCallback)prefs_set_status_icon_theme_cb, NULL,
+ _("Status Icon Theme:"), PIDGIN_PREFS_ROOT "/status/icon-theme", "icon");
- label = gtk_label_new(_("Status Icon Theme:"));
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
- gtk_size_group_add_widget(label_sg, label);
- gtk_box_pack_start(GTK_BOX(themesel_hbox), label, FALSE, FALSE, 0);
-
- prefs_status_themes_combo_box = prefs_build_theme_combo_box(prefs_status_icon_themes,
- purple_prefs_get_string(PIDGIN_PREFS_ROOT "/status/icon-theme"),
- "icon");
- g_signal_connect(G_OBJECT(prefs_status_themes_combo_box), "changed",
- (GCallback)prefs_set_status_icon_theme_cb, NULL);
- gtk_size_group_add_widget(combo_sg, prefs_status_themes_combo_box);
- gtk_box_pack_start(GTK_BOX(themesel_hbox), prefs_status_themes_combo_box, TRUE, TRUE, 0);
-
- gtk_box_pack_start(GTK_BOX(vbox), themesel_hbox, FALSE, FALSE, 0);
-
/* Sound Themes */
- themesel_hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
+ prefs_sound_themes_combo_box = add_theme_prefs_combo(
+ vbox, combo_sg, label_sg, prefs_sound_themes,
+ (GCallback)prefs_set_sound_theme_cb, NULL,
+ _("Sound Theme:"), PIDGIN_PREFS_ROOT "/sound/theme", "sound");
- label = gtk_label_new(_("Sound Theme:"));
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
- gtk_size_group_add_widget(label_sg, label);
- gtk_box_pack_start(GTK_BOX(themesel_hbox), label, FALSE, FALSE, 0);
-
- prefs_sound_themes_combo_box = prefs_build_theme_combo_box(prefs_sound_themes,
- purple_prefs_get_string(PIDGIN_PREFS_ROOT "/sound/theme"),
- "sound");
- g_signal_connect(G_OBJECT(prefs_sound_themes_combo_box), "changed",
- (GCallback)prefs_set_sound_theme_cb, NULL);
- gtk_size_group_add_widget(combo_sg, prefs_sound_themes_combo_box);
- gtk_box_pack_start(GTK_BOX(themesel_hbox), prefs_sound_themes_combo_box, TRUE, TRUE, 0);
-
- gtk_box_pack_start(GTK_BOX(vbox), themesel_hbox, FALSE, FALSE, 0);
-
/* Smiley Themes */
- themesel_hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
+ prefs_smiley_themes_combo_box = add_theme_prefs_combo(
+ vbox, combo_sg, label_sg, prefs_smiley_themes,
+ (GCallback)prefs_set_smiley_theme_cb, NULL,
+ _("Smiley Theme:"), PIDGIN_PREFS_ROOT "/smileys/theme", "smiley");
- label = gtk_label_new(_("Smiley Theme:"));
- gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
- gtk_size_group_add_widget(label_sg, label);
- gtk_box_pack_start(GTK_BOX(themesel_hbox), label, FALSE, FALSE, 0);
-
- prefs_smiley_themes_combo_box = prefs_build_theme_combo_box(prefs_smiley_themes,
- purple_prefs_get_string(PIDGIN_PREFS_ROOT "/smileys/theme"),
- "smiley");
- g_signal_connect(G_OBJECT(prefs_smiley_themes_combo_box), "changed",
- (GCallback)prefs_set_smiley_theme_cb, NULL);
- gtk_size_group_add_widget(combo_sg, prefs_smiley_themes_combo_box);
- gtk_box_pack_start(GTK_BOX(themesel_hbox), prefs_smiley_themes_combo_box, TRUE, TRUE, 0);
-
- gtk_box_pack_start(GTK_BOX(vbox), themesel_hbox, FALSE, FALSE, 0);
-
/* Custom sort so "none" theme is at top of list */
gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(prefs_smiley_themes),
2, pidgin_sort_smileys, NULL, NULL);
More information about the Commits
mailing list