Resources, in the new sense of the word is data that is required by an application but cannot be expressed easily as program-code. Examples are image-files, help-files, and other files using non-Prolog syntax. Such files are declared by defining clauses for the predicate resource/3:
Name refers to the logical name of the resource, which is
interpreted locally for a Prolog module. Declarations in the module
user are visible as defaults from all other modules.
Class defines the type of object to be expected in the file.
Right now, they provide an additional name-space for resources. PathSpec
is a file specification as acceptable to absolute_file_name/[2,3].
Resources can be handled both from Prolog as for XPCE. From Prolog, this is achieved using open_resource/3:
The predicate open_resource/3 first checks resource/3. If successful it will open the returned resource source-file. Otherwise it will look in the programs resource database. When creating a saved-state, the system saves the resource contents into the resource archive, but does not save the resource clauses.
This way, the development environment uses the files (and modifications to the resource/3 declarations and/or files containing resource info thus immediately affect the running environment, while the runtime system quickly accesses the system resources.
From XPCE, resources are accessed using the class resource, which is located next to file below the common data-representation class source_sink. Many of the methods that require data accept instances of source_sink, making resources a suitable candidate.
Below is the preferred way to specify and use an icon.
resource(my_icon, image, image('my_icon.xpm')). ..., send(Button, label, image(resource(my_icon))), ...,
The directive pce_image_directory/1
adds the provided directory to the search-path for images (represented
in the class-variable
image.path), as well as to the image/1 definition of file_search_path/2.
Please note that MS-Windows formatted image files can currently not
be loaded through resource
objects. The Windows API only provides functions to extract these
objects from a single file, or nested as Windows resources in a
Right now, it is advised to translate the images into
format using the following simple command:
?- send(image('myicon.ico'), save, 'myicon,xpm', xpm).
This transformation is complete as the
.XPM image format
covers all aspects of the Microsoft image formats. For further details
on image formats and manipulation, see section