1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
<html>
<body bgcolor=#FFFFFF>
<title>IRAF Object Manager</title>
<h1>IRAF Object Manager</h1>
<HR>
<p>
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.
<p>
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.
<p>
<h2>Object classes:</h2>
<p>
<pre>
<a href="Client.html">Client</a> the client application
<a href="Server.html">Server</a> the object manager itself
<a href="widgetclass.html">Widget</a> widgets
<a href="uiparameterclass.html">ParameterUI</a> control parameter
<a href="gtermclass.html">Gterm</a> graphics/imaging widget
<a href="gmc.html">Graphics Markers</a> marker widgets
<a href="ximclient.html">Image Client</a> imageing widget
<p>
<a href="notyet.html">Various Xt and Athena widgets</a>
{box, shell, label, command, text, list, etc.}
</pre>
<p>
To locate specific IRAF GUI commands quickly, here is an
<pre>
<a href="alphabetic.html">alphabetized list of IRAF GUI commands</a>
</pre>
<p>
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.
<p>
<pre>
<a href="servercom.html#resetReset">reset-server</a>
<a href="servercom.html#appInitialize">appInitialize</a> appname,appclass,resources
<a href="servercom.html#createObjects">createObjects</a> [resource-name]
(UI specific code)
<a href="servercom.html#activate">activate</a>
</pre>
<p>
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.
<p>
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.
<p>
<pre>
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
</pre>
</body>
</html>
|