ncurses 6.0 - patch 20171125
[ncurses.git] / man / menu.3x
1 '\" t
2 .\"***************************************************************************
3 .\" Copyright (c) 1998-2014,2017 Free Software Foundation, Inc.              *
4 .\"                                                                          *
5 .\" Permission is hereby granted, free of charge, to any person obtaining a  *
6 .\" copy of this software and associated documentation files (the            *
7 .\" "Software"), to deal in the Software without restriction, including      *
8 .\" without limitation the rights to use, copy, modify, merge, publish,      *
9 .\" distribute, distribute with modifications, sublicense, and/or sell       *
10 .\" copies of the Software, and to permit persons to whom the Software is    *
11 .\" furnished to do so, subject to the following conditions:                 *
12 .\"                                                                          *
13 .\" The above copyright notice and this permission notice shall be included  *
14 .\" in all copies or substantial portions of the Software.                   *
15 .\"                                                                          *
16 .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
17 .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
18 .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
19 .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
20 .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
21 .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
22 .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
23 .\"                                                                          *
24 .\" Except as contained in this notice, the name(s) of the above copyright   *
25 .\" holders shall not be used in advertising or otherwise to promote the     *
26 .\" sale, use or other dealings in this Software without prior written       *
27 .\" authorization.                                                           *
28 .\"***************************************************************************
29 .\"
30 .\" $Id: menu.3x,v 1.24 2017/11/25 20:24:22 tom Exp $
31 .TH menu 3X ""
32 .ie \n(.g .ds `` \(lq
33 .el       .ds `` ``
34 .ie \n(.g .ds '' \(rq
35 .el       .ds '' ''
36 .de bP
37 .ie n  .IP \(bu 4
38 .el    .IP \(bu 2
39 ..
40 .SH NAME
41 \fBmenu\fR \- curses extension for programming menus
42 .SH SYNOPSIS
43 \fB#include <menu.h>\fR
44 .br
45 .SH DESCRIPTION
46 The \fBmenu\fR library provides terminal-independent facilities for composing
47 menu systems on character-cell terminals.  The library includes: item routines,
48 which create and modify menu items; and menu routines, which group items into
49 menus, display menus on the screen, and handle interaction with the user.
50 .PP
51 The \fBmenu\fR library uses the \fBcurses\fR libraries, and a curses
52 initialization routine such as \fBinitscr\fR must be called before using any of
53 these functions.  To use the \fBmenu\fR library, link with the options
54 \fB\-lmenu \-lcurses\fR.
55 .
56 .SS Current Default Values for Item Attributes
57 .
58 The \fBmenu\fR library maintains a default value for item attributes.  You can
59 get or set this default by calling the appropriate \fBget_\fR or \fBset_\fR
60 routine with a \fBNULL\fR item pointer.  Changing this default with a
61 \fBset_\fR function affects future item creations, but does not change the
62 rendering of items already created.
63 .
64 .SS Routine Name Index
65 .
66 The following table lists each \fBmenu\fR routine and the name of
67 the manual page on which it is described.
68 .
69 .TS
70 l l .
71 \fBcurses\fR Routine Name       Manual Page Name
72 =
73 current_item    \fBmitem_current\fR(3X)
74 free_item       \fBmitem_new\fR(3X)
75 free_menu       \fBmenu_new\fR(3X)
76 item_count      \fBmenu_items\fR(3X)
77 item_description        \fBmitem_name\fR(3X)
78 item_index      \fBmitem_current\fR(3X)
79 item_init       \fBmenu_hook\fR(3X)
80 item_name       \fBmitem_name\fR(3X)
81 item_opts       \fBmitem_opts\fR(3X)
82 item_opts_off   \fBmitem_opts\fR(3X)
83 item_opts_on    \fBmitem_opts\fR(3X)
84 item_term       \fBmenu_hook\fR(3X)
85 item_userptr    \fBmitem_userptr\fR(3X)
86 item_value      \fBmitem_value\fR(3X)
87 item_visible    \fBmitem_visible\fR(3X)
88 menu_back       \fBmenu_attributes\fR(3X)
89 menu_driver     \fBmenu_driver\fR(3X)
90 menu_fore       \fBmenu_attributes\fR(3X)
91 menu_format     \fBmenu_format\fR(3X)
92 menu_grey       \fBmenu_attributes\fR(3X)
93 menu_init       \fBmenu_hook\fR(3X)
94 menu_items      \fBmenu_items\fR(3X)
95 menu_mark       \fBmenu_mark\fR(3X)
96 menu_opts       \fBmenu_opts\fR(3X)
97 menu_opts_off   \fBmenu_opts\fR(3X)
98 menu_opts_on    \fBmenu_opts\fR(3X)
99 menu_pad        \fBmenu_attributes\fR(3X)
100 menu_pattern    \fBmenu_pattern\fR(3X)
101 menu_request_by_name    \fBmenu_requestname\fR(3X)
102 menu_request_name       \fBmenu_requestname\fR(3X)
103 menu_spacing    \fBmenu_spacing\fR(3X)
104 menu_sub        \fBmenu_win\fR(3X)
105 menu_term       \fBmenu_hook\fR(3X)
106 menu_userptr    \fBmenu_userptr\fR(3X)
107 menu_win        \fBmenu_win\fR(3X)
108 new_item        \fBmitem_new\fR(3X)
109 new_menu        \fBmenu_new\fR(3X)
110 pos_menu_cursor \fBmenu_cursor\fR(3X)
111 post_menu       \fBmenu_post\fR(3X)
112 scale_menu      \fBmenu_win\fR(3X)
113 set_current_item        \fBmitem_current\fR(3X)
114 set_item_init   \fBmenu_hook\fR(3X)
115 set_item_opts   \fBmitem_opts\fR(3X)
116 set_item_term   \fBmenu_hook\fR(3X)
117 set_item_userptr        \fBmitem_userptr\fR(3X)
118 set_item_value  \fBmitem_value\fR(3X)
119 set_menu_back   \fBmenu_attributes\fR(3X)
120 set_menu_fore   \fBmenu_attributes\fR(3X)
121 set_menu_format \fBmenu_format\fR(3X)
122 set_menu_grey   \fBmenu_attributes\fR(3X)
123 set_menu_init   \fBmenu_hook\fR(3X)
124 set_menu_items  \fBmenu_items\fR(3X)
125 set_menu_mark   \fBmenu_mark\fR(3X)
126 set_menu_opts   \fBmitem_opts\fR(3X)
127 set_menu_pad    \fBmenu_attributes\fR(3X)
128 set_menu_pattern        \fBmenu_pattern\fR(3X)
129 set_menu_spacing        \fBmenu_spacing\fR(3X)
130 set_menu_sub    \fBmenu_win\fR(3X)
131 set_menu_term   \fBmenu_hook\fR(3X)
132 set_menu_userptr        \fBmenu_userptr\fR(3X)
133 set_menu_win    \fBmenu_win\fR(3X)
134 set_top_row     \fBmitem_current\fR(3X)
135 top_row         \fBmitem_current\fR(3X)
136 unpost_menu     \fBmenu_post\fR(3X)
137 .TE
138 .SH RETURN VALUE
139 Routines that return pointers return \fBNULL\fR on error.  Routines that return
140 an integer return one of the following error codes:
141 .TP 5
142 .B E_OK
143 The routine succeeded.
144 .TP 5
145 .B E_BAD_ARGUMENT
146 Routine detected an incorrect or out-of-range argument.
147 .TP 5
148 .B E_BAD_STATE
149 Routine was called from an initialization or termination function.
150 .TP 5
151 .B E_NO_MATCH
152 Character failed to match.
153 .TP 5
154 .B E_NO_ROOM
155 Menu is too large for its window.
156 .TP 5
157 .B E_NOT_CONNECTED
158 No items are connected to the menu.
159 .TP 5
160 .B E_NOT_POSTED
161 The menu has not been posted.
162 .TP 5
163 .B E_NOT_SELECTABLE
164 The designated item cannot be selected.
165 .TP 5
166 .B E_POSTED
167 The menu is already posted.
168 .TP 5
169 .B E_REQUEST_DENIED
170 The menu driver could not process the request.
171 .TP 5
172 .B E_SYSTEM_ERROR
173 System error occurred (see \fBerrno\fR).
174 .TP 5
175 .B E_UNKNOWN_COMMAND
176 The menu driver code saw an unknown request code.
177 .SH NOTES
178 The header file \fB<menu.h>\fR automatically includes the header files
179 \fB<curses.h>\fR and \fB<eti.h>\fR.
180 .PP
181 In your library list, libmenu.a should be before libncurses.a; that is,
182 you should say \*(``\-lmenu \-lncurses\*('', not the other way around
183 (which would give a link-error when using static libraries).
184 .SH PORTABILITY
185 These routines emulate the System V menu library.  They were not supported on
186 Version 7 or BSD versions.
187 .PP
188 The menu facility was documented in SVr4.2 in
189 \fICharacter User Interface Programming (UNIX SVR4.2)\fP.
190 .PP
191 It is not part of X/Open Curses.
192 .PP
193 Aside from ncurses, there are few implementations:
194 .bP
195 systems based on SVr4 source code, e.g., Solaris.
196 .bP
197 NetBSD curses.
198 .SH AUTHORS
199 Juergen Pfeifer.  Manual pages and adaptation for ncurses by Eric
200 S. Raymond.
201 .SH SEE ALSO
202 \fBcurses\fR(3X) and related pages whose names begin \*(``menu_\*(''
203 for detailed descriptions of the entry points.
204 .PP
205 This describes \fBncurses\fR
206 version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@).