'\" t
.\"***************************************************************************
.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc.              *
.\"                                                                          *
.\" Permission is hereby granted, free of charge, to any person obtaining a  *
.\" copy of this software and associated documentation files (the            *
.\" "Software"), to deal in the Software without restriction, including      *
.\" without limitation the rights to use, copy, modify, merge, publish,      *
.\" distribute, distribute with modifications, sublicense, and/or sell       *
.\" copies of the Software, and to permit persons to whom the Software is    *
.\" furnished to do so, subject to the following conditions:                 *
.\"                                                                          *
.\" The above copyright notice and this permission notice shall be included  *
.\" in all copies or substantial portions of the Software.                   *
.\"                                                                          *
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
.\"                                                                          *
.\" Except as contained in this notice, the name(s) of the above copyright   *
.\" holders shall not be used in advertising or otherwise to promote the     *
.\" sale, use or other dealings in this Software without prior written       *
.\" authorization.                                                           *
.\"***************************************************************************
.\"
.\" $Id: menu_opts.3x,v 1.12 2010/12/04 18:40:45 tom Exp $
.TH menu_opts 3X ""
.SH NAME
\fBmenu_opts\fR \- set and get menu options
.SH SYNOPSIS
\fB#include <menu.h>\fR
.br
int set_menu_opts(MENU *menu, Menu_Options opts);
.br
int menu_opts_on(MENU *menu, Menu_Options opts);
.br
int menu_opts_off(MENU *menu, Menu_Options opts);
.br
Menu_Options menu_opts(const MENU *menu);
.br
.SH DESCRIPTION
The function \fBset_menu_opts\fR sets all the given menu's option bits (menu
option bits may be logically-OR'ed together).
.PP
The function \fBmenu_opts_on\fR turns on the given option bits, and leaves
others alone.
.PP
The function \fBmenu_opts_off\fR turns off the given option bits, and leaves
others alone.
.PP
The function \fBmenu_opts\fR returns the menu's current option bits.
.PP
The following options are defined (all are on by default):
.TP 5
O_ONEVALUE
Only one item can be selected for this menu.
.TP 5
O_SHOWDESC
Display the item descriptions when the menu is posted.
.TP 5
O_ROWMAJOR
Display the menu in row-major order.
.TP 5
O_IGNORECASE
Ignore the case when pattern-matching.
.TP 5
O_SHOWMATCH
Move the cursor to within the item name while pattern-matching.
.TP 5
O_NONCYCLIC
Don't wrap around next-item and previous-item,
requests to the other end of the menu.
.SH RETURN VALUE
Except for \fBmenu_opts\fR, each routine returns one of the following:
.TP 5
.B E_OK
The routine succeeded.
.TP 5
.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fR).
.TP 5
.B E_POSTED
The menu is already posted.
.SH SEE ALSO
\fBcurses\fR(3X), \fBmenu\fR(3X).
.SH NOTES
The header file \fB<menu.h>\fR automatically includes the header file
\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.
