aboutsummaryrefslogtreecommitdiff
path: root/vendor/x11iraf/obm/docs/gui.doc/gui.html
blob: d7e20546604aa383f1f363a7762bc2bbb01769e2 (plain) (blame)
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>