[Date Prev] [Date Next] [Thread Prev] [Thread Next] Date Index Thread Index Search archive:
Date:Mon Jun 28 07:46:17 2000 
Subject:"Dials" extension to RCLIB graphic/GUI tools in Poplog 
From:Aaron Sloman See text for reply address 
Volume-ID:1000628.01 

[To reply replace "Aaron.Sloman.XX" with "A.Sloman"]

I've added a draft incomplete experimental library with support for
dials with moving pointers to the existing RCLIB GUI package in Poplog.
The new library has been added to the Free Poplog web/ftp site, in a
draft experimental form, inviting comments.

Although RCLIB is implemented in Pop-11, its utilities can be
accessed via other Poplog languages through their interfaces to
Pop-11, e.g. Prolog, Common Lisp, Standard ML. I will not have time
to develop specific RCLIB interface libraries for those other
languages, but I welcome offers from anyone who wishes to.

The new dials have the unusual(?) feature that they behave a little like
sliders (also available in RCLIB). The dial will not only display
changes in some internal state: it is also possible to use the mouse to
change the dial and that will change an internal state, e.g. the value
of a variable, that a program can react to.

BACKGROUND

As previously announced, the Poplog system, with incremental compilers
for Pop-11, Prolog, Common Lisp and Standard ML is available free of
charge with full system sources and masses of documentation and
AI teaching material here:
    http://www.cs.bham.ac.uk/research/poplog/freepoplog.html
or
    ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/freepoplog.html

(By courtesy of the University of Sussex and ISL/SPSS)

(There's also a Scheme in Poplog developed by Robin Popplestone and used
for teaching at Umass.)

The Poplog system comes with a comprehensive collection of libraries for
interfacing to the X window system at various levels, including support
for Motif widgets. It also includes the Poplog Widget set, a collection
of C libraries that can be invoked from Pop-11 and therefore also from
the other Poplog languages. These provide access to X facilities
independent of motif. There's a Pop-11 library called rc_graphic
providing graphical tools using "relative coordinates".

RCLIB

For several years I have been adding to rc_graphic and the X
utilities an object oriented package called RCLIB which provides a
wide variety of tools for building graphical interfaces (including
tools used in my sim_agent toolkit for exploring agent
architectures). This package is also available from the free poplog
site. It does not make any use of motif and therefore can be used
with linux poplog without requiring motif or lesstif.

RCLIB makes heavy use of the Objectlass extension to Pop-11,
designed by Steve Leach, which makes it easy to design classes and
mixins, with sub-classes, sub-mixins etc. that are combinable with
various kinds of functionality using inherited methods. An overview
is in
    http://www.cs.bham.ac.uk/research/poplog/rclib/help/rclib

RCLIB News
    http://www.cs.bham.ac.uk/research/poplog/rclib/help/rclib_news


DIALS WITH MOVING POINTERS

RCLIB has recently been extended in various ways, including a draft
mechanism for creating dials with movable pointers where program
changes can cause the pointer to move and using the mouse to move
the pointer can cause program changes. A first draft implementation
of this is now available as part of the rclib package, and I welcome
comments and suggestions for improvements.

If you fetch and install the package as $poplocal/local/rclib, then
compile $poplocal/local/rclib/rclib.p you can do, in VED
    ENTER teach rc_constrained_pointer

which introduces this creator procedure
rc_constrained_pointer(
    x, y, orient, minang, maxang, len, width colour, bg) -> pointer;

The pointer (moving coloured pointer on a coloured background which
is a sector of a circle) can be given procedures for converting
between the stored angle and some stored value, as it inherits from
rc_informant described in HELP rclib.

It can also have an associated Pop-11 word or identifier whose value
is set whenever the pointer changes, and it can have reactor
procedures that link it to other GUI devices, e.g. rc_sliders, and
other user programs.

A dial can have any orientation and the background is not restricted
to being circular or semi-circular: any sector of a circle can be
used, as required to accommodate minang and maxang.

Planned extensions will include improved syntax for defining dials
conveniently (e.g. with converters and associated identifiers
specified), support for putting labels and tick marks on the dials
(which users can do now anyway using rc_graphic facilities) and also
extending the rc_control_panel library, described in

    http://www.cs.bham.ac.uk/research/poplog/rclib/help/rc_control_panel

which takes a high level description of a control panel with
buttons, sliders, etc. and generates one that is automatically
formatted, subject to (simple) constraints provided in the
specification. This does not yet support the new dials, but will do
fairly soon.

Another recent change is a new class of "opaque" movable picture
object which overcome some of the oddities associated with using Xor
(or Equiv) for displaying movable objects. The new movable objects
are suitable for use where it is known that the background over
which they move is all of one colour.

These and other changes are recorded in

    http://www.cs.bham.ac.uk/research/poplog/rclib/help/rclib_news
the new facilities are introduced briefly in

http://www.cs.bham.ac.uk/research/poplog/rclib/teach/rc_constrained_pointer

An overview of RCLIB is in
    http://www.cs.bham.ac.uk/research/poplog/rclib/help/rclib
with code examples in
    http://www.cs.bham.ac.uk/research/poplog/rclib/teach/rclib_demo.p
and various other help and teach files in the rclib library

The whole package, with lots of documentation, can be fetched in
    http://www.cs.bham.ac.uk/research/poplog/rclib.tar.gz
    ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/rclib.tar.gz

There is also a package, built on top of rclib, and also motif-free,
which provides a collection of pre-built extendable autoloadable
menu panels for driving the editor and Pop-11 available in

    http://www.cs.bham.ac.uk/research/poplog/rcmenu.tar.gz
    ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/rcmenu.tar.gz

RCLIB provides the graphical interface tools for the sim_agent
toolkit. described in this postscript/pdf slide presentation

    http://www.cs.bham.ac.uk/~axs/misc/draft/toolkit.ps
    http://www.cs.bham.ac.uk/~axs/misc/draft/toolkit.pdf

or here
    http://www.cs.bham.ac.uk/~axs/cog_affect/sim_agent.html

I particularly welcome criticisms, comments suggestions. I am going
away to a conference and will not be back till Sunday night.

Aaron
===
Aaron Sloman, ( http://www.cs.bham.ac.uk/~axs/ )
School of Computer Science, The University of Birmingham, B15 2TT, UK
EMAIL A.Sloman AT cs.bham.ac.uk   (ReadATas@please !)
PAPERS: http://www.cs.bham.ac.uk/research/cogaff/
TOOLS: http://www.cs.bham.ac.uk/research/poplog/freepoplog.html