[gtk+] Add a revealer example to gtk-demo



commit 86688c6fdee6a70be580d26392bf70fa24513a45
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Apr 22 12:03:07 2013 -0400

    Add a revealer example to gtk-demo
    
    I tried to make a 'revealer ballet'. Judge for yourself if
    I succeeded.

 demos/gtk-demo/Makefile.am        |   4 +-
 demos/gtk-demo/demo.gresource.xml |   4 +
 demos/gtk-demo/revealer.c         |  85 +++++++++++++++
 demos/gtk-demo/revealer.ui        | 223 ++++++++++++++++++++++++++++++++++++++
 4 files changed, 315 insertions(+), 1 deletion(-)
---
diff --git a/demos/gtk-demo/Makefile.am b/demos/gtk-demo/Makefile.am
index 64521a7..b2ec42e 100644
--- a/demos/gtk-demo/Makefile.am
+++ b/demos/gtk-demo/Makefile.am
@@ -39,6 +39,7 @@ demos =                                               \
        pickers.c                               \
        pixbufs.c                               \
        printing.c                              \
+       revealer.c                              \
        rotated_text.c                          \
        search_entry.c                          \
        sizegroup.c                             \
@@ -86,7 +87,7 @@ gsettings_SCHEMAS = \
 @GSETTINGS_RULES@
 
 demos.h: @REBUILD@ $(demos) geninclude.pl
-       $(AM_V_GEN) (here=`pwd` ; cd $(srcdir) && $(PERL) $$here/geninclude.pl $(demos)) > demos.h
+        $(AM_V_GEN) (here=`pwd` ; cd $(srcdir) && $(PERL) $$here/geninclude.pl $(demos)) > demos.h
 
 gtk3_demo_SOURCES =            \
        $(demos)                \
@@ -112,6 +113,7 @@ RESOURCES=  $(demos)                        \
                demo.ui                         \
                menus.ui                        \
                stack.ui                        \
+               revealer.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 5579cdb..28c01aa 100644
--- a/demos/gtk-demo/demo.gresource.xml
+++ b/demos/gtk-demo/demo.gresource.xml
@@ -58,6 +58,9 @@
   <gresource prefix="/stack">
     <file>stack.ui</file>
   </gresource>
+  <gresource prefix="/revealer">
+    <file>revealer.ui</file>
+  </gresource>
   <gresource prefix="/images">
     <file>alphatest.png</file>
     <file>floppybuddy.gif</file>
@@ -110,6 +113,7 @@
     <file>pickers.c</file>
     <file>pixbufs.c</file>
     <file>printing.c</file>
+    <file>revealer.c</file>
     <file>rotated_text.c</file>
     <file>search_entry.c</file>
     <file>sizegroup.c</file>
