[comp.archives] [xpert...] CLM2.0 and GINA app framework avail for CLOS

berlage@gmdzi.gmd.de (Thomas Berlage) (02/27/91)

Archive-name: x11/common-lisp/clm/1991-02-26
Archive: expo.lcs.mit.edu:/contrib/CLM2.0.tar.Z [18.30.0.212]
Original-posting-by: berlage@gmdzi.gmd.de (Thomas Berlage)
Original-subject: CLM2.0 and GINA app framework avail for CLOS (C++ soon)
Reposted-by: emv@ox.com (Edward Vielmetti)


CLM 2.0 and GINA application framework for CLOS (C++ soon)
==========================================================

An improved version of the CommonLisp/Motif binding CLM (CLM 2.0) 
and the first fully documented version of the GINA application framework 
(GINA 1.0) are now publicly available. GINA is implemented in CLOS on top
of CLM. A GINA version for C++ will also be available soon. It will be
demonstrated at the CeBIT fair in Hannover in March 91 (GMD booth in hall 3 
C51-C55). The concepts of both GINA versions are identical, so the 
documentation might be interesting for C++ users as well.

The software is available via anonymous ftp. It is stored in the ~ftp/contrib
directory on expo.lcs.mit.edu (18.30.0.212). The distribution consists of
the three files CLM+GINA.README, CLM2.0.tar.Z and GINA.tar.Z.

The README file is also appended to this message.

For people in Europe: We can also provide the software on Sun streamer tapes
in tar format.  Please send us a tape if you want to get the distribution.
We can also provide CLM on Sun floppy disks.

Mike Spenke, Project GINA
GMD (German National Research Center for Computer Science)
P.O. Box 1240
5205 Sankt Augustin 1
Germany
email: spenke@gmdzi.gmd.de

===============================================================================
CLM+GINA.README
===============================================================================

This distribution contains:

    1. CLM - A language binding for OSF/Motif and Common Lisp, Version 2.0
       About 15 simple demo applications for CLM.
    2. GINA - A User Interface Management System, Version 1.0.
       About 10 demos for GINA including a simple Finder.
    3. An Interface Builder (IB) for GINA and OSF/Motif.

This software is publicly available. See the COPYRIGHT files for details.

Please read the abstracts below for a short description of what this software
does. Full documentation (Postscript and LaTeX source) for CLM and GINA is 
contained in the distribution.

CLM is a stand-alone package. GINA requires CLM. The IB requires GINA.

REQUIREMENTS:
=============

To run this software, the following software is required:

    - To run CLM:
      
      1. UNIX, X11R3 or X11R4 server, X11R4 Xlib and Xt libraries
	 (patch level 18), OSF/Motif 1.1 libraries and header files.
      2. Allegro Common Lisp 3.1 or later  or
	 Sun Common Lisp 3.0 or later + CLX (optional) or
	 A Symbolics machine with Genera OS and CLX (optional)

    - To run GINA and the IB:

      1. All the stuff for CLM
      2. CLX X11R3 or later
      3. PCL (At least Victoria day PCL 5/22/89)

This software has been tested on the following configurations:

   - Sun 4 (Sparc) with SunOS 4.0, X11R3/4 server, X11R4 Xlib,
     Motif 1.1, Allegro CL 3.1 and Sun CL (Lucid) 3.0

   - Symbolics machines (ask spenke@gmdzi for details) with the Motif server
     and X server running on a SparcStation.

It should not be too difficult to port the software to another environment
if the following requirements are fulfilled:

   - X11R4 must be supported.

   - OSF/Motif 1.1 must be supported.

   - A Common Lisp with CLX and PCL/CLOS must be available. The Lisp
     should support multiple processes inside the Lisp world.

INSTALLATION:
=================

    1. Create a directory for the sources and cd to this directory.
    2. uncompress and unpack the GINA tar file.
    3. make a directory for CLM
    4. uncompress and unpack CLM in this directory
    5. Follow the directions in clm/INSTALL and gina/INSTALL.
    6. In case of trouble: email baecker@gmdzi.gmd.de or spenke@gmdzi.gmd.de
                           phone +2241 14-2078 or -2642

==============================================================================

CLM -- A Language Binding for Common Lisp and OSF/Motif

Author:
  Andreas Baecker (baecker@gmdzi.gmd.de)

CLM is a language binding for Common Lisp and OSF/Motif.  It provides access to
the functionality of the X Toolkit Intrinsics and the Motif convenience
functions for Common Lisp.  Client programs can use the OSF/Motif widget classes
for their graphical user interface.  Additionally, client programs can use the
CLX graphics functions to draw into Motif widgets, especially into widgets of
classes XmDrawingArea and XmDrawnButton.  This functionality is only available
when the CLX package was loaded before compiling CLM. 

CLM consists of three components: A Motif daemon, a Motif server, and a package
of Common Lisp functions.  Both the Motif daemon and server are implemented in
``C''.  The Motif daemon runs on an arbitrary machine in the network and listens
for Lisp processes requesting to use CLM.  The Motif daemon forks Motif server
processes which communicate with their Lisp processes over a network-transparent
TCP/IP connection.  The Motif server offers the X toolkit and the Motif
functionality as remote procedure calls.  The package of Common Lisp functions
provides a high-level interface to these remote procedures. 

From the X server's point of view, the Motif server is an ordinary X client. 
The Motif server's functionality is to operate as a gateway between Motif and
Common Lisp.  The CLM functions send commands to the Motif server to create and
modify widgets.  The Motif server sends callbacks to the CLM application as a
reaction to user actions suchs as moving a scrollbar's slider or pressing a
push-button. 

In the context of this manual, the term CLM application is a single
(lightweight) process which runs inside a Lisp process and uses CLM.  The Motif
daemon can serve an arbitrary number of Lisp processes.  There may be an
arbitrary number of concurrent CLM applications in a single Lisp process.  The
Motif daemon forks a Motif server process for each CLM application.  This
architecture protects concurrent processes from getting in trouble with the
non-reentrant Motif code.  The multiprocessing facility is an extension to
Common Lisp and may not be available in all Lisp systems.  In this case, it is
only possible to run one CLM application per Lisp process. 

Lisp processes must not necessarily run on the same host as the Motif daemon. 
This allows CLM applications to run on hardware which is not capable of running
X and Motif.  CLM automatically chooses the right communication media for local
and remote Lisp processes. 

The Motif server solution is very efficient and results in good performance at
the user interface level.  Redraw operations and geometry management operations
are performed by the X Toolkit Intrinsics and the Motif widgets and are handled
locally in the Motif server.  User interaction like browsing through menu items
is also handled by the Motif widgets and requires only the execution of C code. 
Interactions like clicking a push-button lead to the execution of callbacks and
cause an interaction with Lisp.  Communication time is typically small and
doesn't cause any substantial delays. 

===============================================================================

GINA - the Generic Interactive Application
	
Author: Mike Spenke (spenke@gmdzi.gmd.de)

GINA is an object-oriented application framework written in CommonLisp
and CLOS. It is based on CLM.

The generic interactive application is executable and has a complete 
graphical user interface, but lacks any application-specific behaviour. 
New applications are created by defining subclasses of GINA classes and 
adding or overriding methods. The standard functionality of a typical 
application is already implemented in GINA. Only the differences to the 
standard application have to be coded. For example, commands for opening, 
closing, saving and creating new documents are already available in GINA. 
The programmer only has to write a method to translate the document contents 
into a stream of characters and vice versa. Motif widgets are encapsulated 
in CLOS objects. Instantiating an object implicitly creates a widget within 
OSF/Motif. Graphical output and direct manipulation with individual graphical 
feedback are also supported. The combination of framework concepts, the 
flexible Motif toolkit, and the interactive Lisp environment lead to an 
extremely powerful user interface development environment (UIDE). There are 
already a dozen demo applications including a Finder to start applications 
and documents, a simple text editor and a simple graphic editor, each 
consisting of only a few pages of code. 

GINA consists of three parts: the basic application framework (directory
"gina"), a set of demo applications for the framework (directory "gina-demos")
and an Interface Builder (directory "ib").

The GINA documentation is contained in the directory "documentation".
The concepts of GINA are described in the file "introduction.ps". Further
instructions and a roadmap to the available documentation can be found in
the User Manual ("gina-manual.ps"). Both documents are PostScript files
created on an Apple Macintosh. If you can't print them, you can use the
unformatted ASCII versions of the files.

To compile and load GINA, follow the instructions in gina/INSTALL.
Testing instructions can be found in the User Manual.

===============================================================================

An Interface Builder for GINA and OSF/Motif

Author: Thomas Berlage (berlage@gmdzi.gmd.de)

The IB can be used to design windows constructed from OSF/Motif components.
It generates Lisp code to be used with GINA.

Features:
=========

- Nearly all widget classes of GINA can be used in windows.

- Dialog boxes are constructed bottom-up by first creating the basic widgets
  like buttons and labels etc. and then grouping them together into RowColumns,
  forms etc.

- All relevant widget resources can be set interactively

- The output of the IB is a definition of a new composite widget class
  with a fixed structure.

- Code for new dialog classes and constructor functions can be generated,
  saved, loaded and compiled. This code can be used with GINA applications.

- Unlimited Undo/Redo for most commands (Create, Grouping, Clear ...)

Future Development:
===================

The IB is a usable tool to design the window layout. A future version will
improve the handling, and will allow the specification of a large part
of the connection between the interface and the application.