Status Report
*************

Last updated March 1998.  The most up-to-date version of this status
report is available at:

     `http://www.gnustep.org/Documentation/gnustep-gui/gnustep-gui_toc.html'

   Please send corrections to <scottc@net-community.com>.

   *Key:*

*[10]*
     Complete and tested.

*[8]*
     Missing a few non-core methods, definitely usable.

*[6]*
     Missing several methods, but core is there, usable.

*[4]*
     Begun, but missing core functionality, not usable.

*[2]*
     Skeleton.

*[0]*
     Nothing there.

*[?]*
     Unknown status.

Classes
=======

   Currently none of the classes raise exceptions.

*NSActionCell:: [10]*
     Should not require any implementation in the backend as it is an
     abstract class which only defines behaviour.

*NSApplication:: [6]*
     The event handling has been integrated with the NSRunLoop class.
     Many of the minor methods are implemented.  No window ordering is
     being maintained, and a number of the methods that perform
     operations on windows are empty.  Modal loops are not implemented.

*NSBitmapImageRep:: [4]*
     Implementation has been filled out enough so that TIFF images can
     be displayed; its possible that not all TIFF image types are
     handled yet as the backend implementation must deal with each of
     them.  No compression nor generation of TIFF representations.

*NSBox:: [9]*
     Should be complete; will need some additional testing when view
     resizing is implemented.

*NSBrowser:: [9]*
     There is an odd display artifact; lists which are smaller than the
     browser column area have the list justified to the bottom of the
     column versus the top of the column.  This is actually an issue
     with NSMatrix and will be remedied when flip views are implemented.

*NSBrowserCell:: [9]*
     Should be complete.

*NSButton:: [9]*
     Repeat intervals have been implemented.  Key equivalents still
     need to be implemented.  There should be little need for backend
     implementation as NSButton is mainly behavior; its cell class does
     all drawing.

*NSButtonCell:: [10]*
     This class is fully implemented.

*NSCachedImageRep:: [4]*
     All methods are implemented but its unknown if the class works.

*NSCell:: [8]*
     No determination of component sizes.  Editing text, validating
     input, represented object, and some other odd and end methods not
     implemented.

*NSClipView:: [9]*
     The class has been implemented but does not work yet with copy on
     scroll.

*NSColor:: [8]*
     Now implements all colorspaces; however, does not know the
     difference between calibrated and device.

*NSColorList:: [9]*
     Implementation should be fairly complete; may need some work for
     reading and writing color list files.

*NSColorPanel:: [2]*
*NSColorPicker:: [2]*
*NSColorWell:: [9]*
     Implementation should be fairly complete; backend implementation
     required for the actual drawing of the control.  Needs drag-n-drop
     capability.

*NSControl:: [8]*
     No field editor; doesn't know how to calculate its size.

*NSCursor:: [8]*
     Implementation should be fairly complete; backend implementation
     required to be usable.  May not handle user specified images.

*NSCustomImageRep:: [4]*
     All methods are implemented but it is unknown if the class works.

*NSDataLink:: [2]*
*NSDataLinkManager:: [2]*
*NSDataLinkPanel:: [2]*
*NSDPSContext:: [6]*
     Enough implementation for the backend to do something useful; most
     methods that deal specifically with Display Ghostscript are empty.

*NSEPSImageRep:: [2]*
*NSEvent:: [9]*
     All methods implemented including periodic events.

*NSFont:: [9]*
     Now maintains AFM and glyph information but requires the backend
     implementation to supply it.

*NSFontManager:: [6]*
     Has been filled out some more so as to be usable with the Display
     Ghostscript System, but still requires additional work.

*NSFontPanel:: [2]*
     May be usable with backend implementation.

*NSForm:: [8]*
     The code has been written, it greatly depends on NSMatrix, but no
     tests have been done.

*NSFormCell:: [8]*
     The code has been written but no tests have been done.

*NSHelpPanel:: [2]*
*NSImage:: [8]*
     Additional implementation to the point where TIFF images can be
     displayed; requires sufficient backend implementation in the
     NSImageRep classes.

*NSImageRep:: [8]*
     Additional implementation to the point where TIFF images can be
     displayed; requires sufficient backend implementation.

*NSMatrix:: [9]*
     The class is almost completely implemented, only the methods that
     deal with text selection and moving from a text field to another
     using TAB and SHIFT-TAB are empty.

*NSMenu:: [10]*
     The class is complete now, all the logic is here, the backend
     needs to write only the code that deals with displaying the menu
     windows on screen. For an example of how this is achieved take a
     look to the XDPS backend.

*NSMenuItem:: [10]*
     The logic is here, but needs support for drawing the cell in the
     backend. Also take a look to the XDPS backend to see how this
     works.

*NSOpenPanel:: [3]*
     Usability greatly depends upon backend implementation.

*NSPageLayout:: [2]*
*NSPanel:: [2]*
*NSPasteboard:: [2]*
*NSPopUpButton:: [4]*
     Usability greatly depends upon backend implementation.

*NSPrinter:: [9]*
     The code was written but not tested very much. We also need to add
     printer description files to the PrinterTypes directory inside the
     gnustep instalation directory.

*NSPrintinfo:: [9]*
     The code has been implemented but not tested.

*NSPrintOperation:: [2]*
*NSPrintPanel:: [2]*
*NSResponder:: [9]*
     Shouldn't require any backend implementation; all methods are
     implemented.

*NSSavePanel:: [3]*
     Usability greatly depends upon backend implementation.

*NSScreen:: [6]*
     Knows nothing about window depth, greatly depends upon backend
     implementation.

*NSScroller:: [10]*
     Completely implemented.

*NSScrollView:: [8]*
     The code has been implemented though it does not deal yet with
     copy on scroll.

*NSSelection:: [2]*
*NSSlider:: [10]*
     Implemented. Does not require backend support.

*NSSliderCell:: [10]*
     Implemented. Requires only a method to be implemented in the
     backend.

*NSSpellChecker:: [2]*
*NSSpellServer:: [2]*
*NSSplitView:: [2]*
*NSText:: [2]*
*NSTextField:: [8]*
     Does not properly send text delegate messages. Does not handle
     selection yet and does not hide the cursor when it resigns as the
     first responder.

*NSTextFieldCell:: [4]*
     Usability greatly depends upon backend implementation.

*NSView:: [6]*
     Maintains subview lists, notification of new window, send resizing
     messages to subviews.  Rotation, scaling and translation of user
     coordinate space have been implemented.  Event handling and
     tracking rectangles implemented.  Cursor management implemented.
     No autoscrolling capability.  No printing or paging.

*NSWindow:: [4]*
     Most methods not implemented, but maybe usable with backend
     implementation.

*NSWorkspace:: [2]*
Protocols
=========

*NSChangeSpelling:: [9]*
*NSColorPickingCustom:: [9]*
*NSColorPickingDefault:: [9]*
*NSDraggingDestination:: [9]*
*NSDraggingInfo:: [9]*
*NSDraggingSource:: [9]*
*NSIgnoreMisspelledWords:: [9]*
*NSMenuActionResponder:: [9]*
*NSNibAwaking:: [9]*
*NSServicesRequests:: [9]*
Functions
=========

   All of the functions have been moved to the backend.

