  The objcX library and its possible evolution to GNUStep
 

   The objcX library is an Objective-C class library that emulates the
Appkit component of NeXTSTEP.  It is currently implemented for
X-Windows and uses the the Motif widget set.  Not all of the Appkit
has been implemented, but most of those parts which are most
frequently used in GUI applications have been implemented.

 
   The most frequently made comments about this library are...

- Display PostScript support would be nice
- Motif needs to replaced by free software 
- One should make a version for MicroSoft Windows


   One possible evolution of the library would address all of these
points.  Limited Display PostScript support could be added by using
GhostScript.  How this might be done has been discussed in a note by
L. Peter Deutsch, the author of GhostScript.  A possible replacement
for the Motif widget set would be a widget set written with
GhostScript.

   Given Display PostScript support via GhostScript, a PostScript
based widget set could be built.   First, the drawing code would need
to be written in PostScript.  Second, event handling will need to be
implemented.   One could follow the FirstResponder mechanism of
NeXTSTEP, thus most of the event handling would be in Objective-C and
portable. The Responder class has already been contributed to the
library by Keith Mason.

   To port the library and PostScript widget set to MS-Windows, one
would need only to re-implement the event handling code for Windows,
and to supply the code to create and manage windows.   

   As the library was being built, we come to realize that the bulk of
the code makes no reference to Motif.  Some classes contain no Motif
or X-Window reference at all.  Also, the references to Motif are
mostly contained in a few methods of any class.  Most of these methods
are are defined in base classes and overridden in subclasses.

   Thus, to enhance portablility of the core code of the library,
all methods that reference X-Window or Motif are implemented as
Objective-C categories in separate files...

- @implementation XXXX(WidgetSet) for methods requiring Motif.   The
file name is of the form xmXXXX.m

- @implementation XXXX(ToolKit) for methods requiring only the
X-Windows Toolkit.  The file name is of the form xtXXXX.m

Thus, all methods and functions that will need to be
implemented with a different widget set will be clearly identified.
Also given a corresponding set of files which uses a different widget
set, one could build the library either to Motif or that other set.

