[gtkmm] demo: Add Overlay demo



commit 06be4a597288b420b6d1270b4b5b39fd5c25e5dc
Author: Juan R. GarcĂ­a Blanco <juanrgar gmail com>
Date:   Sat Jun 21 14:36:41 2014 +0200

    demo: Add Overlay demo
    
        * Add demos/gtk-demo/example_overlay.cc
        * Update demos/gtk-demo/demos.h
        * Update demos/Makefile.am

 demos/Makefile.am                 |    1 +
 demos/gtk-demo/demos.h            |    2 +
 demos/gtk-demo/example_overlay.cc |  121 +++++++++++++++++++++++++++++++++++++
 3 files changed, 124 insertions(+), 0 deletions(-)
---
diff --git a/demos/Makefile.am b/demos/Makefile.am
index 3afb3c3..ce7aa88 100644
--- a/demos/Makefile.am
+++ b/demos/Makefile.am
@@ -39,6 +39,7 @@ gtk_demo_gtkmm_demo_SOURCES =                         \
        gtk-demo/example_iconview.cc                    \
        gtk-demo/example_images.cc                      \
        gtk-demo/example_menus.cc                       \
+       gtk-demo/example_overlay.cc                     \
        gtk-demo/example_panes.cc                       \
        gtk-demo/example_pixbufs.cc                     \
        gtk-demo/example_sizegroup.cc                   \
diff --git a/demos/gtk-demo/demos.h b/demos/gtk-demo/demos.h
index 52e0ae3..ada5a8e 100644
--- a/demos/gtk-demo/demos.h
+++ b/demos/gtk-demo/demos.h
@@ -29,6 +29,7 @@ Gtk::Window* do_icontheme();
 Gtk::Window* do_iconview();
 Gtk::Window* do_images();
 Gtk::Window* do_menus();
+Gtk::Window* do_overlay();
 Gtk::Window* do_pixbufs();
 Gtk::Window* do_panes();
 Gtk::Window* do_sizegroup();
@@ -63,6 +64,7 @@ Demo testgtk_demos[] =
   { "Icon View", "example_iconview.cc", sigc::ptr_fun(&do_iconview), 0 },  
   { "Images", "example_images.cc", sigc::ptr_fun(&do_images), 0 },
   { "Menus", "example_menus.cc", sigc::ptr_fun(&do_menus), 0 },
+  { "Overlay", "example_overlay.cc", sigc::ptr_fun(&do_overlay), 0 },
   { "Paned Widgets", "example_panes.cc", sigc::ptr_fun(&do_panes), 0 },
   { "Pixbufs", "example_pixbufs.cc", sigc::ptr_fun(&do_pixbufs), 0 },
   { "Size Groups", "example_sizegroup.cc", sigc::ptr_fun(&do_sizegroup), 0 },
