use strict; use warnings; use Gtk2 '-init'; my $toplevel = Gtk2::Window->new ('toplevel'); my $actions = Gtk2::ActionGroup->new ("Actions"); $actions->add_actions ([ [ 'FileMenu', undef, '_File' ], [ 'Quit', 'gtk-quit', undef, undef, # accelerator -- don't really want the usual Control-Q undef, \&_do_action_quit ], ]); sub _do_action_quit { Gtk2->main_quit; } $actions->signal_connect (connect_proxy => \&_do_connect_proxy); sub _do_connect_proxy { my ($actions, $action, $widget) = @_; print "connect_proxy $widget\n"; my @widgets = $action->get_proxies; print @widgets,"\n"; } my $ui = Gtk2::UIManager->new; $ui->insert_action_group ($actions, 0); $ui->add_ui_from_string (<<'HERE'); HERE my $menubar = $ui->get_widget('/MenuBar'); $toplevel->add ($menubar); $toplevel->add_accel_group ($ui->get_accel_group); $toplevel->show_all; Gtk2->main; exit 0;