---
name: "Curses::Widgets::Menu"
section: "3pm"
platform: "linux"
package: "libcurses-widgets-perl"
version: "1.997-8"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Curses::Widgets::Menu"
---

# Curses::Widgets::Menu(3pm)

Menu Widgets

## NAME

Curses::Widgets::Menu - Menu Widgets

## MODULE VERSION

`$Id:` Menu.pm,v 1.103 2002/11/14 01:26:34 corliss Exp corliss $

## SYNOPSIS

```
  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.
```

## REQUIREMENTS

- Curses

  - Curses::Widgets

  - Curses::Widgets::ListBox

  ## DESCRIPTION

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.

## METHODS

### new (inherited from Curses::Widgets)

```
  $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.

### draw

```
  $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.

### popup

```
  $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.

### execute

```
  $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).

## HISTORY

- 2002/10/17 Ω- First implementation

  ## AUTHOR/COPYRIGHT

(c) 2001 Arthur Corliss (corliss@digitalmages.com)
