XPIP(1) V2.2 XPIP(1)
12 APRIL 1999
NAME
xpip - XPIP X widget
SYNOPSIS
xpip
DESCRIPTION
The X Portable Interface Package (XPIP) is a development tool which
allows application programmers to quickly construct graphical user
interfaces (GUIs) in an X Windows environment. The interface takes the
form of a series of user-definable "widgets" - buttons, sliders,
dials, etc. - which applications employ for varying parameters,
control flow, input/output, and other alterable processes. Although
not nearly as comprehensive as several commercial and other freeware
GUI packages such as xtoolkit and TKL/TK, XPIP provides a balance
between ease of use and sophistication which make it appealing for the
more casual programmer. A thorough reading of this brief manual should
allow anyone with C experience and a basic knowledge of X Windows
libraries to construct interactive graphics routines. Any color X
Windows system should support XPIP.
A predecessor to XPIP, the PIP system, was originally developed to aid
in the development of stimuli for visual psychophysical experiments at
Boston University's Department of Cognitive and Neural Systems. The
vastly improved XPIP has since been used for interactive simulation of
dynamic systems, control of multi-parameter simulations, animation of
time-series data, and a variety of other applications. The source code
and documentation to XPIP are freely distributed by Enkidu Research,
Inc.
The XPIP system consists of an unalterable library of routines,
combined with a single user-modified "buffer" file which provides the
system with access to application-specific routines. In addition, at
run-time a number of additional files are loaded to specify the
general structure of the interface as well as the specific layout and
appearance of widgets on the screen. Unlike other interface packages,
such as xtoolkit, XPIP widgets are not designed to be completely
transparent to the application programmer. A variety of routines are
provided to allow the user direct access to the internal data fields
of each widget, while still maintaining some degree of information
hiding. In addition, the experienced programmer may choose to directly
manipulate widget data fields. An XPIP application is divided into a
series of panels, each of which contains a set of widgets (or
controls). Any number of panels may appear on the screen at one time.
The widgets of each panel are defined in a .if file, with the
particular filename(s) provided in the parameter definition file,
xpip.cf. The xpip.cf file is not only used to specify where to look
for widget definitions, but also for defining default widget
parameters (\g, colors, fonts, and sizes) and initial position of the
interface window - elements which we will discuss later on. Each .if
file includes a list of widgets, including their types and locations,
- 1 - Formatted: December 17, 2025
XPIP(1) V2.2 XPIP(1)
12 APRIL 1999
other generic parameters shared by all widgets, such as colors, fonts,
and sizes, and widget-specific parameters, such as whether or not to
display tick marks on a slider widget. Note that each widget is
supplied with a complete set of default values (redefinable via
special xpip.cf and .if commands), so the user need not specify all
parameters for all widgets. Since XPIP reads in xpip.cf and the .if
files at run-time, modifying the look and feel of the widgets is a
quick and simple process. The flexibility of the widgets provides a
wide range of customization options to the application programmer.
After loading all the default window and widget specifications, XPIP
proceeds to call on user-defined routines to perform such functions as
application initialization, panel initialization, panel execution (in
response to widget events), and panel shutdown - as indicated by the
large dotted box in the figure. XPIP must assume a certain set of
procedure names for these specific functions. The buffer.c (examples
of which appear in the demo and demo2 directories) file contains these
default procedures, which the user modifies to call his or her own
procedures to accomplish the appropriate functions. Although these
user-defined routines typically follow a general procedural template,
there are no strict constraints on what actions the application
performs within these routines. Typically, the application returns
control to XPIP when it has performed the necessary functions and
updates. XPIP operates in a control loop, waiting for new widget
events and/or events indicating that no widget has been selected
within a timeout interval. Control is passed back to the application
only when one of these events has occurred. The application handles
the task of determining what event has occurred, although XPIP
provides a number of tools for facilitating this process.
Working with XPIP requires that the programmer understand six basic
aspects of the system:
widget definitions in .if files
XPIP command line options
default definitions in xpip.cf
global XPIP widget and window structures
XPIP/application interface procedures and protocol
XPIP dialog panels
The following sections detail each of these areas, with references
where appropriate to the demonstration applications provided with the
XPIP distribution. Quick reference summary sheets for some of these
topics are also provided with this documentation packet. Before
progressing onto these six topics, however, we discuss the classes of
widgets available within XPIP and how the user interacts with widgets.
OVERVIEW
The SciPlot Widget is a widget capable of plotting cartesian or polar
graphs, including logarithmic axes in cartesian plots. The widget is
- 2 - Formatted: December 17, 2025
XPIP(1) V2.2 XPIP(1)
12 APRIL 1999
subclassed directly from the Core widget class, which means that it
does not depend upon any other widget set. It may be freely used with
Athena, Motif, or the Open Look/Xview widget sets. (There is optional
Motif support that causes the widget to be subclassed from
XmPrimitive.
PROGRAM AUTHOR
Gregory W. Lesher, lesher@cns.bu.edu
MORE INFORMATION
See "http://cns-web.bu.edu/pub/xpip/html/xpip_manual.html"
MAN PAGE
Mehdi Lavasani <lavasani@csc.liv.ac.uk>
- 3 - Formatted: December 17, 2025