Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ menu(3X) — Interactive 2.2

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

curses(3X)

field(3X)

fieldtype(3X)

form(3X)

item(3X)

panel(3X)

tam(3X)



          MENU(3X)             INTERACTIVE UNIX System             MENU(3X)



          NAME
               menu - CRT menu routines

          SYNOPSIS
               #include <menu.h>

               cc [ flags ] files -lmenu -lcurses [ libraries ]

               MENU *new_menu(ip)
               ITEM ** ip;
               int free_menu(m)
               MENU *m;
               int set_menu_items(m,i)
               MENU * m;
               ITEM ** i;
               ITEM ** menu_items(m)
               MENU * m;
               int set_menu_format(m, c, r)
               MENU *m;
               int c, r;
               void menu_format(m, rp, cp)
               MENU *m;
               int *rp, *cp;
               int set_menu_mark(m, n)
               MENU *m;
               char *n;
               char *menu_mark(m)
               MENU *m;
               int scale_menu(m, rp, cp)
               MENU *m;
               int *rp, *cp;
               int set_menu_win(m, w)
               MENU *m;
               WINDOW *w;
               WINDOW *menu_win(m)
               MENU *m;
               int set_menu_sub(m, w)
               MENU *m;
               WINDOW *w;
               WINDOW *menu_sub(m)
               MENU *m;
               int set_menu_fore(m, c)
               MENU *m;
               int c;
               int menu_fore(m)
               MENU *m;
               int set_menu_back(m, c)
               MENU *m;
               int c;
               int menu_back(m)
               MENU *m;
               int set_menu_grey(m, c)
               MENU *m;


          Rev. Extended Terminal Interface                           Page 1





          MENU(3X)             INTERACTIVE UNIX System             MENU(3X)



               int c;
               int menu_grey(m)
               MENU *m;
               int set_menu_pad(m, c)
               MENU *m;
               int c;
               int menu_pad(m)
               MENU *m;
               int post_menu(m)
               MENU *m;
               int unpost_menu(m)
               MENU *m;
               int menu_driver(m, c)
               MENU *m;
               int c;
               int set_item_init(m, f)
               MENU *m;
               ITEM * item;
               PTF_void f;
               PTF_void item_init(m)
               MENU *m;
               set_item_term(m, f)
               MENU *m;
               PTF_void f;
               PTF_void item_term(m)
               MENU *m;
               int set_menu_init(m, f)
               MENU *m;
               PTF_void f;
               PTF_void menu_init(m)
               MENU *m;
               int set_menu_term(m, f)
               MENU *m;
               PTF_void f;
               PTF_void menu_term(m)
               MENU *m;
               int set_current_item(m, i)
               MENU *m;
               ITEM * item;
               ITEM * current_item(m)
               MENU *m;
               int item_index(i)
               ITEM * i;
               int set_top_row(m, c)
               MENU *m;
               int *c;
               int top_row(m)
               MENU *m;
               int pos_menu_cursor(m)
               MENU *m;
               int set_menu_pattern(m, n)
               MENU *m;
               char *n;


          Rev. Extended Terminal Interface                           Page 2





          MENU(3X)             INTERACTIVE UNIX System             MENU(3X)



               char *menu_pattern(m)
               MENU *m;
               int set_menu_userptr(m, n)
               MENU *m;
               chr *n;
               char *menu_userptr(m)
               MENU *m;
               int set_menu_opts(m, o)
               MENU *m;
               OPTIONS o;
               OPTIONS menu_opts(m)
               MENU *m;
               int menu_opts_on (m, o)
               MENU *m;
               OPTIONS o;
               int menu_opts_off (m, o)
               MENU *m;
               OPTIONS o;
               ;

          DESCRIPTION
               These routines allow you to create, display, and access
               menus.  Menus can be displayed on any display device sup-
               ported by the low-level Extended Terminal Interface (ETI)
               library curses(3X).  Once you compile your program include-
               ing the MENU header file menu.h, you should link it with the
               MENU and curses library routines.

          FUNCTIONS
               The following is a list of MENU routines.  For a complete
               description of each, see the UNIX System V ETI Programmer's
               Guide.

               new_menu(ip) creates a new menu connected to the given item
               pointer array and returns a pointer to the new menu.

               free_menu(m) disconnects the menu from its associated item
               pointer array and free the storage allocated for the menu.

               set_menu_items (m, i) changes the item pointer array con-
               nected to the given menu to item pointer array i.

               menu_items(m) returns a pointer to the item pointer array
               connected to menu m.

               set_menu_format(m, c, r) sets the maximum number of rows and
               columns of items that may be displayed at one time on a
               menu.

               menu_format (m, rp, cp) returns the maximum number of rows
               and columns that may be displayed at one time on a menu.  rp
               and cp are pointers to the values used to return these
               numbers.


          Rev. Extended Terminal Interface                           Page 3





          MENU(3X)             INTERACTIVE UNIX System             MENU(3X)



               The mark string distinguishes selected items in a multi-
               valued menu and the current item in a single-valued menu.
               set_menu_mark(m, n) sets the menu's mark string to n.

               menu_mark(m) returns a pointer to the menu's mark string.

               scale_menu(m, rp, cp) returns the minimum window size neces-
               sary for the given menu.  rp and cp are pointers to the
               locations used to return the number of rows and columns for
               the menu.

               set_menu_win(m, w) sets window w as the window of menu m.

               menu_win(m) returns a pointer to the menu's window.

               set_menu_sub(m, w) sets window w as the subwindow of menu m.

               menu_sub(m) returns a pointer to the menu's subwindow.

               set_menu_fore (m, c) sets the menu's foreground attribute-
               the display attribute for the current item (if selectable)
               on single-valued menus and for selected items on multi-
               valued menus.  This display attribute is a curses visual
               attribute.  By default, this attribute is A_STANDOUT.

               menu_fore (m) returns the menu foreground attribute.

               set_menu_back(m, c) sets the menu's background attribute-the
               display attribute for unselected, yet selectable, items.
               This display attribute is a curses visual attribute.  By
               default, this attribute is A_NORMAL.

               menu_back(m) returns the menu background attribute.

               set_menu_grey(m, c) sets the menu's grey attribute-the
               display attribute for nonselectable items in multi-valued
               menus.  This display attribute is a curses visual attribute.
               By default, this attribute is A_UNDERLINE.

               menu_grey(m) returns the menu's grey attribute.

               The pad character is the character that fills the space
               between a menu item's name and description, if any.
               set_menu_pad(m, c) sets the pad character for menu m to c.

               menu_pad(m) returns the menu's pad character.

               post_menu(m) writes the menu in the menu's subwindow.

               unpost_menu(m) erases the menu from its associated subwin-
               dow.

               The workhorse of the menu subsystem, menu_driver(m, c)


          Rev. Extended Terminal Interface                           Page 4





          MENU(3X)             INTERACTIVE UNIX System             MENU(3X)



               checks if the character c is a menu request or data.  If it
               is a request, the menu driver executes the request and
               reports the result.  If it is data (a printable ASCII char-
               acter), it enters the data into the current position in the
               current field.  If the character is not recognized, the menu
               driver assumes it is an application-defined command and
               returns E_UNKNOWN_COMMAND.

               The following set_ functions enable you to establish appli-
               cation routines to be executed automatically at initializa-
               tion and termination points in your form application.  You
               need not specify any application-defined initialization or
               termination routines at all, but they may be helpful for
               displaying messages or page numbers and other chores.

               set_item_init(m, f) sets the application-defined function f
               to be called when the menu is posted and just after the
               current item changes.

               item_init(m) returns a pointer to the item initialization
               routine, if any, called when the menu is posted and just
               after the current item changes.

               set_item_term(m, f) sets function f to be called when the
               menu is unposted and just before the current item changes.

               item_term(m) returns a pointer to the termination function,
               if any, called when the menu is unposted and just before the
               current item changes.

               set_menu_init(m, f) sets the application-defined function f
               to be called when the menu is posted and just after the top
               row changes on a posted menu.

               menu_init(m) returns a pointer to the menu's initialization
               routine, if any, called when the menu is posted and just
               after the top row changes on a posted menu.

               set_menu_term(m, f) sets the application-defined function f
               to be called when the menu is unposted and just before the
               top row changes on a posted menu.

               menu_term(m) returns a pointer to the menu's termination
               routine, if any, called when the menu is unposted and just
               before the top row changes on a posted menu.

               The current item is the item where the cursor is currently
               positioned.  set_current_item(m, i) sets the current menu
               item to the given item.

               current_item(m) returns a pointer to the current item.

               item_index(i) returns the index to the given item in the


          Rev. Extended Terminal Interface                           Page 5





          MENU(3X)             INTERACTIVE UNIX System             MENU(3X)



               item pointer array.

               set_top_row(m, c) sets the top of the menu to the named row.
               The leftmost item on the new top row becomes the current
               item.

               top_row(m) returns the number of the menu row currently
               displayed at the top of the given menu.

               pos_menu_cursor(m) moves the menu window's cursor to the
               correct position to resume menu processing.

               Every menu has a pattern buffer to match entered data with
               menu items.  set_menu_pattern(m, p) sets the pattern buffer
               to the given pattern and tries to find the first item that
               matches the pattern.  If it does, the matching item becomes
               the current item.  If not, the current item does not change.

               menu_pattern(m) returns the string in the pattern buffer of
               the given menu.

               Every menu has an associated user pointer that you can use
               to store pertinent information.

               set_menu_userptr(m, n) sets the menu's user pointer.

               menu_userptr(m) returns the menu's user pointer.

               set_menu_opts(m, o) turns on the named options for the menu
               and turns off all its remaining options.  Options are
               boolean values.  Menu options are O_ONEVALUE, O_SHOWDESC,
               O_ROWMAJOR, O_IGNORECASE, and O_SHOWMATCH.

               menu_opts(m) returns the menu's option setting.

               menu_opts_on (m, opts) turns on the named options for the
               menu.

               menu_opts_off (m, opts) turns off the named options for the
               menu.

          SEE ALSO
               curses(3X), field(3X), fieldtype(3X), form(3X), item(3X),
               panel(3X), tam(3X).

               The UNIX System V ETI Programmer's Guide.

          DIAGNOSTICS
               The following values are returned by one or more routines
               that return an integer.  For specific information on which
               routine returns which value, see the ETI Programmer's Guide.

               E_OK                routine returned normally


          Rev. Extended Terminal Interface                           Page 6





          MENU(3X)             INTERACTIVE UNIX System             MENU(3X)



               E_SYSTEM_ERROR      system error

               E_BAD_ARGUMENT      an incorrect argument was passed to the
                                   routine

               E_POSTED            menu is already posted

               E_CONNECTED         one or more items are connected to
                                   another menu

               E_BAD_STATE         routine called from an inappropriate
                                   routine

               E_NO_ROOM           menu does not fit within its subwindow

               E_NOT_POSTED        menu has not yet been posted

               E_UNKNOWN_COMMAND   unrecognizable request was given to the
                                   driver

               E_NO_MATCH          no match occurred

               E_NOT_SELECTABLE    item cannot be selected

               E_NOT_CONNECTED     no items are associated with the menu

               E_REQUEST_DENIED    menu driver could not process the
                                   request



























          Rev. Extended Terminal Interface                           Page 7



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026