Frequently Asked Questions With Answers *************************************** Maintained by Scott Christley . Last updated March 28 1997. The most up-to-date version of this FAQ is available at: `ftp://www.gnustep.org/Documentation/gnustep-gui/gnustep-gui_toc.html' Please send corrections to . 1. What is the GNUstep GUI Library? The GNUstep GUI Library is a library of objects useful for writing graphical applications. For example, it includes classes for drawing and manipulating graphics objects on the screen: windows, menus, buttons, sliders, text fields, and events. There are also many peripheral classes that offer operating-system-independent interfaces to images, cursors, colors, fonts, pasteboards, printing. There are also workspace support classes such as data links, open/save panels, context-dependent help, spell checking. It provides functionality that aims to implement the `AppKit' portion of the OpenStep standard. However the implementation has been written to take advantage of GNUstep enhancements wherever possible. 2. Explain the organization of the front and back-ends. The GNUstep GUI Library is divided into a front and back-end. The front-end contains the majority of implementation, but leaves out the low-level drawing and event code. A back-end can override whatever methods necessary in order to implement low-level drawing event receiving. Different back-ends will make GNUstep available on various platforms. The default GNU back-end will run on top of the X Window System and the Display Ghostscript Server. Other back-ends could allow GNUstep to run on Mac, OS/2, and WIN32 graphics/event platforms. Much work will be saved by this clean separation between front and back-end, because it allows different platforms to share the large amount of front-end code. The front-end does not specify what mechanism to use in order to "plug in" the back-end; that is the back-end implementor's choice. At least two backends will use `+poseAs:' method, for example, running `[XDPSWindow poseAs: [NSWindow class]]'. Using `+poseAs:' is more flexible than using Categories because it allows the the back-end implementor to choose what to override in the front-end, instead of having the interface between front and back-end fixed by the front-end. 3. What is the current state of development of the front-end? A number of classes in the front-end are complete or almost complete; these include: NSActionCell, NSButtonCell, NSButton, NSCell, NSColor, NSColorWell, NSControl, NSCursor, NSEvent, NSFont, NSImage, NSImageRep, NSBitmapImageRep, NSResponder, NSSlider, NSScroller, NSTextField, and NSTextFieldCell. Other classes are complete enough to use, but still require some major additions before being considered almost complete: NSApplication, NSBox, NSFontManager, NSMatrix, NSMenu, NSMenuCell, NSPopUpButton, NSSliderCell, NSText, NSView, and NSWindow. You can review the most up-to-date status report at: `http://www.gnustep.org/Documentation/gnustep-gui/gnustep-gui_toc.html'. 4. What back-ends are available? The official back-end is the GNUstep X/DPS GUI Backend which runs under the X Window System and interfaces to the Display Ghostscript System. You can learn more at: `http://www.gnustep.org/Documentation/gnustep-xdps/gnustep-xdps_toc.html' 5. Where can I get a copy? The gstep-gui-0.5.0.tar.gz distribution file has been placed on `ftp.gnustep.org' in `pub/gnustep/core'. The program requires gcc 2.8.0 or higher. It requires the Display Ghostscript System version 0.5.0 and the TIFF Graphics library version 3.4. It also requires a FoundationKit library as specified by the OpenStep specification. The FoundationKit libraries known to work are the GNUstep Base Library version `0.5.0' and libFoundation version `0.7.1'. The `.tar' file is compressed with GNU gzip. Gzip can be obtained by anonymous ftp at any of the GNU archive sites. For info about FTP via email, send email to with no subject line, and two-line body with line one `help' and line two `quit'. The most recent (not necessarily tested) snapshots of the library will be placed in `ftp://alpha.gnu.org/gnu/gnustep'.