[gtk+/stack] Add a GtkStack example to gtk-demo



commit 5f459add7baf74eb461307ffb2dfc91fc9b68015
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Apr 21 21:16:24 2013 -0400

    Add a GtkStack example to gtk-demo

 demos/gtk-demo/Makefile.am        |  2 +
 demos/gtk-demo/demo.gresource.xml |  4 ++
 demos/gtk-demo/stack.c            | 48 +++++++++++++++++++++++
 demos/gtk-demo/stack.ui           | 82 +++++++++++++++++++++++++++++++++++++++
 4 files changed, 136 insertions(+)
---
diff --git a/demos/gtk-demo/Makefile.am b/demos/gtk-demo/Makefile.am
index ad38a3e..64521a7 100644
--- a/demos/gtk-demo/Makefile.am
+++ b/demos/gtk-demo/Makefile.am
@@ -43,6 +43,7 @@ demos =                                               \
        search_entry.c                          \
        sizegroup.c                             \
        spinner.c                               \
+       stack.c                                 \
        stock_browser.c                         \
        textview.c                              \
        textscroll.c                            \
@@ -110,6 +111,7 @@ RESOURCES=  $(demos)                        \
                application.ui                  \
                demo.ui                         \
                menus.ui                        \
+               stack.ui                        \
                theming.ui                      \
                alphatest.png                   \
                apple-red.png                   \
diff --git a/demos/gtk-demo/demo.gresource.xml b/demos/gtk-demo/demo.gresource.xml
index a130d32..5579cdb 100644
--- a/demos/gtk-demo/demo.gresource.xml
+++ b/demos/gtk-demo/demo.gresource.xml
@@ -55,6 +55,9 @@
     <file preprocess="to-pixdata">gnome-fs-directory.png</file>
     <file preprocess="to-pixdata">gnome-fs-regular.png</file>
   </gresource>
+  <gresource prefix="/stack">
+    <file>stack.ui</file>
+  </gresource>
   <gresource prefix="/images">
     <file>alphatest.png</file>
     <file>floppybuddy.gif</file>
@@ -110,6 +113,7 @@
     <file>rotated_text.c</file>
     <file>search_entry.c</file>
     <file>sizegroup.c</file>
+    <file>stack.c</file>
     <file>spinner.c</file>
     <file>stock_browser.c</file>
     <file>textview.c</file>
diff --git a/demos/gtk-demo/stack.c b/demos/gtk-demo/stack.c
new file mode 100644
index 0000000..badcd99
--- /dev/null
+++ b/demos/gtk-demo/stack.c
@@ -0,0 +1,48 @@
+/* Stack
+ *
+ * GtkStack is a container that shows a single child at a time,
+ * with nice transitions when the visible child changes.
+ *
+ * GtkStackSwitcher adds buttons to control which child is visible.
+ */
+
+#include <gtk/gtk.h>
+
+static GtkBuilder *builder;
+
+GtkWidget *
+do_stack (GtkWidget *do_widget)
+{
+  static GtkWidget *window = NULL;
+  GError *err = NULL;
+
+  if (!window)
+    {
+      builder = gtk_builder_new ();
+      gtk_builder_add_from_resource (builder, "/stack/stack.ui", &err);
+      if (err)
+        {
+          g_error ("ERROR: %s\n", err->message);
+          return NULL;
+        }
+      gtk_builder_connect_signals (builder, NULL);
+      window = GTK_WIDGET (gtk_builder_get_object (builder, "window1"));
+      gtk_window_set_screen (GTK_WINDOW (window),
+                             gtk_widget_get_screen (do_widget));
+      g_signal_connect (window, "destroy",
+                        G_CALLBACK (gtk_widget_destroyed), &window);
+    }
+
+  if (!gtk_widget_get_visible (window))
+    {
+      gtk_widget_show_all (window);
+    }
+  else
+    {
+      gtk_widget_destroy (window);
+      window = NULL;
+    }
+
+
+  return window;
+}
diff --git a/demos/gtk-demo/stack.ui b/demos/gtk-demo/stack.ui
new file mode 100644
index 0000000..d400dc1
--- /dev/null
+++ b/demos/gtk-demo/stack.ui
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.6 -->
+  <object class="GtkWindow" id="window1">
+    <property name="can_focus">False</property>
+    <property name="title" translatable="yes">GtkStack</property>
+    <child>
+      <object class="GtkGrid" id="grid1">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <child>
+          <object class="GtkStackSwitcher" id="switcher">
+            <property name="visible">True</property>
+            <property name="stack">stack</property>
+            <property name="halign">center</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">0</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkStack" id="stack">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="transition-type">crossfade</property>
+            <child>
+              <object class="GtkImage" id="image1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="margin-top">20</property>
+                <property name="margin-bottom">20</property>
+                <property name="resource">/application/gtk-logo-48.png</property>
+              </object>
+              <packing>
+                <property name="name">page1</property>
+                <property name="title" translatable="yes">Page 1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkCheckButton" id="checkbutton1">
+                <property name="label" translatable="yes">Page 2</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="xalign">0</property>
+                <property name="draw_indicator">True</property>
+                <property name="halign">center</property>
+                <property name="valign">center</property>
+              </object>
+              <packing>
+                <property name="name">page2</property>
+                <property name="title" translatable="yes">Page 2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkSpinner" id="spinner1">
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">center</property>
+                <property name="valign">center</property>
+                <property name="active">True</property>
+              </object>
+              <packing>
+                <property name="name">page3</property>
+                <property name="icon-name">face-laugh-symbolic</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">1</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]