summaryrefslogtreecommitdiff
path: root/demos/gtk-demo/stack.c
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 /demos/gtk-demo/stack.c
parent85ccb93b9f618828bbdf511a31912f0c69b6bb72 (diff)
downloadgtk+-49511c7f422267445660fc2020e2ef45e59704cd.tar.gz
Add a GtkStack example to gtk-demo
Diffstat (limited to 'demos/gtk-demo/stack.c')
-rw-r--r--demos/gtk-demo/stack.c48
1 files changed, 48 insertions, 0 deletions
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;
+}