 
 
 
 
 
 
- note-1
- 
Normal applications use almost exclusively XPCE 
generated references. Many of the examples in this manual are typed from 
the terminal and Prolog specified references are easier to type.
- note-2
- 
The attributes of an object state are called slots. In other languages 
they may be called instance variables or fields.
- note-3
- 
Prolog would normally print `@display'. 
The library(pce_portray)defines a clause for the Prolog 
predicate portray/1 that prints 
object references as `@Reference/Class'. 
This library is used throughout all the examples of this manual.
- note-4
- 
Initial versions of XPCE lacked the obtainer. In 
this case the browser B would be passed to the predicate view/1, 
which would extract the current filename from the browser. Obtainers 
improve the readability and avoid the need to mix UI related code with 
application code.
- note-5
- 
This conversion is implemented with class dict_item. 
In fact, the browser just specifies the desired type and the message 
passing kernel invokes the conversion method of class dict_item.
- note-6
- 
Given the dynamic nature of delegation, the system cannot possibly 
determine all methods available through delegation. Consider a slot 
specified with type graphical. 
The system can infer it will surely be able to use behaviour defined at 
class graphical. If at 
runtime, the slot is filled with a box, 
all methods defined at class box will be available too.
- note-7
- 
This example uses XPCE user-defined classes. The 
details of this mechanism do not matter for the argument in this 
section. User-defined classes are described in chapter 
7.
- note-8
- 
XPCE defines four implementation techniques for 
methods. C-function pointers are used for almost all the 
built-in behaviour. C++-function pointers are used when classes 
are defined in C++ (Wielemaker & 
Anjewierden, 1994) . Instances of c_pointer 
are left to the host object for interpretation and finally, code 
objects are executed.
- note-9
- 
Value must be an int, name or constant 
in the current implementation.
- note-10
- 
To facilitate the translation of old code, the construct :- send(@class, 
... is treated automatically as if it was embedded using pce_class_directive/1
- note-11
- 
On Windows systems, ~expands to\%HOME\%,\%USERPROFILE\%,\%HOMEDRIVE\%/\%HOMEPATH\%or the root of the current drive. See expand_file_name/2 
of the SWI-Prolog manual.
- note-12
- 
See section 8 for the default syntax.
- note-13
- 
Attach a drag_and_drop_dict_item_gesture to a list_browser 
to enable dragging the items in the dictionary
- note-14
- 
Using the Unix/X11 version XPCE can manage windows 
on multiple desktops. For MS-Windows users this is not supported.
- note-15
- 
To remember this sequence: V for Visual and all defined modifiers 
to avoid a conflict with application defined key-bindings.
- note-16
- 
We will mix the terms instance and object freely in 
this document. They are considered synonyms.
- note-17
- 
Class class is an instance of itself. In other systems (SmallTalk, Goldberg & 
Robson, 1983), classes are instances of a meta-class. 
Yet in other systems, classes have a completely different status (for 
example widgets in the X11 Intrinsics)
- note-18
- 
Multiple inheritance introduces various technical and conceptual 
problems. XPCE uses delegation and templates to 
achieve similar results. This is explained in section 
C.4 and section 7.5.2.1.
- note-19
- 
PCE assumes the object has become a support object. This is 
generally not correct for code objects. Class code 
therefore has `class<-un_answer: @off', 
which implies that objects that fill a slot of a code object will not 
loose their `answer' status.
- note-20
- 
A `ground' term is a Prolog term that has no unbound variables.
- note-21
- 
Colour screens create their colour by mixing the `primary' colours 
`red', `green' and `blue'. With an `RBG' triple, we refer to a triple of 
three numeric values representing the intensities of the three primary 
colours