From: Claus Riemann
Subject: Wer moechte CLIM fuer den Mac?
Date: 
Message-ID: <5915@gmdzi.gmd.de>
Wer sich etwas intensiver mit der in der GMD absterbenden
Sprache LISP beschaeftigt, wird wissen, dass seit einiger
Zeit "Common Lisp Interface Manager" (CLIM) existiert.

Jetzt ist auch eine Version fuer den Macintosh 
erhaeltlich, die auf MCL 2.0 aufgesetzt ist. Da einige
wenige Mitarbeiter ein verhaltenes Interesse an dessen
Beschaffung angemeldet haben, moechte ich nun wissen,
wer wieviel Interesse an der Beschaffung hat. 

Post directly to me and I will post a summary.

--cla

P.S.: Ich haeng' mal die Beschreibung hinten dran.

---
Claus Riemann (F3.MMK), ·······@gmdzi.gmd.de, Tel.: 2865



CLIM: Common Lisp Interface Manager

The Common Lisp Interface Manager (CLIM) is a powerful programming
environment that provides a generic set of user interface capabilities
to the Macintosh Common Lisp user.  CLIM provides uniformity to user
interface facilities for the Lisp application programmer without
competing with the window system or toolkits of the host machine.
Instead, it utilizes their services to integrate Lisp applications into
the host's window environment.  CLIM supports a large number of host
environments, including the Macintosh, X/Motif, X/OpenLook, Genera,
CLOE-86, and the NeXT Machine.  This allows the Lisp programmer to
develop a consistent and portable user interface across a wide variety
of computers.

CLIM is implemented in CLOS, the Common Lisp Object System.  The
facilities provided by CLIM include:

  Basic Input and Output

  Geometry

  Graphics

  Portable Implementation Layer

  Extended Input and Output

  Application building tools

  Adaptive toolkit gadget library


The Facilities of CLIM

With CLIM, the Common Lisp programmer deals only with CLIM objects and
functions regardless of their operating platform (i.e., combination of
Lisp system, host computer, and host window environment). CLIM abstracts
many of the concepts common to all window environments.  The programmer
is encouraged to think in terms of these abstractions, rather than in
the specific capabilities of a particular host system.  Thus, the
application can specify the appearance of output in high-level terms and
those high-level descriptions are turned into the appropriate appearance
for the given host.  In other words, the application has the same
fundamental interface across multiple environments and its developer is
insulated from the complexities of portability.

The design and organization of CLIM also provides a spectrum of user
interface building options.  These range from detailed, low-level
specifications of "what goes where" to high-level user interface
specifications where the programmer leaves all of the details up to
CLIM.  This allows CLIM to balance the east of use on one hand and
versatility on the other.  With the high-level facilities, a
programmer can build portable user interfaces quickly but he can also
build his own user interfaces according to his specific needs and
requirements by recombining lower-level facilities.  CLIM thus
supports the development of applications that are independent of
look-and-feel as well as the portable development of toolkit libraries
that define and implement a particular look-and-feel.

Additionally, CLIM's modular design allows application programs to
exclude facilities that they do not use and to reimplement any or all
of the substrate.  To this end, CLIM is specified and implemented in
a layered, modular fashion.  Each facility has several layers of
interface, is independently specified, and has a documented external
interface.

More specifically, the CLIM facilities include:

-- Basic Input and Output --

Input from Keyboard, Mouse, and Tablet are supported in CLIM.  Basic
output includes shapes, text, color, patterns, tiling, and design
compositing.

-- Geometry --

CLIM provides geometric area objects such as points and rectangles.
The coordinate systems used for drawing are abstracted and there is a
comprehensive library of functions for performing arbitrary
transformations.

-- Graphics --

CLIM includes a rich set of drawing functions, such as those for
drawing complex geometric shapes, a wide variety of drawing options,
such as line thickness, a sophisticated inking model, and color.  It
also includes full affine transforms so that a drawing may be
arbitrarily translated, rotated, and scaled.

-- Portable Implementation Layer --

CLIM provides a portable layer, named Silica, for implementing
window-like objects that support higher level facilities and interface.
Silica defines a uniform programming interface for creating and managing
hierarchies of these objects regardless of the underlying window system
(X, Genera, etc.).  Furthermore, Silica defines standard window-like
classes that are roughly equivalent in functionality to X windows.

-- Formatted Input and Output --

A set of high-level macros enable programs to produce neatly formatted
tabular and graphical displays with little or no effort.  Also, output
recording helps capture all output to a window.  It also provides the
support for arbitrarily scrollable windows.  In addition, it serves as
the root for a variety of high-level tools.

CLIM also provides the ability to associate semantics with output, so
that objects may be retrieved later via clicks on their displayed
representation.  This "sensitivity" is automatically provided and is
integrated with the Common Lisp type system.  A mechanism for type
coercion is also included, providing the basis for powerful user
interfaces.

-- Application Building Tools --

This is a set of tools for organizing an application's top-level user
interface and command processing loops centered on objects called
"frames."  CLIM provides functionality for the physical layout of frames
under arbitrary constraints, managing command menus and/or menu bars,
and linking user interface "gestures" with application commands.  Using
these tools, application writers can easily and quickly construct user
interfaces that can grow flexibly from prototype to delivery.

-- Adaptive Toolkit Gadget Library --

A uniform interface is provided to the standard compositional toolkits
available in many environments.  CLIM defines abstract panes that are
analogous to the gadgets or widgets of toolkits like InterViews or the X
toolkit.  CLIM fosters look-and-feel independence by specifying the
interface of these abstract panes in terms of their function and not in
terms of the details of their appearance or operation.  If an
application uses these interfaces, its user interface will adapt to use
whatever toolkit is available in the host environment.  By using this
facility, application programmers can easily construct applications that
will automatically conform to a variety of user interface standards.  In
addition, a portable Lisp-based implementation of the abstract panes is
provided.  [Much of the Adaptive Toolkit library will not be available
until CLIM 2.0.]