summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimm Bäder <mail@baedert.org>2015-10-07 11:26:53 +0200
committerMatthias Clasen <mclasen@redhat.com>2015-10-10 17:29:15 -0400
commit7aa2bfdc774bde4ac58f18533f03679cd5833421 (patch)
treeed182ec9179feeceaaa8f9446620227a5a647993
parentbddc524cd84b76d1c25c7700eca9d3a25db30cf6 (diff)
downloadgtk+-7aa2bfdc774bde4ac58f18533f03679cd5833421.tar.gz
Add gtk-query-settings
A small utility binary to query all properties of GtkSettings. https://bugzilla.gnome.org/show_bug.cgi?id=756174
-rw-r--r--docs/reference/gtk/Makefile.am6
-rw-r--r--docs/reference/gtk/gtk-docs.sgml1
-rw-r--r--docs/reference/gtk/gtk-query-settings.xml45
-rw-r--r--gtk/Makefile.am7
-rw-r--r--gtk/gtk-query-settings.c70
5 files changed, 127 insertions, 2 deletions
diff --git a/docs/reference/gtk/Makefile.am b/docs/reference/gtk/Makefile.am
index 24d951c9eb..63cd349c72 100644
--- a/docs/reference/gtk/Makefile.am
+++ b/docs/reference/gtk/Makefile.am
@@ -315,7 +315,8 @@ content_files = \
input-handling.xml \
visual_index.xml \
getting_started.xml \
- overview.xml
+ overview.xml \
+ gtk-query-settings.xml
expand_content_files = \
compiling.sgml \
@@ -499,7 +500,8 @@ man_MANS = \
gtk3-widget-factory.1 \
gtk3-icon-browser.1 \
broadwayd.1 \
- gtk-builder-tool.1
+ gtk-builder-tool.1 \
+ gtk-query-settings.1
if ENABLE_MAN
diff --git a/docs/reference/gtk/gtk-docs.sgml b/docs/reference/gtk/gtk-docs.sgml
index 2198a4a9ff..9194c4722d 100644
--- a/docs/reference/gtk/gtk-docs.sgml
+++ b/docs/reference/gtk/gtk-docs.sgml
@@ -406,6 +406,7 @@
<xi:include href="gtk-encode-symbolic-svg.xml" />
<xi:include href="gtk-builder-tool.xml" />
<xi:include href="gtk-launch.xml" />
+ <xi:include href="gtk-query-settings.xml" />
<xi:include href="broadwayd.xml" />
</part>
diff --git a/docs/reference/gtk/gtk-query-settings.xml b/docs/reference/gtk/gtk-query-settings.xml
new file mode 100644
index 0000000000..52f9638e07
--- /dev/null
+++ b/docs/reference/gtk/gtk-query-settings.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
+ "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
+]>
+<refentry id="gtk-query-settings">
+
+<refentryinfo>
+ <title>gtk-query-settings</title>
+ <productname>GTK+</productname>
+ <authorgroup>
+ <author>
+ <contrib>Developer</contrib>
+ <firstname>Timm</firstname>
+ <surname>Bäder</surname>
+ </author>
+ </authorgroup>
+</refentryinfo>
+
+<refmeta>
+ <refentrytitle>gtk-query-settings</refentrytitle>
+ <manvolnum>1</manvolnum>
+ <refmiscinfo class="manual">User Commands</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+ <refname>gtk-query-settings</refname>
+ <refpurpose>Utility to print name and value of all GtkSettings properties</refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<cmdsynopsis>
+<command>gtk-query-settings</command>
+<arg choice="opt"><replaceable>PATTERN</replaceable></arg>
+</cmdsynopsis>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+<para>
+ <command>gtk-query-settings</command> prints both name and value of all properties
+ available in the GtkSettings class. Optionally, you can filter which properties
+ to list by specifying a PATTERN.
+</para>
+</refsect1>
+
+</refentry>
diff --git a/gtk/Makefile.am b/gtk/Makefile.am
index bf33c8514e..88e30f8991 100644
--- a/gtk/Makefile.am
+++ b/gtk/Makefile.am
@@ -1404,6 +1404,7 @@ bin_PROGRAMS = \
gtk-update-icon-cache \
gtk-encode-symbolic-svg \
gtk-builder-tool \
+ gtk-query-settings \
gtk-launch
gtk_query_immodules_3_0_SOURCES = queryimmodules.c
@@ -1428,6 +1429,12 @@ gtk_builder_tool_LDADD = \
$(top_builddir)/gdk/libgdk-3.la \
$(GTK_DEP_LIBS)
+gtk_query_settings_SOURCES = gtk-query-settings.c
+gtk_query_settings_LDADD= \
+ libgtk-3.la \
+ $(top_builddir)/gdk/libgdk-3.la \
+ $(GTK_DEP_LIBS)
+
gtk_launch_SOURCES = gtk-launch.c
gtk_launch_LDADD = \
libgtk-3.la \
diff --git a/gtk/gtk-query-settings.c b/gtk/gtk-query-settings.c
new file mode 100644
index 0000000000..cf1e476db9
--- /dev/null
+++ b/gtk/gtk-query-settings.c
@@ -0,0 +1,70 @@
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <string.h>
+
+
+int
+main (int argc, char **argv)
+{
+ GtkSettings *settings;
+ GParamSpec **props;
+ guint n_properties;
+ int i;
+ int max_prop_name_length = 0;
+ gchar *pattern = NULL;
+
+ gtk_init (&argc, &argv);
+
+ if (argc > 1)
+ pattern = argv[1];
+
+ settings = gtk_settings_get_default ();
+ props = g_object_class_list_properties (G_OBJECT_GET_CLASS (settings), &n_properties);
+
+ for (i = 0; i < n_properties; i ++)
+ {
+ int len = strlen (props[i]->name);
+
+ if (len > max_prop_name_length)
+ max_prop_name_length = len;
+ }
+
+
+ for (i = 0; i < n_properties; i ++)
+ {
+ GValue value = {0};
+ GParamSpec *prop = props[i];
+ gchar *value_str;
+ int spacing = max_prop_name_length - strlen (prop->name);
+
+ if (pattern && !g_strrstr (prop->name, pattern))
+ continue;
+
+ g_value_init (&value, prop->value_type);
+ g_object_get_property (G_OBJECT (settings), prop->name, &value);
+
+ if (G_VALUE_HOLDS_ENUM (&value))
+ {
+ GEnumClass *enum_class = G_PARAM_SPEC_ENUM (prop)->enum_class;
+ GEnumValue *enum_value = g_enum_get_value (enum_class, g_value_get_enum (&value));
+
+ value_str = g_strdup (enum_value->value_name);
+ }
+ else
+ {
+ value_str = g_strdup_value_contents (&value);
+ }
+
+ for (; spacing >= 0; spacing --)
+ printf (" ");
+
+ printf ("%s: %s\n", prop->name, value_str);
+
+ g_free (value_str);
+ g_value_unset (&value);
+ }
+
+ g_free (props);
+
+ return 0;
+}