[Xfce4-commits] r27042 - xfce-mcs-plugins/branches/xfce-plugins-stephan/dialogs/appearance-settings
Stephan Arts
stephan at xfce.org
Sun Jun 8 10:50:03 CEST 2008
Author: stephan
Date: 2008-06-08 08:50:03 +0000 (Sun, 08 Jun 2008)
New Revision: 27042
Modified:
xfce-mcs-plugins/branches/xfce-plugins-stephan/dialogs/appearance-settings/main.c
Log:
Set the gtk-theme using the icon-view
Modified: xfce-mcs-plugins/branches/xfce-plugins-stephan/dialogs/appearance-settings/main.c
===================================================================
--- xfce-mcs-plugins/branches/xfce-plugins-stephan/dialogs/appearance-settings/main.c 2008-06-07 23:38:40 UTC (rev 27041)
+++ xfce-mcs-plugins/branches/xfce-plugins-stephan/dialogs/appearance-settings/main.c 2008-06-08 08:50:03 UTC (rev 27042)
@@ -50,6 +50,28 @@
};
void
+cb_icon_view_selection_changed (GtkIconView *icon_view, XfconfChannel *channel)
+{
+ GList *list = gtk_icon_view_get_selected_items (icon_view);
+ GtkTreeModel *model = gtk_icon_view_get_model (icon_view);
+ GtkTreeIter iter;
+ GValue value = {0,};
+
+ g_return_if_fail (g_list_length (list) == 1);
+
+ gtk_tree_model_get_iter (model, &iter, list->data);
+ gtk_tree_model_get_value (model, &iter, 1, &value);
+
+ xfconf_channel_set_property (channel, "/Net/ThemeName", &value);
+
+ g_value_unset (&value);
+
+ g_list_foreach (list, (GFunc)gtk_tree_path_free, NULL);
+ g_list_free (list);
+
+}
+
+void
cb_toolbar_style_combo_changed (GtkComboBox *combo, XfconfChannel *channel)
{
switch (gtk_combo_box_get_active(combo))
@@ -194,14 +216,16 @@
* TODO: Fix icon-theme-spec compliance
*/
void
-check_themes (GtkListStore *list_store)
+check_themes (GtkListStore *list_store, GtkIconView *icon_view, XfconfChannel *channel)
{
GtkTreeIter iter;
GtkIconTheme *icon_theme = gtk_icon_theme_get_default();
gchar *dir_name;
GDir *dir;
const gchar *theme_name;
+ const gchar *data_dir_name;
gchar *gtk_theme_name;
+ gchar *active_theme_name = xfconf_channel_get_string (channel, "/Net/ThemeName", "Default");
dir_name = g_build_filename (g_get_home_dir (), ".themes", NULL);
dir = g_dir_open (dir_name, 0, NULL);
@@ -219,6 +243,11 @@
gtk_list_store_append(list_store, &iter);
gtk_list_store_set(list_store, &iter, 0, gtk_icon_theme_load_icon (icon_theme, "image-missing", 48, 0, NULL), 1, theme_name, -1);
}
+ if (strcmp (theme_name, active_theme_name) == 0)
+ {
+ GtkTreePath *path = gtk_tree_model_get_path (GTK_TREE_MODEL (list_store), &iter);
+ gtk_icon_view_select_path (icon_view, path);
+ }
g_free (gtk_theme_name);
theme_name = g_dir_read_name (dir);
@@ -226,7 +255,34 @@
}
g_free (dir_name);
+#if 0
+ dir_name = g_build_filename (g_get_user_data_dir(), "themes", NULL);
+ dir = g_dir_open (dir_name, 0, NULL);
+ if (dir)
+ {
+ theme_name = g_dir_read_name (dir);
+
+ while (theme_name)
+ {
+ gtk_theme_name = g_build_filename (dir_name, theme_name, "gtk-2.0", NULL);
+
+ if (g_file_test (gtk_theme_name, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR))
+ {
+ gtk_list_store_append(list_store, &iter);
+ gtk_list_store_set(list_store, &iter, 0, gtk_icon_theme_load_icon (icon_theme, "image-missing", 48, 0, NULL), 1, theme_name, -1);
+ }
+
+ g_free (gtk_theme_name);
+ theme_name = g_dir_read_name (dir);
+ }
+ }
+ g_free (dir_name);
+#endif
+
+
+
+
dir_name = g_build_filename ("/usr/share","themes", NULL);
dir = g_dir_open (dir_name, 0, NULL);
@@ -243,6 +299,11 @@
gtk_list_store_append(list_store, &iter);
gtk_list_store_set(list_store, &iter, 0, gtk_icon_theme_load_icon (icon_theme, "image-missing", 48, 0, NULL), 1, theme_name, -1);
}
+ if (strcmp (theme_name, active_theme_name) == 0)
+ {
+ GtkTreePath *path = gtk_tree_model_get_path (GTK_TREE_MODEL (list_store), &iter);
+ gtk_icon_view_select_path (icon_view, path);
+ }
g_free (gtk_theme_name);
theme_name = g_dir_read_name (dir);
@@ -283,8 +344,9 @@
gtk_icon_view_set_pixbuf_column (GTK_ICON_VIEW (icon_view), 0);
gtk_icon_view_set_text_column (GTK_ICON_VIEW (icon_view), 1);
gtk_icon_view_set_model (GTK_ICON_VIEW (icon_view), GTK_TREE_MODEL (list_store));
+ gtk_icon_view_set_selection_mode (GTK_ICON_VIEW (icon_view), GTK_SELECTION_SINGLE);
- check_themes (list_store);
+ check_themes (list_store, GTK_ICON_VIEW (icon_view), xsettings_channel);
/* Fill the combo-boxes */
/* ToolbarStyle combo */
@@ -455,6 +517,8 @@
}
}
+ g_signal_connect (G_OBJECT(icon_view), "selection_changed", G_CALLBACK(cb_icon_view_selection_changed), xsettings_channel);
+
g_signal_connect (G_OBJECT(toolbar_style_combo), "changed", G_CALLBACK(cb_toolbar_style_combo_changed), xsettings_channel);
g_signal_connect (G_OBJECT(hinting_style_combo), "changed", G_CALLBACK(cb_hinting_style_combo_changed), xsettings_channel);
g_signal_connect (G_OBJECT(rgba_style_combo), "changed", G_CALLBACK(cb_rgba_style_combo_changed), xsettings_channel);
@@ -487,6 +551,7 @@
GladeXML *gxml;
XfconfChannel *channel;
GError *cli_error = NULL;
+ gchar *data_dirs = NULL;
#ifdef ENABLE_NLS
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
More information about the Xfce4-commits
mailing list