From 49511c7f422267445660fc2020e2ef45e59704cd Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 21 Apr 2013 21:16:24 -0400 Subject: [PATCH] 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(+) create mode 100644 demos/gtk-demo/stack.c create mode 100644 demos/gtk-demo/stack.ui 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 @@ gnome-fs-directory.png gnome-fs-regular.png + + stack.ui + alphatest.png floppybuddy.gif @@ -110,6 +113,7 @@ rotated_text.c search_entry.c sizegroup.c + stack.c spinner.c stock_browser.c textview.c 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 + +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 @@ + + + + + False + GtkStack + + + True + False + + + True + stack + center + + + 0 + 0 + 1 + 1 + + + + + True + True + crossfade + + + True + False + 20 + 20 + /application/gtk-logo-48.png + + + page1 + Page 1 + + + + + Page 2 + True + True + False + 0 + True + center + center + + + page2 + Page 2 + + + + + True + False + center + center + True + + + page3 + face-laugh-symbolic + + + + + 0 + 1 + 1 + 1 + + + + + +