XToolKit is the highest level X window interface to facilitate composing
GUI (Graphical User Interface) by using GUI components such as
buttons, pulldown menus, textWindows, etc., as building blocks.
The major differences from the Xlib classes are,
the XToolKit invokes user-supplied interaction routines
corresponding to the Xevents sent from the Xserver,
and provides consistent appearance of those interaction-oriented
window parts.
Classes consisting the XToolKit has the following inheritance structure.
xwindow
panel
menubar-panel
menu-panel
filepanel
textviewpanel
confirmpanel
panel-item
button-item
menu-button-item
bitmap-button-item
text-item
slider-item
choice-item
joystick-item
canvas
textwindow
buffertextwindow
scrolltextwindow
textedit
scroll-bar
horizontal-scroll-bar
Just below the xwindow class are the five basic XToolKit classes:
panel, panel-item,
canvas, textWindow and scroll-bar.
Menubar-panel and menu-panel are defined under the panel.
A basic strategy to build a new application window and to make
it run upon events is the following:
- define an application class An application window class should be
defined as a subclass of panel that has the capability to lay out
XToolKit components.
- define event handlers In the application class, event handlers
that are called upon when buttons are pressed or menu items are selected
are defined. An event handler ought to be defined as a method
with panel-item specific arguments.
- define subpanels If you use a menubar-panel, it is placed at the
top of the application window, therefore it should be created first
by :create-menubar. Similarly menu-panels needs to be
defined before the menu-button-items to which menu-panels
are associated.
- create panel-items Panel-items such as button-item,
text-item, slider-item, etc., can be created
by (send-super :create-item class label object method).
Event handlers defined above are connected to each panel-item.
These initialization procedures should be defined in the :create
method of the application window class.
Do not forget to define quit button to make the event
dispatcher terminate whenever needed.
Any textWindow and canvas can also be placed in the application
window via the :locate-item method.
- create the entire window Sending the :create message to
the application class creates
the application window with its XToolKit components properly placed
in the window.
- run the event dispatcher In order to receive events from the
Xserver and delivers them to the corresponding xwindow,
run window-main-loop.
On Solaris2, window-main-thread, which delivers events in a
different thread, is available.
Window-main-thread keeps the toplevel interaction alive.
Do not run more than one window-main-thread.
Subsections
k-okada
2013-05-21