[perl-Gtk3] Add overrides for Gtk3::UIManager



commit 1e7a8e1ea656dddb25997fe76739342601724a04
Author: Torsten SchÃnfeld <kaffeetisch gmx de>
Date:   Sat Aug 11 21:22:28 2012 +0200

    Add overrides for Gtk3::UIManager

 NEWS          |    1 +
 lib/Gtk3.pm   |    9 +++++++++
 t/overrides.t |   34 +++++++++++++++++++++++++++++++++-
 3 files changed, 43 insertions(+), 1 deletions(-)
---
diff --git a/NEWS b/NEWS
index b548a78..54792ea 100644
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,7 @@
 * Add overrides for Gtk3::Gdk::Event.
 * Add overrides for some Gtk3::RadioMenuItem constructors.
 * Add overrides for Gtk3::CssProvider.
+* Add overrides for Gtk3::UIManager.
 
 Overview of changes in Gtk3 0.007 [2012-07-05]
 ==============================================
diff --git a/lib/Gtk3.pm b/lib/Gtk3.pm
index 780e7a4..3b71255 100644
--- a/lib/Gtk3.pm
+++ b/lib/Gtk3.pm
@@ -40,6 +40,8 @@ my @_GTK_FLATTEN_ARRAY_REF_RETURN_FOR = qw/
   Gtk3::CellLayout::get_cells
   Gtk3::Stock::list_ids
   Gtk3::TreePath::get_indices
+  Gtk3::UIManager::get_action_groups
+  Gtk3::UIManager::get_toplevels
   Gtk3::Window::list_toplevels
 /;
 my @_GTK_HANDLE_SENTINEL_BOOLEAN_FOR = qw/
@@ -744,6 +746,13 @@ sub Gtk3::TreeViewColumn::new_with_attributes {
   return $object;
 }
 
+sub Gtk3::UIManager::add_ui_from_string {
+  my ($manager, $string) = @_;
+  return Glib::Object::Introspection->invoke (
+    $_GTK_BASENAME, 'UIManager', 'add_ui_from_string',
+    $manager, $string, length $string);
+}
+
 sub Gtk3::VBox::new {
   my ($class, $homogeneous, $spacing) = @_;
   $homogeneous = 5 unless defined $homogeneous;
diff --git a/t/overrides.t b/t/overrides.t
index ca0d51a..91178c2 100644
--- a/t/overrides.t
+++ b/t/overrides.t
@@ -5,7 +5,7 @@ BEGIN { require './t/inc/setup.pl' };
 use strict;
 use warnings;
 
-plan tests => 82;
+plan tests => 87;
 
 # Gtk3::CHECK_VERSION and check_version
 {
@@ -251,6 +251,38 @@ SKIP: {
   isa_ok ($sel_iter, 'Gtk3::TreeIter');
 }
 
+# Gtk3::UIManager
+{
+  my $ui_manager = Gtk3::UIManager->new;
+  my $ui_info = <<__EOD__;
+<ui>
+  <menubar name='MenuBar'>
+    <menu action='HelpMenu'>
+      <menuitem action='About'/>
+    </menu>
+  </menubar>
+  <menubar name='MenuBla'>
+    <menu action='HelpMenu'>
+      <menuitem action='License'/>
+    </menu>
+  </menubar>
+</ui>
+__EOD__
+  ok ($ui_manager->add_ui_from_string ($ui_info) != 0);
+
+  $ui_manager->ensure_update;
+  my @menubars = $ui_manager->get_toplevels ("menubar");
+  is (@menubars, 2);
+  isa_ok ($menubars[0], "Gtk3::MenuBar");
+  isa_ok ($menubars[1], "Gtk3::MenuBar");
+
+  my $group_one = Gtk3::ActionGroup->new ("Barney");
+  my $group_two = Gtk3::ActionGroup->new ("Fred");
+  $ui_manager->insert_action_group ($group_one, 0);
+  $ui_manager->insert_action_group ($group_two, 1);
+  is_deeply ([$ui_manager->get_action_groups], [$group_one, $group_two]);
+}
+
 # Gtk3::Gdk::Window::new
 SKIP: {
   # https://bugzilla.gnome.org/show_bug.cgi?id=670369



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