summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2013-04-21 21:16:24 -0400
committerMatthias Clasen <mclasen@redhat.com>2013-04-21 21:51:27 -0400
commit49511c7f422267445660fc2020e2ef45e59704cd (patch)
tree690b76241b490a99e2c0b73dda8448c6adb32b17
parent85ccb93b9f618828bbdf511a31912f0c69b6bb72 (diff)
downloadgtk+-49511c7f422267445660fc2020e2ef45e59704cd.tar.gz
Add a GtkStack example to gtk-demo
-rw-r--r--demos/gtk-demo/Makefile.am2
-rw-r--r--demos/gtk-demo/demo.gresource.xml4
-rw-r--r--demos/gtk-demo/stack.c48
-rw-r--r--demos/gtk-demo/stack.ui82
4 files changed, 136 insertions, 0 deletions
diff --git a/demos/gtk-demo/Makefile.am b/demos/gtk-demo/Makefile.am
index ad38a3ed0f..64521a7a22 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 a130d32752..5579cdb87e 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 0000000000..badcd99ba0
--- /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 0000000000..d400dc1337
--- /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>