Menus
The Athena widget set provides support for single paned non-hierarchical
popup and pulldown menus. Since menus are such a common user interface
tool, support for them must be provided in even the most basic widget
sets. In menuing as in other areas, the Athena Widget Set provides only
basic functionality.
Menus in the Athena widget set are implemented as a menu container (the
SimpleMenu widget) and a collection of objects that comprise the
menu entries. The SimpleMenu widget is itself a direct subclass of the
OverrideShell widget class, so no other shell is necessary when
creating a menu. The managed children of a SimpleMenu must be
subclasses of the Sme (Simple Menu Entry) object.
The Athena widget set provides three classes of Sme objects that may be
used to build menus.
Sme
The base class of all menu entries. It may be used as a menu entry
itself to provide blank space in a menu. "Sme" means "Simple Menu
Entry."
SmeBSB
This menu entry provides a selectable entry containing a text string.
A bitmap may also be placed in the left and right margins. "BSB" means
"Bitmap String Bitmap."
SmeLine
This menu entry provides an unselectable entry containing a separator line.
The SimpleMenu widget informs the window manager that it should ignore
its window by setting the Override Redirect flag. This is the
correct behavior for the press-drag-release style of menu operation. If
click-move-click or "pinable" menus are desired it is the
responsibility of the application programmer, using the SimpleMenu
resources, to inform the window manager of the menu.
To allow easy creation of pulldown menus, a MenuButton widget is
also provided as part of the Athena widget set.