#### Menus and Control Widgets

Widget is a generic term for the part of a GUI that allows the user to interface with the application and operating system. Typical widgets include buttons, dialog boxes, pop-up windows, pull-down menus, icons, scroll bars, resizable window edges, menu bars, toggle switches and forms.

Among the most important NeXtMidas features for GUI front-end implementation are soft controls (widgets), which are the screen versions of familiar hardware knobs, switches, and readouts. The two primary execution threads in NeXtMidas associated with GUI controls are control creation and control event processing. In terms of code complexity, control event handling is much simpler than the control creation process.

In response to mouse clicks on control widgets, messages are sent for appropriate event processing. Simulated mouse clicks may be generated by setting the `ACTION` (i.e. `set gc.CONTROLNAME.action option1` )

Type | Purpose | Screen Shot
--- | --- | ---
`ALERT` | Pop-up button with optional timeout. |
`BEAN` | Allows external controls to be called generically. |
`BUTTON` | Like MENUs but with a button look and feel. |
`CALENDAR` | Graphical calendar. |
`CHOICE` | Allows a single choice from an option list (may be configured for manual entry). |
`DIALOG` | Groups other widgets into a single popup window, alters their states, and performs an action while the window is closed. |
`FILE` | Selects files. |
`LABEL` | Groups all subsequent widgets into a roll-down/roll-up until the next `LABEL`. |
`LIST` | Menu with a scrollbar. |
`MENU` | Traditional menu control widget. |
`PANEL` | Area for other graphical displays such as `PLOT` or `LIST`. |
`PIPEMON` | Real-time monitoring or pipe parameters. |
`PROMPT` | Prompts for text entry. |
`QUERY` | Allows introspection of objects and provides data access through the public methods of the class. |
`TABLE` | Edits a table. |
`xVAL` | Numerical valuator widget: `DVAL` - Double (64-bit) numbers. `LVAL` - Integer (32-bit) numbers. `FVAL` - Float (32-bit) numbers. `TVAL` - Time numbers. |
The above screen shots were taken while running the `DEMO` macro in the `SYS` option tree.