www.delorie.com/gnu/docs/gstep-core/gnustep-xdps.html   search  
 
Buy GNU books!


The GNUstep GUI X/DPS Backend

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

This file documents the GNU GUI X/DPS Backend.

Copyright (C) 1996 NET-Community

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.

1. Introduction


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2. README

This is version of the GNUstep GUI X/DPS Backend (`gnustep-xdps').

Here is some introductory info to get you started:


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.1 Initial reading


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.2 How can you help?


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3. ANNOUNCE

This is version of the GNUstep GUI X/DPS Backend (`gnustep-xdps').


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1 What is the GNUstep GUI X/DPS Backend?

It is a back-end component for the GNUstep GUI Library. The implementation of the GNUstep GUI Library is designed in two parts. The first part is the front-end component which is independent of platform and display system. This front-end is combined with a back-end component which handles all of the display system dependent such as specific calls to the X Window System. This design allows the GNUstep applications to have the "look and feel" of the underlying display system without any changes to the application, and the library can be easily ported to other display systems.

The GNUstep GUI X/DPS Backend is for platforms using the X Window System in combination with a Display Postscript System.

Neither the X Window System nor the Display Postscript System specify a "look and feel", so the GNUstep GUI X/DPS Backend is the definitive "look and feel" for GNUstep. All of the icons, images, and any artwork and resources are meant for GNUstep developers and users; if you use any such resources in non-GNUstep work, please be considerate and give ample recognition to GNUstep and to the artists who have contributed their art.

The GNUstep GUI X/DPS Backend requires the GNU Objective-C compiler, the GNUstep Base Library, the GNUstep GUI Library, the X Window System, and the Display Ghostscript System.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.2 What's new in this release?

The currently released version of the library is `'. See the news file in the GUI library for recent news items.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3 How can I get support for this software?

We currently do not have a mailing list setup explicitly for the GNUstep GUI X/DPS Backend; however, you may wish to use the GNUstep discussion mailing list for general questions and discussion. Look at the GNUstep Web Pages for more information regarding GNUstep resources http://www.gnustep.org/

There are also companies which provide commercial support for the GNUstep GUI X/DPS Backend, see the file `SUPPORT' for more information.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.4 Where can you get it? How can you compile it?

The gstep-gui-.tar.gz distribution file has not been made available by anonymous ftp.

The program requires gcc or higher.

It requires the GNUstep GUI Library version and the Display Ghostscript System version .

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 ftpmail@decwrl.dec.com 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:///.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.5 Where do I send bug reports?

Bug reports can be sent to bug-gnustep@gnu.org


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.6 Obtaining GNU Software

Check out the GNU web site. (http://www.gnu.org/)

Check out the GNUstep web site. (http://www.gnustep.org/)

The GNUstep GUI X/DPS Backend was originally developed by Pascal Forget pascal@wsc.com; the company he works for, WSC Technologies, Inc., has been a constant supporter of free software. (http://www.wsc.com/)

Additional enhancements to the GNUstep GUI X/DPS Backend have been written as part of the On-line Community project of NET-Community. NET-Community is a company that develops and supports free software. Check out their web site to learn more. (http://www.net-community.com/)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4. Installation

This file documents the installation of the GNUstep GUI X/DPS Backend, `gnustep-xdps'. Copyright (C) 1996 Free Software Foundation, Inc. You may copy, distribute, and modify it freely as long as you preserve this copyright notice and permission notice.

This is version of the GNUstep GUI X/DPS Backend.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.1 Installing `gnustep-xdps'

Here is a quick-and-dirty example of installation commands:

 
./configure --prefix=/usr/GNUstep
make
make install

Here are more detailed instructions. These notes are for a GNU system that can run `./configure'. Read the `GNUstep-HOWTO' for instructions on how to install the entire GNUstep system.

  1. Install `gcc'. The library requires gcc version or later.

  2. Install `gnustep-base' or `libFoundation'. This library requires the classes either in the GNUstep Base Library or libFoundation. You must also apply the Objective-C Runtime patches to GCC which makes the runtime thread-safe, if your version of GCC lacks them.

  3. It is presumed that you have the X Window System already installed for your operating system. `gnustep-xdps' requires the header files, libraries, and executables.

  4. Make sure you have a Display Postscript System installed. Use either Display Ghostscript (version ), Adobe DPS, or the XFree86 DPS extension.

  5. Install `gnustep-gui'. This library requires the classes in the GNUstep GUI Library.

  6. Configure the package for your system. In the directory that this file is in, type `./configure'. If you're using `csh' on an old version of System V, you might need to type `sh configure' instead to prevent `csh' from trying to execute `configure' itself.

    The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation, and creates the Makefile(s) (one in each subdirectory of the source directory). In some packages it creates a C header file containing system-dependent definitions. It also creates a file `config.status' that you can run in the future to recreate the current configuration.

    Running `configure' takes less than a minute or two. While it is running, it prints some messages that tell what it is doing. If you don't want to see the messages, run `configure' with its standard output redirected to `/dev/null'; for example:
     
    ./configure >/dev/null
    

    To compile the package in a different directory from the one containing the source code, you must use a version of make that supports the VPATH variable, such as GNU make. `cd' to the directory where you want the object files and executables to go and run `configure'. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If for some reason `configure' is not in the source code directory that you are configuring, then it will report that it can't find the source code. In that case, run `configure' with the option `--srcdir=DIR', where DIR is the directory that contains the source code.

    By default, `make install' will install the package's files in /usr/local/bin, /usr/local/lib, /usr/local/man, etc. You can specify an installation prefix other than /usr/local by giving `configure' the option `--prefix=PATH'. Alternately, you can do so by giving a value for the `prefix' variable when you run `make', e.g.,
     
    make prefix=/usr/gnu
    

    You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec_prefix=PATH' or set the `make' variable `exec_prefix' to PATH, the package will use PATH as the prefix for installing programs and libraries. Data files and documentation will still use the regular prefix. Normally, all files are installed using the regular prefix.

    You can tell `configure' to figure out the configuration for your system, and record it in `config.status', without actually configuring the package (creating Makefile(s) and perhaps a configuration header file). To do this, give `configure' the `--no-create' option. Later, you can run `./config.status' to actually configure the package. This option is useful mainly in `Makefile' rules for updating `config.status' and `Makefile'. You can also give `config.status' the `--recheck' option, which makes it re-run `configure' with the same arguments you used before. This is useful if you change `configure'.

    `configure' ignores any other arguments that you give it.

    If your system requires unusual options for compilation or linking that `configure' doesn't know about, you can give `configure' initial values for some variables by setting them in the environment. In Bourne-compatible shells, you can do that on the command line like this:
     
    CC='gcc -traditional' DEFS=-D_POSIX_SOURCE ./configure
    
    The `make' variables that you might want to override with environment variables when running `configure' are:

    (For these variables, any value given in the environment overrides the value that `configure' would choose:)

    `CC'
    C compiler program. Default is `cc', or `gcc' if `gcc' is in your PATH.

    `INSTALL'
    Program to use to install files. Default is `install' if you have it, `install.sh' otherwise.

    (For these variables, any value given in the environment is added to the value that `configure' chooses:)

    `DEFS'
    Configuration options, in the form `-Dfoo -Dbar ...'

    `LIBS'
    Libraries to link with, in the form `-lfoo -lbar ...'

    If you need to do unusual things to compile the package, we encourage you to figure out how `configure.in' could check whether to do them, and mail diffs or instructions to the address given in the `README' so we can include them in the next release.

  7. Type `make' to compile the package. If you want, you can override the `make' variables `CFLAGS' and `LDFLAGS' like this:
     
    make CFLAGS=-O2 LDFLAGS=-s
    

  8. Type `make install' to install the library, data files, header files, and documentation.

  9. You can remove the program binaries and object files from the source directory by typing `make clean'. To also remove the Makefile(s), and `config.status' (all the files that `configure' created), type `make distclean'.

    The file `configure.in' is used as a template to create `configure' by a program called `autoconf'. You will only need it if you want to regenerate `configure' using a newer version of `autoconf'.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5. NEWS

The currently released version of the library is `'. See the news file in the GUI library for recent news items.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.1 Noteworthy changes in version `0.5.0'


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.2 Noteworthy changes in version `0.5.0'


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.3 Noteworthy changes in version `0.3.0'


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.4 Noteworthy changes in version `0.2.0'


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.5 Noteworthy changes in version `0.1.2'


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.6 Noteworthy changes in version `0.1.1'


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.7 Noteworthy changes in version `0.1.0'

Also see the `ChangeLog' file for more detail.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

6. Frequently Asked Questions With Answers

Maintained by Scott Christley scottc@net-community.com.

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

 
ftp://www.gnustep.org/Documentation/gnustep-xdps/gnustep-xdps_toc.html

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

  1. What is the GNUstep GUI X/DPS Backend?

    It is a back-end component for the GNUstep GUI Library. The implementation of the GNUstep GUI Library is designed in two parts. The first part is the front-end component which is independent of platform and display system. This front-end is combined with a back-end component which handles all of the display system dependent such as specific calls to the X Window System. This design allows the GNUstep applications to have the "look and feel" of the underlying display system without any changes to the application, and the library can be easily ported to other display systems.

    The GNUstep GUI X/DPS Backend is for platforms using the X Window System in combination with the Display Ghostscript System. The Display Ghostscript System is the free software GNU equivalent to the Display PostScript System as specified by Adobe Systems Incorporated; it should be possible to use `gnustep-xdps' with Adobe's DPS extensions to the X Window System.

  2. Is it true that OpenStep doesn't define a "look and feel"?

    That is correct. OpenStep only defines the Objective-C interface to the GUI elements; though some of the "feel" may be indirectly assumed from OpenStep. For example, how the various NSButton types respond to user input.

    Neither the X Window System nor the Display Ghostscript System specify a "look and feel", so the GNUstep GUI X/DPS Backend is the definitive "look and feel" for GNUstep. All of the icons, images, and any artwork and resources are meant for GNUstep developers and users; if you use any such resources in non-GNUstep work, please be considerate and give ample recognition to GNUstep and to the artists who have contributed their art.

  3. What is the current state of development of the library?

    You can review the most up-to-date status report at:

     
    http://www.gnustep.org/Documentation/gnustep-xdps/gnustep-xdps_toc.html.
    

  4. Where can I get a copy?

    The gstep-gui-.tar.gz distribution file has not been made available by anonymous ftp.

    The most recent (not necessarily tested) snapshots of the library will be placed in ftp:///.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7. Status Report

Last updated March 1998. This list is probably out of date. 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.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.1 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:: [9]
There is also a pasteboard server located in the Tools directory which this class communicates with using Distributed Objects.

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]


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.2 Protocols

NSChangeSpelling:: [9]

NSColorPickingCustom:: [9]

NSColorPickingDefault:: [9]

NSDraggingDestination:: [9]

NSDraggingInfo:: [9]

NSDraggingSource:: [9]

NSIgnoreMisspelledWords:: [9]

NSMenuActionResponder:: [9]

NSNibAwaking:: [9]

NSServicesRequests:: [9]


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

7.3 Functions

All of the functions have been moved to the backend.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

8. TODO


[Top] [Contents] [Index] [ ? ]

Table of Contents

[Top] [Contents] [Index] [ ? ]

Short Table of Contents

1. Introduction
2. README
3. ANNOUNCE
4. Installation
5. NEWS
6. Frequently Asked Questions With Answers
7. Status Report
8. TODO
[Top] [Contents] [Index] [ ? ]

About this document

This document was generated by DJ Delorie on June, 23 2003 using texi2html

The buttons in the navigation panels have the following meaning:

Button Name Go to From 1.2.3 go to
[ < ] Back previous section in reading order 1.2.2
[ > ] Forward next section in reading order 1.2.4
[ << ] FastBack previous or up-and-previous section 1.1
[ Up ] Up up section 1.2
[ >> ] FastForward next or up-and-next section 1.3
[Top] Top cover (top) of document  
[Contents] Contents table of contents  
[Index] Index concept index  
[ ? ] About this page  

where the Example assumes that the current position is at Subsubsection One-Two-Three of a document of the following structure:

  webmaster   donations   bookstore     delorie software   privacy  
  Copyright 2003   by The Free Software Foundation     Updated Jun 2003