AppGuru is the interface to
previously designed templates for GUIs. Initially, it contains the
default template which enables you to quickly create applications
with standard components, such as a menu-bar, a tool bar and file
selection dialogues. At first the AppGuru looks like a cute toy,
but its power lies in its configurability. Each design can be
changed into a template. Using X-Designer resources, the new
template can be incorporated into the AppGuru menu with control
over the separate components, which may or may not be added into
the new application. The freedom with resources is great, so the
X-Designer administrator in a large software company can add
pixmaps which represent components. Users can easily select ones
which are really needed. I think this is a great tool for a
software engineering environment, where several pre-designed
interfaces can be set up according to internal policy. Company
information dialogues and standard application parts can be
automatically inserted into new designs.

User-defined widgets allow the GUIs created with X-Designer
to look beyond Motif and use widgets provided by a third party or
even custom widgets. When I first saw X-Designer, I noticed the
special widget for OpenGL as supplied by the MesaGL package in the
palette of X-Designer widget icons. I was curious how it got there
since it is not a Motif widget. The basic idea behind this very
complex concept lies in the interface between X-Designer and the
widgets used in the GUI building process.

Any widgets can be chosen for incorporation into X-Designer.
You must run the provided xdconfig
utility to create the configuration files which tell X-Designer
about resources, constraints and children all new widgets can have.
Even icons can be provided in pixmap form for addition to the
X-Designer widget palette. Specifying the code generation options
for every new widget is a mandatory task. After all this is done,
rebuild X-Designer using all the configuration files and the
provided xdesigner.o object file. The new binary will contain
X-Designer with the newly added widgets.

Installation provides many configurations for common widget
sets, and I tested the Athena widget set which worked fine. I can
now build GUIs with the Athena widget set, forgetting Motif. The
only drawback to this process is the fact that new widgets are
compiled into X-Designer itself. If for some reason, the widgets
cause segmentation faults or otherwise behave badly, X-Designer may
crash. I actually managed to crash it by
laying out Athena widgets in an invalid hierarchy. Creating
successful widget configurations requires deep knowledge of the
widgets, C, make and
X-Designer.

With X-Designer, an on-line help subsystem can be created for
the new applications. All help is written in HTML files with
anchors as documented in the User's guide. You must only decide
whether your application will use XD/Help, Netscape or FrameMaker
for the help browser—just link an additional provided object file
with your application.

The XD Replay/Capture tool
is another amazing tool that comes with X-Designer. With Capture,
you select the Motif application and capture its widget instance
tree. Only the executable of the application is needed; Capture
takes a snapshot of its widget structure which you can then drag
into X-Designer and reuse. You can then take your old Motif
applications, capture them and develop them further with
X-Designer. As I understand, the tool works by inserting a sort of
parasite shared object into the application which records the
widget tree creation. The application must be dynamically linked
with Xt for Capture to work. A similar tool is XD Record/Replay; it
records any events within the application in an internal script
language. These can later be replayed for the purpose of
demonstrations, tutorials, testing and other cases where automatic
behaviour of an application is desirable.

Among simpler design tools are the
XmString editor, pixmap editor,
font and color selection tools and layout editor. With the XmString
editor, arbitrary XmStrings can be generated on a WYSIWYG basis, a
fact any Motif programmer will appreciate. The layout editor is a
cool tool to define the layout of child widgets within the
container widget. As this is a tedious business, the layout editor
provides great help with setting up those widgets in a functional
and resize-friendly way. Using the pixmap editor, which is
functional and serves its purpose well, caused an interesting
event. The first time I selected the Pixmap editor entry in the
menu bar, X-Designer crashed. Strange behaviour, I thought, but
quickly decided to use this crash for testing the IST user support.
I sent e-mail to support@ist.co.uk describing my problem, and
within less than 30 minutes I got a correct answer to the faulty
behaviour. The Pixmap editor clashed with the default .fvwmrc
setting for a cryptic Meta 3rd-Mouse-button combination which is
locked for FVWM private use. I don't use it, so I removed the line
from .fvwmrc, and now the pixmap editor works fine. Well done, IST
support team. I can understand a glitch or two in any product, and
that's why good user support is necessary.