diff --git a/demos/gtk-demo/example_overlay.cc b/demos/gtk-demo/example_overlay.cc
new file mode 100644
index 0000000..b016f22
--- /dev/null
+++ b/demos/gtk-demo/example_overlay.cc
@@ -0,0 +1,121 @@
+/* Overlay
+ *
+ * Stack widgets in static positions over a main widget.
+ */
+
+#include "gtkmm.h"
+
+class Example_Overlay : public Gtk::Window
+{
+public:
+  Example_Overlay();
+  virtual ~Example_Overlay();
+
+protected:
+
+  // Widgets
+  Gtk::TextView m_text_view;
+  Gtk::ScrolledWindow m_scrolled_window;
+  Gtk::Entry m_entries[9];
+  Gtk::Label m_labels[9];
+
+  // Containers
+  Gtk::Overlay m_overlay;
+
+private:
+  void configure_entries_and_labels();
+};
+
+//Called by DemoWindow;
+Gtk::Window* do_overlay()
+{
+  return new Example_Overlay();
+}
+
+Example_Overlay::Example_Overlay()
+{
+  // Window properties
+  set_default_size(450, 450);
+  set_title("Overlay");
+  set_border_width(0);
+
+  // Main text view
+  m_scrolled_window.set_policy(Gtk::POLICY_AUTOMATIC, Gtk::POLICY_AUTOMATIC);
+  m_scrolled_window.add(m_text_view);
+
+  // Entries and labels
+  configure_entries_and_labels();
+
+  // Layout
+  m_overlay.add(m_scrolled_window);
+  add(m_overlay);
+
+  show_all_children();
+}
+
+Example_Overlay::~Example_Overlay()
+{
+}
+
+void Example_Overlay::configure_entries_and_labels()
+{
+  // We first set common attributes, and
+  // add widgets to the overlay
+  for (int i =0; i < 9; ++i)
+  {
+    m_labels[i].set_text("Hello world");
+    m_labels[i].set_margin_start(20);
+    m_labels[i].set_margin_end(20);
+    m_labels[i].set_margin_top(5);
+    m_labels[i].set_margin_bottom(5);
+
+    m_overlay.add_overlay(m_entries[i]);
+    m_overlay.add_overlay(m_labels[i]);
+  }
+
+  // Then we set align attributes
+  m_entries[0].set_halign(Gtk::ALIGN_END);
+  m_entries[0].set_valign(Gtk::ALIGN_END);
+  m_labels[0].set_halign(Gtk::ALIGN_END);
+  m_labels[0].set_valign(Gtk::ALIGN_END);
+
+  m_entries[1].set_halign(Gtk::ALIGN_START);
+  m_entries[1].set_valign(Gtk::ALIGN_END);
+  m_labels[1].set_halign(Gtk::ALIGN_START);
+  m_labels[1].set_valign(Gtk::ALIGN_END);
+
+  m_entries[2].set_halign(Gtk::ALIGN_END);
+  m_entries[2].set_valign(Gtk::ALIGN_START);
+  m_labels[2].set_halign(Gtk::ALIGN_END);
+  m_labels[2].set_valign(Gtk::ALIGN_START);
+
+  m_entries[3].set_halign(Gtk::ALIGN_START);
+  m_entries[3].set_valign(Gtk::ALIGN_START);
+  m_labels[3].set_halign(Gtk::ALIGN_START);
+  m_labels[3].set_valign(Gtk::ALIGN_START);
+
+  m_entries[4].set_halign(Gtk::ALIGN_END);
+  m_entries[4].set_valign(Gtk::ALIGN_CENTER);
+  m_labels[4].set_halign(Gtk::ALIGN_END);
+  m_labels[4].set_valign(Gtk::ALIGN_CENTER);
+
+  m_entries[5].set_halign(Gtk::ALIGN_START);
+  m_entries[5].set_valign(Gtk::ALIGN_CENTER);
+  m_labels[5].set_halign(Gtk::ALIGN_START);
+  m_labels[5].set_valign(Gtk::ALIGN_CENTER);
+
+  m_entries[6].set_halign(Gtk::ALIGN_CENTER);
+  m_entries[6].set_valign(Gtk::ALIGN_START);
+  m_labels[6].set_halign(Gtk::ALIGN_CENTER);
+  m_labels[6].set_valign(Gtk::ALIGN_START);
+
+  m_entries[7].set_halign(Gtk::ALIGN_CENTER);
+  m_entries[7].set_valign(Gtk::ALIGN_END);
+  m_labels[7].set_halign(Gtk::ALIGN_CENTER);
+  m_labels[7].set_valign(Gtk::ALIGN_END);
+
+  m_entries[8].set_halign(Gtk::ALIGN_CENTER);
+  m_entries[8].set_valign(Gtk::ALIGN_CENTER);
+  m_labels[8].set_halign(Gtk::ALIGN_CENTER);
+  m_labels[8].set_valign(Gtk::ALIGN_CENTER);
+}


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