[gtkmm] demo: Add Overlay demo
- From: Juan R. Garcia Blanco <juanrgar src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtkmm] demo: Add Overlay demo
- Date: Sat, 21 Jun 2014 12:39:17 +0000 (UTC)
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]