[comp.windows.x] Serpent UIMS available

Len.Bass@SEI.CMU.EDU (08/16/89)

The Serpent UIMS is available for public release.  Serpent represents a new
generation of User Interface Management Systems which manage the total
dynamic behavior of an interface and which allow applications to remain
uninvolved with the details of the user interface.  It differs from
available tools in this ability to handle dynamic behavior.   Serpent is
available for anonymous ftp.  It can be found on fg.sei.cmu.edu under the
directory /usr/data/ftp/pub/serpent.  

Serpent is designed to manage relatively arbitrary toolkits.  There is a
language which is used to describe the user interface and its dynamic
behavior and an editor (under development) that allows the interface to be
built using standard drawing facilities.   Only the language and its
supporting software is being released at this time.

The language is very simple for specifying simple interfaces and is powerful
enough to provide for creating visual programming demonstrations.
Demonstrations of the language are included in the released software.
The "Hello World" program written using Serpent is:

#include "saw.ill"

|||

OBJECTS:

   hello: label_widget
      {ATTRIBUTES:
        label_text: "Hello world";
        }

Serpent is intended to be used either with an application in a production
environment or without an application in a prototyping environment.
There is an interface description language used both by the application to
describe its interface to Serpent and by the toolkits to describe their
interface to Serpent.   Applications and toolkits written in either C or Ada
can be used with Serpent, although the interface description mechanism is
designed to be extensible to other languages.

The use of Serpent depends upon the types of toolkits which have been
integrated into it.  Currently, Serpent supports the Athena Widgets.  The
usage of the toolkit includes moving and resizing capability for widgets
within their parents and point specification capabilities for form widgets
to allow pointing for the positioning of new widgets.