From: Aaron Sloman See text for reply address
Subject: Poplog RCLIB updated
Date: 
Message-ID: <7o5n9l$4sl$1@soapbox.cs.bham.ac.uk>
If anyone collected the RCLIB package from the FreePoplog directory
recently, I must apologise: changes I made a few months ago to protect
naive programmers from invoking complex callbacks in unsafe contexts
had bad effects on event handling, especially in sliders.

I have now fixed that and the revised package is in:

    ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/rc.tar.gz

It's all written in Pop-11, though as usual everything can be invoked
via Prolog, Common Lisp or ML. (It would be nice to have packaged
interfaces to RCLIB for those languages...)

The Pop-11 code (which still needs to be tidied up in places) and
documentation files are also browsable online, in

    ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/rclib/
        (with the usual auto/, lib/ teach/ help/ sub-directories.)

The
    rclib/help/rclib_news

file summarises the changes, though there's still work to be done in
documenting the revised event-handling mechanisms, especially in

    rclib/lib/rc_mousepic.p
    rclib/lib/rc_buttons.p

For anyone who doesn't know what I am talking about, the RCLIB
package, implemented in Pop-11 using the objectclass extension and
the Poplog X Widget set, enables creation of various kinds of control
panels, popup menus, sliders, text input fields, number input fields,
scrolling text panels, along with object oriented graphical facilities
for creating static or moving picture objects that can be made mouse or
keyboard sensitive. There's a graphical version of the old dumb-terminal
showtree, i.e. you can display trees in a graphic window instead of a
Ved window.

(None of this works in the PC windows95/98/NT version of Poplog, as it
requires the X window system.)

RCLIB has proved useful both in teaching elementary programming (writing
entertaining graphical programs is a good way to learn programming
techniques) see
    ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/rclib/teach/faces
        (starting around line 900)

and in more sophisticated projects.

The Propsheet library which is supplied with Poplog and provides the
"official" GUI tools for Poplog (See REF POP_UI), depends on Motif
libraries, and since many people have linux systems without motif I have
made RCLIB totally independent of Motif.

RCLIB is also much easier to change because so much of it is written in
Pop-11, and there are lots and lots of methods that can be redefined for
particular sub-classes.

It is based on the RC_GRAPHIC (Relative Coordinates, Graphic) library,
and therefore can be combined with other tools using RC_GRAPHIC, e.g.
David Young's RC_GRAPHPLOT utilities for plotting graphs of many kinds
and his popvision library, available in in

    ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/popvision.tar.gz

(I previously had a collection of Motif/Propsheet based libraries for
providing control panels to enable beginners to use the Ved editor
without having to memorise lots of commands. I shall shortly convert
that to work with RCLIB so that it is completely independent of Motif.)

The RCLIB package includes some demo libraries, e.g. a simplified
variant of Winograd's "language understanding" program SHRDLU, a
painting palette, a version of the game Connect4 implemented by a
Cognitive Science MSc student, and, in the sim_agent toolkit, a sheep
and sheepdog scenario using RCLIB (among other demos), also implemented
by a former MSc student.

Although RCLIB is all written in Pop-11, it can be linked to Prolog, or
Lisp or ML in the Poplog environment.

RCLIB gives far more control over layout, fonts, colours, etc. than
the Pop-11 Propsheet package although it does not (yet) include all
the Propsheet mechanisms, notably walking menus. (Offers of
implementation welcome: should be easy with rc_control_panel, now that
a panel can be a child of another panel.)

The text input, number input and scrolling text fields use a novel
interaction style: comments welcome.

Like everything else in the package this is easily extended or modified
by users at the Pop-11 level, e.g. if you wish to define a new response
to a particular function key or mouse event, you can do so by redefining
a method for your subclass.

The RCLIB sliders are not restricted to being horizontal or
vertical. You can specify arbitrary locations for both ends, and
also locations for attached labels and the panel showing the current
value. They are a subclass of the constrained_mover class which can
also be used to define circular sliders, or whatever.

You can use RCLIB for asynchronous control of programs, friendly user
interfaces, etc.

The compressed tar file is updated from time to time. I try to keep the
news file more or less up to date:

    ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/rclib/help/rclib_news


I have tried to make it completely independent of our local
pop-11 libraries at Birmingham but may have slipped up. Please let
me know if you try it out and find problems.

To get a feel for what's there look at the introductory tutorial
file

    ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/rclib/teach/rclib_demo.p

and the main overview help file

    ftp://ftp.cs.bham.ac.uk/pub/dist/poplog/rclib/help/rclib

If anyone is interested in writing interfaces to RCLIB from
Poplog Prolog, Poplog Common Lisp, or Poplog ML, please let me know.

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   (NB: Anti Spam address)
PAPERS: ftp://ftp.cs.bham.ac.uk/pub/groups/cog_affect/0-INDEX.html