]> Pileus Git - ~andy/gtk/commitdiff
gtk-demo: Add a theming example
authorMatthias Clasen <mclasen@redhat.com>
Fri, 18 May 2012 05:23:45 +0000 (01:23 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Fri, 18 May 2012 05:23:45 +0000 (01:23 -0400)
demos/gtk-demo/Makefile.am
demos/gtk-demo/theming.c [new file with mode: 0644]
demos/gtk-demo/theming.ui [new file with mode: 0644]

index dacedd2d059bbcd27e071c804fd49b93a6816ebc..0c4da0f2fecec4eb9b8d1d34ca89ad7e9a83e289 100644 (file)
@@ -43,6 +43,7 @@ demos =                                               \
        stock_browser.c                         \
        textview.c                              \
        textscroll.c                            \
+       theming.c                               \
        toolpalette.c                           \
        transparent.c                           \
        tree_store.c                            \
@@ -76,6 +77,7 @@ EXTRA_DIST +=                                 \
        application.gresource.xml       \
        application.ui                  \
        menus.ui                        \
+       theming.ui                      \
        gtk-logo-24.png                 \
        gtk-logo-48.png                 \
        org.gtk.Demo.gschema.xml
@@ -122,7 +124,13 @@ IMAGEFILES=        alphatest.png           \
                gnu-keys.png            \
                gtk-logo-rgb.gif
 
-democode_DATA = $(demos) $(IMAGEFILES) demo.ui menus.ui application.ui
+democode_DATA = \
+       $(demos)                \
+       $(IMAGEFILES)           \
+       demo.ui                 \
+       menus.ui                \
+       application.ui          \
+       theming.ui
 
 DISTCLEANFILES = demos.h
 
diff --git a/demos/gtk-demo/theming.c b/demos/gtk-demo/theming.c
new file mode 100644 (file)
index 0000000..a74ec6c
--- /dev/null
@@ -0,0 +1,61 @@
+/* Theming :: theming.ui
+ *
+ * GTK+ uses CSS for theming. Style classes can be associated
+ * with widgets to inform the theme about intended rendering.
+ *
+ * This demo shows some common examples where theming features
+ * of GTK+ are used for certain effects: primary toolbars,
+ * inline toolbars and linked buttons.
+ */
+
+#include <gtk/gtk.h>
+#include "demo-common.h"
+
+static GtkWidget *window = NULL;
+
+GtkWidget *
+do_theming (GtkWidget *do_widget)
+{
+  GtkWidget *grid;
+  GtkBuilder *builder;
+  gchar *filename;
+  GError *err = NULL;
+
+  if (!window)
+    {
+      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+      gtk_window_set_screen (GTK_WINDOW (window),
+                             gtk_widget_get_screen (do_widget));
+      gtk_window_set_title (GTK_WINDOW (window), "Theming");
+      gtk_container_set_border_width (GTK_CONTAINER (window), 12);
+      g_signal_connect (window, "destroy",
+                        G_CALLBACK (gtk_widget_destroyed), &window);
+
+      builder = gtk_builder_new ();
+      filename = demo_find_file ("theming.ui", NULL);
+      gtk_builder_add_from_file (builder, filename, &err);
+      g_free (filename);
+      if (err)
+        {
+          g_error ("ERROR: %s\n", err->message);
+          return NULL;
+        }
+
+      grid = (GtkWidget *)gtk_builder_get_object (builder, "grid");
+      gtk_widget_show_all (grid);
+      gtk_container_add (GTK_CONTAINER (window), grid);
+      g_object_unref (builder);
+    }
+
+  if (!gtk_widget_get_visible (window))
+    {
+      gtk_widget_show (window);
+    }
+  else
+    {
+      gtk_widget_destroy (window);
+      window = NULL;
+    }
+
+  return window;
+}
diff --git a/demos/gtk-demo/theming.ui b/demos/gtk-demo/theming.ui
new file mode 100644 (file)
index 0000000..728b1d1
--- /dev/null
@@ -0,0 +1,319 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <object class="GtkGrid" id="grid">
+    <property name="row-spacing">6</property>
+    <property name="orientation">vertical</property>
+    <child>
+      <object class="GtkToolbar" id="toolbar1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="hexpand">True</property>
+        <property name="show-arrow">False</property>
+        <style>
+          <class name="primary-toolbar"/>
+        </style>
+        <child>
+          <object class="GtkToggleToolButton" id="toolbutton1">
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="use_action_appearance">False</property>
+            <property name="label" translatable="yes">Normal</property>
+            <property name="use_underline">True</property>
+            <property name="is_important">True</property>
+            <property name="icon_name">edit-find</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToggleToolButton" id="toolbutton2">
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="use_action_appearance">False</property>
+            <property name="label" translatable="yes">Active</property>
+            <property name="use_underline">True</property>
+            <property name="is_important">True</property>
+            <property name="icon_name">edit-find</property>
+            <property name="active">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToggleToolButton" id="toolbutton3">
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="sensitive">False</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">Insensitive</property>
+            <property name="use_underline">True</property>
+            <property name="is_important">True</property>
+            <property name="icon_name">edit-find</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToggleToolButton" id="toolbutton5">
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">Raised</property>
+            <property name="use_underline">True</property>
+            <property name="is_important">True</property>
+            <property name="icon_name">edit-find-symbolic</property>
+            <style>
+              <class name="raised"/>
+            </style>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToggleToolButton" id="toolbutton6">
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">Raised Active</property>
+            <property name="use_underline">True</property>
+            <property name="is_important">True</property>
+            <property name="icon_name">edit-find-symbolic</property>
+            <property name="active">True</property>
+            <style>
+              <class name="raised"/>
+            </style>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToggleToolButton" id="toolbutton4">
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="sensitive">False</property>
+            <property name="can_focus">False</property>
+            <property name="label" translatable="yes">Insensitive Active</property>
+            <property name="use_underline">True</property>
+            <property name="icon_name">edit-find</property>
+            <property name="is_important">True</property>
+            <property name="active">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToolItem" id="toolitementry">
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkEntry" id="entry1">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="invisible_char">•</property>
+                <property name="placeholder-text" translatable="yes">Search...</property>
+                <property name="secondary-icon-name">edit-find-symbolic</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToolItem" id="toolitemswitch">
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkSwitch" id="switch1">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <child>
+      <object class="GtkBox" id="box1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="orientation">horizontal</property>
+        <property name="valign">center</property>
+        <property name="halign">center</property>
+        <style>
+          <class name="linked"/>
+        </style>
+        <child>
+          <object class="GtkButton" id="button1">
+            <property name="label" translatable="yes">Hi, I am a button</property>
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <property name="use_action_appearance">False</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkButton" id="button2">
+            <property name="label" translatable="yes">And I'm another button</property>
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <property name="use_action_appearance">False</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkButton" id="button3">
+            <property name="label" translatable="yes">This is a button party!</property>
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="receives_default">True</property>
+            <property name="use_action_appearance">False</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">2</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <child>
+      <object class="GtkToolbar" id="itoolbar1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="hexpand">True</property>
+        <property name="icon_size">1</property>
+        <style>
+          <class name="inline-toolbar"/>
+        </style>
+        <child>
+          <object class="GtkToggleToolButton" id="itoolbutton1">
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="use_action_appearance">False</property>
+            <property name="label" translatable="yes">Normal</property>
+            <property name="use_underline">True</property>
+            <property name="icon_name">list-add-symbolic</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToggleToolButton" id="itoolbutton2">
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="use_action_appearance">False</property>
+            <property name="label" translatable="yes">Normal</property>
+            <property name="use_underline">True</property>
+            <property name="icon_name">list-add-symbolic</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToggleToolButton" id="itoolbutton3">
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="use_action_appearance">False</property>
+            <property name="label" translatable="yes">Active</property>
+            <property name="use_underline">True</property>
+            <property name="icon_name">list-remove-symbolic</property>
+            <property name="active">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToggleToolButton" id="itoolbutton4">
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="use_action_appearance">False</property>
+            <property name="label" translatable="yes">Active</property>
+            <property name="use_underline">True</property>
+            <property name="icon_name">list-remove-symbolic</property>
+            <property name="active">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToggleToolButton" id="itoolbutton5">
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="sensitive">False</property>
+            <property name="can_focus">False</property>
+            <property name="use_action_appearance">False</property>
+            <property name="label" translatable="yes">Insensitive</property>
+            <property name="use_underline">True</property>
+            <property name="icon_name">edit-find-symbolic</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToggleToolButton" id="itoolbutton6">
+            <property name="use_action_appearance">False</property>
+            <property name="visible">True</property>
+            <property name="sensitive">False</property>
+            <property name="can_focus">False</property>
+            <property name="use_action_appearance">False</property>
+            <property name="label" translatable="yes">Insensitive Active</property>
+            <property name="use_underline">True</property>
+            <property name="icon_name">go-up-symbolic</property>
+            <property name="active">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="homogeneous">True</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>