From: Brad Myers
Subject: New version of Garnet
Date: 
Message-ID: <BxAxy6.Lto.1@cs.cmu.edu>
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
-*-*-*-*-*-*-  ANNOUNCING THE RELEASE OF VERSION 2.1 OF GARNET  -*-*-*-*-*-*-
-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

Garnet is an advanced user interface development environment for Lisp and
X/11.  It runs on all machines and Lisps that support X/11, and it is free.
FTP instructions are below.

We have added a significant number of new features to this version,
including the release of C32 and its integration with Lapidary.  We have
also added a number of new gadgets, such as one for reading and saving
Garnet objects; interactor support for animation; and full support for
reading and writing X pixmap objects.  In addition, we have corrected
several bugs that were reported in version 2.0.

In summary, the primary changes are:

* The spreadsheet object and constraint editor C32 is now ready for
release.  It allows Garnet objects to be viewed and edited using a
spreadsheet-like interface.  C32 was described in a paper presented at CHI.

* Several bugs were fixed in Lapidary.  In addition, Lapidary now uses
C32.  This makes it possible to edit objects and constraints created
with Lapidary using a spreadsheet interface.

* We have created new gadgets for saving and reading Garnet objects from
a file, and pop-up option menus.  Both come in Motif and Garnet
looks-and-feels.

* All button and menu widgets can now include arbitrary Garnet objects as
the labels, in addition to text strings.  This results from an extension
to aggrelists to include arbitrary pictures.

* It is now possible to have X pixmaps (color pictures) as first-class
Garnet objects.  Pixmap objects can be read and written to files in xpm format.

* The multi-graphics selection widget now supports many new features such as
the ability to grow multiple objects, select all objects in a region, etc.

* There is a new interactor, animator-interactor, which supports
various forms of animation.

* Garnet now supports modal windows, which can be specified with the
slot :modal-p.  These prevent input from going to any other
windows, and are easier to use than priority-levels.



In summary, the secondary changes are:

KR:

The function SCHEMA-P now returns T only for valid objects, i.e., objects
that have not been destroyed.

By default, KR functions such as G-VALUE now give more meaningful
error messages when given illegal objects such as NIL.

The behavior of the :override keyword to create-instance has
been improved considerably.  Formulas which used to depend on values
that are overridden are properly invalidated.

The macro gv now gives an error message if its first argument is a
keyword.  Usually, this results from using gv instead of gvl
by mistake.

destroy-slot now runs the invalidate demon before deleting the
slot.  This ensures that the Update algorithm sees the change and
reflects it in the display.

We have added two new macros, with-demon-enabled and
with-demon-disabled, which allow finer control over which invalidate
demons are executed.


OPAL:

The functions of the opal:gv- family, such as opal:gv-bottom,
now behave as if a link was missing when the object they are given is
NIL.

The point-in-gob method now works appropriately for polygons and arcs,
rather than just using the bounding-box.

The circularities in dependencies for aggrelists were removed, so it is
now easier to center an aggrelist in other objects with formulas.

Opal parses the ":0.0" part of the DISPLAY environment variable, in
case it is not the default ("0.0").  This environment variable is used
by the X server to tell which display is being used.

Postscript printing can now handle multiple windows, and is more
robust.  The comment at the top of PostScript files generated by
opal:Make-PS-File has been changed to "%!PS-Adobe-2.0 EPSF 2.0".  The
addition of the EPSF comment should make it easier to load these
PostScript files into other applications like FrameMaker.

The cursor multi-text object gadget now scrolls the text so the cursor
remains visible.  If the cursor is pulled outside the window that displays
the text, the window is scrolled continuously.

Thanks to Denys Duchier, Garnet now provides better support for
windows on the TVTWM window manager.

The standard Garnet fonts are now referenced by point size rather than
by pixel size.  For example, when Garnet looks for the default-font on
the font path, it will search for a font with a point size of 120,
rather than a pixel size of 12.  This should reduce the number of
users who have to explicitly add directories to their font path.


INTERACTORS:

The two-point interactor, text interactor, and polyline-creator now
accept the same gridding control as the move-grow interactor.

The button-interactor now supports auto-repeat using the
animator-interactor (but only under Allegro or Lucid).


GADGETS:

Scrolling windows now have a new function to scroll the window so a given
rectangular area is visible.

The arrows on scroll bars and sliders will now auto-repeat if you hold the
mouse button down on them (but only under Allegro or Lucid).

Releasing the mouse button outside a menubar now makes the menubar go away.

The functions Pop-Up-Win-For-Prop, Pop-Up-Win-Change-Obj, and
Pop-Up-Win-Change-Items all take an optional modal-p final parameter.

The Motif-Slider has a new :format-string slot, so you can control
how the indicator text is formatted.


DEMOS AND UTILITIES:

New demo demo-animator shows off how to make an animation, and
demo-pixmap is a kind of pixmap editor.

Garnetdraw has been substantially upgraded by using the new
multi-graphics-selection and read and save gadgets, and
it also supports gridding.


GILT:

The functions Gilt:show-in-window and
Gilt:show-in-window-and-wait now take the parameter modal-p.


LAPIDARY:

Lapidary now uses so-called link parameters, i.e., slots that
constraints use to reference other objects, and which may change with each
incarnation of an object.

The parameters menu has been extensively revised to make it work
with aggrelists and link parameters.

Lapidary no longer requests anything from the Lisp listener.

The interactor menus now disappear when one of the action buttons
has been hit.

Lapidary-generated files are much smaller and more readable, because
formulas that should be inherited are no longer dumped.


CONTRIB:

New contributions include a set of functions that let the user provide
input (such as Lisp expressions) and handle errors that might occur
during evaluation.


DOCUMENTATION:

The new Garnet manuals now use embedded postscript pictures instead of
bitmaps, so the manuals should be much smaller files and quicker to print. 



FTP INSTRUCTIONS

Garnet is available for free by anonymous FTP.  To retrieve it, ftp to
a.gp.cs.cmu.edu (128.2.242.7).  When asked to log in, use "anonymous", and
your name as the password.  Then change to the garnet directory (note the
double garnet's) and get the README explanation file:
	ftp> cd /usr/garnet/garnet/
	ftp> get README
Now, follow the directions in the README file.  

There is a usenet bboard for discussing Garnet: comp.windows.garnet.