There are sets of routines in DISLIN for creating single widgets, for setting parameters, for requesting current widget values selected by the user and for creating dialogs.
Routines for creating single widgets begin with the characters 'WG', parameter setting routines with the characters 'SWG', requesting routines with the characters 'GWG' and dialog routines with the characters 'DWG'.
Normally, creating widget and parameter setting routines should be used between the routines WGINI and WGFIN while requesting routines can be called after WGFIN. Dialog routines can be used independently from the routines WGINI and WGFIN.
The routine WGINI initializes the widget routines and creates a main widget.
The call is: | CALL WGINI (COPT, ID) |
or: | int wgini (char *copt); |
COPT | is a character string that defines how children widgets are laid out in the main widget: |
= 'VERT' | means that children widgets are laid out in columns from top to bottom. |
= 'HORI' | means that children widgets are laid out in rows from left to right. |
= 'FORM' | means that the position and size of children widgets is defined by the user with the routines SWGPOS, SWGSIZ and SWGWIN. |
ID | is the returned widget index. It can be used as a parent widget index in other widget calls. |
WGFIN terminates the widget routines. The widgets will be displayed on the screen. After choosing OK in the Exit menu, all widgets are deleted and the program is continued after WGFIN. After choosing Quit in the Exit menu, the program is terminated.
The call is: | CALL WGFIN |
or: | void wgfin (void); |
The routine WGBAS creates a container widget. It can be used as a parent widget for other widgets.
The call is: | CALL WGBAS (IP, COPT, ID) |
or: | int wgbas (int ip, char *copt); |
IP | is the index of the parent widget. |
COPT | is a character string that can have the values 'HORI', 'VERT' and 'FORM'. It determines how children widgets are laid out in the container widget (s. WGINI). |
ID | is the returned widget index. It can be used as a parent widget index in other widget calls. |
The routine WGPOP creates a popup menu in the menubar of the main widget, or a popup submenu of a pop umenu. Entries in the popup menu must be created with WGAPP.
The call is: | CALL WGPOP (IP, CLAB, ID) |
or: | int wgpop (int ip, char *clab); |
IP | is the index of a widget created by WGINI, or the index of another popup widget. |
CLAB | is a character string containing the title of the popup menu. |
ID | is the returned widget index. It can be used as a parent widget index for WGAPP and WGPOP. |
The routine WGAPP creates an entry in a popup menu. The popup menu must be created with the routine WGPOP.
The call is: | CALL WGAPP (IP, CLAB, ID) |
or: | int wgapp (int ip, char *clab); |
IP | is the index of a popup menu created with WGPOP. |
CLAB | is a character string containing a label. |
ID | is the returned widget index. It should be connected with a callback routine (see SWGCBK). |
The routine WGLAB creates a label widget. The widget can be used to display a character string.
The call is: | CALL WGLAB (IP, CSTR, ID) |
or: | int wglab (int ip, char *cstr); |
IP | is the index of the parent widget. |
CSTR | is a character string that should be displayed. |
ID | is the returned widget index. |
The routine WGBUT creates a button widget. The widget represents a labeled button that the user can turn on or off by clicking.
The call is: | CALL WGBUT (IP, CLAB, IVAL, ID) |
or: | int wgbut (int ip, char *clab, int ival); |
IP | is the index of the parent widget. |
CLAB | is a character string that will be used as a label. |
IVAL | can have the values 0 (off) and 1 (on) and is used to initialize the button. |
ID | is the returned widget index. |
The routine WGSTXT creates a scrolled widget that can be used for text output. The text cannot not be modified. Text entries in the widget can be made with the routine SWGTXT.
The call is: | CALL WGSTXT (IP, NSIZE, NMAX, ID) |
or: | int wgstxt (int ip, int nsize, int nmax); |
IP | is the index of the parent widget. |
NSIZE | defines the vertical size of the widget in text rows. |
NMAX | defines the maximal number of displayed entries in the scrolled widget. If this number is reached and a new entry is made, the first entry in the widget is deleted. |
ID | is the returned widget index. |
The routine WGTXT creates a text widget. The widget can be used to get text from the keyboard.
The call is: | CALL WGTXT (IP, CSTR, ID) |
or: | int wgtxt (int ip, char *cstr); |
IP | is the index of the parent widget. |
CSTR | is a character string that will be displayed in the text widget. |
ID | is the returned widget index. |
The routine WGLTXT creates a labeled text widget. The widget can be used to get text from the keyboard.
The call is: | CALL WGLTXT (IP, CLAB, CSTR, NWTH, ID) |
or: | int wgltxt (int ip, char *clab, char *cstr, int nwth); |
IP | is the index of the parent widget. |
CLAB | is a character string containing a label. It will be displayed on the left side of the widget. |
CSTR | is a character string that will be displayed in the text widget. |
NWTH | defines the width of the text field (0 <= NWTH <= 100). For example, NWTH = 30 means that the width of the text field is: 0.3 * widget width. |
ID | is the returned widget index. |
The routine WGFIL creates a file widget. The widget can be used to get a filename from the keyboard. The filename can be typed directly into the file field or can be selected from a file selection box if an entry in the File menu is chosen.
The call is: | CALL WGFIL (IP, CLAB, CFIL, CMASK, ID) |
or: | int wgfil (int ip, char *clab, char *cfil, char *cmask); |
IP | is the index of the parent widget. |
CLAB | is a character string used for an entry in the File menu. |
CFIL | is a character string that will be displayed in the file widget. |
CMASK | specifies the search pattern used in determining the files to be displayed in the file selection box. |
ID | is the returned widget index. |
The routine WGLIS creates a list widget. This widget is used whenever an application must present a list of names from which the user can choose.
The call is: | CALL WGLIS (IP, CLIS, ISEL, ID) |
or: | int wglis (int ip, char *clis, int isel); |
IP | is the index of the parent widget. |
CLIS | is a character string that contains the list elements. Elements must be separated by the character '|'. |
ISEL | defines the pre-selected element (>= 1). |
ID | is the returned widget index. |
The routine WGDLIS creates a dropping list widget. This list widget can be used to save space in the parent widget.
The call is: | CALL WGDLIS (IP, CLIS, ISEL, ID) |
or: | int wgdlis (int ip, char *clis, int isel); |
IP | is the index of the parent widget. |
CLIS | is a character string that contains the list elements. Elements must be separated by the character '|'. |
ISEL | defines the pre-selected element (>= 1). |
ID | is the returned widget index. |
The routine WGBOX creates a list widget where the list elements are displayed as toggle buttons.
The call is: | CALL WGBOX (IP, CLIS, ISEL, ID) |
or: | int wgbox (int ip, char *clis, int isel); |
IP | is the index of the parent widget. |
CLIS | is a character string that contains the list elements. Elements must be separated by the character '|'. |
ISEL | defines the pre-selected element (>= 1). |
ID | is the returned widget index. |
The routine WGSCL creates a scale widget. The widget can be displayed in horizontal or vertical direction.
The call is: | CALL WGSCL (IP, CLAB, XMIN, XMAX, XVAL, NDEZ, ID) |
or: | int wgscl (int ip, char *clab, float xmin, float xmax, float xval, int ndez); |
IP | is the index of the parent widget. |
CLAB | is a character string used for a label. |
XMIN | is a floating-point value that defines the minimal value of the scale widget. |
XMAX | is a floating-point value that defines the maximal value of the scale widget. |
XVAL | defines the value of the scale widget. |
NDEZ | is the number of digits used in the scale widget. |
ID | is the returned widget index. |
The routine WGDRAW creates a draw widget that can be used for graphical output from DISLIN plotting routines.
The call is: | CALL WGDRAW (IP, ID) |
or: | int wgdraw (int ip); |
IP | is the index of the parent widget. |
ID | is the returned widget index.
|
Additional notes:
The routine WGOK creates a push button widget where the button has the same meaning as the OK entry in the Exit menu. If the button is pressed, all widgets are deleted and the program is continued after WGFIN.
The call is: | CALL WGOK (IP, ID) |
or: | int wgok (int ip); |
IP | is the index of the parent widget. |
ID | is the returned widget index. |
The routine WGQUIT creates a push button widget where the button has the same meaning as the QUIT entry in the Exit menu. If the button is pressed, the program is terminated.
The call is: | CALL WGQUIT (IP, ID) |
or: | int wgquit (int ip); |
IP | is the index of the parent widget. |
ID | is the returned widget index. |
The routine WGPBUT creates a push button widget.
The call is: | CALL WGPBUT (IP, CLAB, ID) |
IP | is the index of the parent widget. |
CLAB | is a character string that will be used as a label. |
ID | is the returned widget index. It should be connected with a callback routine. |
The routine WGCMD creates a push button widget. A corresponding system command will be executed if the button is pressed.
The call is: | CALL WGCMD (IP, CLAB, CMD, ID) |
or: | int wgcmd (int ip, char *clab, char *cmd); |
IP | is the index of the parent widget. |
CLAB | is a character string that will be used as a label. |
CMD | is a character string containing a system command. |
ID | is the returned widget index. It should be connected with a callback routine. |
The routine SWGWTH sets the default width of horizontal and parent/base widgets.
The call is: | CALL SWGWTH (NWTH) |
or: | void swgwth (int nwth); |
NWTH | is an integer containing a positive number of characters or a negative number between -1 and 100. If NWTH < 0, the widget width is set to ABS(NWTH) * NWIDTH / 100 where NWIDTH is the screen width. Default: NWTH = 20 |
The routine SWGDRW modifies the height of draw widgets.
The call is: | CALL SWGDRW (XF) |
or: | void swgdrw (float xf); |
XF | is a positive floatingpoint number. The height of a draw widget is set to XF * NW where NW is the widget width. Default: XF = 1. |
The routine SWGCLR defines colours for widgets.
The call is: | CALL SWGCLR (XR, XG, XB, COPT) |
or: | void swgclr (float xr, float xg, float xb, char *copt); |
XR, XG, XB | are RGB values between 0 and 1. |
COPT | is a character string that can have the values 'BACK', 'FORE', 'SCROLL' and 'LTEXT'. The keywords 'BACK' and 'FORE' define background and foreground colours, 'SCROLL' defines the colour of the slider in scale widgets, and 'LTEXT' sets the background colour of the edit window in labeled text widgets. |
Additional notes:
The routine SWGFNT defines fonts for widgets.
The call is: | CALL SWGFNT (CFNT, NPTS) |
or: | void swgfnt (char *cfnt, int npts); |
CFNT | is a character string containing the font. For Windows, CFNT can contain a TrueType font (see WINFNT), or one of the Windows raster fonts such as System, FixedSys, Terminal, Courier, MS Serif and MS Sans Serif. For X11, CFNT can contain an X11 font. CNFT = 'STANDARD' resets the font to the default value. |
NPTS | is the font size in points (72 points = 1 inch). Note that only a few different font sizes are available for Windows raster fonts. For X11, the parameter NPTS will be ignored since the font size is already part of the font name. |
The routine SWGFOC sets the keyboard focus to the specified widget.
The call is: | CALL SWGFOC (ID) |
or: | void swgfoc (int id); |
ID | is the widget index. |
The routine SWGOPT sets widget options.
The call is: | CALL SWGOPT (COPT, CKEY) |
or: | void swgopt (char *copt, char *ckey); |
COPT | is a character string containing an option. |
CKEY | is a character string containing a keyword. If
CKEY = 'POSITION', COPT can have the values
'STANDARD' and 'CENTER'. For COPT = 'CENTER',
the main widget will be centered on the
screen. The default position of the main widget is the
upper left corner of the screen. If CKEY = 'MASK', COPT can have the values 'STANDARD' and 'USER'. For COPT = 'USER', the mask entry in the routines WGFIL and DWGFIL can be controlled completely by the user. For that case, the mask parameter in WGFIL and DWGFIL can have the following syntax: it contains of a pair of strings separated by a '+' sign. The first string contains the label, the second string the search filter. For example: 'Data (*.dat)+*.dat'. 'Data (*.dat)' is the label while '*.dat' the filter. Multiple pairs of strings for the mask are also possible. If CKEY = 'DWGFIL', COPT can have the values 'STANDARD' and 'TOP'. For COPT = 'TOP', DISLIN defines the file selection box in DWGFIL as a 'TOPMOST' window. Default: ('STANDARD', 'POSITION'), ('STANDARD', 'MASK'), ('STANDARD', 'DWGFIL'). |
Additional note:
The routine SWGPOP modifies the appearance of the popup menubar.
The call is: | CALL SWGPOP (COPT) |
or: | void swgpop (char *copt); |
COPT | is a character string containing an option: |
= 'NOOK' | suppresses the 'OK' entry in the 'EXIT' menu. |
= 'NOQUIT' | suppresses the 'QUIT' entry in the 'EXIT' menu. |
= 'NOHELP' | suppresses the 'HELP' button in the menubar. |
= 'OK' | enables the 'OK' entry in the 'EXIT' menu (default). |
= 'QUIT' | enables the 'QUIT' entry in the 'EXIT' menu (default). |
= 'HELP' | enables the 'HELP' button in the menubar (default). |
The routine SWGTIT defines a title displayed in the main widget.
The call is: | CALL SWGTIT (CTIT) |
or: | void swgtit (char *ctit); |
CTIT | is a character string containing the title. |
The routine SWGHLP sets a character string that will be displayed if the Help menu is clicked by the user.
The call is: | CALL SWGHLP (CSTR) |
or: | void swghlp (char *cstr); |
CSTR | is a character string that will be displayed in the help box. The character '|' can be used as a newline character. |
The routine SWGSIZ defines the size of widgets.
The call is: | CALL SWGSIZ (NW, NH) |
or: | void swgsiz (int nw, int nh); |
NW, NH | are the width and height of the widget in pixels. |
The routine SWGPOS defines the position of widgets.
The call is: | CALL SWGPOS (NX, NY) |
or: | void swgpos (int nx, int ny); |
NX, NY | are the upper left corner of the widget in pixels. The point is relative to the upper left corner of the parent widget. |
The routine SWGWIN defines the position and size of widgets.
The call is: | CALL SWGWIN (NX, NY, NW, NH) |
or: | void swgwin (int nx, int ny, int nw, int nh); |
NX, NY | are the upper left corner of the widget in pixels. The point is relative to the upper left corner of the parent widget. |
NW, NH | are the width and height of the widget in pixels. |
The routine SWGTYP modifies the appearance of certain widgets.
The call is: | CALL SWGTYP (CTYPE, CLASS) |
or: | void swgtyp (char *ctype, char *class); |
CTYPE | is a character string containing a keyword: |
= 'VERT' | means that list elements in box widgets or scale widgets will be displayed in vertical direction. |
= 'HORI' | means that list elements in box widgets or scale widgets will be displayed in horizontal direction. |
= 'SCROLL' | means that scrollbars will be created in list widgets. |
= 'NOSCROLL' | means that no scrollbars will be created in list widgets. |
= 'AUTO' | means that scrollbars will be created in list widgets if the number of elements is greater than 8. |
CLASS | is a character string containing the widget class
where CLASS can have the values 'LIST', 'BOX' and 'SCALE'.
If CLASS = 'LIST', CTYPE can have the values
'AUTO', 'SCROLL' and 'NOSCROLL'. If CLASS = 'BOX' or
CLASS = 'SCALE', CTYPE can have the values 'VERT'
and 'HORI'. Defaults: ('VERT', 'BOX'), ('HORI', 'SCALE'), ('AUTO', 'LIST'). |
The routine SWGJUS defines the alignment of labels in label and button widgets.
The call is: | CALL SWGJUS (CJUS, CLASS) |
or: | void swgjus (char *cjus, char *class); |
CJUS | is a character string defining the alignment: |
= 'LEFT' | means that labels will be displayed on the left side of label and button widgets. |
= 'CENTER' | means that labels will be displayed in the center of label and button widgets. |
= 'RIGHT' | means that labels will be displayed on the right side of label and button widgets. |
CLASS | is a character string defining the widget class.
CLASS can have the values 'LABEL' and 'BUTTON'. Defaults: ('LEFT', 'LABEL'), ('CENTER', 'BUTTON'). |
The routine SWGSPC defines horizontal and vertical space between widgets.
The call is: | CALL SWGSPC (XSPC, YSPC) |
or: | void swgspc (float xspc, float yspc); |
XSPC, YSPC | are floatingpoint numbers defining the space between widgets. For non negative values, the spaces XSPC * NWCHAR and YSPC * NHCHAR are used where NWCHAR and NHCHAR are the current character width and height. For negative values, the horizontal and vertical spaces are set to ABS(XSPC) * NWIDTH / 100 and ABS (YSPC) * NHEIGHT where NWIDTH and NHEIGHT are the width and height of the screen. Default: (4.0, 0.5). |
The routine SWGSTP defines a step value for scale widgets.
The call is: | CALL SWGSTP (XSTP) |
or: | void swgstp (float xstp); |
XSTP | is a positive floatingpoint number defining the step value. The default value is (MAX - MIN) / 100. |
The routine SWGMRG defines margins for widgets.
The call is: | CALL SWGMRG (IVAL, CMRG) |
or: | void swgmrg (int ival, char *cmrg); |
IVAL | is the margin value in pixels. |
CMRG | is a character string that can have the values 'LEFT', 'TOP', 'RIGHT' and 'BOTTOM'. By default, all margins are zero. |
The routine SWGMIX defines control characters for separating elements in list strings.
The call is: | CALL SWGMIX (CHAR, CMIX) |
or: | void swgmix (char *char, char *cmix); |
CHAR | is a new control character. |
CMIX | is a character string that defines the function of the control character. CMIX can have the value 'SEP'. |
The routine SWGCBK connects a widget with a callback routine. The callback routine is called if the status of the widget is changed. Callback routines can be defined for button, pushbutton, file, list, box and text widgets, and for popup menu entries.
The call is: | CALL SWGCBK (ID, ROUTINE) |
or: | void swgcbk (int id, (void) (*routine)(int id)); |
ID | is a widget ID. |
ROUTINE | is the name of a routine defined by the user. In Fortran, the routine must be declared as EXTERNAL. |
The routine SWGATT sets widget attributes.
The call is: | CALL SWGATT (ID, CATT, COPT) |
or: | void swgatt (int id, char *catt, char *copt); |
ID | is a widget ID. |
CATT | is a character string containing an attribute. If COPT = 'STATUS', CATT can have the values 'ACTIVE', 'INACTIVE' and 'INVISIBLE'. If COPT = 'LIST', CATT can have new list elements for a list widget. In that case, CATT has the same meaning as the parameter CLIS in WGLIS. |
COPT | is a character string that can have the values 'STATUS' and 'LIST'. |
The routine SWGBUT sets the status of a button widget.
The call is: | CALL SWGBUT (ID, IVAL) |
or: | void swgbut (int id, int ival); |
ID | is a widget ID of a button widget. |
IVAL | can have the values 0 and 1. |
The routine SWGLIS changes the selection in a list widget.
The call is: | CALL SWGLIS (ID, ISEL) |
or: | void swglis (int id, int isel); |
ID | is a widget ID of a list widget. |
ISEL | defines the selected element (>= 1). |
The routine SWGBOX changes the selection in a box widget.
The call is: | CALL SWGBOX (ID, ISEL) |
or: | void swgbox (int id, int isel); |
ID | is a widget ID of a box widget. |
ISEL | defines the selected element (>= 1). |
The routine SWGTXT changes the value of a text widget.
The call is: | CALL SWGTXT (ID, CVAL) |
or: | void swgtxt (int id, char *cval); |
ID | is a widget ID of a text widget. |
CVAL | is a character string containing the new text. |
The routine SWGFIL changes the value of a file widget.
The call is: | CALL SWGFIL (ID, CFIL) |
or: | void swgfil (int id, char cfil); |
ID | is a widget ID of a file widget. |
CFIL | is a character string containing the new filename. |
The routine SWGSCL changes the value of a scale widget.
The call is: | CALL SWGSCL (ID, XVAL) |
or: | void swgscl (int id, float xval); |
ID | is a widget ID of a scale widget. |
XVAL | is a floatingpoint number containing the new value of the scale widget. |
The routine GWGBUT returns the status of a button widget.
The call is: | CALL GWGBUT (ID, IVAL) |
or: | int gwgbut (int id); |
IP | is the index of the button widget. |
IVAL | is the returned status where IVAL = 0 means off and IVAL = 1 means on. |
The routine GWGTXT returns the input of a text widget.
The call is: | CALL GWGTXT (ID, CSTR) |
or: | void gwgtxt (int id, char *cstr); |
IP | is the index of the text widget. |
CSTR | is the returned character string. |
The routine GWGFIL returns the input of a file widget.
The call is: | CALL GWGFIL (ID, CFIL) |
or: | void gwgfil (int id, char *cfil); |
IP | is the index of the file widget. |
CFIL | is the returned filename. |
The routine GWGLIS returns the selected element of a list widget.
The call is: | CALL GWGLIS (ID, ISEL) |
or: | int gwglis (int id); |
IP | is the index of the list widget. |
ISEL | is the selected list element returned by GWGLIS. |
The routine GWGBOX returns the selected element of a box widget.
The call is: | CALL GWGBOX (ID, ISEL) |
or: | int gwgbox (int id); |
IP | is the index of the box widget. |
ISEL | is the selected element returned by GWGBOX. |
The routine GWGSCL returns the value of a scale widget.
The call is: | CALL GWGSCL (ID, XVAL) |
or: | float gwgscl (int id); |
IP | is the index of the scale widget. |
XVAL | is the returned value. |
The routine GWGATT returns a widget attribute.
The call is: | CALL GWGATT (ID, IATT, COPT) |
or: | int gwgatt (int id, char *copt); |
ID | is a widget ID. |
IATT | is a returned attribute. If COPT = 'STATUS', IATT can have the values 0 for 'ACTIVE', 1 for 'INACTIVE' and 2 for 'INVISIBLE'. |
COPT | is a character string that can have the value 'STATUS'. |
The routine GWGXID returns the window ID for a specified widget ID.
The call is: | CALL GWGXID (ID, IWINID) |
or: | int gwgxid (int id); |
ID | is the widget ID. |
IWINID | is the returned window ID. |
Additional note:
The routine ITMSTR extracts a list element from a list string.
The call is: | CALL ITMSTR (CLIS, IDX, CITEM) |
or: | char *itmstr (char *clis, int idx); |
CLIS | is a character string that contains the list elements (s. WGLIS). |
IDX | is the index of the element that should be extracted from CLIS. |
CITEM | is a character string containing the extracted list element. |
The routine ITMCNT returns the number of elements in a list string.
The call is: | N = ITMCNT (CLIS) |
or: | int itmcnt (char *clis); |
CLIS | is a character string that contains the list elements (s. WGLIS). |
N | is the calculated number of elements in CLIS. |
The routine ITMCAT concatenates an element to a list string.
The call is: | CALL ITMCAT (CLIS, CITEM) |
or: | void itmcat (char *clis, char *citem); |
CLIS | is a character string that contains the list elements (s. WGLIS). |
CITEM | is a character string that will be concatenated to CLIS. If CLIS is blank, CITEM will be the first element in CLIS. |
The routine MSGBOX displays a message in form of a dialog widget. It can be used to display messages in callback routines.
The call is: | CALL MSGBOX (CSTR) |
or: | void msgbox (char *cstr); |
CSTR | is a character string containing a message. |
The routine REAWGT realizes a widget tree. Since the windows ID of a widget can only be calculated for X11 if the widget is already realized, this routine is useful if the windows ID of a widget is needed before WGFIN. Normally, the widget tree is realized in WGFIN.
The call is: | CALL REAWGT |
or: | void reawgt (void); |
The routine SENDOK has the same meaning as when the OK entry in the Exit menu is pressed. All widgets are deleted and the program is continued after WGFIN.
The call is: | CALL SENDOK |
or: | void sendok (void); |
The routine SENDMB sends a mouse button 2 event to the DISLIN routine DISFIN. It can be used for closing the graphics window.
The call is: | CALL SENDMB |
or: | void sendmb (void); |
The routine DWGMSG displays a message.
The call is: | CALL DWGMSG (CSTR) |
or: | void dwgmsg (char *cstr); |
CSTR | is a character string that will be displayed in a message box. Multiple lines can be separated by the character '|'. |
The routine DWGBUT displays a message that can be answered by the user with 'Yes' or 'No'.
The call is: | CALL DWGBUT (CSTR, IVAL) |
or: | int dwgbut (char *cstr, int ival); |
CSTR | is a character string that will be displayed in a message box. Multiple lines can be separated by the character '|'. |
IVAL | is the returned answer of the user. IVAL = 1 means 'Yes', IVAL = 0 means 'No'. IVAL is also used to initialize the button. |
The routine DWGTXT creates a dialog widget that can be used to prompt the user for input.
The call is: | CALL DWGTXT (CLAB, CSTR) |
or: | char *dwgtxt (char *clab, char *cstr); |
CLAB | is a character string that will be displayed in the dialog widget. |
CSTR | is a character string that is used to initialize the text field. After the call to DWGTXT, CSTR returns the user input. For the C Routine, the user input is returned as function value. |
The routine DWGFIL creates a file selection box that can be used to get a filename.
The call is: | CALL DWGFIL (CLAB, CFIL, CMASK) |
or: | char *dwgfil (char *clab, char *cfil, char *cmask); |
CLAB | is a character string that will be displayed in the dialog widget. |
CFIL | is the returned filename selected by the user. |
CMASK | specifies the search pattern used in determining the files to be displayed in the file selection box. |
The routine DWGLIS creates a dialog widget that can be used to to get a selection from a list of items.
The call is: | CALL DWGLIS (CLAB, CLIS, ISEL) |
or: | int dwglis (char *clab, char *clis, int isel); |
CLAB | is a character string that will be displayed in the dialog widget. |
CLIS | is a character string that contains the list elements. Elements must be separated by the character '|'. |
ISEL | defines the pre-selected element and contains the selected element after return. Element numbering begins with the number 1. |
PROGRAM EXA1 CHARACTER*80 CL1,CFIL CL1='Item1|Item2|Item3|Item4|Item5' CFIL=' ' CALL SWGTIT ('EXAMPLE 1') CALL WGINI ('VERT', IP) CALL WGLAB (IP, 'File Widget:', ID) CALL WGFIL (IP, 'Open File', CFIL, '*.c', ID_FIL) CALL WGLAB (IP, 'List Widget:', ID) CALL WGLIS (IP, CL1, 1, ID_LIS) CALL WGLAB (IP, 'Button Widgets:', ID) CALL WGBUT (IP, 'This is Button 1', 0, ID_BUT1) CALL WGBUT (IP, 'This is Button 2', 1, ID_BUT2) CALL WGLAB (IP, 'Scale Widget:', ID) CALL WGSCL (IP, ' ', 0., 10., 5., 1, ID_SCL) CALL WGOK (IP, ID_OK) CALL WGFIN CALL GWGFIL (ID_FIL, CFIL) CALL GWGLIS (ID_LIS, ILIS) CALL GWGBUT (ID_BUT1, IB1) CALL GWGBUT (ID_BUT2, IB2) CALL GWGSCL (ID_SCL, XSCL) ENDThe next example displays some widgets packed in two columns.
PROGRAM EXA2 CHARACTER*80 CL1,CSTR CL1='Item1|Item2|Item3|Item4|Item5' CSTR=' ' CALL SWGTIT ('EXAMPLE 2') CALL WGINI ('HORI', IP) CALL WGBAS (IP, 'VERT', IPL) CALL WGBAS (IP, 'VERT', IPR) CALL WGLAB (IPL, 'Text Widget:', ID) CALL WGTXT (IPL, CSTR, ID_TXT1) CALL WGLAB (IPL, 'List Widget:', ID) CALL WGLIS (IPL, CL1, 1, ID_LIS) CALL WGLAB (IPR, 'Labeled Text Widget:', ID) CALL WGLTXT (IPR, 'Give Text:', CSTR, 40, ID_TXT2) CALL WGLAB (IPR, 'Box Widget:', ID) CALL WGBOX (IPR, CL1, 1, ID_BOX) CALL WGQUIT (IPL, ID_OK) CALL WGOK (IPL, ID_OK) CALL WGFIN ENDThe following example explains the use of callback routines. A list widget is created and the selected list element is displayed in a text widget.
PROGRAM EXA3 COMMON /MYCOM1/ ID_LIS,ID_TXT COMMON /MYCOM2/ CLIS CHARACTER*80 CLIS EXTERNAL MYSUB CLIS = 'Item 1|Item 2|Item 3|Item 4|Item 5' CALL WGINI ('VERT', IP) CALL WGLIS (IP, CLIS, 1, ID_LIS) CALL SWGCBK (ID_LIS, MYSUB) CALL WGTXT (IP, ' ', ID_TXT) CALL WGFIN END SUBROUTINE MYSUB (ID) C ID is the widget ID of WGLIS ( = ID_LIS) COMMON /MYCOM1/ ID_LIS,ID_TXT COMMON /MYCOM2/ CLIS CHARACTER*80 CLIS, CITEM CALL GWGLIS (ID_LIS, ISEL) CALL ITMSTR (CLIS, ISEL, CITEM) CALL SWGTXT (ID_TXT, CITEM) ENDThe C coding of example 3 is given below:
#include#include "dislin.h" void mysub (int ip); static int id_lis, id_txt; static char clis[] = "Item 1|Item 2|Item 3|Item 4|Item 5"; main() { int ip; swgtit ("Example 3"); ip = wgini ("VERT"); id_lis = wglis (ip, clis, 1); swgcbk (id_lis, mysub); id_txt = wgtxt (ip, " "); wgfin (); } void mysub (int id) { int isel; char *citem; isel = gwglis (id_lis); citem = itmstr (clis, isel); swgtxt (id_txt, citem); }