diff options
author | Matthias Clasen <mclasen@redhat.com> | 2013-04-21 21:16:24 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2013-04-21 21:51:27 -0400 |
commit | 49511c7f422267445660fc2020e2ef45e59704cd (patch) | |
tree | 690b76241b490a99e2c0b73dda8448c6adb32b17 /demos/gtk-demo/stack.c | |
parent | 85ccb93b9f618828bbdf511a31912f0c69b6bb72 (diff) | |
download | gtk+-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.c | 48 |
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; +} |