XGETVALS Name
XGETVALS Purpose
General widget to get values. Category
Calling Sequence
xgetvals Inputs
Keyword Parameters
Keywords
TITLE=txt Title string or string array (Def="Enter values:").
LABELS=lab Array of labels for each value to enter.
Each label is an element of a string array and has the text
for an item to enter. A field size may also be given after
a separator (def="/", change with SEP=sep). Example:
LABEL=['X min:/5','X max:/5','Y min:','Y max:']
TAGS=tags Arrays of tags to use if values are returned in a
structure (Default will be V0, V1, ...).
SEP=sep character used to separate label and field size (def=/).
DEF=def Array of default values for each item.
If given must have a value for each item (def=blank).
ROWS=rows Array of row numbers for each item. Example:
ROWS=[1,1,2,2] Just flags when to start next row.
LIST=lst String array defining drop-down lists for specified items.
Each element gives a list in the following format:
'row, item /menu_1/menu_2/.../menu_n' where row, item gives the
row and item # for a text entry area (1 is first). The drop-down
menu will contain the listed menu entries which can be clicked
to fill in the text area.
BUTTONS=btn String array with optional buttons to fill in values.
Each item contains the row number and procedure name separated by
the delimeter (see above). The button will execute the specified
procedure which takes one arg, an array of widget IDs for that row
Any other values needed by the routine internally should be passed
in another call before xgetvals calls it. For example, the top level
base ID might be needed if xtxtin is used in the routine.
The routine must fill in the values of all fields in that row. Example:
btn=['1/procedure_1','2 / procedure_2']
ACT_PRO=actpro Array of user procedure names. Will be executed by an action
button. This procedure must take 2 arguments, the structure returned by
the STRUCT keyword (STRUCT is not needed for this to work), and a list
of widget IDs for all the text entry areas. Ex: userpro, s, idlist.
Neither arg need be used in the procedure. Can use the IDLUSR function
tag_test to find the index into idlist of a known tag in s. Note, a set
of tag names must be given using the TAGS keyword.
ACT_LAB=actlab Labels for the action buttons.
ACT_COL=n Action buttons base will have n columns (def=5).
INIT_PRO=ipro Name of an initialization procedure. It must follow the
same rules as an action procedure and take the same args.
HEAD=hd Row heading text. String array with optional row headings.
Each item contains the row number and heading text separated by
the delimeter (see above). Example:
hd=['1/Heading text for row 1','3 / Heading text for row 3']
VALS=vals Returned array of values in a string array.
STRUCT=svals Values returned in a structure.
EXIT=ex Returned exit code: 0=ok, -1=canceled.
Outputs
Common Blocks
Notes
Modification History
R. Sterner, 2002 Sep 19
R. Sterner, 2003 Jul 10 --- Fixed defaults for byte values.
R. Sterner, 2003 Jul 10 --- Allowed non-numericdefault values.
R. Sterner, 2003 Jul 10 --- Set input focus to OK button.
R. Sterner, 2006 Mar 01 --- Added optional Get Values buttons.
R. Sterner, 2006 Mar 02 --- Added optional row headings.
R. Sterner, 2006 Mar 03 --- Passed top into button procedures.
R. Sterner, 2006 Mar 14 --- Fixed error on a RETURN after text entry.
R. Sterner, 2006 Mar 14 --- Added drop-down lists.
R. Sterner, 2006 Apr 13 --- Button procedures now only need accept the
array of row widget IDs.
R. Sterner, 2006 Apr 20 --- Fixed row headings to allow slashes.
R. Sterner, 2006 Sep 01 --- Added TAGS=tags, STRUCT=sval.
R. Sterner, 2006 Sep 01 --- Added action buttons. Now this routine
can be used as a simple widget program by calling user routines.
R. Sterner, 2006 Sep 05 --- Added INIT_PRO.
Copyright (C) 2002, Johns Hopkins University/Applied Physics Laboratory
This software may be used, copied, or redistributed as long as it is not
sold and this copyright notice is reproduced on each copy made. This
routine is provided as is without any express or implied warranties
whatsoever. Other limitations apply as described in the file disclaimer.txt.