[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Announcement of available MCL code

Hi MCL'ers,

Today, I copied some of my systems to cambridge.apple.com 
(directory pub/mcl2/contrib). The name of the archive file is
rm.sea.hqx. The file should be converted with binhex, the result
is a self-extracting archive.

The following is the file readme.text:

The source files of the contribution contain code to provide a layout
mechanism for views in other views. Examples are buttons, tables, etc.
The layout language is based on the box-and-glue metaphor of the TEX
layout system. The box-and-glue metaphor is used for arranging rectilinear
interface objects in other rectilinear objects. For convenience another 
layout interpreter generating directed acyclic graphs is provided, too.
The graphs can be arranged using the box-and-glue metaphor.

(This description assumes that the logical host "rm" is mapped to the
folder where you put the rm-folder from the distribution.)

A complete documentation of the layout system is supplied as a
Postscript file "layout-doc.ps" in the folder "rm:Docs;".

As an example we provide yet another CLOS class browser with minimum
functionality. A documentation can be found in the file
"ClassBrowser.doc" in the folder "rm:Docs;". Feel free to adapt the
code to your needs, e.g. it would be nice to integrate the class
browser with the inspector.

The class browser uses a quickdraw augmentation. The graphic state
(pen-mode, pen-size, fonts, etc.) is represented as an object, i.e.
it is not necessary to set it explicitly using various primitive
functions. These objects are called graphic contexts (gcontexts).
This idea has been borrowed from the X-Windows system. A moderate
documentation is supplied with the file "GContexts.doc" in the folder

The whole system may be installed with the file "rm:Install.lisp". The
standard pathname translations expect the folder "rm" to be placed in
the ccl-folder. The translations set up in the file "rm:Install.lisp"
may be adapted to your directory structures. Notice that Common Lisp
logical pathnames are mapped to MCL logical pathnames.

During compiling and loading the files "records" (compile-time only),
"traps" (compile-time only), "quickdraw", "scrollers",
"scroll-bar-dialog-items", and "loop" from the Library-folder are

Known Bugs: 
The scroll-bars of the class-browser are drawn twice (e.g. after a
window resize) this will be fixed in the next release.

Another system is provided in the folder "Routing".
The package routing provides the algorithms for connecting two points
in a rectangle while strictly avoiding a crossing of a set of
horizontal or vertical line segments. The "layout" of the connection
is quite nice as long as not too many circles are used as borders.

The routing example makes use of the layout system. Set the pathname
translations in the file
"rm:SystemDefinitions;RoutingDefsystem.lisp". The example let's you
construct a collection of circles. Just press shift and click into
the window "Wire scene". You can connect two circles by
double-clicking the two circles. The connection is adapted while
circles are moved around. Play around...

The documentation in the file "routing.lisp" is in German still, I'm sorry.

Acknowledgements: For convenience, this contribution includes the
Mark Kantrowitz' defsystem facility . If not present it is compiled
and loaded automatically. We provide a file "view-extensions.lisp" in
the folder "rm:MCL-Extensions" that has been made available to the
MCL community by Peter Szolovits (MIT Lab for Computer Science). I
developed the layout facilities together with my colleague Volker
Haarslev (University of Hamburg) who also provided me with useful
comments concerning implementation bugs. Further comments came from
Rainer Joswig (University of Hamburg). The graph-layout algorithm has
been programmed by Michael Hussmann (University of Hamburg). Many
thanks to you all.

Though the systems provided with this contribution have been tested
to some extent, one cannot expect the systems to be error-free.
Therefore, a patch-facility is provided. If you receive patches for a
system, copy the files "*.patch" into the corresponding sub-folder
"Patches" in the directory of the system.

Please send bug reports, comments and suggestions to

Have fun.


Ralf Moeller
University of Hamburg
Computer Science Department
Bodenstedtstrasse 16
2000 Hamburg  50