#chapter Introduction
#end chapter

#texinfo
@subheading What is XPCE?

XPCE is an object-oriented symbolic environment indented to be used in
cooperation with a symbolic language.  The combination provides a hybrid
environment with a small but powerful and transparent interface.
Although PCE provides many general-purpose classes, it is primarily
designed to implement user-interfaces.

The ``PCE Project'' was started in 1985 by Anjo Anjewierden.  His aim
was to develop a high-level UI environment for (C-)Prolog.  The
requirements for this environment came from the ``Thermodynamics Coach''
project in which Paul Kamsteeg used PCE/Prolog to implement the UI for
a courseware system for thermodynamics.  This system included a
`scratch-pad' that allowed the student to create structured drawings
of component configurations. The application had to be able to analyse
the drawing made by the student.

PCE has been redesigned and largely re-implemented on a SUN workstation
using Quintus Prolog and later SWI-Prolog in the Esprit project P1098
(KADS).  This project used PCE to implement a knowledge engineering
workbench called Shelley.  During this period PCE/Prolog has been used
by various research groups to implement graphical interfaces for
applications implemented in Prolog.  Most of these interfaces stressed
the use of direct-manipulation graphical interfaces.  Feedback from
these projects has made PCE generally useful and mature.

This document describes version 4 of PCE.  Version 4 is a major release.
PCE has been moved from SunView to the X-window platform.  In the course
of this the entire graphics and standard UI component library have been
reorganised.  The object-oriented infra-structure of PCE has been made
available to the application programmer.  Performance and memory
management have been improved considerably.


@subheading The XPCE Reference Manual

This manual is a @b{reference} manual of the XPCE.  That is, all
material in this manual is arranged such that finding the
@b{definitions} of things already globally known to the user.  If you
are new to XPCE start with one of the introductions ``Programming in
XPCE/Prolog'' or ``Programming in XPCE/Lisp''.  These documents provide
an overview of the XPCE system and the language binding.  They also
contain a simple examples.  After reading one of these manuals,
``PceDraw'' provides a big worked-out example explaining much of the
misteries of programming a realistic application in XPCE/Prolog.

The ``XPCE Reference Manual'' is organised to help you find definitions
from various viewpoints: the class, a method-name, the ``functional
group summary or the concept index.


@subsubheading This is a Generated Manual!

The ``XPCE Reference Manual'' is automatically generated from the online
reference manual available to XPCE/Prolog using the predicate manpce/0
or manpce/1.  The online manual is a hypertext system and does not
impose any particular ordering of the material.   This of course is
not possible for a paper version.  This manual is basically a sequence
of automatically generated class descriptions.  The order in which the
classes appear and the connecting descriptions between them is defined
in a set of template files.

To structure the behaviour of a class the notion of @b{``functional
group''} has been introduced.  Each method and variable of the system
is assigned a functional group.  The members of a functional group
may span multiple classes.  Methods and variables belong to a functional
group either because they cooperate to realise some functionality
or they perform similar functions.  These groups are designed such that
the set of members that belong to the same group and the same class is
always small enough to overview quickly.  This, together with the
chapter ``Summary of Functional Groups'' provides quick access to
related methods based on the function they perform.

There is a global list defining the order in which functional groups
appear in a class description.  The order in this list is based on the
global notion of ``common use''.  As the group list is global for all
classes, the order in which groups appear is the same for each class.
Consistency is preferred over the few conflicts with the ``common
use'' notion that result from this approach.


@subsubheading Structure of this Manual

Each chapter contains a number of related classes (Primitive Graphics,
Text Manipulation, ...) and generally starts with a short description on
the relation between the described classes.  Thus description is
followed by a full description of each class.

The description of a class consists of the inheritance path, possible
delegations, an overview of the class, a summary of instance variables
and finally a list of behaviour (instance variables, send- and get
methods.  Behaviour is grouped in ``functional groups''.  Members of
a functional group either cooperate to achieve a single (functional)
goal or perform conceptually related operations.   The methods inside
a functional group are ordered alphabetically.

At the end of this manual there are various indices.


@subheading (Re-)Generating this Manual

To regenerate this manual from the online documentation you need
XPCE/Prolog and TeX-3.  See @file{xpce/man/info}.
#end texinfo

