'\" t
.\"***************************************************************************
.\" Copyright 2018-2023,2024 Thomas E. Dickey                                *
.\" Copyright 1998-2014,2017 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.3x,v 1.45 2024/03/16 15:35:01 tom Exp $
.TH menu 3X 2024-03-16 "ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" "Library calls"
.ie \n(.g \{\
.ds `` \(lq
.ds '' \(rq
.\}
.el \{\
.ie t .ds `` ``
.el   .ds `` ""
.ie t .ds '' ''
.el   .ds '' ""
.\}
.
.de bP
.ie n  .IP \(bu 4
.el    .IP \(bu 2
..
.SH NAME
\fBmenu\fP \-
curses extension for programming menus
.SH SYNOPSIS
.nf
\fB#include <menu.h>
.fi
.SH DESCRIPTION
The \fBmenu\fP library provides terminal-independent facilities for composing
menu systems on character-cell terminals.
The library includes: item routines,
which create and modify menu items; and menu routines, which group items into
menus, display menus on the screen, and handle interaction with the user.
.PP
The \fBmenu\fP library uses the \fBcurses\fP libraries, and a curses
initialization routine such as \fBinitscr\fP must be called before using any of
these functions.
To use the \fBmenu\fP library, link with the options
\fB\-lmenu \-lcurses\fP.
.
.SS "Current Default Values for Item Attributes"
.
The \fBmenu\fP library maintains a default value for item attributes.
You can
get or set this default by calling the appropriate \fBget_\fP or \fBset_\fP
routine with a \fBNULL\fP item pointer.
Changing this default with a
\fBset_\fP function affects future item creations, but does not change the
rendering of items already created.
.
.SS "Routine Name Index"
.
The following table lists each \fBmenu\fP routine and the name of
the manual page on which it is described.
.PP
.TS
l l .
\fBcurses\fP Routine Name	Manual Page Name
=
current_item	\fBmitem_current\fP(3X)
free_item 	\fBmitem_new\fP(3X)
free_menu 	\fBmenu_new\fP(3X)
item_count	\fBmenu_items\fP(3X)
item_description	\fBmitem_name\fP(3X)
item_index	\fBmitem_current\fP(3X)
item_init 	\fBmenu_hook\fP(3X)
item_name 	\fBmitem_name\fP(3X)
item_opts 	\fBmitem_opts\fP(3X)
item_opts_off	\fBmitem_opts\fP(3X)
item_opts_on	\fBmitem_opts\fP(3X)
item_term 	\fBmenu_hook\fP(3X)
item_userptr	\fBmitem_userptr\fP(3X)
item_value	\fBmitem_value\fP(3X)
item_visible	\fBmitem_visible\fP(3X)
menu_back 	\fBmenu_attributes\fP(3X)
menu_driver	\fBmenu_driver\fP(3X)
menu_fore 	\fBmenu_attributes\fP(3X)
menu_format	\fBmenu_format\fP(3X)
menu_grey 	\fBmenu_attributes\fP(3X)
menu_init 	\fBmenu_hook\fP(3X)
menu_items	\fBmenu_items\fP(3X)
menu_mark 	\fBmenu_mark\fP(3X)
menu_opts 	\fBmenu_opts\fP(3X)
menu_opts_off	\fBmenu_opts\fP(3X)
menu_opts_on	\fBmenu_opts\fP(3X)
menu_pad  	\fBmenu_attributes\fP(3X)
menu_pattern	\fBmenu_pattern\fP(3X)
menu_request_by_name	\fBmenu_requestname\fP(3X)
menu_request_name	\fBmenu_requestname\fP(3X)
menu_spacing	\fBmenu_spacing\fP(3X)
menu_sub  	\fBmenu_win\fP(3X)
menu_term 	\fBmenu_hook\fP(3X)
menu_userptr	\fBmenu_userptr\fP(3X)
menu_win  	\fBmenu_win\fP(3X)
new_item  	\fBmitem_new\fP(3X)
new_menu  	\fBmenu_new\fP(3X)
pos_menu_cursor	\fBmenu_cursor\fP(3X)
post_menu 	\fBmenu_post\fP(3X)
scale_menu	\fBmenu_win\fP(3X)
set_current_item	\fBmitem_current\fP(3X)
set_item_init	\fBmenu_hook\fP(3X)
set_item_opts	\fBmitem_opts\fP(3X)
set_item_term	\fBmenu_hook\fP(3X)
set_item_userptr	\fBmitem_userptr\fP(3X)
set_item_value	\fBmitem_value\fP(3X)
set_menu_back	\fBmenu_attributes\fP(3X)
set_menu_fore	\fBmenu_attributes\fP(3X)
set_menu_format	\fBmenu_format\fP(3X)
set_menu_grey	\fBmenu_attributes\fP(3X)
set_menu_init	\fBmenu_hook\fP(3X)
set_menu_items	\fBmenu_items\fP(3X)
set_menu_mark	\fBmenu_mark\fP(3X)
set_menu_opts	\fBmitem_opts\fP(3X)
set_menu_pad	\fBmenu_attributes\fP(3X)
set_menu_pattern	\fBmenu_pattern\fP(3X)
set_menu_spacing	\fBmenu_spacing\fP(3X)
set_menu_sub	\fBmenu_win\fP(3X)
set_menu_term	\fBmenu_hook\fP(3X)
set_menu_userptr	\fBmenu_userptr\fP(3X)
set_menu_win	\fBmenu_win\fP(3X)
set_top_row	\fBmitem_current\fP(3X)
top_row   	\fBmitem_current\fP(3X)
unpost_menu	\fBmenu_post\fP(3X)
.TE
.SH RETURN VALUE
Routines that return pointers return \fBNULL\fP on error.
Routines that return
an integer return one of the following error codes:
.TP 5
.B E_OK
The routine succeeded.
.TP 5
.B E_BAD_ARGUMENT
Routine detected an incorrect or out-of-range argument.
.TP 5
.B E_BAD_STATE
Routine was called from an initialization or termination function.
.TP 5
.B E_NO_MATCH
Character failed to match.
.TP 5
.B E_NO_ROOM
Menu is too large for its window.
.TP 5
.B E_NOT_CONNECTED
No items are connected to the menu.
.TP 5
.B E_NOT_POSTED
The menu has not been posted.
.TP 5
.B E_NOT_SELECTABLE
The designated item cannot be selected.
.TP 5
.B E_POSTED
The menu is already posted.
.TP 5
.B E_REQUEST_DENIED
The menu driver could not process the request.
.TP 5
.B E_SYSTEM_ERROR
System error occurred (see \fBerrno\fP(3)).
.TP 5
.B E_UNKNOWN_COMMAND
The menu driver code saw an unknown request code.
.SH NOTES
The header file \fI\%menu.h\fP itself includes the header file
\fI\%curses.h\fP.
.SH PORTABILITY
These routines emulate the System V menu library.
They were not supported on
Version 7 or BSD versions.
.PP
A menu facility was documented in SVr4.2's
\fICharacter User Interface Programming\fP document.
.PP
It is not part of X/Open Curses.
.PP
Aside from \fI\%ncurses\fP, there are few implementations:
.bP
systems based on SVr4 source code, e.g., Solaris.
.bP
NetBSD curses.
.SH AUTHORS
Juergen Pfeifer.
Manual pages and adaptation for \fI\%ncurses\fP by Eric S. Raymond.
.SH SEE ALSO
\fB\%curses\fP(3X) and related pages whose names begin \*(``menu_\*(''
for detailed descriptions of the entry points.
