menu(1) part 10 of 11

Paul J. Condie pjc at pcbox.UUCP
Sat Apr 7 03:57:32 AEST 1990


#!/bin/sh
# this is part 10 of a multipart archive
# do not concatenate these parts, unpack them in order with /bin/sh
# file utilities.d/libgeti.d/popmenu.c continued
#
CurArch=10
if test ! -r s2_seq_.tmp
then echo "Please unpack part 1 first!"
     exit 1; fi
( read Scheck
  if test "$Scheck" != $CurArch
  then echo "Please unpack part $Scheck next!"
       exit 1;
  else exit 0; fi
) < s2_seq_.tmp || exit 1
echo "x - Continuing file utilities.d/libgeti.d/popmenu.c"
sed 's/^X//' << 'SHAR_EOF' >> utilities.d/libgeti.d/popmenu.c
X		switch ( ch )
X		{
X		   case KEY_DOWN:
X		   case KEY_RIGHT:
X			fptr = (fptr >= menu->NumItems+1) ? 1 : ++fptr;
X
X			/* stroll off window? */
X			if ( fptr-top+1 > menu->winSize || fptr == 1 )
X			{
X				if ( fptr == 1 )
X					top = 1 ;
X				else
X					top += inc ;
X				_showWin( menu, top ) ;
X			}
X			break;
X
X		   case KEY_UP:
X		   case KEY_LEFT:
X			wrefresh( menu->win ) ;
X			fptr = (fptr <= 1) ? menu->NumItems+1 : --fptr;
X
X			/* stroll off window? */
X			if ( fptr == menu->NumItems+1 || fptr < top )
X			{
X				if ( fptr == menu->NumItems+1 && inc > 0 )
X					top = menu->NumItems - menu->winSize + 2 ;
X				else
X					top -= inc ;
X				if ( top < 1 ) top = 1 ;
X				_showWin( menu, top ) ;
X			}
X			break;
X
X		   case '0':
X		   case '1':
X		   case '2':
X		   case '3':
X		   case '4':
X		   case '5':
X		   case '6':
X		   case '7':
X		   case '8':
X		   case '9':
X		   case 'A':
X		   case 'B':
X		   case 'C':
X		   case 'D':
X		   case 'E':
X		   case 'F':
X		   case 'G':
X		   case 'H':
X		   case 'I':
X		   case 'J':
X		   case 'K':
X		   case 'L':
X		   case 'M':
X		   case 'N':
X		   case 'O':
X		   case 'P':
X		   case 'Q':
X		   case 'R':
X		   case 'S':
X		   case 'T':
X		   case 'U':
X		   case 'V':
X		   case 'W':
X		   case 'X':
X		   case 'Y':
X		   case 'Z':
X			wrefresh( menu->win ) ;
X			/* look for first char match from here on down */
X			for ( i=fptr+1; i<=menu->NumItems+1 &&
X				toupper(*menu->items[i-1])!=ch; i++ ) ; 
X
X			/* no match?  how about from here on up? */
X			if ( i > menu->NumItems+1 )
X				for ( i=1; i<fptr &&
X					toupper(*menu->items[i-1])!=ch; i++ ) ;
X
X			fptr = i ;	/* i would still be fptr if both failed */
X
X			/* need to display a different window? */
X			if ( fptr >= top+menu->winSize || fptr < top )
X			{
X				top = fptr ;
X				_showWin( menu, top ) ;
X			}
X			break ;
X
X		   case KEY_RETURN:
X		   case KEY_ENTER:
X			menu->ActiveItem = fptr;
X			wrefresh (menu->win);	/* force flush of attributes */
X			putp ( cursor_visible ) ;
X			return (menu->ActiveItem);
X
X		   case KEY_CANCEL:
X			putp ( cursor_visible ) ;
X			return (-1);
X
X		   case KEY_HELP:
X			ShowHelp (menu->helpfile, "popmenu", LINES);
X			break;
X
X		   case KEY_REFRESH:
X			clearok (menu->win, TRUE);
X			wrefresh (menu->win);
X			break;
X
X		   default:
X			break;
X		}  /* end switch (ch) */
X	}
X}
X
X/* pjc 7/87 */
X
X_showWin( menu, top )
X	MENU	*menu ;
X	int	top ;
X{
X	register int	i ;
X
X	for (i=0; i < menu->winSize && top+i-1 < menu->NumItems+1; i++)
X		mvwprintw (menu->win, i+1, 2, "%-*s", menu->width, menu->items[top+i-1]);
X	for (; i < menu->winSize ; i++)
X		mvwprintw (menu->win, i+1, 2, "%*s", menu->width, " ");
X}
SHAR_EOF
echo "File utilities.d/libgeti.d/popmenu.c is complete"
chmod 0644 utilities.d/libgeti.d/popmenu.c || echo "restore of utilities.d/libgeti.d/popmenu.c fails"
echo "x - extracting utilities.d/libgeti.d/GetInput.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/GetInput.h &&
X#ifndef LINT
Xstatic char ID_GetInput[] = "%W%   DeltaDate %G%   ExtrDate %H%";
X#endif
X
X/*
X**	Type of allowable characters
X*/
X
X#define	ALPHANUM	' '
X#define	ALPHA		'A'
X#define	NUMERIC		'9'
X#define	SET		'E'
X#define	MENU		'M'
X#define	UPPER		'U'
X#define	UPPER_AN	'V'
X#define	HEX		'H'
X#define	STATE		'S'
X#define	ZIP		'Z'
X#define	DATE		'D'
X#define	TIME		'T'
X#define	PROTECT		'P'
X
X/*
X**	Adjust/Fill
X*/
X
X#define	NOFILL		' '
X#define	RTADJ_ZFILL	'Z'
X#define	RTADJ_BFILL	'B'
X#define	LFADJ_ZFILL	'z'
X#define	LFADJ_BFILL	'b'
X
X/*
X**	'C' field types
X*/
X
X#define CHAR		'0'
X#define INT		'1'
X#define SHORT		'2'
X#define LONG		'3'
X#define DOUBLE		'4'
X#define MONEY		'M'
X#define FLOAT		'5'
X
X/*
X**	Union to take care of a field that could be any valid
X**		'c' field type.
X*/
X
Xtypedef union FldUnion {
X	long	*longVal ;
X	double	*doubleVal ;
X	float	*floatVal ;
X	int	*intVal ;
X	short	*shortVal ;
X	char	*strVal ;
X} *FldUnPointer ;
X
X
X#define AUTONEXT	TRUE
X#define NOAUTO		FALSE
X
X#define MUSTENTER	TRUE
X#define NOMUST		FALSE
X
X#define NOHELP		""
X#define NORANGE		NULL
X#define NOMSG		NULL
X#define NOMASK		NULL
X#define NOTAG		""
X#define	A_SAME		-1		/* same as what's on the screen */
X
X
X#ifndef KEY_RETURN
X#   define KEY_RETURN	'\r'
X#endif
X#ifndef KEY_BEG
X#   define KEY_BEG	0542
X#endif
X#ifndef KEY_END
X#   define KEY_END	0550
X#endif
X#ifndef	KEY_SAVE
X#   define KEY_SAVE	0571
X#endif
X#ifndef	KEY_PRINT
X#   define KEY_PRINT 	0532
X#endif
X#ifndef	KEY_HELP
X#   define KEY_HELP 	0553
X#endif
X#ifndef	KEY_REFRESH
X#   define KEY_REFRESH 	0565
X#endif
X#ifndef	KEY_TAB
X#   define KEY_TAB 	'\t'
X#endif
X#ifndef	KEY_BTAB
X#   define KEY_BTAB 	0541
X#endif
X#ifndef	KEY_CANCEL
X#   define KEY_CANCEL 	0543
X#endif
X#ifndef	KEY_ACCEPT
X#   define KEY_ACCEPT 	1000
X#endif
X#ifndef	KEY_TOC
X#   define KEY_TOC 	1001
X#endif
X
X#define NOKEY		'\0'
X#define KEY_CTLA	'\001'
X#define KEY_CTLB	'\002'
X#define KEY_CTLC	'\003'
X#define KEY_CTLD	'\004'
X#define KEY_CTLE	'\005'
X#define KEY_CTLF	'\006'
X#define KEY_CTLG	'\007'
X#define KEY_CTLH	'\010'
X#define KEY_CTLI	'\011'
X#define KEY_CTLJ	'\012'
X#define KEY_CTLK	'\013'
X#define KEY_CTLL	'\014'
X#define KEY_CTLM	'\015'
X#define KEY_CTLN	'\016'
X#define KEY_CTLO	'\017'
X#define KEY_CTLP	'\020'
X#define KEY_CTLQ	'\021'
X#define KEY_CTLR	'\022'
X#define KEY_CTLS	'\023'
X#define KEY_CTLT	'\024'
X#define KEY_CTLU	'\025'
X#define KEY_CTLV	'\026'
X#define KEY_CTLW	'\027'
X#define KEY_CTLX	'\030'
X#define KEY_CTLY	'\031'
X#define KEY_CTLZ	'\032'
X
X/*
X**  Macros
X*/
X#define wattrOn(a, b)	wattrset(a, b)
X#define wattrOff(a)	wattrset(a, 0)
X#ifndef BELL
X#define	BELL	printf ("%c", 7)
X#endif
X
X#define	CLEARROW(row)	{ \
X				int	col; \
X				int	tmprow; \
X				tmprow = ((row%100) == row) ? row : row/100; \
X				col = ((row%100) == row) ? 0 : row%100; \
X				for (; col<=COLS-2; col++) \
X					mvwaddch (stdscr, tmprow,col, ' '); \
X			}
SHAR_EOF
chmod 0644 utilities.d/libgeti.d/GetInput.h || echo "restore of utilities.d/libgeti.d/GetInput.h fails"
echo "x - extracting utilities.d/libgeti.d/keys.h (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/keys.h &&
X#ifndef LINT
Xstatic char ID_keys[] = "%W%   DeltaDate %G%   ExtrDate %H%";
X#endif
X
Xextern int	KeyReturn;
Xextern int  	KeyDown;
Xextern int  	KeyUp;
Xextern int  	KeyTab;
Xextern int  	KeyBTab;
Xextern int  	KeyAccept;
X
Xextern int  	KeyBeg;
Xextern int  	KeyEnd;
Xextern int  	KeyRight;
Xextern int  	KeyLeft;
Xextern int  	KeyBackspace;
Xextern int  	KeyEOL;
Xextern int  	KeyDL;
Xextern int  	KeyDC;
Xextern int  	KeyIC;
X
Xextern int  	KeyHelp;
Xextern int  	KeyTOC;
Xextern int  	KeyRedraw;
Xextern int  	KeySave;
Xextern int  	KeyPrint;
Xextern int  	KeyCancel;
SHAR_EOF
chmod 0644 utilities.d/libgeti.d/keys.h || echo "restore of utilities.d/libgeti.d/keys.h fails"
echo "x - extracting utilities.d/libgeti.d/makefile (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/makefile &&
X# %W%   DeltaDate %G%   ExtrDate %H%
X
XTITLE = GETINPUT
X
XINSTALLLIB 	= 
XINSTALLHDR	=
XMANDIR 		= .
X
X#CC = cc
X
X###  CFLAG settings
X
X###  Sys5
XCFLAGS = -O
X###  Xenix
X#CFLAGS = -O -DM_TERMINFO -LARGE -Ml -Mlt34 -F 4000
X
XARFLAGS = rv
X
XLIBS = libgeti.a -lcurses -lc
X
X
XCFILES = AdjField.c DateFun.c DisPrmpt.c FindSet.c GetSetLen.c \
X	GetInput.c IsDate.c IsFldOk.c IsMask.c IsRange.c IsState.c IsTime.c \
X	ReDispFld.c ScrnOut.c ShowChar.c ShowSet.c ShowHelp.c \
X	popmenu.c BuildMenu.c checkmask.c doinsert.c InitGetI.c drawbox.c \
X	RingMenu.c
X
XHFILES = GetInput.h keys.h
XMANPAGES = GetInput.3X popmenu.3 drawbox.3 ShowHelp.3
X
XOBJECTS =${CFILES:.c=.o}
X
Xinstall : libgeti.a
X	-ln libgeti.a ../../libgeti.a
X	-ln GetInput.h ../../GetInput.h
X
Xtest : libgeti.a _Main.o
X	$(CC) $(CFLAGS) _Main.o $(LIBS) -o test.out
X
Xlibgeti.a : $(OBJECTS)
X	ar $(ARFLAGS) libgeti.a $?
X
Xlint:
X	lint -I$(INCDIR) _Main.c $(CFILES) -lcurses > lint.out
X
Xprint :
X	PrintPrg $(MANPAGES) makefile $(CFILES) $(HFILES) _Main.c | lp -t$(TITLE)
X
Xshar:
X	shar -b GetInput.hlp $(MANPAGES) makefile $(CFILES) $(HFILES) _Main.c > libgeti.shar
X
Xclean :
X	rm -f *.o core libgeti.a test.out lint.out libgeti.shar \
X	../../libgeti.a ../../GetInput.h libgeti.shar.Z
X
X#####
X#####
X
X_Main.o:	_Main.c GetInput.h keys.h
XAdjField.o:	AdjField.c GetInput.h
XDisPrmpt.o:	DisPrmpt.c GetInput.h
XFindSet.o:	FindSet.c GetInput.h
XGetSetLen.o:	GetSetLen.c GetInput.h
XGetInput.o:	GetInput.c GetInput.h keys.h
XIsDate.o:	IsDate.c GetInput.h
XIsFldOk.o:	IsFldOk.c GetInput.h
XIsMask.o:	IsMask.c GetInput.h
XIsRange.o:	IsRange.c GetInput.h
XIsTime.o:	IsTime.c GetInput.h
XReDispFld.o:	ReDispFld.c GetInput.h
XScrnOut.o:	ScrnOut.c GetInput.h
XShowChar.o:	ShowChar.c GetInput.h
XShowSet.o:	ShowSet.c GetInput.h
SHAR_EOF
chmod 0644 utilities.d/libgeti.d/makefile || echo "restore of utilities.d/libgeti.d/makefile fails"
echo "x - extracting utilities.d/libgeti.d/GetInput.3X (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/GetInput.3X &&
X. \ %W% DeltaDate %G% ExtrDate %H% 
X.TH GETINPUT 3X "libgeti"
X.SH NAME
XGetInput \- manages terminal input using curses
X.SH SYNOPSIS
X.LP
X.nf
X#include <curses.h>
X#include "GetInput.h"
X
Xint GetInput (win, row, col, &Fld, FldAttribute, FldMask,
X              FldRange, FldLength, FldMin, FldCharType, 
X              FldAdjust, FldType, FldExit, MustEnter, 
X              ErrRow, MsgRow, PromptMsg, HelpFile, HelpTag)
X
XWINDOW        *win;
Xint           row, col, FldAttrbute, FldLength, FldMin, 
X              FldExit, MustEnter, ErrRow, MsgRow;
XFldUnPointer  Fld;
Xchar          *FldMask, *FldRange, FldCharType, FldAdjust, 
X              FldType, *PromptMsg, HelpFile[], HelpTag[];
X.fi
X.SH DESCRIPTION
XGets terminal input using curses(3X). 
XGetInput uses a field by field approach.  All
Xedits and processing are performed for that field as the user
Xmoves from field to field.  It is not a fill form methodology where
Xall edits and processing are performed after the user has inputed
Xa number of fields in a form.
X
X.SH GETTING STARTED
XYou need to include GetInput.h in your program.
X
XCurses tty modes should be - cbreak(), noecho(), nonl() and
Xkeypad () if you want to use arrow keys and the like.
X
XYou should trap and ignore SIGALRM (see BUGS).
X
X.SS Defining Keyboard Keys
XGetInput uses a number of keyboard keys to tell it what to do.
XA default value to the various keys is automatically assigned when you use
Xthis library.  Those default values may be changed by declaring the variable
Xas extern in your program and assigning a new value.
XIn addition to the default variable values, if the terminal
Xhas an associated curses key defined (see curses.h) that key may also be used.
XFor example, ^b (KeyBeg) is the default value to place cursor at beginning 
Xof a field but if there is a key defined for KEY_BEG, in curses, then that
Xkey may also be used.  If the value of KeyBeg and KEY_BEG are different, 
XGetInput will return the value of KEY_BEG not KeyBeg regardless of which 
Xone is pressed.
XNot all keys may have an associated curses key.
XThe "^" indicates press and hold the control key.  A negative one disables
Xthe key, although the associated curses key is still active.
X.br
XBelow is listed the InitGetI() function with the default value and the
Xassociated curses key.
X.nf
X
X/*
X**  InitGetI()
X**	All this does is define some global variables for the keys
X**	used in GetInput(3) and assign some default values.
X*/
X
X#include	<curses.h>
X#include	"GetInput.h"
X
X				/* ACCEPT INPUT KEYS */
X				/* These are the only keys that will return the data inputted into your variable. */
Xint	KeyReturn = '\\r';		/* ^m  KEY_RETURN */
Xint	KeyDown = 10;		/* ^j  KEY_DOWN */
Xint	KeyUp = 11;		/* ^k  KEY_UP */
Xint	KeyTab = '\\t';		/* ^i  KEY_TAB */
Xint	KeyBTab = -1;		/*     KEY_BTAB */
Xint	KeyAccept = 1;		/* ^a  KEY_ACCEPT - Typically this is the key the user presses
X				             to signify he/she is finished with this screen. */
X
X				/* FIELD EDITING KEYS */
Xint	KeyBeg = 2;		/* ^b  KEY_BEG - Place cursor at beginning of field */
Xint	KeyEnd = 5;		/* ^e  KEY_END - Place cursor at end of input in field */
Xint  	KeyRight = 12;		/* ^l  KEY_RIGHT - Forward space in field */
Xint  	KeyLeft = 8;		/* ^h  KEY_LEFT - Backspace in field (non-destructive) */
Xint  	KeyBackspace = '\\b';	/* \\b  KEY_BACKSPACE - Same as KEY_LEFT */
Xint  	KeyEOL = 4;		/* ^d  KEY_EOL - Delete from cursor to end of field */
Xint  	KeyDL = 3;		/* ^c  KEY_DL - Clear field and home cursor */
Xint  	KeyDC = 24;		/* ^x  KEY_DC - Delete a character */
Xint  	KeyIC = 20;		/* ^t  KEY_IC - Toggle between type-over and insert mode */
X
X				/* OTHER KEYS */
Xint  	KeyRedraw = 18;		/* ^r  KEY_REFRESH - Redraw screen */
Xint  	KeySave = 6;		/* ^f  KEY_SAVE - Save screen to a file */
Xint  	KeyPrint = 16;		/* ^p  KEY_PRINT - Print screen to lp */
Xint  	KeyCancel = 27;		/* esc KEY_CANCEL - Cancel pop-up menu selection */
Xint  	KeyHelp = '?';		/*     KEY_HELP - Display help screen */
X				/*        If the user needs to input a "?" you will have to change this. */
Xint  	KeyTOC = 20;		/* ^t  KEY_TOC  - When in help display Table of Contents */
X
Xvoid
XInitGetI()
X{
X	/* i don't do nuthin */
X}
X.fi
X
X.SH ARGUMENT DESCRIPTION
X.TP 6
X*win
XA pointer to a curses window that this routine will operate under.
X.TP 
Xrow
XThe row to position cursor on.
X.TP 
Xcol
XThe starting column for field.
X.TP
X&Fld		
XA pointer to a union variable where you have loaded the
Xaddress of your memory variable to accept the input data.  Upon
Xentry to GetInput the value in your memory variable will be
Xdisplayed as the default value.  The type of union you select must be compatible
Xwith the \fIFldType\fP you've specified.
X
X.nf
XFor example:
X	union FldUnion	Fld;
X	double		myvar;
X
X	Fld.doubleVal = &myvar;
X	GetInput (......);
X
X	/*
X	**  After returning from GetInput() what the user typed in will
X	**  be in \fImyvar\fP;
X	*/
X
X
X
X/*
X**     Structure of Union
X*/
Xtypedef union FldUnion
X{
X	long    *longVal;
X	double  *doubleVal;
X	float   *floatVal;
X	int     *intVal;
X	short   *shortVal;
X	char    *strVal;
X} *FldUnPointer;
X.fi
X.TP
XFldAttrbute	
XCurses attribute you want your input field to be.  For
Xexample A_REVERSE.  Refer to curses(3X) for further
Xinformation on allowable terminal attributes.
X.br
XA_SAME  is a special attribute that tells GetInput to use
Xthe same attributes that is already on the screen in the
Xfirst column of the field.
X
X. \ **********************************
X.TP
XFldMask
XA char pointer to a mask for the field.  This permits the user to mix 
Xalpha with numeric while letting GetInput do the edit checking.  You can also
Xuse this to format a field.
X
XThe keyword \fBNOMASK\fP may be placed here if no mask is required.
X
XValid masks for a field depend upon the type of field
Xyou specify, see \fIFldCharType\fP.
X
XThe \fIFldLength\fP should not include character positions where no input
Xis allowed in the mask (format characters), because format characters
Xare not returned into \fIFld\fP.  For example, \fIFldCharType = DATE,
XFldMask = "MM/DD/YY"\fP.  The "/" is a format character.  The cursor
Xwill skip over those positions in the field.  Only the characters typed in
Xthe MM DD YY positions will be in your memory variable \fIFld\fP.
XThe FldLength would be six for this case.
X
XBecause the mask is so closely tied to the \fIFldCharType\fP, a complete
Xdescription of what mask characters are valid with what field types is 
Xdescribed under
X\fIFldCharType\fP.  Any character in the mask that is not listed as a valid
Xmask character for that field type becomes a format character.
X. \ **********************************
X.TP
XFldRange
XA char pointer to a set of valid ranges permitted for this field. 
XRanges may be specified as comma separated values ("ONE,TWO,THREE") 
Xor as a range ("1-5"), or a combination of both ("1-5,M,E").
XRange values must be compatible with the \fIFldCharType\fP and \fIFldType\fP 
Xthat you 
Xhave selected.
X.br
XSome examples:
X.nf
X	"1-10"
X	"5,10,15,16"
X	"1-10,20,M,E,32-40"
X	"CA,TX,ID"
X.fi
X
XThe keyword \fBNORANGE\fP may be used if no range checking is to be 
Xperformed for this field.
X. \ **********************************
X.TP
XFldLength
XMaximum length of this field.  For field types (FldCharTypes) SET and MENU 
Xthe field length is automatically set to the longest set value in the FldRange.
X. \ **********************************
X.TP
XFldMin
XIf \fIMUSTENTER\fP is selected in \fIFldExit\fP then this is the minimum
Xrequired input.  Otherwise, it is the minimum required input only if they try 
Xto input something.
X. \ **********************************
X.TP
XFldCharType
XThis argument defines edit checks to be performed on the
Xinput characters as they are being typed in.  If no mask is provided then
Xthe field type itself determines the edit checks to be performed on all
Xcharacters in the field.
X.RS 6
X.TP 11
XALPHANUM
XAny alpha/numeric character is allowed.
X.br
XValid mask characters:
X.nf
X	space	alpha/numeric
X	A	alpha
X	9	numeric
X	U	upper alpha
X	V	upper alpha/numeric
X	H	???
X.fi
X.TP
XALPHA
XAlpha only.
X.br
XValid mask characters:
X.nf
X	A	alpha
X.fi
X.TP
XNUMERIC
XNumeric only.
X.br
XValid mask characters:
X.nf
X	9	numeric
X.fi
X.TP
XUPPER
XConvert to upper case.  Only alpha permitted.
X.br
XValid mask characters:
X.nf
X	U	upper alpha
X.fi
X.TP
XUPPER_AN
XAlpha and numeric permitted.  Convert alpha characters to upper-case.
X.br
XValid mask characters:
X.nf
X	V	upper alpha/numeric
X.fi
X.TP
XHEX
XOnly hex characters permitted.
X.br
XValid mask characters:
X.nf
X	H	???
X	space	???
X.fi
X.TP
XSTATE
XValid two character Post Office abbreviations for the fifty states.
XA edit check is done for a valid state.
X.br
XValid mask characters:
X.nf
X	SS	two character state
X	S	???
X	space	???
X.fi
X.TP
XZIP
XPost Office zip code.
X.br
XValid mask characters:
X.nf
X	99999-9999	???
X.fi
X.TP
XDATE
XA valid date.
X.br
XValid mask characters:
X.nf
X	MM	month  (01-12)
X	DD	day  (01-31)
X	YY	year  (00-99)
X	YYYY	full year with century
X.fi
XThe mask must contain at least MM and DD.  If no mask is specified for the
Xfield a default mask of "MMDDYY" is used.
X.br
XSome examples:
X.nf
X	MMDDYY
X	MM/DD/YY
X	YY-MM-DD
X	MM  DD  YYYY
X.fi
X.TP
XTIME
XA time field.
X.br
XValid mask characters:
X.nf
X	HH	hours  (01-12)
X	MM	minutes  (00-59)
X	SS	seconds  (00-59)
X	TT	tenths  (00-99)
X	II	military hours  (00-24)
X.fi
XSome examples:
X.nf
X	HH:MM
X	HH:MM:SS
X	HH:MM:SS:TT
X	II:MM
X	II:MM:SS
X	II:MM:SS:TT
X.fi
X.TP
XSET
XThis field type specifies a set of values that are acceptable in the input 
Xfield.
XThe acceptable values within the set are specified in the \fIFldRange\fP 
Xargument.  
XThe user selects one of the set values specified in the field range by
Xpressing the space bar, which will toggle through the set values,
Xor by pressing the first character in the desired value.
X
XThe format of the FldRange can only be comma separated values 
X(ex. "CA,ID,TX").  
XRange values, such as "1-5", don't work.  You would have to say "1,2,3,4,5".
X.br
XThe FldLength is automatically set to the longest set value in the FldRange.
X.TP
XMENU
XThis field type is similar to the SET type.  The difference is when the user
Xattempts to type something in the field a pop-up menu of available choices
Xare displyed, as specified in field_range.  
XThe user makes a selection by hi-lighting the choice and pressing return.
X.br
XSee SET type for specifying the FldRange.
XThe limit is ten items in the FldRange.
X.TP
XPROTECT
XThis X's out the field so what is typed on the keyboard can not be seen on
Xthe screen.  Useful for password entry.
X.RE
X. \ ---------------------------------
X.TP
XFldAdjust
XIndicates whether to adjust the text right or left within the field
Xand whether or not to zero or blank fill the field.
X.RS 6
X.TP 15
XNOFILL
Xno action.
X.TP
XRTADJ_ZFILL
Xright adjust, zero fill
X.TP
XRTADJ_BFILL
Xright adjust, blank fill
X.TP
XLFADJ_ZFILL
Xleft adjust, zero fill
X.TP
XLFADJ_BFILL
Xleft adjust, blank fill
X.RE
X. \ ---------------------------------
X.TP 6
XFldType
XThis argument describes the memory variable that is to hold
Xthe input data.  The address that you loaded into "&Fld".
X.RS 6
X.TP 10
XCHAR
Xcharacter field
X.TP
XINT
Xinteger
X.TP
XSHORT
Xshort integer
X.TP
XLONG
Xlong integer
X.TP
XDOUBLE
Xdouble
X.TP
XFLOAT
Xfloating point
X.TP
XMONEY
Xdouble which accepts only two decimal positions.
X.RE
X. \ ---------------------------------
X.TP 11
XFldExit
X.RS 6
X.TP 10
XAUTONEXT
XGetInput() will exit, with the value of KEY_RETURN, when the last character 
Xin the field is keyed in.
X.TP
XNOAUTO
XWill not exit field until a accept key (see defining keyboard keys) is pressed.
X.RE
X. \ ---------------------------------
X.TP
XMustEnter
X.RS 6
X.TP 12
XMUSTENTER
XThis is a must enter field and the value of FldMin must be
Xentered before exiting field.
X.TP
XNOMUST
XNot a must enter field.
X.RE
X. \ ---------------------------------
X.RE
X.TP 6
XErrRow
XIndicates what row/column to display an error message if one occurs.
XThe row specified is for stdscr.
XIf a optional column is to be specified on where to start the message, the
Xformat would be for example 2302 where 23 is the row and 02 is the column.
XOtherwise, a default of column zero is used.
XGetInput will do a clrtoeol() before displaying the error message, therefore,
Xthe entire row must be given over to GetInput.
XIf this row is outside the boundary of the window unpredictable results will
Xoccur, for example, winch() will return garbage.
X.TP
XMsgRow
XIndicates what row to display help messages.
XThe row specified is for stdscr.
XIf a optional column is to be specified on where to start the message, the
Xformat would be for example 2202 where 22 is the row and 02 is the column.
XOtherwise, a default of column zero is used.
XGetInput will do a clrtoeol() before displaying the message, therefore,
Xthe entire row must be given over to GetInput.
XIf this row is outside the boundary of the window unpredictable results will
Xoccur, for example, winch() will return garbage.
X.RS 6
X.TP 10
XNULL
XNo active message line.  Only if PromptMsg == NOMSG.
X.RE
X.TP
X*PromptMsg
XPrompt message to be displayed.  The prompt message is always displayed
Xto stdscr, regardless of the win specified.
X.RS 6
X.TP 10
XNOMSG
XNo message to be displayed.
X.RE
X.TP
XHelpFile
XFile name containing on-line help messages.  Current directory
Xis searched first for helpfile and then getenv("HELPDIR") directory is
Xsearched.
X.RS 6
X.TP 10
XNOHELP
XNo help file is available for this field.
X
X.PP
XThe default helpfile (GetInput.hlp) is shown below.  Where this file is
Xinstalled will vary from machine to machine.
X
X.nf
X\fBGETINPUT\fP
X .TITLE GETINPUT Help
XMover Keys:
X        KEY_RETURN  (^m)    Traverse forwards through the fields.
X        KEY_DOWN  (^j)      Traverse forwards through the fields.
X        KEY_UP  (^k)        Traverse backwards through the fields.
X        KEY_TAB  (^i)       Fast forward through the fields.
X        KEY_BTAB            Fast reverse through the fields.
XField Editing Keys:
X        KEY_BEG  (^b)       Place cursor at beginning of field.
X        KEY_END  (^e)       Place cursor at end of input in field.
X        KEY_RIGHT  (^l)     Forward space within the field.
X        KEY_LEFT  (^h)      Backspace within the field (non-destructive).
X        KEY_BACKSPACE  (^h) Same as KEY_LEFT.
X        KEY_EOL  (^d)       Delete from cursor to end of field.
X        KEY_DL  (^c)        Clear field and home cursor.
X        KEY_DC  (^x)        Delete a character.
X        KEY_IC  (^t)        Toggle between type-over and insert mode.
XOther Keys:
X        KEY_HELP  (?)       Display help screen.
X        KEY_REFRESH  (^r)   Redraw the screen.
X        KEY_ACCEPT  (^a)    Accept all input and exit screen.
X        KEY_CANCEL  (esc)   Cancel all input and exit screen.
X        KEY_SAVE  (^f)      Save screen to a file.
X        KEY_PRINT  (^p)     Print screen to lp.
X\fBGETINPUT\fP
X
X
X
X\fBpopmenu\fP
X.TITLE Pop-Up Menu Help
XSELECTING OPTIONS:
X    To select an option press the "up arrow key",
X    "k", "down arrow key", "j" to place bar on
X    option and press "return".
X
X    KEY_CANCEL (esc)   - Cancel selection.
X\fBpopmenu\fP
X
X
X
X\fBhelp\fP
X.TITLE Using Help
XHelp displays consist of a description displayed in a window.
XIf the description doesn't fit in the window, the Up Arrow and
XDown Arrow keys can be used to view a few more lines of the 
Xdisplay.  Exiting the help system will return the display to 
Xthe state it was in when you asked for help.
X
X   The following keys are active in help:
X        KEY_CANCEL  (esc)   Exit help.
X        KEY_DOWN  (^j)      View a few more lines.
X        KEY_UP  (^k)        View the previous lines.
X        KEY_BEG  (^b)       Display first page.
X        KEY_END  (^e)       Display last page.
X        KEY_TOC  (^t)       Display table of contents.
X\fBhelp\fP
X.fi
X.RE
X.TP
XHelpTag
XTag in help file where messages are to be found.  The tag 
Xsurrounds the help message.  For example:
X.nf
X
Xhelptag
X[ .TITLE  Title line goes here. ]
XI put any help message for the user between the tags.  
XIt can be any length as it will be displayed one screen 
Xat a time.
XThe following screen attributes may be used:
X\\S  =  Standout
X\\B  =  Bold
X\\U  =  Underline
X\\D  =  Dim
X\\R  =  Reverse video
X\\L  =  Blink
X\\N  =  Normal (reset)
X
X\\BThis text is in bold face.  \\NBack in normal mode.
Xhelptag
X
XThe \fITABLE_OF_CONTENTS\fP tagname is a special tag describing what
Xis to be contained in the table of contents menu.  The following is the
Xsyntax for this tagname.
XTABLE_OF_CONTENTS
Xhelpfile   tagname   description
XTABLE_OF_CONTENTS
X.fi
X.RS 6
X.TP 10
XNOTAG
XNo tag.  Should only be used if (HelpFile == NOHELP).
X.RE
X.SH EXAMPLE
X.nf
X#include <curses.h>
X#include "GetInput.h"
X
Xmain ()
X{
X	union FldUnion Fld;
X	char	name[20], tempstring[50];
X	int	exitcode;
X
X   initscr ();
X   cbreak ();
X   noecho ();
X   nonl ();
X   keypad (stdscr, TRUE);
X
X   name[0] = '\\0';
X   Fld.strVal = name;
X   exitcode = GetInput (stdscr, 2, 0, &Fld, A_REVERSE, NOMASK, 
X                  NORANGE, 20, 0, UPPER_AN, NOFILL, CHAR, 
X                  NOAUTO, MUSTENTER, 21, 20, 
X                  "Please enter your name.", NOHELP, NOTAG);
X
X   Fld.strVal = tempstring;
X   exitcode = GetInput (stdscr, 4, 0, &Fld, A_BOLD, "HH:MM:SS:TT",
X                  NORANGE, 6, 6, TIME, NOFILL, CHAR, AUTONEXT, 
X                  NOMUST, 20, 21, "Time Field HH:MM:SS:TT", 
X                  "myhelpfile", "field2");
X
X   Fld.strVal = tempstring;
X   exitcode = GetInput (stdscr, 8, 0, &Fld, A_NORMAL, 
X                  "(999) 999-9999", NORANGE, 10, 5, NUMERIC, 
X                  RTADJ_ZFILL, CHAR, NOAUTO, MUSTENTER, 20, NULL, 
X                  NOMSG, NOHELP, NOTAG);
X
X   Fld.strVal = tempstring;
X   exitcode = GetInput (stdscr, 9, 1, &Fld, A_REVERSE, NOMASK,
X                  "CA, NV, ID", 2, 2, SET, NOFILL, CHAR, NOAUTO,
X                  NOMUST, 20, 20, "Select your state.", NOHELP, 
X                  NOTAG);
X   endwin ();
X}
X.fi
X.SH AUTHOR
XIrving Griesman  (original author)
X.br
XEnhanced & Maintained by Paul J. Condie
X.br
X{ihnp4,lll-crg,qantel,pyramid}!ptsfa!pbody!pcbox!pjc
X
X.SH FILES
XGetInput.hlp	- default GetInput help file.
X
X.SH DIAGNOSTICS
XGetInput returns the the decimal value of the key pressed from the getch()
Xfunction.  If the key pressed has an associated curses key GetInput returns
Xthe value of the curses key.  See Defining keyboard keys.
X
X.SH SEE ALSO
Xcurses(3X), popmenu(3).
X
X.SH WARNING
XPutting a field on the same row as your message row or error row may cause
Xunpredictable results.  This is not recommended.
X
X.SH BUGS
XThere is a bug in curses when you call getch() which this routine does.
XWhen in keypad() mode and an ESC character is read, curses 
Xdoes a timed read (1 second) waiting for other characters to appear.  if
Xsome other characters are received within the one second time interval,
Xcurses attempts to match the received string with a caps string defined for the terminal (i.e. ESC[A, ESC[B are arrow keys for a vt100 type terminal)
Xand then returns a #defined int value which can be tested for easily.
XIn some cases untrapped alarm calls occur.  The solution is to trap (ignore)
Xalarm calls.
X.PP
XOn a mustenter field with a fldmin specified a control key (i.e. KEY_DOWN, etc.)
Xwill exit the
Xfield if that is the first key the user presses.  Once the user has tried
Xto input a value in the field even if he clears the field the control key
Xwill not exit until fldmin is inputed.
X
X.nf
XThe following example does not turn the reverse video off when you leave the field on the sun.
Xrc = GetInput (stdscr, 0, 1, &Fld, A_REVERSE, "VVVVVV.VVVVV.VV.VV.V", 
X	NORANGE, 16, 6, UPPER_AN, NOFILL, CHAR, NOAUTO, MUSTENTER, 
X	ERRROW, MSGROW, "Please enter niu location.", "cfgsrn.hlp", NOTAG);
X.fi
X
X.PP
XA core dump of (DisPrmpt at line 37) indicates the string was not null terminated.
X
X..PP
XIf a range is given on a field and a invalid range is inputed and then you
Xclear the field you are unable to exit field.
SHAR_EOF
chmod 0644 utilities.d/libgeti.d/GetInput.3X || echo "restore of utilities.d/libgeti.d/GetInput.3X fails"
echo "x - extracting utilities.d/libgeti.d/RingMenu.3 (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/RingMenu.3 &&
X. \ @(#)RingMenu.3	1.1 DeltaDate 1/22/90 ExtrDate 1/22/90 
X.po 6
X.TH RINGMENU 3L
X.SH NAME
XRingMenu \- Produce a Ring Menu.
X
X.SH SYNOPSIS
X.B "int RingMenu ( win, line, optNum, title, optTable )"
X.B "WINDOW *win ;"
X.B "unsigned short line, optNum ;"
X.B "char *title, *optTable[][2] ;"
X
X.SH DESCRIPTION
XRingMenu accepts a two dimensional pointers arrary, optTable, as specification to display a ring 
Xmenu.  OptTable[][0] is the option name, while optTable[][1] is the description for the option.  The 
Xlast pair of entry in OpTable must be NULL to signify the end of the menu.  The optNumth option is 
Xhighlighted, or the first item will be highlighted if optNum is 0.  The ring menu will be displayed on 
Xwindow win on line number line.  Description for option is displayed on the line+1 line.  An option-
Xal title may be displayed to the left of the ring menu or NULL may be passed if no title is desired..
X
XUser may use the arrow keys, or the equivalent control keys to move the highlighted option, and then 
Xhit the RETURN key to select the desired option.  Or a capital letter match may also select a particu-
Xlar option, there is no need to hit RETURN in this case.
X
XRingMenu accepts at most 20 options.
X
X.SH AUTHOR
XSam S. Lok
X
X.SH RETURN VALUES
XThe position number of the selected option.  The first option being 1.
X
X.SH DIAGNOSTICS
XNone.
X
X.SH EXAMPLES
X	short	option = 1 ;
X
X	static	char	*emp_menu[][2] = {	/* The menu */
X		{ "Query",	"Query existing employee" },
X		{ "Add",	"Add new employee" },
X		{ "Change",	"Update existing employee" },
X		{ "Delete",	"Delete existing employee" },
X		{ "Print",	"Screen dump to printer" },
X		{ "Exit",	"Return to menu" },
X		{ NULL,	NULL } 
X	} ;
X
X	option = RingMenu( stdscr, ERRLINE, option, "Employee:", emp_menu ) ;
X
X.SH FILES
XNone.
X
X.SH SEE ALSO
Xmenu(1L), popmenu(3L), GetInput(3L).
X
X.SH WARNINGS
XRingMenu ignores options more than 20.
XRingMenu.c makes uses of GetInput(3L)'s GetInput.h, keys.h, ShowHelp() and ScrnPrnt(), other-
Xwise, it is very much self contained.
SHAR_EOF
chmod 0444 utilities.d/libgeti.d/RingMenu.3 || echo "restore of utilities.d/libgeti.d/RingMenu.3 fails"
echo "x - extracting utilities.d/libgeti.d/ShowHelp.3 (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/ShowHelp.3 &&
X. \ %W% DeltaDate %G% ExtrDate %H% 
X.po 6
X.TH SHOWHELP 3 "libgeti"
X
X.SH NAME
XShowHelp \- creates and displays a help window using curses
X
X.SH SYNOPSIS
X.B "void  ShowHelp (help_file_name, tag, error_row)
X.br
X.B "char	help_file_name[];"
X.br
X.B "char	tag[];"
X.br
X.B "int	error_row;"
X
X.SH \s9DESCRIPTION\s0
X.B ShowHelp
Xsearches the \fIhelp_file_name\fP for the specified \fItag\fP, creates and
Xcenters a curses window on the screen.  Then displays the content of the tag
Xin the window.  The size of the help window is automatically adjusted to the 
Xsize of message to be displayed.
X
X.SS ARGUMENTS
X.TP 6
Xhelp_file_name
XThe unix file name containing the help message to be displayed.
X.TP 6
Xtag
XThe tag in the help file that contains the help message to be displayed.
X.TP 6
Xerror_row
XThe row on the screen (stdscr) to display any error messages.
X
X.SH HELP FILE SYNTAX
XA help file may consist of multiple help tags.  Any text found outside a helptag
Xis ignored.  See the following example.
X
X.nf
X\fBhelptag\fP
X[ .TITLE  A optional Title line goes here. ]
XI put any help message for the user between the tags.  
XIt can be any length as it will be displayed one screen 
Xat a time.
XThe following screen attributes may be used:
X\\S  =  Standout
X\\B  =  Bold
X\\U  =  Underline
X\\D  =  Dim
X\\R  =  Reverse video
X\\L  =  Blink
X\\N  =  Normal (reset)
X
X\\BThis text is in bold face.  \\NBack in normal mode.
X\fBhelptag\fP
X
X
XThe \fITABLE_OF_CONTENTS\fP tagname is a special tag describing what
Xis to be contained in the table of contents menu.  The following is the
Xsyntax for this tagname.
XTABLE_OF_CONTENTS
Xhelpfile   tagname   description
XTABLE_OF_CONTENTS
X
X
X\fBhelp\fP
X .TITLE Using Help
XHelp displays consist of a description displayed in a window.
XIf the description doesn't fit in the window, the Up Arrow and
XDown Arrow keys can be used to view a few more lines of the 
Xdisplay.  Exiting the help system will return the display to 
Xthe state it was in when you asked for help.
X
X   The following keys are active in help:
X        KEY_CANCEL  (esc)   Exit help.
X        KEY_DOWN  (^j)      View a few more lines.
X        KEY_UP  (^k)        View the previous lines.
X        KEY_BEG  (^b)       Display first page.
X        KEY_END  (^e)       Display last page.
X        KEY_TOC  (^t)       Display table of contents.
X\fBhelp\fP
X.fi
X
X.SH AUTHOR
XPaul J. Condie         2/89
X.br
X{ihnp4,lll-crg,qantel,pyramid}!ptsfa!pbody!pcbox!pjc
X
X.SH SEE ALSO
Xcurses(3X).
SHAR_EOF
chmod 0644 utilities.d/libgeti.d/ShowHelp.3 || echo "restore of utilities.d/libgeti.d/ShowHelp.3 fails"
echo "x - extracting utilities.d/libgeti.d/drawbox.3 (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/drawbox.3 &&
X. \ @(#)drawbox.3	1.2 DeltaDate 1/22/90 ExtrDate 1/22/90 
X.po 6
X.TH DRAWBOX 3 "libgeti"
X
X.SH NAME
Xdrawbox \- draws a box in a curses window
X
X.SH SYNOPSIS
X.B #define	DumbLine	1
X.br
X.B #define	StandoutLine	2
X.br
X.B #define	SingleLine	3	/* alternate character line */
X.br
X.B #define	MosaicLine	4	/* alternate character line */
X.br
X.B #define	DiamondLine	5	/* alternate character line */
X.br
X.B #define	DotLine		6	/* alternate character line */
X.br
X.B #define	PlusLine	7	/* alternate character line */
X
Xextern int	KeyHelp;
X
X.B "void  drawbox (win, from_row, from_col, to_row, to_col, trythis, trythat, vscroll, help)"
X.br
X.B "WINDOW	*win;"
X.br
X.B "int	from_row;"
X.br
X.B "int	from_col;"
X.br
X.B "int	to_row;"
X.br
X.B "int	to_col;"
X.br
X.B "int	trythis;"
X.br
X.B "int	trythat;"
X.br
X.B "int	vscroll;"
X.br
X.B "int	help;"
X
X.SH DESCRIPTION
X.B Drawbox
Xdraws a box within a curses window.  This is similar to the box(3X) function
Xin curses, but provides more flexibility in where to draw the box and what
Xthe box should look like.
X
X.SS ARGUMENTS
X.TP 6
Xwin
XThe curses window to draw the box in.
X.TP 6
Xfrom_row, from_col, to_row, to_col
XDimensions of the box.  Upper left corner and lower right corner of the box.
XTo draw a box around the whole window (like box(3) does) 
Xtry: \fI1,1, LINES,COLS\fP as the box dimensions.
X.TP 6
Xtrythis
XWhat line type to try first.  Any one of the #defines shown above.  
XIf the terminal
Xdoes not support alternate character lines then drawbox will \fItrythat\fP line.
X.TP 6
Xtrythat
XWhat line to use if trythis doesn't work.  This should not be a
Xalternate character line.
X.TP 6
Xvscroll
XIf TRUE vertical scroll bars will be drawn in the right side of the box.
X.TP 6
Xhelp
XIf TRUE the help key (KeyHelp) will be displayed in the lower right corner 
Xof the box to indicate help is available.
X
X.SH AUTHOR
XPaul J. Condie         7/87
X.br
X{ihnp4,lll-crg,qantel,pyramid}!ptsfa!pbody!pcbox!pjc
X
X.SH EXAMPLE
X.nf
X#include	<curses.h>
X
X
Xmain ()
X{
X	drawbox (stdscr, 1,1, LINES,COLS, SingleLine, StandoutLine, TRUE, TRUE);
X}
X.fi
X
X.SH SEE ALSO
Xcurses(3X).
SHAR_EOF
chmod 0444 utilities.d/libgeti.d/drawbox.3 || echo "restore of utilities.d/libgeti.d/drawbox.3 fails"
echo "x - extracting utilities.d/libgeti.d/popmenu.3 (Text)"
sed 's/^X//' << 'SHAR_EOF' > utilities.d/libgeti.d/popmenu.3 &&
X.po 6
X.TH POPMENU 3 "libgeti"
X
X.SH NAME
Xpopmenu \- runs a popup type menu
X
X.SH SYNOPSIS
X.B #define	NEWMENU		0
X.br
X.B #define	CREATEMENU	-2
X.br
X.B #define	DIMWINDOW	-1
X.br
X.br
X.B extern int	KeyHelp;
X.br
X.B extern int	KeyCancel;
X.br
X.B extern int	KeyUp;
X.br
X.B extern int	KeyDown;
X.br
X
X.B "int  popmenu (menu_id)"
X.br
X.B "int		menu_id;"
X
X.SH \s9DESCRIPTION\s0
X.B Popmenu
Xis a generic curses popup menu program.  The synopsis of popmenu will vary
Xdepending on whether you are initializing a new menu or running
Xa previously defined menu.  The above synopsis will run menu (menu_id)
Xthat you have previously defined.
X.PP
XPopmenu will return the number (counting from the top of the menu)
Xof the item selected.  If the user selected the second item in the menu
Xthen \fIpopmenu\fP will return (2).
X.br
XA negative return value indicates the user canceled the selection.
X.PP
XAfter you run a menu you will need to touchwin(stdscr); wrefresh(stdscr);
Xin order to remove the popmenu from the screen.
X.PP
XThe KeyCancel defines the key where the user does not want to make any
Xchoice.  The KeyHelp defines what key is to display the help.  The KeyUp and
XKeyDown inaddition to the curses arrow key move the select bar up and down.
X
X.SH DEFINE NEW MENU
X.B "popmenu (action, menu_id, row, column, title, helpfile, win_size, sizeof( option_base ), option_base )"
X.br
X.B "int	action;"
X.br
X.B "int	menu_id;"
X.br
X.B "int	row;"
X.br
X.B "int	column;"
X.br
X.B "char	*title;"
X.br
X.B "char	*helpfile;"
X.br
X.B "int	win_size;"
X.br
X.B "char	*option_base;"
X.br
X     or
X.br
X.B "char	**option_base;"
X
X.SS ARGUMENTS
X.TP 6
Xaction
XNEWMENU - tells popmenu that you want to initialize a new menu.
XIf one already exists for this menu_id it will be deleted and then recreated
Xfrom the new list.
X.br
X
XCREATEMENU - If a menu already exists for this menu_id then this flag has
Xno effect.  Otherwise, it initializes a new menu from the list provided.
X
XDIMWINDOW - Dims the reverse video box around the menu.
X.br
Xpopmenu (DIMWINDOW, menu_id);
X.TP 6
Xmenu_id
XA unique identifier that you chose to be assiciated with a menu.
XYou use this identifier to run the menu.
X.TP 6
Xrow, column
XThe upper left corner of where you want the menu box to popup at.
X.TP 6
Xtitle
XTitle to be centered on the first row of the menu.  If title is null no title
SHAR_EOF
echo "End of part 10"
echo "File utilities.d/libgeti.d/popmenu.3 is continued in part 11"
echo "11" > s2_seq_.tmp
exit 0



More information about the Alt.sources mailing list