menu_driver.3   [plain text]


'\" t
.TH menu_driver 3X ""
.SH NAME
\fBmenu_driver\fR - command-processing loop of the menu system
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
int menu_driver(MENU *menu, int c);
.br
.SH DESCRIPTION
Once a menu has been posted (displayed), you should funnel input events to it
through \fBmenu_driver\fR.  This routine has two major input cases; either
the input is a menu navigation request or it's a printable ASCII character.
The menu driver requests are as follows:
.TP 5
REQ_LEFT_ITEM
Move left to an item.
.TP 5
REQ_RIGHT_ITEM
Move right to an item.
.TP 5
REQ_UP_ITEM
Move up to an item.
.TP 5
REQ_DOWN_ITEM
Move down to an item.
.TP 5
REQ_SCR_ULINE
Scroll up a line.
.TP 5
REQ_SCR_DLINE
Scroll down a line.
.TP 5
REQ_SCR_DPAGE
Scroll down a page.
.TP 5
REQ_SCR_UPAGE
Scroll up a page.
.TP 5
REQ_FIRST_ITEM
Move to the first item.
.TP 5
REQ_LAST_ITEM
Move to the last item.
.TP 5
REQ_NEXT_ITEM
Move to the next item.
.TP 5
REQ_PREV_ITEM
Move to the previous item.
.TP 5
REQ_TOGGLE_ITEM
Select/deselect an item.
.TP 5
REQ_CLEAR_PATTERN
Clear the menu pattern buffer.
.TP 5
REQ_BACK_PATTERN
Delete the previous character from the pattern buffer.
.TP 5
REQ_NEXT_MATCH
Move to the next item matching the pattern match.
.TP 5
REQ_PREV_MATCH
Move to the previous item matching the pattern match.
.PP
If the second argument is a printable ASCII character, the code appends
it to the pattern buffer and attempts to move to the next item matching
the new pattern.  If there is no such match, \fBmenu_driver\fR returns
\fBE_NO_MATCH\fR and deletes the appended character from the buffer.
.PP
If the second argument is one of the above pre-defined requests, the
corresponding action is performed.
.PP
If the second argument is neither printable ASCII nor one of the above
pre-defined menu requests, the drive asumes it is an application-specific
command and returns \fBE_UNKNOWN_COMMAND\fR.  Application-defined commands
should be defined relative to \fBMAX_COMMAND\fR, the maximum value of these
pre-defined requests.
.SH RETURN VALUE
\fBmenu_driver\fR return one of the following error codes:
.TP 5
\fBE_OK\fR
The routine succeeded.
.TP 5
\fBE_SYSTEM_ERROR\fR
System error occurred (see \fBerrno\fR).
.TP 5
\fBE_BAD_ARGUMENT\fR
Routine detected an incorrect or out-of-range argument.
.TP 5
\fBE_BAD_STATE\fR
Routine was called from an initialization or termination function.
.TP 5
\fBE_NOT_POSTED\fR
The menu has not been posted.
.TP 5
\fBE_UNKNOWN_COMMAND\fR
The menu driver code saw an unknown request code.
.TP 5
\fBE_NO_MATCH\fR
Character failed to match.
.TP 5
\fBE_REQUEST_DENIED\fR
The menu driver could not process the request.
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenus\fR(3x).
.SH NOTES
The header file \fB<menu.h>\fR automatically includes the header files
\fB<curses.h>\fR.
.SH PORTABILITY
These routines emulate the System V menu library.  They were not supported on
Version 7 or BSD versions.
.SH AUTHORS
Juergen Pfeifer.  Manual pages and adaptation for new curses by Eric
S. Raymond.
.\"#
.\"# The following sets edit modes for GNU EMACS
.\"# Local Variables:
.\"# mode:nroff
.\"# fill-column:79
.\"# End: