earl-ducaine / clm

CLM (Common Lisp Motif) runs OSF/Motif widgets in a separate C process, with minimal work on the Lisp side and communicates between C and Lisp using TCP sockets.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GINA RELEASE 2.2
================

GINA (Generic Interactive Application) is an application framework based on
Common Lisp and OSF/Motif to simplify the construction of graphical
interactive applications. It consists of:

 o  CLM, a language binding for OSF/Motif in Common Lisp.

 o  the GINA application framework, a class library implemented in CLOS
    (the Common Lisp Object System).

 o  the GINA interface builder, an interactive tool implemented with GINA
    to design Motif windows.

To run GINA, you need OSF/Motif 1.1 or higher and a Common Lisp implementation
with CLX, CLOS or PCL and processes (directly supported are Franz Allegro,
Lucid, CMU CL and Symbolics Genera).

GINA is publicly available under similar terms as the X Window System.
The GINA 2.2 distribution consists of three files:

    CLM+GINA.README     this file
    CLM2.2.tar.Z        compressed tar file of CLM version 2.2
    GINA2.2.tar.Z       compressed tar file of GINA and the interface
                        builder, including documentation

These files reside on
    export.lcs.mit.edu (18.30.0.238)      in /contrib
    ftp.gmd.de (129.26.8.90)              in /gmd/gina

How to ftp:

    ftp export.lcs.mit.edu
    [...]
    login: anonymous
    password: your-name@your-site
    [...]
    cd contrib
    get CLM+GINA.README
    binary
    get CLM2.2.tar.Z
    get GINA2.2.tar.Z
    quit

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.

There is a mailing list for gina users where problems can be discussed
and new developments are announced. Send mail to 
    gina-users-request@gmdzi.gmd.de
if you want to be added to the list. If you want to contribute to the
discussion, send mail to gina-users@gmdzi.gmd.de.

If you have any questions concerning GINA, you can contact

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

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

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

Author: Andreas Baecker (baecker@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 CLM daemon, a CLM server, and a package
of Common Lisp functions.  Both the CLM daemon and server are implemented in
``C''.  The CLM daemon runs on an arbitrary machine in the network and listens
for Lisp processes requesting to use CLM.  The CLM daemon forks CLM server
processes which communicate with their Lisp processes over a network-transparent
TCP/IP connection.  The CLM 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 CLM server is an ordinary X client. 
The CLM server's functionality is to operate as a gateway between Motif and
Common Lisp.  The CLM functions send commands to the CLM server to create and
modify widgets.  The CLM 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. 

A CLM application is a single (lightweight) process which runs inside a Lisp
process and uses CLM.  There may be an arbitrary number of concurrent CLM
applications in a single Lisp process.  The CLM daemon forks a CLM 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 CLM 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. Where supported, the CLM server may also be
directly forked from the Lisp process without needing a daemon.

The CLM 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 CLM 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@gmd.de)

GINA is an object-oriented application framework written in Common Lisp
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 "gina-overview.ps". Further
instructions and a roadmap to the available documentation can be found in
the User Manual ("gina-manual.ps").

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

An Interface Builder for GINA and OSF/Motif

Author: Thomas Berlage (berlage@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:

- Widgets can be dragged from a palette and dropped onto the work area.

- 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

- Layout parameters for manager widgets are generated automatically.

- Cut and paste is implemented for groups of widgets.

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

- 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 all commands

About

CLM (Common Lisp Motif) runs OSF/Motif widgets in a separate C process, with minimal work on the Lisp side and communicates between C and Lisp using TCP sockets.


Languages

Language:Common Lisp 65.7%Language:PostScript 15.7%Language:C 12.9%Language:TeX 4.8%Language:Makefile 0.7%Language:C++ 0.1%Language:Shell 0.0%