Current File : //usr/man/man3curses/menu_driver.3curses
'\" 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 <menu.h>

\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<menu.h>\fR automatically includes the headers  \fB<eti.h>\fR and \fB<curses.h>\fR\&.