[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