2010-10-31 05:31:11 -06:00
|
|
|
<chapter id="menus">
|
|
|
|
<title>Menus</title>
|
|
|
|
<para>
|
2010-04-23 13:37:47 -06:00
|
|
|
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.
|
2010-10-31 05:31:11 -06:00
|
|
|
</para>
|
|
|
|
<para>
|
2010-04-23 13:37:47 -06:00
|
|
|
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.
|
2010-10-31 05:31:11 -06:00
|
|
|
</para>
|
|
|
|
<para>
|
2010-04-23 13:37:47 -06:00
|
|
|
The Athena widget set provides three classes of Sme objects that may be
|
|
|
|
used to build menus.
|
2010-10-31 05:31:11 -06:00
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
<variablelist>
|
|
|
|
<varlistentry>
|
|
|
|
<term>Sme</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-04-23 13:37:47 -06:00
|
|
|
The base class of all menu entries. It may be used as a menu entry
|
2010-10-31 05:31:11 -06:00
|
|
|
itself to provide blank space in a menu. "Sme" means "Simple Menu
|
|
|
|
Entry."
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
|
|
<term>SmeBSB</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-04-23 13:37:47 -06:00
|
|
|
This menu entry provides a selectable entry containing a text string.
|
2010-10-31 05:31:11 -06:00
|
|
|
A bitmap may also be placed in the left and right margins. "BSB" means
|
|
|
|
"Bitmap String Bitmap."
|
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
|
|
<term>SmeLine</term>
|
|
|
|
<listitem>
|
|
|
|
<para>
|
2010-04-23 13:37:47 -06:00
|
|
|
This menu entry provides an unselectable entry containing a separator line.
|
2010-10-31 05:31:11 -06:00
|
|
|
</para>
|
|
|
|
</listitem>
|
|
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
</para>
|
|
|
|
<para>
|
2010-04-23 13:37:47 -06:00
|
|
|
The SimpleMenu widget informs the window manager that it should ignore
|
2010-10-31 05:31:11 -06:00
|
|
|
its window by setting the <function>Override Redirect</function> flag. This is the
|
2010-04-23 13:37:47 -06:00
|
|
|
correct behavior for the press-drag-release style of menu operation. If
|
2010-10-31 05:31:11 -06:00
|
|
|
click-move-click or "pinable" menus are desired it is the
|
2010-04-23 13:37:47 -06:00
|
|
|
responsibility of the application programmer, using the SimpleMenu
|
|
|
|
resources, to inform the window manager of the menu.
|
2010-10-31 05:31:11 -06:00
|
|
|
</para>
|
|
|
|
<para>
|
2010-04-23 13:37:47 -06:00
|
|
|
To allow easy creation of pulldown menus, a MenuButton widget is
|
|
|
|
also provided as part of the Athena widget set.
|
2010-10-31 05:31:11 -06:00
|
|
|
</para>
|
|
|
|
<sect1 id="Using_the_Menus">
|
|
|
|
<title>Using the Menus</title>
|
|
|
|
<!-- .XS -->
|
|
|
|
<!-- Using the Menus -->
|
|
|
|
<!-- .XE -->
|
|
|
|
<!-- .IN "Menus" "using" -->
|
|
|
|
<para>
|
|
|
|
<!-- .LP -->
|
2010-04-23 13:37:47 -06:00
|
|
|
The default configuration for the menus is press-drag-release.
|
|
|
|
The menus will typically be
|
|
|
|
activated by clicking a pointer button while the pointer is over a
|
|
|
|
MenuButton, causing the menu to appear in a fixed location relative to
|
2010-10-31 05:31:11 -06:00
|
|
|
that button; this is a <function>pulldown</function> menu. Menus may also be activated
|
|
|
|
<!-- .IN "Menus" "pulldown" -->
|
2010-04-23 13:37:47 -06:00
|
|
|
when a specific pointer and/or key sequence is used anywhere in the
|
2010-10-31 05:31:11 -06:00
|
|
|
application; this is a <function>popup</function> menu (e.g. clicking Ctrl-<pointer
|
|
|
|
<!-- .IN "Menus" "popup" -->
|
|
|
|
button 1> in the common application <function>xterm</function>). In this
|
2010-04-23 13:37:47 -06:00
|
|
|
case the menu should be positioned under
|
|
|
|
the cursor. Typically menus will be placed so the pointer cursor is on
|
|
|
|
the first menu entry, or the last entry selected by the user.
|
2010-10-31 05:31:11 -06:00
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
<!-- .LP -->
|
2010-04-23 13:37:47 -06:00
|
|
|
The menu remains on the screen as long as the pointer button is held
|
|
|
|
down. Moving the pointer will highlight different menu items.
|
|
|
|
If the pointer leaves the menu, or moves over an entry that cannot
|
|
|
|
be selected then no menu entry will highlighted. When the desired menu
|
|
|
|
entry has been highlighted, releasing the pointer button removes the menu,
|
|
|
|
and causes any mechanism associated with this entry to be invoked.
|
2010-10-31 05:31:11 -06:00
|
|
|
|
|
|
|
</para>
|
|
|
|
</sect1>
|
|
|
|
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="Sme.xml"/>
|
|
|
|
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="SmeBSB.xml"/>
|
|
|
|
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="SmeLine.xml"/>
|
|
|
|
</chapter>
|