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 | |
parent | 85ccb93b9f618828bbdf511a31912f0c69b6bb72 (diff) | |
download | gtk+-49511c7f422267445660fc2020e2ef45e59704cd.tar.gz |
Add a GtkStack example to gtk-demo
Diffstat (limited to 'demos')
-rw-r--r-- | demos/gtk-demo/Makefile.am | 2 | ||||
-rw-r--r-- | demos/gtk-demo/demo.gresource.xml | 4 | ||||
-rw-r--r-- | demos/gtk-demo/stack.c | 48 | ||||
-rw-r--r-- | demos/gtk-demo/stack.ui | 82 |
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> |