#!/usr/bin/perl
#
# GTK - The GIMP Toolkit
# Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Library General Public
# License along with this library; if not, write to the
# Free Software Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
#
# $Id$
#
# based strongly on a script by gavin brown posted on the gtk-perl mailling
# list.
use Gtk2;
use strict;
Gtk2->init;
my $window = Gtk2::Window->new('toplevel');
$window->signal_connect('delete_event', sub { exit });
my @items = (
[
'/_Menu',
undef,
undef,
undef,
'<Branch>',
],
[
'/_Menu/Run _Galeon', # menu path
'<ctrl>G', # accel, see $accel_groups
\&callback, # callback func
1, # callback id
'<StockItem>', # type
'gtk-execute' # extra, in this case stock id
],
[
'/_Menu/Run _Terminal',
'<ctrl>T',
sub { print STDERR "you found the magic menu item\n"; },
2,
'<StockItem>',
'gtk-execute'
], [
'/_Menu/Run GIM_P',
undef,
\&callback,
3,
'<StockItem>',
'gtk-execute'
],
[
'/_Menu/_Editors',
undef,
undef,
undef,
'<Branch>',
],
[
'/_Menu/Editors/Run _Gedit',
undef,
\&callback,
4,
'<StockItem>',
'gtk-execute'
],
[
'/_Menu/Editors/Run _Emacs',
undef,
\&callback,
5,
'<StockItem>',
'gtk-execute'
],
[
'/_Menu/Editors/Run _nipples',
'<ctrl>n',
\&callback,
6,
'<StockItem>',
'gtk-execute'
],
);
use Data::Dumper;
sub callback
{
print STDERR Dumper( @_ );
}
# create an accel group to catch our item's accelerators
my $accel_group = Gtk2::AccelGroup->new;
# create the factory, passing the accel_group
my $factory = Gtk2::ItemFactory->new('Gtk2::MenuBar', '<main>', $accel_group);
# pass the items, creating them.
$factory->create_items('foo', @items);
# get the root of the menu, widget, out of the factory
my $menu = $factory->get_widget('<main>');
$window->add($menu);
# add the accel group to the window so they can be caught.
$window->add_accel_group($accel_group);
$window->show_all;
Gtk2->main;