next back next

Graphical user interface (GUI) classes

The GUI classes are packaged into multiple libraries of which some can be left out even for a fully working system with graphical user interface.
For example, all classes for program development have been packaged into a separate library, required widgets have been separated from less frequently used ones etc. for easier packaging of end user applications.

For special needs, enduser applications can even be built by specifying each individual class thats to be included. Of course, on systems which support dynamic shared libraries, there is no need (and no advantage) in doing so.

Since no smalltalk standard exists for the GUI classes, each smalltalk vendor's GUI interface differs more or less (there are also legal reasons for this). Thus, porting graphical applications involves some effort and recoding (however, in separating the presentation from the functionality of application objects, this effort can be reduced considerably).

The following gives you a rough idea of existing widgets. For more detailed information, please read the introduction to view programming which gives you a step by step intro and is very valuable for a quick entry.

The Smalltalk/X low level GUI support classes support (among others):

The higher level views (so called widgets) are built using the above basic objects. Among others there are: Built on top of these are building blocks for complex user interactions:

All user interface widget classes are implemented completely in smalltalk. The smalltalk source code is included in the distribution.

Notice that these can be used either as building blocks to create complex views consisting of many elements, or (by subclassing) as a starting point to create modified versions; either for changed behavior or changed presentation.

The Smalltalk/X view classes support both the traditional Model-View-Controller (MVC) programming paradigma and an action driven scheme. The later being perfect for simple interaction, in that no MVC relations have to be setup for actions like 'doing something on a buttonpress'.

The look of the view classes is configurable via stylesheet files.


Copyright © Claus Gittinger Development & Consulting, all rights reserved

(cg@ssw.de)