diff --git a/demos/gtk-demo/revealer.c b/demos/gtk-demo/revealer.c
new file mode 100644
index 0000000..cee1f3d
--- /dev/null
+++ b/demos/gtk-demo/revealer.c
@@ -0,0 +1,85 @@
+/* Revealer
+ *
+ * GtkRevealer is a container that animates showing and hiding
+ * of its sole child with nice transitions.
+ */
+
+#include <gtk/gtk.h>
+
+static GtkBuilder *builder;
+static gint count = 0;
+
+static void
+change_direction (GtkRevealer *revealer)
+{
+  gboolean revealed;
+
+  revealed = gtk_revealer_get_child_revealed (revealer);
+  gtk_revealer_set_reveal_child (revealer, !revealed);
+}
+
+static gboolean
+reveal_one (gpointer data)
+{
+  gchar *name;
+  GtkRevealer *revealer;
+
+  name = g_strdup_printf ("revealer%d", count);
+  revealer = (GtkRevealer *)gtk_builder_get_object (builder, name);
+
+  gtk_revealer_set_reveal_child (revealer, TRUE);
+
+  g_signal_connect (revealer, "notify::child-revealed",
+                    G_CALLBACK (change_direction), NULL);
+  count++;
+
+  return count < 9;
+}
+
+static void
+response_cb (GtkWidget *dialog,
+             gint       response_id,
+             gpointer   data)
+{
+  gtk_widget_destroy (dialog);
+}
+
+GtkWidget *
+do_revealer (GtkWidget *do_widget)
+{
+  static GtkWidget *window = NULL;
+  GError *err = NULL;
+
+  if (!window)
+    {
+      builder = gtk_builder_new ();
+      gtk_builder_add_from_resource (builder, "/revealer/revealer.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, "dialog1"));
+      gtk_window_set_screen (GTK_WINDOW (window),
+                             gtk_widget_get_screen (do_widget));
+      g_signal_connect (window, "destroy",
+                        G_CALLBACK (gtk_widget_destroyed), &window);
+      g_signal_connect (window, "response", G_CALLBACK (response_cb), NULL);
+    }
+
+  if (!gtk_widget_get_visible (window))
+    {
+      count = 0;
+      g_timeout_add (690, reveal_one, NULL);
+      gtk_widget_show_all (window);
+    }
+  else
+    {
+      gtk_widget_destroy (window);
+      window = NULL;
+    }
+
+
+  return window;
+}
diff --git a/demos/gtk-demo/revealer.ui b/demos/gtk-demo/revealer.ui
new file mode 100644
index 0000000..6449c98
--- /dev/null
+++ b/demos/gtk-demo/revealer.ui
@@ -0,0 +1,223 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.6 -->
+  <object class="GtkDialog" id="dialog1">
+    <property name="can_focus">False</property>
+    <property name="border_width">5</property>
+    <property name="type_hint">dialog</property>
+    <property name="default_width">300</property>
+    <property name="default_height">300</property>
+    <property name="title">Revealer</property>
+    <child internal-child="vbox">
+      <object class="GtkBox" id="dialog-vbox1">
+        <property name="can_focus">False</property>
+        <property name="orientation">vertical</property>
+        <property name="spacing">2</property>
+        <child internal-child="action_area">
+          <object class="GtkButtonBox" id="dialog-action_area1">
+            <property name="can_focus">False</property>
+            <property name="layout_style">end</property>
+            <child>
+              <object class="GtkButton" id="button1">
+                <property name="label">gtk-close</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">True</property>
+                <property name="use_stock">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="pack_type">end</property>
+            <property name="position">0</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkGrid" id="grid1">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="halign">center</property>
+            <property name="valign">center</property>
+            <child>
+              <object class="GtkRevealer" id="revealer0">
+                <property name="visible">True</property>
+                <property name="transition-duration">2000</property>
+                <property name="transition-type">crossfade</property>
+                <child>
+                  <object class="GtkImage" id="image0">
+                    <property name="visible">True</property>
+                    <property name="icon-name">face-cool-symbolic</property>
+                    <property name="icon-size">6</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left-attach">2</property>
+                <property name="top-attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRevealer" id="revealer1">
+                <property name="visible">True</property>
+                <property name="transition-duration">2000</property>
+                <property name="transition-type">slide-up</property>
+                <child>
+                  <object class="GtkImage" id="image1">
+                    <property name="visible">True</property>
+                    <property name="icon-name">face-cool-symbolic</property>
+                    <property name="icon-size">6</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left-attach">2</property>
+                <property name="top-attach">1</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRevealer" id="revealer2">
+                <property name="visible">True</property>
+                <property name="transition-duration">2000</property>
+                <property name="transition-type">slide-right</property>
+                <child>
+                  <object class="GtkImage" id="image2">
+                    <property name="visible">True</property>
+                    <property name="icon-name">face-cool-symbolic</property>
+                    <property name="icon-size">6</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left-attach">3</property>
+                <property name="top-attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRevealer" id="revealer3">
+                <property name="visible">True</property>
+                <property name="transition-duration">2000</property>
+                <property name="transition-type">slide-down</property>
+                <child>
+                  <object class="GtkImage" id="image3">
+                    <property name="visible">True</property>
+                    <property name="icon-name">face-cool-symbolic</property>
+                    <property name="icon-size">6</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left-attach">2</property>
+                <property name="top-attach">3</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRevealer" id="revealer4">
+                <property name="visible">True</property>
+                <property name="transition-duration">2000</property>
+                <property name="transition-type">slide-left</property>
+                <child>
+                  <object class="GtkImage" id="image4">
+                    <property name="visible">True</property>
+                    <property name="icon-name">face-cool-symbolic</property>
+                    <property name="icon-size">6</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left-attach">1</property>
+                <property name="top-attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRevealer" id="revealer5">
+                <property name="visible">True</property>
+                <property name="transition-duration">2000</property>
+                <property name="transition-type">slide-up</property>
+                <child>
+                  <object class="GtkImage" id="image5">
+                    <property name="visible">True</property>
+                    <property name="icon-name">face-cool-symbolic</property>
+                    <property name="icon-size">6</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left-attach">2</property>
+                <property name="top-attach">0</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRevealer" id="revealer6">
+                <property name="visible">True</property>
+                <property name="transition-duration">2000</property>
+                <property name="transition-type">slide-right</property>
+                <child>
+                  <object class="GtkImage" id="image6">
+                    <property name="visible">True</property>
+                    <property name="icon-name">face-cool-symbolic</property>
+                    <property name="icon-size">6</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left-attach">4</property>
+                <property name="top-attach">2</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRevealer" id="revealer7">
+                <property name="visible">True</property>
+                <property name="transition-duration">2000</property>
+                <property name="transition-type">slide-down</property>
+                <child>
+                  <object class="GtkImage" id="image7">
+                    <property name="visible">True</property>
+                    <property name="icon-name">face-cool-symbolic</property>
+                    <property name="icon-size">6</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left-attach">2</property>
+                <property name="top-attach">4</property>
+              </packing>
+            </child>
+            <child>
+              <object class="GtkRevealer" id="revealer8">
+                <property name="visible">True</property>
+                <property name="transition-duration">2000</property>
+                <property name="transition-type">slide-left</property>
+                <child>
+                  <object class="GtkImage" id="image8">
+                    <property name="visible">True</property>
+                    <property name="icon-name">face-cool-symbolic</property>
+                    <property name="icon-size">6</property>
+                  </object>
+                </child>
+              </object>
+              <packing>
+                <property name="left-attach">0</property>
+                <property name="top-attach">2</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+            <property name="position">1</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+    <action-widgets>
+      <action-widget response="0">button1</action-widget>
+    </action-widgets>
+  </object>
+</interface>


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