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.
 | 
