From b36c8250a9e109637270a79127c56d617a9dda25 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 14 May 2014 22:53:32 -0400 Subject: [PATCH] inspector: Merge Visual and Themes tabs --- gtk/inspector/Makefile.am | 3 - gtk/inspector/init.c | 2 - gtk/inspector/inspector.gresource.xml | 1 - gtk/inspector/themes.c | 205 ----------------- gtk/inspector/themes.h | 58 ----- gtk/inspector/themes.ui | 68 ------ gtk/inspector/visual.c | 183 ++++++++++++++-- gtk/inspector/visual.h | 4 +- gtk/inspector/visual.ui | 305 +++++++++++++++++++------- gtk/inspector/window.c | 1 - gtk/inspector/window.ui | 11 - po/POTFILES.in | 1 - 12 files changed, 403 insertions(+), 439 deletions(-) delete mode 100644 gtk/inspector/themes.c delete mode 100644 gtk/inspector/themes.h delete mode 100644 gtk/inspector/themes.ui diff --git a/gtk/inspector/Makefile.am b/gtk/inspector/Makefile.am index d1d570653a..ee32cf3bfb 100644 --- a/gtk/inspector/Makefile.am +++ b/gtk/inspector/Makefile.am @@ -42,8 +42,6 @@ libgtkinspector_la_SOURCES = \ resources.c \ signals-list.h \ signals-list.c \ - themes.h \ - themes.c \ visual.h \ visual.c \ widget-tree.h \ @@ -84,7 +82,6 @@ templates = \ object-hierarchy.ui \ prop-list.ui \ signals-list.ui \ - themes.ui \ visual.ui \ widget-tree.ui \ window.ui diff --git a/gtk/inspector/init.c b/gtk/inspector/init.c index 027f374c2a..4621c71034 100644 --- a/gtk/inspector/init.c +++ b/gtk/inspector/init.c @@ -34,7 +34,6 @@ #include "python-shell.h" #include "resources.h" #include "signals-list.h" -#include "themes.h" #include "visual.h" #include "widget-tree.h" #include "window.h" @@ -58,7 +57,6 @@ gtk_inspector_init (void) g_type_ensure (GTK_TYPE_INSPECTOR_PROP_LIST); g_type_ensure (GTK_TYPE_INSPECTOR_PYTHON_SHELL); g_type_ensure (GTK_TYPE_INSPECTOR_SIGNALS_LIST); - g_type_ensure (GTK_TYPE_INSPECTOR_THEMES); g_type_ensure (GTK_TYPE_INSPECTOR_VISUAL); g_type_ensure (GTK_TYPE_INSPECTOR_WIDGET_TREE); g_type_ensure (GTK_TYPE_INSPECTOR_WINDOW); diff --git a/gtk/inspector/inspector.gresource.xml b/gtk/inspector/inspector.gresource.xml index 74081fbc1b..9282da6216 100644 --- a/gtk/inspector/inspector.gresource.xml +++ b/gtk/inspector/inspector.gresource.xml @@ -9,7 +9,6 @@ object-hierarchy.ui prop-list.ui signals-list.ui - themes.ui visual.ui widget-tree.ui window.ui diff --git a/gtk/inspector/themes.c b/gtk/inspector/themes.c deleted file mode 100644 index f2cb438a1b..0000000000 --- a/gtk/inspector/themes.c +++ /dev/null @@ -1,205 +0,0 @@ -/* - * Copyright (c) 2013 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#include "themes.h" - -struct _GtkInspectorThemesPrivate -{ - GtkWidget *dark_switch; - GtkWidget *theme_combo; - GtkWidget *icon_combo; -}; - -G_DEFINE_TYPE_WITH_PRIVATE (GtkInspectorThemes, gtk_inspector_themes, GTK_TYPE_LIST_BOX) - -static void -init_dark (GtkInspectorThemes *pt) -{ - g_object_bind_property (pt->priv->dark_switch, "active", - gtk_settings_get_default (), "gtk-application-prefer-dark-theme", - G_BINDING_BIDIRECTIONAL); -} - -static void -fill_gtk (const gchar *path, - GHashTable *t) -{ - const gchar *dir_entry; - GDir *dir = g_dir_open (path, 0, NULL); - - if (!dir) - return; - - while ((dir_entry = g_dir_read_name (dir))) - { - gchar *filename = g_build_filename (path, dir_entry, "gtk-3.0", "gtk.css", NULL); - - if (g_file_test (filename, G_FILE_TEST_IS_REGULAR) && - !g_hash_table_contains (t, dir_entry)) - g_hash_table_add (t, g_strdup (dir_entry)); - - g_free (filename); - } -} - -static void -init_theme (GtkInspectorThemes *pt) -{ - GHashTable *t; - GHashTableIter iter; - gchar *theme, *current_theme, *path; - gint i, pos; - GSettings *settings; - - t = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); - g_hash_table_add (t, g_strdup ("Raleigh")); - - fill_gtk (GTK_DATADIR "/themes", t); - path = g_build_filename (g_get_user_data_dir (), "themes", NULL); - fill_gtk (path, t); - g_free (path); - - settings = g_settings_new ("org.gnome.desktop.interface"); - current_theme = g_settings_get_string (settings, "gtk-theme"); - g_object_unref (settings); - - g_hash_table_iter_init (&iter, t); - pos = i = 0; - while (g_hash_table_iter_next (&iter, (gpointer *)&theme, NULL)) - { - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (pt->priv->theme_combo), theme); - if (g_strcmp0 (theme, current_theme) == 0) - pos = i; - i++; - } - g_hash_table_destroy (t); - - gtk_combo_box_set_active (GTK_COMBO_BOX (pt->priv->theme_combo), pos); -} - -static void -fill_icons (const gchar *path, - GHashTable *t) -{ - const gchar *dir_entry; - GDir *dir = g_dir_open (path, 0, NULL); - - if (!dir) - return; - - while ((dir_entry = g_dir_read_name (dir))) - { - gchar *filename = g_build_filename (path, dir_entry, "index.theme", NULL); - - if (g_file_test (filename, G_FILE_TEST_IS_REGULAR) && - g_strcmp0 (dir_entry, "hicolor") != 0 && - !g_hash_table_contains (t, dir_entry)) - g_hash_table_add (t, g_strdup (dir_entry)); - - g_free (filename); - } -} - -static void -init_icons (GtkInspectorThemes *pt) -{ - GHashTable *t; - GHashTableIter iter; - gchar *theme, *current_theme, *path; - gint i, pos; - GSettings *settings; - - t = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); - - fill_icons (GTK_DATADIR "/icons", t); - path = g_build_filename (g_get_user_data_dir (), "icons", NULL); - fill_icons (path, t); - g_free (path); - - settings = g_settings_new ("org.gnome.desktop.interface"); - current_theme = g_settings_get_string (settings, "icon-theme"); - g_object_unref (settings); - - g_hash_table_iter_init (&iter, t); - pos = i = 0; - while (g_hash_table_iter_next (&iter, (gpointer *)&theme, NULL)) - { - gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (pt->priv->icon_combo), theme); - if (g_strcmp0 (theme, current_theme) == 0) - pos = i; - i++; - } - g_hash_table_destroy (t); - - gtk_combo_box_set_active (GTK_COMBO_BOX (pt->priv->icon_combo), pos); -} - -static void -theme_changed (GtkComboBox *c, - GtkInspectorThemes *pt) -{ - gchar *theme = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (c)); - g_object_set (gtk_settings_get_default (), "gtk-theme-name", theme, NULL); - g_free (theme); -} - -static void -icons_changed (GtkComboBox *c, - GtkInspectorThemes *pt) -{ - gchar *theme = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (c)); - g_object_set (gtk_settings_get_default (), "gtk-icon-theme-name", theme, NULL); - g_free (theme); -} - -static void -gtk_inspector_themes_init (GtkInspectorThemes *pt) -{ - pt->priv = gtk_inspector_themes_get_instance_private (pt); - gtk_widget_init_template (GTK_WIDGET (pt)); - - init_dark (pt); - init_theme (pt); - init_icons (pt); -} - -static void -gtk_inspector_themes_class_init (GtkInspectorThemesClass *klass) -{ - GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); - - gtk_widget_class_set_template_from_resource (widget_class, "/org/gtk/inspector/themes.ui"); - gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorThemes, dark_switch); - gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorThemes, theme_combo); - gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorThemes, icon_combo); - - gtk_widget_class_bind_template_callback (widget_class, theme_changed); - gtk_widget_class_bind_template_callback (widget_class, icons_changed); -} - -GtkWidget * -gtk_inspector_themes_new (void) -{ - return GTK_WIDGET (g_object_new (GTK_TYPE_INSPECTOR_THEMES, NULL)); -} - -// vim: set et sw=2 ts=2: diff --git a/gtk/inspector/themes.h b/gtk/inspector/themes.h deleted file mode 100644 index f70fb791b1..0000000000 --- a/gtk/inspector/themes.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (c) 2013 Intel Corporation - * - * Permission is hereby granted, free of charge, to any person obtaining a - * copy of this software and associated documentation files (the "Software"), - * to deal in the Software without restriction, including without limitation - * the rights to use, copy, modify, merge, publish, distribute, sublicense, - * and/or sell copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included - * in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -#ifndef _GTK_INSPECTOR_THEMES_H_ -#define _GTK_INSPECTOR_THEMES_H_ - -#include - -#define GTK_TYPE_INSPECTOR_THEMES (gtk_inspector_themes_get_type()) -#define GTK_INSPECTOR_THEMES(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GTK_TYPE_INSPECTOR_THEMES, GtkInspectorThemes)) -#define GTK_INSPECTOR_THEMES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GTK_TYPE_INSPECTOR_THEMES, GtkInspectorThemesClass)) -#define GTK_INSPECTOR_IS_THEMES(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GTK_TYPE_INSPECTOR_THEMES)) -#define GTK_INSPECTOR_IS_THEMES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GTK_TYPE_INSPECTOR_THEMES)) -#define GTK_INSPECTOR_THEMES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GTK_TYPE_INSPECTOR_THEMES, GtkInspectorThemesClass)) - - -typedef struct _GtkInspectorThemesPrivate GtkInspectorThemesPrivate; - -typedef struct _GtkInspectorThemes -{ - GtkListBox parent; - GtkInspectorThemesPrivate *priv; -} GtkInspectorThemes; - -typedef struct _GtkInspectorThemesClass -{ - GtkListBoxClass parent; -} GtkInspectorThemesClass; - -G_BEGIN_DECLS - -GType gtk_inspector_themes_get_type (void); -GtkWidget *gtk_inspector_themes_new (void); - -G_END_DECLS - -#endif // _GTK_INSPECTOR_THEMES_H_ - -// vim: set et sw=2 ts=2: diff --git a/gtk/inspector/themes.ui b/gtk/inspector/themes.ui deleted file mode 100644 index 73ca432a46..0000000000 --- a/gtk/inspector/themes.ui +++ /dev/null @@ -1,68 +0,0 @@ - - - - diff --git a/gtk/inspector/visual.c b/gtk/inspector/visual.c index 7b2fed7de2..361e734704 100644 --- a/gtk/inspector/visual.c +++ b/gtk/inspector/visual.c @@ -19,22 +19,21 @@ struct _GtkInspectorVisualPrivate { - GtkWidget *updates_switch; GtkWidget *direction_combo; + GtkWidget *updates_switch; GtkWidget *baselines_switch; GtkWidget *pixelcache_switch; + + GtkWidget *theme_combo; + GtkWidget *dark_switch; + GtkWidget *icon_combo; }; -G_DEFINE_TYPE_WITH_PRIVATE (GtkInspectorVisual, gtk_inspector_visual, GTK_TYPE_LIST_BOX) +G_DEFINE_TYPE_WITH_PRIVATE (GtkInspectorVisual, gtk_inspector_visual, GTK_TYPE_BOX) static void -updates_activate (GtkSwitch *sw) -{ - gdk_window_set_debug_updates (gtk_switch_get_active (sw)); -} - -static void -fix_direction_recurse (GtkWidget *widget, gpointer data) +fix_direction_recurse (GtkWidget *widget, + gpointer data) { GtkTextDirection dir = GPOINTER_TO_INT (data); @@ -84,6 +83,12 @@ init_direction (GtkInspectorVisual *vis) gtk_combo_box_set_active_id (GTK_COMBO_BOX (vis->priv->direction_combo), direction); } +void +updates_activate (GtkSwitch *sw) +{ + gdk_window_set_debug_updates (gtk_switch_get_active (sw)); +} + static void baselines_activate (GtkSwitch *sw) { @@ -115,12 +120,157 @@ pixelcache_activate (GtkSwitch *sw) } static void -gtk_inspector_visual_init (GtkInspectorVisual *pt) +fill_gtk (const gchar *path, + GHashTable *t) { - pt->priv = gtk_inspector_visual_get_instance_private (pt); - gtk_widget_init_template (GTK_WIDGET (pt)); + const gchar *dir_entry; + GDir *dir = g_dir_open (path, 0, NULL); - init_direction (pt); + if (!dir) + return; + + while ((dir_entry = g_dir_read_name (dir))) + { + gchar *filename = g_build_filename (path, dir_entry, "gtk-3.0", "gtk.css", NULL); + + if (g_file_test (filename, G_FILE_TEST_IS_REGULAR) && + !g_hash_table_contains (t, dir_entry)) + g_hash_table_add (t, g_strdup (dir_entry)); + + g_free (filename); + } +} + +static void +init_theme (GtkInspectorVisual *vis) +{ + GHashTable *t; + GHashTableIter iter; + gchar *theme, *current_theme, *path; + gint i, pos; + GSettings *settings; + + t = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); + g_hash_table_add (t, g_strdup ("Raleigh")); + + fill_gtk (GTK_DATADIR "/themes", t); + path = g_build_filename (g_get_user_data_dir (), "themes", NULL); + fill_gtk (path, t); + g_free (path); + + settings = g_settings_new ("org.gnome.desktop.interface"); + current_theme = g_settings_get_string (settings, "gtk-theme"); + g_object_unref (settings); + + g_hash_table_iter_init (&iter, t); + pos = i = 0; + while (g_hash_table_iter_next (&iter, (gpointer *)&theme, NULL)) + { + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (vis->priv->theme_combo), theme); + if (g_strcmp0 (theme, current_theme) == 0) + pos = i; + i++; + } + g_hash_table_destroy (t); + + gtk_combo_box_set_active (GTK_COMBO_BOX (vis->priv->theme_combo), pos); +} + +static void +theme_changed (GtkComboBox *c, + GtkInspectorVisual *vis) +{ + gchar *theme; + + theme = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (c)); + g_object_set (gtk_settings_get_default (), "gtk-theme-name", theme, NULL); + g_free (theme); +} + +static void +init_dark (GtkInspectorVisual *vis) +{ + g_object_bind_property (vis->priv->dark_switch, "active", + gtk_settings_get_default (), "gtk-application-prefer-dark-theme", + G_BINDING_BIDIRECTIONAL); +} + +static void +fill_icons (const gchar *path, + GHashTable *t) +{ + const gchar *dir_entry; + GDir *dir; + + dir = g_dir_open (path, 0, NULL); + if (!dir) + return; + + while ((dir_entry = g_dir_read_name (dir))) + { + gchar *filename = g_build_filename (path, dir_entry, "index.theme", NULL); + + if (g_file_test (filename, G_FILE_TEST_IS_REGULAR) && + g_strcmp0 (dir_entry, "hicolor") != 0 && + !g_hash_table_contains (t, dir_entry)) + g_hash_table_add (t, g_strdup (dir_entry)); + + g_free (filename); + } +} + +static void +init_icons (GtkInspectorVisual *vis) +{ + GHashTable *t; + GHashTableIter iter; + gchar *theme, *current_theme, *path; + gint i, pos; + GSettings *settings; + + t = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); + + fill_icons (GTK_DATADIR "/icons", t); + path = g_build_filename (g_get_user_data_dir (), "icons", NULL); + fill_icons (path, t); + g_free (path); + + settings = g_settings_new ("org.gnome.desktop.interface"); + current_theme = g_settings_get_string (settings, "icon-theme"); + g_object_unref (settings); + + g_hash_table_iter_init (&iter, t); + pos = i = 0; + while (g_hash_table_iter_next (&iter, (gpointer *)&theme, NULL)) + { + gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (vis->priv->icon_combo), theme); + if (g_strcmp0 (theme, current_theme) == 0) + pos = i; + i++; + } + g_hash_table_destroy (t); + + gtk_combo_box_set_active (GTK_COMBO_BOX (vis->priv->icon_combo), pos); +} + +static void +icons_changed (GtkComboBox *c, + GtkInspectorVisual *vis) +{ + gchar *theme = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (c)); + g_object_set (gtk_settings_get_default (), "gtk-icon-theme-name", theme, NULL); + g_free (theme); +} + +static void +gtk_inspector_visual_init (GtkInspectorVisual *vis) +{ + vis->priv = gtk_inspector_visual_get_instance_private (vis); + gtk_widget_init_template (GTK_WIDGET (vis)); + init_direction (vis); + init_theme (vis); + init_dark (vis); + init_icons (vis); } static void @@ -133,10 +283,17 @@ gtk_inspector_visual_class_init (GtkInspectorVisualClass *klass) gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, direction_combo); gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, baselines_switch); gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, pixelcache_switch); + gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, dark_switch); + gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, theme_combo); + gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, icon_combo); + gtk_widget_class_bind_template_callback (widget_class, updates_activate); gtk_widget_class_bind_template_callback (widget_class, direction_changed); gtk_widget_class_bind_template_callback (widget_class, baselines_activate); gtk_widget_class_bind_template_callback (widget_class, pixelcache_activate); + gtk_widget_class_bind_template_callback (widget_class, theme_changed); + gtk_widget_class_bind_template_callback (widget_class, icons_changed); + } GtkWidget * diff --git a/gtk/inspector/visual.h b/gtk/inspector/visual.h index 2227d3f668..00f9c7e110 100644 --- a/gtk/inspector/visual.h +++ b/gtk/inspector/visual.h @@ -32,13 +32,13 @@ typedef struct _GtkInspectorVisualPrivate GtkInspectorVisualPrivate; typedef struct _GtkInspectorVisual { - GtkListBox parent; + GtkBox parent; GtkInspectorVisualPrivate *priv; } GtkInspectorVisual; typedef struct _GtkInspectorVisualClass { - GtkListBoxClass parent; + GtkBoxClass parent; } GtkInspectorVisualClass; G_BEGIN_DECLS diff --git a/gtk/inspector/visual.ui b/gtk/inspector/visual.ui index da2162ada9..4d2e69fceb 100644 --- a/gtk/inspector/visual.ui +++ b/gtk/inspector/visual.ui @@ -1,94 +1,251 @@ -