[gtkmm] demos: Add Builder demo



commit c6e247b9a7b819423a58c7796755a2f2619b5f90
Author: Kjell Ahlstedt <kjell ahlstedt bredband net>
Date:   Sat May 16 10:55:16 2015 +0200

    demos: Add Builder demo
    
    * demos/Makefile.am: Add example_builder.cc and example_builder.ui.
    Add the example_*.cc files to the dependency list of demo_resources.c.
    * demos/gtk-demo/demo.gresource.xml: Add example_builder.cc and
    example_builder.ui.
    * demos/gtk-demo/demos.h: Add the builder demo.
    * demos/gtk-demo/example_builder.cc:
    * demos/gtk-demo/example_builder.ui: New files.
    * demos/gtk-demo/example_uimanager.cc: Removed file. This demo was removed
    from demos.h some time ago, when GtkUIManager was deprecated.

 demos/Makefile.am                   |   97 ++++++------
 demos/gtk-demo/demo.gresource.xml   |    4 +
 demos/gtk-demo/demos.h              |    6 +-
 demos/gtk-demo/example_builder.cc   |  143 +++++++++++++++++
 demos/gtk-demo/example_builder.ui   |  302 +++++++++++++++++++++++++++++++++++
 demos/gtk-demo/example_uimanager.cc |  216 -------------------------
 6 files changed, 504 insertions(+), 264 deletions(-)
---
diff --git a/demos/Makefile.am b/demos/Makefile.am
index 6e72312..ea85323 100644
--- a/demos/Makefile.am
+++ b/demos/Makefile.am
@@ -23,62 +23,67 @@ pixbuf_demo_SOURCES = \
   gtk-demo/demo_resources.c \
   pixbuf-demo.cc
 
-gtk_demo_gtkmm_demo_SOURCES =                          \
-       gtk-demo/demo_resources.c                               \
-       gtk-demo/demos.h                                \
-       gtk-demo/demowindow.cc                          \
-       gtk-demo/demowindow.h                           \
-       gtk-demo/example_appwindow.cc                   \
-       gtk-demo/example_buttonbox.cc                   \
-       gtk-demo/example_change_display.cc              \
-       gtk-demo/example_colorsel.cc                    \
-       gtk-demo/example_dialog.cc                      \
-       gtk-demo/example_drawingarea.cc                 \
-       gtk-demo/example_flowbox.cc                     \
-       gtk-demo/example_gestures.cc                    \
-       gtk-demo/example_headerbar.cc                   \
-       gtk-demo/example_icontheme.cc                   \
-       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                   \
-       gtk-demo/example_stack.cc                       \
-       gtk-demo/example_stacksidebar.cc        \
-       gtk-demo/example_textview.cc                    \
-       gtk-demo/example_treeview_editable_cells.cc     \
-       gtk-demo/example_treeview_liststore.cc          \
-       gtk-demo/example_treeview_treestore.cc          \
-       gtk-demo/main.cc                                \
-       gtk-demo/textwidget.cc                          \
-       gtk-demo/textwidget.h
+gtk_demo_gtkmm_demo_SOURCES = \
+  gtk-demo/demo_resources.c \
+  gtk-demo/demos.h \
+  gtk-demo/demowindow.cc \
+  gtk-demo/demowindow.h \
+  gtk-demo/main.cc \
+  gtk-demo/textwidget.cc \
+  gtk-demo/textwidget.h \
+  $(GTK_DEMOS)
 
 dist_noinst_DATA = \
   gtk-demo/demo.gresource.xml \
   $(GTK_DEMO_RESOURCES)
 
+GTK_DEMOS = \
+  gtk-demo/example_appwindow.cc \
+  gtk-demo/example_builder.cc \
+  gtk-demo/example_buttonbox.cc \
+  gtk-demo/example_change_display.cc \
+  gtk-demo/example_colorsel.cc \
+  gtk-demo/example_dialog.cc \
+  gtk-demo/example_drawingarea.cc \
+  gtk-demo/example_flowbox.cc \
+  gtk-demo/example_gestures.cc \
+  gtk-demo/example_headerbar.cc \
+  gtk-demo/example_icontheme.cc \
+  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 \
+  gtk-demo/example_stack.cc \
+  gtk-demo/example_stacksidebar.cc \
+  gtk-demo/example_textview.cc \
+  gtk-demo/example_treeview_editable_cells.cc \
+  gtk-demo/example_treeview_liststore.cc \
+  gtk-demo/example_treeview_treestore.cc
+
 GTK_DEMO_RESOURCES = \
