Curses::Widgets::Menu - Menu Widgets
$Id: Menu.pm,v 1.103 2002/11/14 01:26:34 corliss Exp corliss $
use Curses::Widgets::Menu;
$menu = Curses::Widgets::Menu->new({
COLUMNS => 10,
INPUTFUNC => \&scankey,
FOREGROUND => undef,
BACKGROUND => 'black',
FOCUSSWITCH => "\t",
X => 1,
Y => 1,
MENUS => {
MENUORDER => [qw(File)],
File => {
ITEMORDER => [qw(Save Quit)],
Save => \&Save,
Quit => \&Quit,
},
CURSORPOS => 'File',
BORDER => 1,
});
$menu->draw($mwh, 1);
$menu->execute;
See the Curses::Widgets pod for other methods.
- Curses
- Curses::Widgets
- Curses::Widgets::ListBox
Curses::Widgets::Menu provides simplified OO access to menus. Each item in a
menu can be tied to a subroutine reference which is called when selected.
$menu = Curses::Widgets::Menu->new({
INPUTFUNC => \&scankey,
FOREGROUND => undef,
BACKGROUND => 'black',
FOCUSSWITCH => "\t",
MENUS => {
MENUORDER => [qw(File)],
File => {
ITEMORDER => [qw(Save Quit)],
Save => \&Save,
Quit => \&Quit,
},
CURSORPOS => 'File',
BORDER => 1,
});
The new method instantiates a new Menu object. The only mandatory key/value
pairs in the configuration hash are
X and
Y. All others have the
following defaults:
Key Default Description
============================================================
INPUTFUNC \&scankey Function to use to scan for keystrokes
FOREGROUND undef Default foreground colour
BACKGROUND 'black' Default background colour
FOCUSSWITCH "\t" Characters which signify end of input
MENUS {} Menu structure
CURSORPOS '' Current position of the cursor
BORDER 0 Avoid window borders
The
MENUS option is a hash of hashes, with each hash a separate menu, and
the constituent hashes being a Entry/Function pairs. Each hash requires a
special key/value pair that determines the order of the items when displayed.
Each item is separated by two spaces.
$menu->draw($mwh, 1);
The draw method renders the menu in its current state. This requires a valid
handle to a curses window in which it will render itself. The optional second
argument, if true, will cause the selection cursor to be rendered as well.
$menu->popup;
This method causes the menu to be displayed. Since, theoretically, the menu
should never be seen unless it's being actively used, we will always assume
that we need to draw a cursor on the list as well.
$menu->execute;
This method acts like the standard Curses::Widgets method of the same name, with
the exception being that selection of any menu item will also cause it to exit
(having already called the associated item subroutine).
- 2002/10/17 -- First implementation
(c) 2001 Arthur Corliss (
[email protected])