Pam (Python Interface to Amulet)
Pam provides an interactive, interpreted interface to the
Amulet
graphical interface development environment. Using Pam, one can
rapidly prototype applications by creating graphical objects and
callback procedures in
Python,
and then using Amulet as a backend
for displaying the graphical objects and calling the Python callback
procedures. For simplicity, Python only supports a subset of Amulet,
although we believe that it is the subset used the great majority of
the time.
Design
Like Amulet, Pam is designed to offer a number of features supporting
the construction of interactive, graphical applications, including:
- Constraints: Pam allows formulas containing arbitrary Python
code to be attached to the instance variables of a Pam object. These
formulas may depend on other Pam instance variables and will be
reevaluated automatically when any of these variables change value.
- Objects Supporting Inheritance of Default Values: Pam
provides a basic, non-graphical object that supports the
inheritance of constraints and default values for instance
variables.
- Graphical Objects: Pam provides a variety of 2D graphical objects,
such as windows, rectangles, lines, and text. Each of these objects
provides a set of properties that can be altered by modifying the
appropriate instance variables.
- Grouping Mechanism: Pam provides a grouping class that allows
a programmer to construct more complex objects from the primitive
graphical objects that Pam provides. Pam also supports the automatic
inheritance of the parts of a group when an instance of a grouping
object is created. For example, a programmer could construct an
arrow by creating a grouping object with a line and a polyline. When
an instance of the arrow was created, instances of a line and a
polyline would also be created automatically.
- Automatic Redisplay: Pam automatically updates the display when
an application or programmer changes the properties of a
graphical object. Pam supports layered graphics, so graphics
that cover or are covered by the changed graphical objects
will be redrawn as well.
- Behavior Model: Pam supports Amulet's interactor behavior model.
Behaviors are categorized into a few types, such as text, choice,
and move/grow. Each behavior is implemented by an appropriate class.
Like graphical objects, behavior objects have properties that may
be modified in order to customize the behavior.
- Motif Widgets: Pam provides access to Amulet's implemented set
of Motif widgets. Each widget is implemented as a class, and like
graphical and behavioral objects, widgets can be customized by setting
appropriate instance variables.
Availability
Pam is public domain software and may be
downloaded.
Pam is distributed
using the GNU General Public License.
Thus far, Pam has been successfully installed under SunOs 4.1.4 and
Solaris 5.5.1
using g++ version 2.7.2.1, Python 1.4, and Amulet 3.0. Since Python
and Amulet both run under other versions of Unix, and on the Windows and
Macintosh operating systems, it is possible that Pam will run in these
other environments as well. Feel free to try to make Pam run in these
environments and if you succeed, please email the installation instructions
to Brad Vander Zanden (bvz@cs.utk.edu).
Funding
This project is being supported by the
National
Science Foundation under Grant No. CCR-9633624.
Alumni