-       gtk-demo/alphatest.png          \
-       gtk-demo/apple-red.png          \
-       gtk-demo/background.jpg         \
-       gtk-demo/floppybuddy.gif        \
-       gtk-demo/gnome-applets.png      \
-       gtk-demo/gnome-calendar.png     \
-       gtk-demo/gnome-foot.png         \
-       gtk-demo/gnome-fs-directory.png \
-       gtk-demo/gnome-fs-regular.png   \
-       gtk-demo/gnome-gimp.png         \
-       gtk-demo/gnome-gmush.png        \
-       gtk-demo/gnome-gsame.png        \
-       gtk-demo/gnu-keys.png     \
-       gtk-demo/gtk-logo-rgb.gif
+  gtk-demo/example_builder.ui \
+  gtk-demo/alphatest.png \
+  gtk-demo/apple-red.png \
+  gtk-demo/background.jpg \
+  gtk-demo/floppybuddy.gif \
+  gtk-demo/gnome-applets.png \
+  gtk-demo/gnome-calendar.png \
+  gtk-demo/gnome-foot.png \
+  gtk-demo/gnome-fs-directory.png \
+  gtk-demo/gnome-fs-regular.png \
+  gtk-demo/gnome-gimp.png \
+  gtk-demo/gnome-gmush.png \
+  gtk-demo/gnome-gsame.png \
+  gtk-demo/gnu-keys.png \
+  gtk-demo/gtk-logo-rgb.gif
 
 # Delete built sources on make maintainer-clean.
 MAINTAINERCLEANFILES = gtk-demo/demo_resources.c
 
-gtk-demo/demo_resources.c: gtk-demo/demo.gresource.xml $(GTK_DEMO_RESOURCES)
+gtk-demo/demo_resources.c: gtk-demo/demo.gresource.xml $(GTK_DEMO_RESOURCES) $(GTK_DEMOS)
        $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(dir $<) --generate-source $<
 
 gdkmm_includes = -I$(top_builddir)/gdk $(if $(srcdir:.=),-I$(top_srcdir)/gdk)
diff --git a/demos/gtk-demo/demo.gresource.xml b/demos/gtk-demo/demo.gresource.xml
index 63e5be7..5395a12 100644
--- a/demos/gtk-demo/demo.gresource.xml
+++ b/demos/gtk-demo/demo.gresource.xml
@@ -1,5 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <gresources>
+  <gresource prefix="/builder">
+    <file>example_builder.ui</file>
+  </gresource>
   <gresource prefix="/iconview">
     <file preprocess="to-pixdata">gnome-fs-directory.png</file>
     <file preprocess="to-pixdata">gnome-fs-regular.png</file>
@@ -22,6 +25,7 @@
   </gresource>
   <gresource prefix="/sources">
     <file>example_appwindow.cc</file>
+    <file>example_builder.cc</file>
     <file>example_buttonbox.cc</file>
     <file>example_change_display.cc</file>
     <file>example_colorsel.cc</file>
diff --git a/demos/gtk-demo/demos.h b/demos/gtk-demo/demos.h
index 46137ce..94e82bc 100644
--- a/demos/gtk-demo/demos.h
+++ b/demos/gtk-demo/demos.h
@@ -18,6 +18,7 @@ struct Demo
 
 
 Gtk::Window* do_appwindow();
+Gtk::Window* do_builder();
 Gtk::Window* do_buttonbox();
 Gtk::Window* do_change_display();
 Gtk::Window* do_colorsel();
