@c -*-texinfo-*-
@chapter Frequently Asked Questions With Answers

@ifset TEXT-ONLY
@include version.texi
@end ifset

Maintained by Scott Christley @email{scottc@@net-community.com}.

Last updated March 28 1997.  The most up-to-date version of this FAQ
is available at:

@example
@url{ftp://www.gnustep.org/Documentation/gnustep-gui/gnustep-gui_toc.html}
@end example

Please send corrections to @email{scottc@@net-community.com}.

@enumerate

@item @b{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 @samp{AppKit}
portion of the OpenStep standard.  However the implementation has
been written to take advantage of GNUstep enhancements wherever possible.


@item @b{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 @samp{+poseAs:} method, for example, running
@samp{[XDPSWindow poseAs: [NSWindow class]]}.  Using @samp{+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.


@item @b{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:

@example
@url{http://www.gnustep.org/Documentation/gnustep-gui/gnustep-gui_toc.html}.
@end example

@item @b{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:

@example
@url{http://www.gnustep.org/Documentation/gnustep-xdps/gnustep-xdps_toc.html}
@end example

@item @b{Where can I get a copy?}

@ifset GNUSTEP-GUI-FTP-MACHINE
The gstep-gui-@value{GNUSTEP-GUI-VERSION}.tar.gz distribution
file has been placed on @samp{@value{GNUSTEP-GUI-FTP-MACHINE}} in
@samp{@value{GNUSTEP-GUI-FTP-DIRECTORY}}.
@end ifset
@ifclear GNUSTEP-GUI-FTP-MACHINE
The gstep-gui-@value{GNUSTEP-GUI-VERSION}.tar.gz distribution
file has not been made available by anonymous ftp.
@end ifclear

The program requires gcc @value{GNUSTEP-GUI-GCC} or higher.

It requires the Display Ghostscript System version
@value{GNUSTEP-GUI-DGS} and the TIFF Graphics library version
@value{GNUSTEP-GUI-LIBTIFF}.

It also requires a FoundationKit library as specified by the OpenStep
specification.  The FoundationKit libraries known to work are the GNUstep
Base Library version @samp{@value{GNUSTEP-GUI-BASE}} and libFoundation version
@samp{@value{LIB-FOUNDATION}}.

The @samp{.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
@email{ftpmail@@decwrl.dec.com} with no subject line, and two-line body
with line one @samp{help} and line two @samp{quit}.

The most recent (not necessarily tested) snapshots of the library will
be placed in 
@url{ftp://@value{GNUSTEP-GUI-SNAP-FTP-MACHINE}/@value{GNUSTEP-GUI-SNAP-FTP-DIRECTORY}}.

@end enumerate

