| 1106 GtkTreeIter iter; |
1106 GtkTreeIter iter; |
| 1107 gchar *name = NULL; |
1107 gchar *name = NULL; |
| 1108 |
1108 |
| 1109 if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(prefs_conv_themes_combo_box), &iter)) { |
1109 if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(prefs_conv_themes_combo_box), &iter)) { |
| 1110 gtk_tree_model_get(GTK_TREE_MODEL(prefs_conv_themes), &iter, 2, &name, -1); |
1110 gtk_tree_model_get(GTK_TREE_MODEL(prefs_conv_themes), &iter, 2, &name, -1); |
| 1111 theme = PIDGIN_CONV_THEME(purple_theme_manager_find_theme(name, "conversation")); |
1111 if (name && *name) |
| |
1112 theme = PIDGIN_CONV_THEME(purple_theme_manager_find_theme(name, "conversation")); |
| |
1113 else |
| |
1114 theme = PIDGIN_CONV_THEME(pidgin_conversations_get_default_theme()); |
| 1112 g_free(name); |
1115 g_free(name); |
| 1113 |
1116 |
| 1114 if (gtk_combo_box_get_active_iter(combo_box, &iter)) { |
1117 if (gtk_combo_box_get_active_iter(combo_box, &iter)) { |
| 1115 gtk_tree_model_get(GTK_TREE_MODEL(prefs_conv_variants), &iter, 0, &name, -1); |
1118 gtk_tree_model_get(GTK_TREE_MODEL(prefs_conv_variants), &iter, 0, &name, -1); |
| 1116 pidgin_conversation_theme_set_variant(theme, name); |
1119 pidgin_conversation_theme_set_variant(theme, name); |
| 1125 { |
1128 { |
| 1126 GtkTreeIter iter; |
1129 GtkTreeIter iter; |
| 1127 |
1130 |
| 1128 if (gtk_combo_box_get_active_iter(combo_box, &iter)) { |
1131 if (gtk_combo_box_get_active_iter(combo_box, &iter)) { |
| 1129 gchar *name = NULL; |
1132 gchar *name = NULL; |
| |
1133 PidginConvTheme *theme; |
| |
1134 const char *current_variant; |
| |
1135 const GList *variants; |
| |
1136 gboolean unset = TRUE; |
| 1130 |
1137 |
| 1131 gtk_tree_model_get(GTK_TREE_MODEL(prefs_conv_themes), &iter, 2, &name, -1); |
1138 gtk_tree_model_get(GTK_TREE_MODEL(prefs_conv_themes), &iter, 2, &name, -1); |
| 1132 |
1139 |
| 1133 purple_prefs_set_string(PIDGIN_PREFS_ROOT "/conversations/theme", name); |
1140 purple_prefs_set_string(PIDGIN_PREFS_ROOT "/conversations/theme", name); |
| 1134 |
1141 |
| 1136 prefs_set_conv_variant_cb, NULL); |
1143 prefs_set_conv_variant_cb, NULL); |
| 1137 |
1144 |
| 1138 /* Update list of variants */ |
1145 /* Update list of variants */ |
| 1139 gtk_list_store_clear(prefs_conv_variants); |
1146 gtk_list_store_clear(prefs_conv_variants); |
| 1140 |
1147 |
| 1141 if (name && *name) { |
1148 if (name && *name) |
| 1142 PidginConvTheme *theme; |
|
| 1143 const char *current_variant; |
|
| 1144 const GList *variants; |
|
| 1145 gboolean unset = TRUE; |
|
| 1146 |
|
| 1147 theme = PIDGIN_CONV_THEME(purple_theme_manager_find_theme(name, "conversation")); |
1149 theme = PIDGIN_CONV_THEME(purple_theme_manager_find_theme(name, "conversation")); |
| 1148 current_variant = pidgin_conversation_theme_get_variant(theme); |
1150 else |
| 1149 |
1151 theme = PIDGIN_CONV_THEME(pidgin_conversations_get_default_theme()); |
| 1150 variants = pidgin_conversation_theme_get_variants(theme); |
1152 |
| 1151 for (; variants && current_variant; variants = g_list_next(variants)) { |
1153 current_variant = pidgin_conversation_theme_get_variant(theme); |
| 1152 gtk_list_store_append(prefs_conv_variants, &iter); |
1154 |
| 1153 gtk_list_store_set(prefs_conv_variants, &iter, 0, variants->data, -1); |
1155 variants = pidgin_conversation_theme_get_variants(theme); |
| |
1156 for (; variants && current_variant; variants = g_list_next(variants)) { |
| |
1157 gtk_list_store_append(prefs_conv_variants, &iter); |
| |
1158 gtk_list_store_set(prefs_conv_variants, &iter, 0, variants->data, -1); |
| 1154 |
1159 |
| 1155 if (g_str_equal(variants->data, current_variant)) { |
1160 if (g_str_equal(variants->data, current_variant)) { |
| 1156 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(prefs_conv_variants_combo_box), &iter); |
1161 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(prefs_conv_variants_combo_box), &iter); |
| 1157 unset = FALSE; |
1162 unset = FALSE; |
| 1158 } |
|
| 1159 } |
1163 } |
| 1160 |
|
| 1161 if (unset) |
|
| 1162 gtk_combo_box_set_active(GTK_COMBO_BOX(prefs_conv_variants_combo_box), 0); |
|
| 1163 } |
1164 } |
| |
1165 |
| |
1166 if (unset) |
| |
1167 gtk_combo_box_set_active(GTK_COMBO_BOX(prefs_conv_variants_combo_box), 0); |
| 1164 |
1168 |
| 1165 g_signal_handlers_unblock_by_func(prefs_conv_variants_combo_box, |
1169 g_signal_handlers_unblock_by_func(prefs_conv_variants_combo_box, |
| 1166 prefs_set_conv_variant_cb, NULL); |
1170 prefs_set_conv_variant_cb, NULL); |
| 1167 g_free(name); |
1171 g_free(name); |
| 1168 } |
1172 } |