5. The User Interface
5.1. Pie Menus
The mouse button functions and menu layouts were designed to facilitate
gestural interaction, to simulate the feel of tweaking and poking at real
live data structures.
There are several "pull out" pie
menus, that use the cursor distance from the menu center as an argument
to the selection.
The pie menu that pops up over
data objects has the commonly used functions "Push," "Exec,"
and "Paste" positioned in easily selected directions (up, down,
and left). Once you are familiar enough with the interface to "mouse
ahead" into the menus, with quick strokes of the mouse in the appropriate
direction, interaction can be very swift. [Callahan,
A Comparative Analysis of Pie Menu Performance] [Hopkins,
A Pie Menu Cookbook]
When you mouse ahead through a pie menu selection quickly enough, the menu
is not displayed, and the shape of a pac-man briefly flashes on the screen,
with its mouth pointing in the direction of the selected menu item. This
"mouse ahead display suppression" speeds up interaction considerably
by avoiding unnecessary menu display, and makes it practically impossible
for the casual observer to follow what is going on. The flashing pac-man
effect gives you some computationally inexpensive feedback of the menu selection,
and reassures observers that you are racking up lots of points.
5.2. Tab Windows
The objects on the deck are displayed in windows with labeled tabs sticking
out of them, showing the data type of the object. You can move an object
around by grabbing its tab with the mouse and dragging it. You can perform
direct stack manipulation, pushing it onto stack by dragging its tab onto
the spike, and changing its place on the stack by dragging it up and down
the spike. It implements a mutant form of "Snap-dragging", that
constrains non-vertical movement when an object is snapped onto the stack,
but allows you to pop it off by pulling it far enough away or lifting it
off the top. [Bier, Snap-dragging] The
menu that pops up over the tab lets you do things to the whole window, like
changing view characteristics, moving the tab around, repainting or recomputing
the layout, and printing the view.
Next section, 6. The Metacircular PostScript
Previous section, 4. Debugging Programs.
Back to contents.