@@ -55,6 +56,7 @@ Demo child0[] = {
 Demo testgtk_demos[] =
 {
   { "Application main window", "example_appwindow.cc", sigc::ptr_fun(&do_appwindow), 0 },
+  { "Builder", "example_builder.cc", sigc::ptr_fun(&do_builder), 0 },
   { "Button Boxes", "example_buttonbox.cc",  sigc::ptr_fun(&do_buttonbox), 0 },
   { "Change Display", "example_change_display.cc", sigc::ptr_fun(&do_change_display), 0 },
   { "Color Selector", "example_colorsel.cc", sigc::ptr_fun(&do_colorsel), 0 },
@@ -63,8 +65,8 @@ Demo testgtk_demos[] =
   { "Flow Box", "example_flowbox.cc",  sigc::ptr_fun(&do_flowbox), 0 },
   { "Gestures", "example_gestures.cc",  sigc::ptr_fun(&do_gestures), 0 },
   { "Header Bar", "example_headerbar.cc",  sigc::ptr_fun(&do_headerbar), 0 },
-  { "Icon Theme", "example_icontheme.cc", sigc::ptr_fun(&do_icontheme), 0 },  
-  { "Icon View", "example_iconview.cc", sigc::ptr_fun(&do_iconview), 0 },  
+  { "Icon Theme", "example_icontheme.cc", sigc::ptr_fun(&do_icontheme), 0 },
+  { "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 },
diff --git a/demos/gtk-demo/example_builder.cc b/demos/gtk-demo/example_builder.cc
new file mode 100644
index 0000000..d7d2ac7
--- /dev/null
+++ b/demos/gtk-demo/example_builder.cc
@@ -0,0 +1,143 @@
+/* Builder
+ *
+ * Demonstrates an interface loaded from a XML description.
+ */
+
+#include "gtkmm.h"
+#include "gtk/gtk.h"
+#include <iostream> // For std::cout
+
+class Example_Builder : public Gtk::Window
+{
+public:
+  Example_Builder(BaseObjectType* cobject,
+                  const Glib::RefPtr<Gtk::Builder>& builder);
+  virtual ~Example_Builder();
+
+protected:
+  void on_file_quit();
+  void on_help_about();
+  void on_help_help();
+
+  Glib::RefPtr<Gtk::Builder> m_builder;
+};
+
+//Called by DemoWindow:
+Gtk::Window* do_builder()
+{
+  // Load the XML file and instantiate its widgets:
+  Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create();
+  try
+  {
+    builder->add_from_resource("/builder/example_builder.ui");
+  }
+  catch (const Glib::Error& error)
+  {
+    std::cout << "Error loading example_builder.ui: " << error.what() << std::endl;
+    return 0;
+  }
+
+  // Get the GtkBuilder-instantiated window:
+  Example_Builder* pWindow = 0;
+  builder->get_widget_derived("window1", pWindow);
+  if (!pWindow)
+  {
+    std::cout << "Could not get 'window1' from the builder." << std::endl;
+    return 0;
+  }
+  return pWindow;
+}
+
+Example_Builder::Example_Builder(
+  BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)
+: Gtk::Window(cobject),
+  m_builder(builder)
+{
+  Gtk::Toolbar* pToolbar = 0;
+  builder->get_widget("toolbar1", pToolbar);
+  if (pToolbar)
+    pToolbar->get_style_context()->add_class("primary-toolbar");
+
+  Glib::RefPtr<Gio::SimpleActionGroup> refActions = Gio::SimpleActionGroup::create();
+  refActions->add_action("quit", sigc::mem_fun(*this, &Example_Builder::on_file_quit));
+  refActions->add_action("about", sigc::mem_fun(*this, &Example_Builder::on_help_about));
+  refActions->add_action("help", sigc::mem_fun(*this, &Example_Builder::on_help_help));
+  insert_action_group("win", refActions);
+
+  Glib::RefPtr<Gtk::AccelGroup> refAccelGroup = Gtk::AccelGroup::create();
+  add_accel_group(refAccelGroup);
+
+  Gtk::MenuItem* pMenuItem = 0;
+  builder->get_widget("new_item", pMenuItem);
+  if (pMenuItem)
+    pMenuItem->add_accelerator("activate", refAccelGroup,
+      GDK_KEY_n, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE);
+
+  builder->get_widget("open_item", pMenuItem);
+  if (pMenuItem)
+    pMenuItem->add_accelerator("activate", refAccelGroup,
+      GDK_KEY_o, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE);
+
+  builder->get_widget("save_item", pMenuItem);
+  if (pMenuItem)
+    pMenuItem->add_accelerator("activate", refAccelGroup,
+      GDK_KEY_s, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE);
+
+  builder->get_widget("quit_item", pMenuItem);
+  if (pMenuItem)
+    pMenuItem->add_accelerator("activate", refAccelGroup,
+      GDK_KEY_q, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE);
+
+  builder->get_widget("copy_item", pMenuItem);
+  if (pMenuItem)
+    pMenuItem->add_accelerator("activate", refAccelGroup,
+      GDK_KEY_c, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE);
+
+  builder->get_widget("cut_item", pMenuItem);
+  if (pMenuItem)
+    pMenuItem->add_accelerator("activate", refAccelGroup,
+      GDK_KEY_x, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE);
+
+  builder->get_widget("paste_item", pMenuItem);
+  if (pMenuItem)
+    pMenuItem->add_accelerator("activate", refAccelGroup,
+      GDK_KEY_v, Gdk::CONTROL_MASK, Gtk::ACCEL_VISIBLE);
+
+  builder->get_widget("help_item", pMenuItem);
+  if (pMenuItem)
+    pMenuItem->add_accelerator("activate", refAccelGroup,
+      GDK_KEY_F1, (Gdk::ModifierType)0, Gtk::ACCEL_VISIBLE);
+
+  builder->get_widget("about_item", pMenuItem);
+  if (pMenuItem)
+    pMenuItem->add_accelerator("activate", refAccelGroup,
+      GDK_KEY_F7, (Gdk::ModifierType)0, Gtk::ACCEL_VISIBLE);
+
+  show_all();
+}
+
+Example_Builder::~Example_Builder()
+{
+}
+
+void Example_Builder::on_file_quit()
+{
+  hide();
+}
+
+void Example_Builder::on_help_about()
+{
+  Gtk::AboutDialog* pDialog = 0;
+  m_builder->get_widget("aboutdialog1", pDialog);
+  if (pDialog)
+  {
+    pDialog->set_transient_for(*this);
+    pDialog->run();
+    pDialog->hide();
+  }
+}
+
+void Example_Builder::on_help_help()
+{
+  std::cout << "Help not available." << std::endl;
+}
diff --git a/demos/gtk-demo/example_builder.ui b/demos/gtk-demo/example_builder.ui
new file mode 100644
index 0000000..9adca83
--- /dev/null
+++ b/demos/gtk-demo/example_builder.ui
@@ -0,0 +1,302 @@
+<?xml version="1.0" standalone="no"?>
+<!--*- mode: xml -*-->
+<interface>
+  <object class="GtkListStore" id="liststore1">
+    <columns>
+      <column type="gchararray"/>
+      <column type="gchararray"/>
+      <column type="gint"/>
+      <column type="gchararray"/>
+    </columns>
+    <data>
+      <row>
+        <col id="0" translatable="yes">John</col>
+        <col id="1" translatable="yes">Doe</col>
+        <col id="2">25</col>
+        <col id="3" translatable="yes">This is the John Doe row</col>
+      </row>
+      <row>
+        <col id="0" translatable="yes">Mary</col>
+        <col id="1" translatable="yes">Unknown</col>
+        <col id="2">50</col>
+        <col id="3" translatable="yes">This is the Mary Unknown row</col>
+      </row>
+    </data>
+  </object>
+  <object class="GtkAboutDialog" id="aboutdialog1">
+    <property name="program-name" translatable="yes">Gtk::Builder demo</property>
+    <property name="logo-icon-name" translatable="yes">gtk3-demo</property>
+    <accessibility>
+      <relation target="window1" type="subwindow-of"/>
+    </accessibility>
+  </object>
+  <object class="GtkWindow" id="window1">
+    <property name="default_height">250</property>
+    <property name="default_width">440</property>
+    <property name="title">Gtk::Builder demo</property>
+    <child>
+      <object class="GtkVBox" id="vbox1">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkMenuBar" id="menubar1">
+            <property name="visible">True</property>
+            <child internal-child="accessible">
+              <object class="AtkObject" id="a11y-menubar">
+                <property name="AtkObject::accessible-name">The menubar</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_File</property>
+                <property name="use-underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu">
+                    <child>
+                      <object class="GtkMenuItem" id="new_item">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_New</property>
+                        <property name="use-underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="open_item">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_Open</property>
+                        <property name="use-underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="save_item">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_Save</property>
+                        <property name="use-underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="save_as_item">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">Save _As</property>
+                        <property name="use-underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkSeparatorMenuItem">
+                        <property name="visible">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="quit_item">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_Quit</property>
+                        <property name="use-underline">True</property>
+                        <property name="action-name">win.quit</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Edit</property>
+                <property name="use-underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu">
+                    <child>
+                      <object class="GtkMenuItem" id="copy_item">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_Copy</property>
+                        <property name="use-underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="cut_item">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_Cut</property>
+                        <property name="use-underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="paste_item">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_Paste</property>
+                        <property name="use-underline">True</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+            <child>
+              <object class="GtkMenuItem">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">_Help</property>
+                <property name="use-underline">True</property>
+                <child type="submenu">
+                  <object class="GtkMenu">
+                    <child>
+                      <object class="GtkMenuItem" id="help_item">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_Help</property>
+                        <property name="use-underline">True</property>
+                        <property name="action-name">win.help</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="about_item">
+                        <property name="visible">True</property>
+                        <property name="label" translatable="yes">_About</property>
+                        <property name="use-underline">True</property>
+                        <property name="action-name">win.about</property>
+                      </object>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToolbar" id="toolbar1">
+            <property name="visible">True</property>
+            <child internal-child="accessible">
+              <object class="AtkObject" id="a11y-toolbar">
+                <property name="AtkObject::accessible-name">The toolbar</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkToolButton">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">New</property>
+                <property name="tooltip-text" translatable="yes">Create a new file</property>
+                <property name="icon-name">document-new</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkToolButton">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">Open</property>
+                <property name="tooltip-text" translatable="yes">Open a file</property>
+                <property name="icon-name">document-open</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkToolButton">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">Save</property>
+                <property name="tooltip-text" translatable="yes">Save a file</property>
+                <property name="icon-name">document-save</property>
+                <property name="is-important">True</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkSeparatorToolItem">
+                <property name="visible">True</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkToolButton">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">Copy</property>
+                <property name="tooltip-text" translatable="yes">Copy selected object into the 
clipboard</property>
+                <property name="icon-name">edit-copy</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkToolButton">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">Cut</property>
+                <property name="tooltip-text" translatable="yes">Cut selected object into the 
clipboard</property>
+                <property name="icon-name">edit-cut</property>
+              </object>
+            </child>
+            <child>
+              <object class="GtkToolButton">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">Paste</property>
+                <property name="tooltip-text" translatable="yes">Paste object from the clipboard</property>
+                <property name="icon-name">edit-paste</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+            <property name="expand">False</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkScrolledWindow" id="scrolledwindow1">
+            <property name="shadow_type">in</property>
+            <property name="visible">True</property>
+            <child>
+              <object class="GtkTreeView" id="treeview1">
+                <property name="visible">True</property>
+                <property name="model">liststore1</property>
+                <property name="tooltip-column">3</property>
+                <child internal-child="accessible">
+                  <object class="AtkObject" id="a11y-treeview">
+                    <property name="AtkObject::accessible-name">Name list</property>
+                    <property name="AtkObject::accessible-description">
+                                    A list of person with name, surname and age columns
+                                  </property>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkTreeViewColumn" id="column1">
+                    <property name="title">Name</property>
+                    <child>
+                      <object class="GtkCellRendererText" id="renderer1"/>
+                      <attributes>
+                        <attribute name="text">0</attribute>
+                      </attributes>
+                    </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkTreeViewColumn" id="column2">
+                    <property name="title">Surname</property>
+                    <child>
+                      <object class="GtkCellRendererText" id="renderer2"/>
+                      <attributes>
+                        <attribute name="text">1</attribute>
+                      </attributes>
+                    </child>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkTreeViewColumn" id="column3">
+                    <property name="title">Age</property>
+                    <child>
+                      <object class="GtkCellRendererText" id="renderer3"/>
+                      <attributes>
+                        <attribute name="text">2</attribute>
+                      </attributes>
+                    </child>
+                  </object>
+                </child>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="position">2</property>
+            <property name="expand">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkStatusbar" id="statusbar1">
+            <property name="visible">True</property>
+          </object>
+          <packing>
+            <property name="position">3</property>
+            <property name="expand">False</property>
+          </packing>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>


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