300 lines
7.9 KiB
Groff
300 lines
7.9 KiB
Groff
|
.\" $NetBSD: menus.3,v 1.15 2003/04/16 13:35:12 wiz Exp $
|
||
|
.\"
|
||
|
.\" Copyright (c) 1999
|
||
|
.\" Brett Lymn - blymn@baea.com.au, brett_lymn@yahoo.com.au
|
||
|
.\"
|
||
|
.\" This code is donated to The NetBSD Foundation by the author.
|
||
|
.\"
|
||
|
.\" Redistribution and use in source and binary forms, with or without
|
||
|
.\" modification, are permitted provided that the following conditions
|
||
|
.\" are met:
|
||
|
.\" 1. Redistributions of source code must retain the above copyright
|
||
|
.\" notice, this list of conditions and the following disclaimer.
|
||
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
||
|
.\" notice, this list of conditions and the following disclaimer in the
|
||
|
.\" documentation and/or other materials provided with the distribution.
|
||
|
.\" 3. The name of the Author may not be used to endorse or promote
|
||
|
.\" products derived from this software without specific prior written
|
||
|
.\" permission.
|
||
|
.\"
|
||
|
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
|
||
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE
|
||
|
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||
|
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||
|
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||
|
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||
|
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||
|
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||
|
.\" SUCH DAMAGE.
|
||
|
.\"
|
||
|
.Dd September 10, 1999
|
||
|
.Dt MENUS 3
|
||
|
.Os
|
||
|
.Sh NAME
|
||
|
.Nm menus
|
||
|
.Nd menu library
|
||
|
.Sh LIBRARY
|
||
|
.Lb libmenu
|
||
|
.Sh SYNOPSIS
|
||
|
.In menu.h
|
||
|
.Sh DESCRIPTION
|
||
|
The
|
||
|
.Nm
|
||
|
library provides a terminal independent menu system using the
|
||
|
.Xr curses 3
|
||
|
library.
|
||
|
Before using the
|
||
|
.Nm
|
||
|
functions the terminal must be set up by
|
||
|
.Xr curses 3
|
||
|
using the
|
||
|
.Fn initscr
|
||
|
function or similar.
|
||
|
Programs using
|
||
|
.Nm
|
||
|
functions must be linked with the
|
||
|
.Xr curses 3
|
||
|
library.
|
||
|
.Pp
|
||
|
The
|
||
|
.Nm
|
||
|
library provides facilities for defining menu items, placing a menu on the
|
||
|
terminal screen, assign pre- and post-change operations and setting the
|
||
|
attributes of both the menu and its items.
|
||
|
.Ss Defining default attributes for menus and items
|
||
|
The
|
||
|
.Nm
|
||
|
library allows any settable attribute or option of both the menu and item
|
||
|
objects to be defined such that any new menu or item automatically inherits
|
||
|
the value as default.
|
||
|
Setting the default value will not affect any item or
|
||
|
menu that has already been created but will be applied to subsequent objects.
|
||
|
To set the default attribute or option the set routine is passed a NULL
|
||
|
pointer in the item or menu parameter when calling the set routine.
|
||
|
The current default value can be retrieved by calling the get routine with a
|
||
|
NULL pointer for the item or menu parameter.
|
||
|
.Pp
|
||
|
.Bl -tag -width item_description -compact
|
||
|
.It function name
|
||
|
manual page name
|
||
|
.It current_item
|
||
|
.Xr menu_item_current 3
|
||
|
.It free_item
|
||
|
.Xr menu_item_new 3
|
||
|
.It free_menu
|
||
|
.Xr menu_new 3
|
||
|
.It item_count
|
||
|
.Xr menu_items 3
|
||
|
.It item_description
|
||
|
.Xr menu_item_name 3
|
||
|
.It item_index
|
||
|
.Xr menu_item_current 3
|
||
|
.It item_init
|
||
|
.Xr menu_hook 3
|
||
|
.It item_name
|
||
|
.Xr menu_item_name 3
|
||
|
.It item_opts
|
||
|
.Xr menu_item_opts 3
|
||
|
.It item_opts_off
|
||
|
.Xr menu_item_opts 3
|
||
|
.It item_opts_on
|
||
|
.Xr menu_item_opts 3
|
||
|
.It item_selected
|
||
|
.Xr menu_item_value 3
|
||
|
.It item_term
|
||
|
.Xr menu_hook 3
|
||
|
.It item_userptr
|
||
|
.Xr menu_item_userptr 3
|
||
|
.It item_value
|
||
|
.Xr menu_item_value 3
|
||
|
.It item_visible
|
||
|
.Xr menu_item_visible 3
|
||
|
.It menu_back
|
||
|
.Xr menu_attributes 3
|
||
|
.It menu_driver
|
||
|
.Xr menu_driver 3
|
||
|
.It menu_fore
|
||
|
.Xr menu_attributes 3
|
||
|
.It menu_format
|
||
|
.Xr menu_format 3
|
||
|
.It menu_grey
|
||
|
.Xr menu_attributes 3
|
||
|
.It menu_init
|
||
|
.Xr menu_hook 3
|
||
|
.It menu_items
|
||
|
.Xr menu_items 3
|
||
|
.It menu_mark
|
||
|
.Xr menu_mark 3
|
||
|
.It menu_opts
|
||
|
.Xr menu_opts 3
|
||
|
.It menu_opts_off
|
||
|
.Xr menu_opts 3
|
||
|
.It menu_opts_on
|
||
|
.Xr menu_opts 3
|
||
|
.It menu_pad
|
||
|
.Xr menu_attributes 3
|
||
|
.It menu_pattern
|
||
|
.Xr menu_pattern 3
|
||
|
.It menu_sub
|
||
|
.Xr menu_win 3
|
||
|
.It menu_term
|
||
|
.Xr menu_hook 3
|
||
|
.It menu_unmark
|
||
|
.Xr menu_mark 3
|
||
|
.It menu_userptr
|
||
|
.Xr menu_userptr 3
|
||
|
.It men_win
|
||
|
.Xr menu_win 3
|
||
|
.It new_item
|
||
|
.Xr menu_item_new 3
|
||
|
.It new_menu
|
||
|
.Xr menu_new 3
|
||
|
.It pos_menu_cursor
|
||
|
.Xr menu_cursor 3
|
||
|
.It post_menu
|
||
|
.Xr menu_post 3
|
||
|
.It scale_menu
|
||
|
.Xr menu_win 3
|
||
|
.It set_current_item
|
||
|
.Xr menu_item_current 3
|
||
|
.It set_item_init
|
||
|
.Xr menu_hook 3
|
||
|
.It set_item_opts
|
||
|
.Xr menu_item_opts 3
|
||
|
.It set_item_term
|
||
|
.Xr menu_hook 3
|
||
|
.It set_item_userptr
|
||
|
.Xr menu_item_userptr 3
|
||
|
.It set_item_value
|
||
|
.Xr menu_item_value 3
|
||
|
.It set_menu_back
|
||
|
.Xr menu_attributes 3
|
||
|
.It set_menu_fore
|
||
|
.Xr menu_attributes 3
|
||
|
.It set_menu_format
|
||
|
.Xr menu_format 3
|
||
|
.It set_menu_grey
|
||
|
.Xr menu_attributes 3
|
||
|
.It set_menu_init
|
||
|
.Xr menu_hook 3
|
||
|
.It set_menu_items
|
||
|
.Xr menu_items 3
|
||
|
.It set_menu_mark
|
||
|
.Xr menu_mark 3
|
||
|
.It set_menu_opts
|
||
|
.Xr menu_opts 3
|
||
|
.It set_menu_pad
|
||
|
.Xr menu_attributes 3
|
||
|
.It set_menu_pattern
|
||
|
.Xr menu_pattern 3
|
||
|
.It set_menu_sub
|
||
|
.Xr menu_win 3
|
||
|
.It set_menu_term
|
||
|
.Xr menu_hook 3
|
||
|
.It set_menu_unmark
|
||
|
.Xr menu_mark 3
|
||
|
.It set_menu_userptr
|
||
|
.Xr menu_userptr 3
|
||
|
.It set_menu_win
|
||
|
.Xr menu_win 3
|
||
|
.It set_top_row
|
||
|
.Xr menu_item_current 3
|
||
|
.It top_row
|
||
|
.Xr menu_item_current 3
|
||
|
.It unpost_menu
|
||
|
.Xr menu_post 3
|
||
|
.El
|
||
|
.Sh RETURN VALUES
|
||
|
Any function returning a string pointer will return NULL if an error
|
||
|
occurs.
|
||
|
Functions returning an integer will return one of the following:
|
||
|
.Pp
|
||
|
.Bl -tag -width E_UNKNOWN_COMMAND -compact
|
||
|
.It Er E_OK
|
||
|
The function was successful.
|
||
|
.It Er E_SYSTEM_ERROR
|
||
|
There was a system error during the call.
|
||
|
.It Er E_BAD_ARGUMENT
|
||
|
One or more of the arguments passed to the function was incorrect.
|
||
|
.It Er E_POSTED
|
||
|
The menu is already posted.
|
||
|
.It Er E_CONNECTED
|
||
|
An item was already connected to a menu.
|
||
|
.It Er E_BAD_STATE
|
||
|
The function was called from within an initialization or termination
|
||
|
routine.
|
||
|
.It Er E_NO_ROOM
|
||
|
The menu does not fit within the subwindow.
|
||
|
.It Er E_NOT_POSTED
|
||
|
The menu is not posted.
|
||
|
.It Er E_UNKNOWN_COMMAND
|
||
|
The menu driver does not recognize the request passed to it.
|
||
|
.It Er E_NO_MATCH
|
||
|
The character search failed to find a match.
|
||
|
.It Er E_NOT_SELECTABLE
|
||
|
The item could not be selected.
|
||
|
.It Er E_NOT_CONNECTED
|
||
|
The item is not connected to a menu.
|
||
|
.It Er E_REQUEST_DENIED
|
||
|
The menu driver could not process the request.
|
||
|
.El
|
||
|
.Sh SEE ALSO
|
||
|
.Xr curses 3 ,
|
||
|
.Xr menu_attributes 3 ,
|
||
|
.Xr menu_cursor 3 ,
|
||
|
.Xr menu_driver 3 ,
|
||
|
.Xr menu_format 3 ,
|
||
|
.Xr menu_hook 3 ,
|
||
|
.Xr menu_item_current 3 ,
|
||
|
.Xr menu_item_name 3 ,
|
||
|
.Xr menu_item_new 3 ,
|
||
|
.Xr menu_item_opts 3 ,
|
||
|
.Xr menu_item_userptr 3 ,
|
||
|
.Xr menu_item_value 3 ,
|
||
|
.Xr menu_item_visible 3 ,
|
||
|
.Xr menu_items 3 ,
|
||
|
.Xr menu_mark 3 ,
|
||
|
.Xr menu_new 3 ,
|
||
|
.Xr menu_opts 3 ,
|
||
|
.Xr menu_pattern 3 ,
|
||
|
.Xr menu_post 3 ,
|
||
|
.Xr menu_userptr 3 ,
|
||
|
.Xr menu_win 3
|
||
|
.Sh NOTES
|
||
|
This implementation of the menus library does depart in behaviour
|
||
|
subtly from the original AT \*[Am] T implementation.
|
||
|
Some of the more notable departures are:
|
||
|
.Pp
|
||
|
.Bl -tag -width "item marking" -compact
|
||
|
.It unmark
|
||
|
The original implementation did not have a marker for an unmarked field
|
||
|
the mark was only displayed next to a field when it had been marked using
|
||
|
the REQ_TOGGLE_ITEM.
|
||
|
In this implementation a separate marker can be used
|
||
|
to indicate an unmarked item.
|
||
|
This can be set using set_menu_unmark function.
|
||
|
There is no requirement for the mark and unmark strings to be the same
|
||
|
length.
|
||
|
Room will be left for the longest of the two.
|
||
|
The unmark string
|
||
|
is optional, if it is not set then menus defaults to the old behaviour.
|
||
|
.It item marking
|
||
|
In the original implementation the current item was considered selected
|
||
|
and hence had the mark string displayed next to it.
|
||
|
This implementation does not do this because the Author considers the
|
||
|
effect too confusing.
|
||
|
Especially in the case of a multiple selection menu because there was no
|
||
|
way to tell if the current item is selected or not without shifting off
|
||
|
of it.
|
||
|
Since the current item is displayed using the foreground attribute it was
|
||
|
deemed unnecessary to also display the mark string against the current item.
|
||
|
.El
|
||
|
.Pp
|
||
|
The option O_RADIO and the function
|
||
|
.Fn item_selected
|
||
|
are
|
||
|
.Nx
|
||
|
extensions and must not be used in portable code.
|