[gtk+/gtk-3-22] Add a testcase for stacked headerbars



commit dbd5fb43abcd8f20814d84289ac86ac875028189
Author: Matthias Clasen <mclasen redhat com>
Date:   Thu Nov 3 08:32:31 2016 -0400

    Add a testcase for stacked headerbars
    
    This currently has some theming issues.
    This example is for Lapo to work those out.

 tests/Makefile.am           |    2 +
 tests/teststackedheaders.c  |   43 +++++++++++++++
 tests/teststackedheaders.ui |  123 +++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 168 insertions(+), 0 deletions(-)
---
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 649981f..52d93e0 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -166,6 +166,7 @@ noinst_PROGRAMS =  $(TEST_PROGS)    \
        testrevealer2                   \
        testtitlebar                    \
        testsplitheaders                \
+       teststackedheaders              \
        testactionbar                   \
        testwindowsize                  \
        testpopover                     \
@@ -561,6 +562,7 @@ EXTRA_DIST +=                       \
        merge-3.ui              \
        gnome-textfile.png      \
        testsplitheaders.ui     \
+       teststackedheaders.ui   \
        makefile.msc            \
        mydialog.ui             \
        mydialog2.ui            \
diff --git a/tests/teststackedheaders.c b/tests/teststackedheaders.c
new file mode 100644
index 0000000..53470db
--- /dev/null
+++ b/tests/teststackedheaders.c
@@ -0,0 +1,43 @@
+#include <gtk/gtk.h>
+
+static GtkWidget *header_stack;
+static GtkWidget *page_stack;
+
+static void
+back_to_main (GtkButton *button)
+{
+  gtk_stack_set_visible_child_name (GTK_STACK (header_stack), "main");
+  gtk_stack_set_visible_child_name (GTK_STACK (page_stack), "page1");
+}
+
+static void
+go_to_secondary (GtkButton *button)
+{
+  gtk_stack_set_visible_child_name (GTK_STACK (header_stack), "secondary");
+  gtk_stack_set_visible_child_name (GTK_STACK (page_stack), "secondary");
+}
+
+int
+main (int argc, char *argv[])
+{
+  GtkBuilder *builder;
+  GtkWidget *win;
+
+  gtk_init (NULL, NULL);
+
+  builder = gtk_builder_new ();
+  gtk_builder_add_callback_symbol (builder, "back_to_main", G_CALLBACK (back_to_main));
+  gtk_builder_add_callback_symbol (builder, "go_to_secondary", G_CALLBACK (go_to_secondary));
+  gtk_builder_add_from_file (builder, "teststackedheaders.ui", NULL);
+  gtk_builder_connect_signals (builder, NULL);
+
+  win = (GtkWidget *)gtk_builder_get_object (builder, "window");
+  header_stack = (GtkWidget *)gtk_builder_get_object (builder, "header_stack");
+  page_stack = (GtkWidget *)gtk_builder_get_object (builder, "page_stack");
+
+  gtk_window_present (GTK_WINDOW (win));
+
+  gtk_main ();
+
+  return 0;
+}
diff --git a/tests/teststackedheaders.ui b/tests/teststackedheaders.ui
new file mode 100644
index 0000000..4168be3
--- /dev/null
+++ b/tests/teststackedheaders.ui
@@ -0,0 +1,123 @@
+<interface>
+  <object class="GtkWindow" id="window">
+    <property name="default-width">600</property>
+    <property name="default-height">400</property>
+    <property name="icon-name">preferences-desktop-font</property>
+    <child type="titlebar">
+      <object class="GtkStack" id="header_stack">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkHeaderBar">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkButton">
+                <property name="visible">True</property>
+                <property name="label">New</property>
+                <property name="valign">center</property>
+                <signal name="clicked" handler="go_to_secondary"/>
+              </object>
+              <packing>
+                <property name="pack-type">start</property>
+              </packing>
+            </child>
+            <child type="title">
+              <object class="GtkStackSwitcher">
+                <property name="visible">True</property>
+                <property name="stack">page_stack</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="name">main</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkHeaderBar">
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkButton">
+                <property name="visible">True</property>
+                <property name="label">&lt;</property>
+                <property name="valign">center</property>
+                <signal name="clicked" handler="back_to_main"/>
+              </object>
+              <packing>
+                <property name="pack-type">start</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="name">secondary</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <child>
+      <object class="GtkStack" id="page_stack">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkScrolledWindow">
+            <property name="visible">True</property>
+            <property name="hexpand">True</property>
+            <property name="vexpand">True</property>
+            <property name="hscrollbar-policy">always</property>
+            <property name="vscrollbar-policy">always</property>
+            <child>
+              <object class="GtkLabel">
+                <property name="visible">True</property>
+                <property name="halign">center</property>
+                <property name="valign">center</property>
+                <property name="label">Page 1</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="name">page1</property>
+            <property name="title">Page 1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkScrolledWindow">
+            <property name="visible">True</property>
+            <property name="hexpand">True</property>
+            <property name="vexpand">True</property>
+            <property name="hscrollbar-policy">always</property>
+            <property name="vscrollbar-policy">always</property>
+            <child>
+              <object class="GtkLabel">
+                <property name="visible">True</property>
+                <property name="halign">center</property>
+                <property name="valign">center</property>
+                <property name="label">Page 2</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="name">page2</property>
+            <property name="title">Page 2</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkScrolledWindow">
+            <property name="visible">True</property>
+            <property name="hexpand">True</property>
+            <property name="vexpand">True</property>
+            <property name="hscrollbar-policy">always</property>
+            <property name="vscrollbar-policy">always</property>
+            <child>
+              <object class="GtkLabel">
+                <property name="visible">True</property>
+                <property name="halign">center</property>
+                <property name="valign">center</property>
+                <property name="label">Secondary</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="name">secondary</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]