[Xfce4-commits] r27041 - xfce-mcs-plugins/branches/xfce-plugins-stephan/dialogs/appearance-settings

Stephan Arts stephan at xfce.org
Sun Jun 8 01:38:41 CEST 2008


Author: stephan
Date: 2008-06-07 23:38:40 +0000 (Sat, 07 Jun 2008)
New Revision: 27041

Modified:
   xfce-mcs-plugins/branches/xfce-plugins-stephan/dialogs/appearance-settings/main.c
Log:
Add gtk+_theme lookup



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-05 21:34:57 UTC (rev 27040)
+++ xfce-mcs-plugins/branches/xfce-plugins-stephan/dialogs/appearance-settings/main.c	2008-06-07 23:38:40 UTC (rev 27041)
@@ -72,6 +72,7 @@
 void
 cb_antialias_check_button_toggled (GtkToggleButton *toggle, XfconfChannel *channel)
 {
+    gtk_toggle_button_set_inconsistent(toggle, FALSE);
     if (gtk_toggle_button_get_active(toggle))
     {
         xfconf_channel_set_int (channel, "/Xft/Antialias", 1);
@@ -106,6 +107,7 @@
 void
 cb_hinting_check_toggled (GtkToggleButton *toggle, PropertyPair *pair)
 {
+    gtk_toggle_button_set_inconsistent(toggle, FALSE);
     if (gtk_toggle_button_get_active(toggle))
     {
         xfconf_channel_set_int (pair->channel, "/Xft/Hinting", 1);
@@ -188,6 +190,68 @@
     }
 }
 
+/**
+ * TODO: Fix icon-theme-spec compliance
+ */
+void
+check_themes (GtkListStore *list_store)
+{
+    GtkTreeIter iter;
+    GtkIconTheme *icon_theme = gtk_icon_theme_get_default();
+    gchar *dir_name;
+    GDir *dir;
+    const gchar *theme_name;
+    gchar *gtk_theme_name;
+
+    dir_name = g_build_filename (g_get_home_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);
+
+
+    dir_name = g_build_filename ("/usr/share","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);
+        }
+    }
+
+
+}
+
 GtkWidget *
 appearance_settings_dialog_new_from_xml (GladeXML *gxml)
 {
@@ -195,6 +259,7 @@
     GtkTreeIter iter;
     GtkListStore *list_store;
     GtkCellRenderer *renderer;
+
     XfconfChannel *xsettings_channel = xfconf_channel_new("xsettings");
 
     GtkWidget *can_edit_accels = glade_xml_get_widget (gxml, "gtk_caneditaccels_check_button");
@@ -210,7 +275,17 @@
     GtkWidget *rgba_check = glade_xml_get_widget (gxml, "xft_rgba_check_button");
     GtkWidget *custom_dpi_check = glade_xml_get_widget (gxml, "xft_custom_dpi_check_button");
     GtkWidget *custom_dpi_spin = glade_xml_get_widget (gxml, "xft_custom_dpi_spin_button");
+    GtkWidget *icon_view = glade_xml_get_widget (gxml, "theme_icon_view");
 
+    /* Fill the theme-icons */
+    list_store = gtk_list_store_new(2, GDK_TYPE_PIXBUF, G_TYPE_STRING);
+
+    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));
+
+    check_themes (list_store);
+
     /* Fill the combo-boxes */
     /* ToolbarStyle combo */
     list_store = gtk_list_store_new(1, G_TYPE_STRING);



More information about the Xfce4-commits mailing list