Gtk2::Ex::FormFactory::Menu - A Menu in a FormFactory framework


Gtk2-Ex-FormFactory documentation  | view source Contained in the Gtk2-Ex-FormFactory distribution.

Index


NAME

Top

Gtk2::Ex::FormFactory::Menu - A Menu in a FormFactory framework

SYNOPSIS

Top

  Gtk2::Ex::FormFactory::Menu->new (
    menu_tree        => Hierarchical definition of the Menu,
    default_callback => Default callback for menu items,
    user_data        => User data for the default callback,
    ...
    Gtk2::Ex::FormFactory::Widget attributes
  );

DESCRIPTION

Top

This class implements a Menu in a Gtk2::Ex::FormFactory framework and pretty much wraps Gtk2::Ex::Simple::Menu. No application object attributes are associated with a Menu as a whole.

But you may associate single Menu entries with an object. This way the correspondent entries will set insensitive automatically if the underlying object is undef and vice versa are activated once the object is defined.

OBJECT HIERARCHY

Top

  Gtk2::Ex::FormFactory::Intro

  Gtk2::Ex::FormFactory::Widget
  +--- Gtk2::Ex::FormFactory::Menu

  Gtk2::Ex::FormFactory::Layout
  Gtk2::Ex::FormFactory::Rules
  Gtk2::Ex::FormFactory::Context
  Gtk2::Ex::FormFactory::Proxy

ATTRIBUTES

Top

Attributes are handled through the common get_ATTR(), set_ATTR() style accessors, but they are mostly passed once to the object constructor and must not be altered after the associated FormFactory was built.

menu_tree = ARRAYREF [mandatory]

This is a slightly extended menu tree definition in terms of Gtk2::Ex::Simple::Menu. You may optionally associate each entry with an application object by specifying its name with the object key in the item definition hash. This way the item is active only if the correspondent object is defined.

As well you can control widget activity more detailed using the active_cond and active_depends keys as described in the Gtk2::Ex::FormFactory::Widget manpage.

A short example. This is a File menu where the 'Save' and 'Close' entries are sensitive only if a file was opened. We presume that opening a file sets the 'worksheet' object, which is registered with this name to the Context of the associated FormFactory. Additionally the 'Manage rows' entry is active only if more than three rows are selected:



  $menu_tree = [
    _File => {
      item_type => <Branch>',
      children  => [
        _Open  => {
	  callback => \&open_worksheet,
	              # sets the 'worksheet' object
	},
	_Save => {
	  callback => \&save_worksheet,
	  object   => 'worksheet',
	},
	_Close => {
	  callback => \&close_worksheet,
	  object   => 'worksheet',
	},
        "_Manage rows" => {
          callback       => \&manage_rows,
          object         => 'worksheet',
          active_cond    => sub { $worksheet->get_selected_rows_cnt > 3 },
          active_depends => "worksheet.rows",
      ],
    },
  ];

default_callback = CODEREF [optional]

The default callback of this menu. Refer to Gtk2::Ex::Simple::Menu for details.

user_data = SCALAR [optional]

User data of the default callback of this menu. Refer to Gtk2::Ex::Simple::Menu for details.

For more attributes refer to Gtk2::Ex::FormFactory::Widget.

AUTHORS

Top

 Jörn Reder <joern at zyn dot de>

COPYRIGHT AND LICENSE

Top


Gtk2-Ex-FormFactory documentation  | view source Contained in the Gtk2-Ex-FormFactory distribution.