'\" te
.\" Copyright 1989 AT&T
.\" Portions Copyright (c) 1996, Sun Microsystems, Inc. All Rights Reserved.
.TH menu_driver 3CURSES "31 Dec 1996" "SunOS 5.11" "Curses Library Functions"
.SH NAME
menu_driver \- command processor for the menus subsystem
.SH SYNOPSIS
.LP
.nf
\fBcc\fR [ \fIflag\fR... ] \fIfile\fR... \fB-lmenu\fR \fB -lcurses \fR [ \fIlibrary\fR... ]
#include
\fBint\fR \fBmenu_driver\fR(\fBMENU *\fR\fImenu\fR, \fBint\fR \fIc\fR);
.fi
.SH DESCRIPTION
.sp
.LP
\fBmenu_driver()\fR is the workhorse of the \fBmenus\fR subsystem. It checks to determine whether the character \fIc\fR is a menu request or data. If \fIc\fR is a request, the menu driver executes the request and reports the result. If \fIc\fR is data (a printable \fBASCII\fR character), it enters the data into the pattern buffer and tries to find a matching item. If no match is found, the menu driver deletes the character from the pattern buffer and returns \fBE_NO_MATCH\fR. If the character is not recognized, the menu driver assumes it is an application-defined command and returns \fBE_UNKNOWN_COMMAND\fR.
.sp
.LP
Menu driver requests:
.sp
.ne 2
.mk
.na
\fBREQ_LEFT_ITEM\fR
.ad
.RS 21n
.rt
Move left to an item.
.RE
.sp
.ne 2
.mk
.na
\fBREQ_RIGHT_ITEM \fR
.ad
.RS 21n
.rt
Move right to an item
.RE
.sp
.ne 2
.mk
.na
\fBREQ_UP_ITEM\fR
.ad
.RS 21n
.rt
Move up to an item.
.RE
.sp
.ne 2
.mk
.na
\fBREQ_DOWN_ITEM\fR
.ad
.RS 21n
.rt
Move down to an item.
.RE
.sp
.ne 2
.mk
.na
\fBREQ_SCR_ULINE\fR
.ad
.RS 21n
.rt
Scroll up a line.
.RE
.sp
.ne 2
.mk
.na
\fBREQ_SCR_DLINE\fR
.ad
.RS 21n
.rt
Scroll down a line.
.RE
.sp
.ne 2
.mk
.na
\fBREQ_SCR_DPAGE\fR
.ad
.RS 21n
.rt
Scroll up a page.
.RE
.sp
.ne 2
.mk
.na
\fBREQ_SCR_UPAGE\fR
.ad
.RS 21n
.rt
Scroll down a page.
.RE
.sp
.ne 2
.mk
.na
\fBREQ_FIRST_ITEM\fR
.ad
.RS 21n
.rt
Move to the first item.
.RE
.sp
.ne 2
.mk
.na
\fBREQ_LAST_ITEM\fR
.ad
.RS 21n
.rt
Move to the last item.
.RE
.sp
.ne 2
.mk
.na
\fBREQ_NEXT_ITEM\fR
.ad
.RS 21n
.rt
Move to the next item.
.RE
.sp
.ne 2
.mk
.na
\fBREQ_PREV_ITEM\fR
.ad
.RS 21n
.rt
Move to the previous item.
.RE
.sp
.ne 2
.mk
.na
\fBREQ_TOGGLE_ITEM\fR
.ad
.RS 21n
.rt
Select/de-select an item.
.RE
.sp
.ne 2
.mk
.na
\fBREQ_CLEAR_PATTERN\fR
.ad
.RS 21n
.rt
Clear the menu pattern buffer.
.RE
.sp
.ne 2
.mk
.na
\fBREQ_BACK_PATTERN\fR
.ad
.RS 21n
.rt
Delete the previous character from pattern buffer.
.RE
.sp
.ne 2
.mk
.na
\fBREQ_NEXT_MATCH\fR
.ad
.RS 21n
.rt
Move the next matching item.
.RE
.sp
.ne 2
.mk
.na
\fBREQ_PREV_MATCH\fR
.ad
.RS 21n
.rt
Move to the previous matching item.
.RE
.SH RETURN VALUES
.sp
.LP
\fBmenu_driver()\fR returns one of the following:
.sp
.ne 2
.mk
.na
\fBE_OK\fR
.ad
.RS 21n
.rt
The routine returned successfully.
.RE
.sp
.ne 2
.mk
.na
\fBE_SYSTEM_ERROR\fR
.ad
.RS 21n
.rt
System error.
.RE
.sp
.ne 2
.mk
.na
\fBE_BAD_ARGUMENT\fR
.ad
.RS 21n
.rt
An incorrect argument was passed to the routine.
.RE
.sp
.ne 2
.mk
.na
\fBE_BAD_STATE\fR
.ad
.RS 21n
.rt
The routine was called from an initialization or termination function.
.RE
.sp
.ne 2
.mk
.na
\fBE_NOT_POSTED\fR
.ad
.RS 21n
.rt
The menu has not been posted.
.RE
.sp
.ne 2
.mk
.na
\fBE_UNKNOWN_COMMAND\fR
.ad
.RS 21n
.rt
An unknown request was passed to the menu driver.
.RE
.sp
.ne 2
.mk
.na
\fBE_NO_MATCH\fR
.ad
.RS 21n
.rt
The character failed to match.
.RE
.sp
.ne 2
.mk
.na
\fBE_NOT_SELECTABLE\fR
.ad
.RS 21n
.rt
The item cannot be selected.
.RE
.sp
.ne 2
.mk
.na
\fBE_REQUEST_DENIED\fR
.ad
.RS 21n
.rt
The menu driver could not process the request.
.RE
.SH ATTRIBUTES
.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
.sp
.TS
tab() box;
cw(2.75i) |cw(2.75i)
lw(2.75i) |lw(2.75i)
.
ATTRIBUTE TYPEATTRIBUTE VALUE
_
MT-LevelUnsafe
.TE
.SH SEE ALSO
.sp
.LP
\fBcurses\fR(3CURSES), \fBmenus\fR(3CURSES), \fBattributes\fR(5)
.SH NOTES
.sp
.LP
Application-defined commands should be defined relative to (greater than) \fBMAX_COMMAND\fR, the maximum value of a request listed above.
.sp
.LP
The header \fB\fR automatically includes the headers \fB\fR and \fB\fR\&.