An Object Manager (OBM) user interface (UI) consists of one or more windows containing an arbitrary hierarchy of widgets. These widgets and their runtime actions are defined by an interpreted text program uploaded by the client application, which does not itself deal directly with the window user interface. Currently, this interpreted program is written in Tcl.
The object manager provides a higher level of abstraction for dealing with widgets and other UI objects. The main function of the object manager is to deliver messages to UI objects. Each instance of a widget, the client programs, and the OBM itself are objects in the UI. The UI contains other types of objects however, including the client object (client application), the server object (the object manager itself), and the application specific UI parameters, each of which is an object with a callback list of UI procedures to be called when the parameter value changes. All of these UI objects can receive messages and take actions as a result. Messages may come from the client application, or as a result of actions executed by the interpreted UI code in response to graphics events.
Client the client application Server the object manager itself Widget widgets ParameterUI control parameter Gterm graphics/imaging widget Graphics Markers marker widgets Image Client imageing widgetVarious Xt and Athena widgets {box, shell, label, command, text, list, etc.}
To locate specific IRAF GUI commands quickly, here is an
alphabetized list of IRAF GUI commands
Sophisticated graphics applications will download a UI during initialization to define a custom graphics user interface. This is done by sending a message to the object manager. Naive applications assume a simple graphics terminal and do not download a UI; in this case, a default UI is created for the application when the UI is enabled with ObmEnable. The default UI is a single top level shell window containing a single gterm (graphics terminal) widget.
reset-server appInitialize appname,appclass,resources createObjects [resource-name] (UI specific code) activate
A UI specification consists of a sequence of commands to be executed by the server object. This is downloaded by the client as a message for the server object. The commands should include "reset-server" (this must be the first executable command), "appInitialize" (defines the UI objects and their resources), and "createObjects" (creates the objects and the widget tree), followed by any UI specific commands to define and register UI callback procedures. Finally, "activate" is executed to activate the new user interface.
Class descriptors for all UI object classes. In the following, only the class initializer function needs to be set statically, since the class initializer function will initialize the remaining fields of the class descriptor at run time when the object manager is opened.
Server Client Parameter Gterm Core Object Widget Command Grip Label List Scrollbar StripChart Toggle SimpleMenu Sme SmeBSB SmeLine MenuButton AsciiText Box Dialog Form Paned Viewport Shell OverrideShell WMShell TransientShell TopLevelShell ApplicationShell