[gtk+] inspector: Add a cursor theme control
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] inspector: Add a cursor theme control
- Date: Sat, 13 Dec 2014 04:47:50 +0000 (UTC)
commit 31ccc372f078445da0b33bffadc8329209774597
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Dec 12 23:14:34 2014 -0500
inspector: Add a cursor theme control
gtk/inspector/visual.c | 106 ++++++++++++++++++++++++++++++++++++++++++++-
gtk/inspector/visual.ui | 79 +++++++++++++++++++++++++++++++++
gtk/inspector/visual.ui.h | 2 +
3 files changed, 185 insertions(+), 2 deletions(-)
---
diff --git a/gtk/inspector/visual.c b/gtk/inspector/visual.c
index 68d310b..dec6e74 100644
--- a/gtk/inspector/visual.c
+++ b/gtk/inspector/visual.c
@@ -42,11 +42,14 @@ struct _GtkInspectorVisualPrivate
GtkWidget *theme_combo;
GtkWidget *dark_switch;
GtkWidget *icon_combo;
+ GtkWidget *cursor_combo;
+ GtkWidget *cursor_size_spin;
GtkWidget *direction_combo;
GtkWidget *font_button;
GtkWidget *hidpi_spin;
GtkWidget *animation_switch;
GtkAdjustment *scale_adjustment;
+ GtkAdjustment *cursor_size_adjustment;
GtkWidget *debug_box;
GtkWidget *rendering_mode_combo;
@@ -369,6 +372,99 @@ icons_changed (GtkComboBox *c,
}
static void
+fill_cursors (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, "cursors", NULL);
+
+ if (g_file_test (filename, G_FILE_TEST_IS_DIR) &&
+ !g_hash_table_contains (t, dir_entry))
+ g_hash_table_add (t, g_strdup (dir_entry));
+
+ g_free (filename);
+ }
+}
+
+static void
+init_cursors (GtkInspectorVisual *vis)
+{
+ GHashTable *t;
+ GHashTableIter iter;
+ gchar *theme, *current_theme, *path;
+ gint i, pos;
+ GSettings *settings;
+ gchar *cursordir;
+
+ t = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+
+ cursordir = get_data_path ("icons");
+ fill_cursors (cursordir, t);
+ g_free (cursordir);
+
+ path = g_build_filename (g_get_user_data_dir (), "icons", NULL);
+ fill_cursors (path, t);
+ g_free (path);
+
+ settings = g_settings_new ("org.gnome.desktop.interface");
+ current_theme = g_settings_get_string (settings, "cursor-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->cursor_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->cursor_combo), pos);
+}
+
+static void
+cursors_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-cursor-theme-name", theme, NULL);
+ g_free (theme);
+}
+
+static void
+cursor_size_changed (GtkAdjustment *adjustment, GtkInspectorVisual *vis)
+{
+ gint size;
+
+ size = gtk_adjustment_get_value (adjustment);
+ g_object_set (gtk_settings_get_default (), "gtk-cursor-theme-size", size, NULL);
+}
+
+static void
+init_cursor_size (GtkInspectorVisual *vis)
+{
+ gint size;
+
+ g_object_get (gtk_settings_get_default (), "gtk-cursor-theme-size", &size, NULL);
+ if (size == 0)
+ size = gdk_display_get_default_cursor_size (gdk_display_get_default ());
+
+ gtk_adjustment_set_value (vis->priv->scale_adjustment, (gdouble)size);
+ g_signal_connect (vis->priv->cursor_size_adjustment, "value-changed",
+ G_CALLBACK (cursor_size_changed), vis);
+}
+
+static void
init_font (GtkInspectorVisual *vis)
{
g_object_bind_property (gtk_settings_get_default (), "gtk-font-name",
@@ -597,6 +693,8 @@ gtk_inspector_visual_init (GtkInspectorVisual *vis)
init_theme (vis);
init_dark (vis);
init_icons (vis);
+ init_cursors (vis);
+ init_cursor_size (vis);
init_font (vis);
init_scale (vis);
init_rendering_mode (vis);
@@ -636,12 +734,15 @@ 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, dark_switch);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, cursor_combo);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, cursor_size_spin);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, cursor_size_adjustment);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, icon_combo);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, hidpi_spin);
- gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, animation_switch);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, scale_adjustment);
+ gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, animation_switch);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, touchscreen_switch);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, visual_box);
gtk_widget_class_bind_template_child_private (widget_class, GtkInspectorVisual, debug_box);
@@ -659,6 +760,7 @@ gtk_inspector_visual_class_init (GtkInspectorVisualClass *klass)
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);
+ gtk_widget_class_bind_template_callback (widget_class, cursors_changed);
gtk_widget_class_bind_template_callback (widget_class, software_gl_activate);
gtk_widget_class_bind_template_callback (widget_class, software_surface_activate);
gtk_widget_class_bind_template_callback (widget_class, texture_rectangle_activate);
diff --git a/gtk/inspector/visual.ui b/gtk/inspector/visual.ui
index 3fffe87..8ef2c93 100644
--- a/gtk/inspector/visual.ui
+++ b/gtk/inspector/visual.ui
@@ -6,6 +6,13 @@
<property name="step-increment">1</property>
<property name="page-increment">1</property>
</object>
+ <object class="GtkAdjustment" id="cursor_size_adjustment">
+ <property name="lower">24</property>
+ <property name="upper">64</property>
+ <property name="step-increment">8</property>
+ <property name="page-increment">8</property>
+ <property name="page-size">0</property>
+ </object>
<template class="GtkInspectorVisual" parent="GtkScrolledWindow">
<property name="hscrollbar-policy">never</property>
<property name="vscrollbar-policy">automatic</property>
@@ -104,6 +111,75 @@
<property name="margin">10</property>
<property name="spacing">40</property>
<child>
+ <object class="GtkLabel" id="cursor_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Cursor Theme</property>
+ <property name="halign">start</property>
+ <property name="valign">baseline</property>
+ <property name="xalign">0.0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="cursor_combo">
+ <property name="visible">True</property>
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <signal name="changed" handler="cursors_changed"/>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow">
+ <property name="visible">True</property>
+ <property name="activatable">False</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="orientation">horizontal</property>
+ <property name="margin">10</property>
+ <property name="spacing">40</property>
+ <child>
+ <object class="GtkLabel" id="cursor_size_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Cursor Size</property>
+ <property name="halign">start</property>
+ <property name="valign">baseline</property>
+ <property name="xalign">0.0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="cursor_size_spin">
+ <property name="visible">True</property>
+ <property name="halign">end</property>
+ <property name="valign">baseline</property>
+ <property name="adjustment">cursor_size_adjustment</property>
+ <property name="snap-to-ticks">True</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkListBoxRow">
+ <property name="visible">True</property>
+ <property name="activatable">False</property>
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="orientation">horizontal</property>
+ <property name="margin">10</property>
+ <property name="spacing">40</property>
+ <child>
<object class="GtkLabel" id="icon_label">
<property name="visible">True</property>
<property name="label" translatable="yes">Icon Theme</property>
@@ -617,6 +693,8 @@
<widget name="theme_label"/>
<widget name="dark_label"/>
<widget name="icon_label"/>
+ <widget name="cursor_label"/>
+ <widget name="cursor_size_label"/>
<widget name="font_label"/>
<widget name="direction_label"/>
<widget name="hidpi_label"/>
@@ -637,6 +715,7 @@
<widgets>
<widget name="theme_combo"/>
<widget name="icon_combo"/>
+ <widget name="cursor_combo"/>
<widget name="font_button"/>
<widget name="direction_combo"/>
<widget name="rendering_mode_combo"/>
diff --git a/gtk/inspector/visual.ui.h b/gtk/inspector/visual.ui.h
index 478c273..5e65f8f 100644
--- a/gtk/inspector/visual.ui.h
+++ b/gtk/inspector/visual.ui.h
@@ -1,5 +1,7 @@
N_("GTK+ Theme");
N_("Dark variant");
+N_("Cursor Theme");
+N_("Cursor Size");
N_("Icon Theme");
N_("Font");
N_("Text Direction");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]