Exclusives(3W) UNIX System V Exclusives(3W)
NAME
Exclusives - allows the end-user to select one of a set of choices
SYNOPSIS
#include <Intrinsic.h>
#include <StringDefs.h>
#include <OpenLook.h>
#include <Exclusives.h>
widget = XtCreateWidget(name, exclusivesWidgetClass, ...);
DESCRIPTION
The Exclusives widget provides a simple way to build a one-of-many button
selection object. It manages a set of rectangular buttons, providing
layout management.
Grid Layout and Button Labels
The Exclusives widget lays out the rectangular buttons in a grid in the
order they are added as child widgets by the application. The number of
rows or columns in this grid can be controlled by the application. If
the grid has more than one row, the Exclusives widget forces the buttons
in each column to be the same size as the widest in the column, and
forces their labels to be left-justified. (Note: If the grid has a
single row, each button will be only as wide as necessary to display the
label.)
Figure 1. Example of Exclusive Buttons
Selection Control-One Set
In one mode of operation (i.e, XtNnoneSet is FALSE), exactly one button
in an Exclusives widget must be "set" (i.e. the XtNset resource set to
TRUE). An error is generated if an Exclusives is configured with two or
more rectangular buttons set or with no button set. The Exclusives
widget maintains this condition by ensuring that when a button is set by
the user clicking SELECT over it, the button that was set is cleared and
its XtNunselect callbacks are invoked. However, clicking SELECT over a
button that was already set does nothing.
Selection Control-None Set
In the other mode of operation (i.e, XtNnoneSet is TRUE), at most one
button in an Exclusives widget can be set. An error is generated if an
Exclusives is configured with two or more rectangular buttons set, but
not if configured with no button set. The Exclusives widget maintains
this condition by ensuring that when a button is set by the user clicking
SELECT over it, or by the application programmer with the XtNset
resource, any button that was previously set is cleared. Also, clicking
SELECT over a button that was already set will unset it. Clearing a
button in either case invokes its XtNunselect callbacks.
Use in a Menu
The Exclusives widget can be added as a single child to a menu pane to
implement a one-of-many menu choice.
10/89 Page 1
Exclusives(3W) UNIX System V Exclusives(3W)
Child Constraint
The Exclusives widget constrains its child widgets to be of the class
rectButtonWidgetClass.
Exclusives Coloration
There is no explicit foreground or background in the Exclusives composite
widget; each rectangular button has its own coloration.
Keyboard Traversal
The Exclusives widget manages the traversal between a set of RectButtons.
When the user traverses to a Exclusives widget, the first RectButton in
the set will receive input focus. The MOVEUP, MOVEDOWN, MOVERIGHT, and
MOVELEFT keys move the input focus between the RectButtons. To traverse
out of the Exclusives widget, the following keys can be used:
- NEXT_FIELD moves to the next traversable widget in the window
- PREV_FIELD moves to the previous traversable widget in the window
- NEXTWINDOW moves to the next window in the application.
- PREVWINDOW moves to the previous window in the application.
- NEXTAPP moves to the first window in the next application.
- PREVAPP moves to the first window in the previous application.
The SELECTKEY acts as if the SELECT button had been clicked on the
RectButton with input focus. The MENUKEY acts as if the MENU button had
been clicked on the RectButton with input focus.
RESOURCES
_______________________________________________________________________________________
Exclusives Resource Set
_______________________________________________________________________________________
Name Class Type Default Access
_______________________________________________________________________________________
_______________________________________________________________________________________
XtNancestorSensitive XtCSenstitive Boolean TRUE G*
_______________________________________________________________________________________
XtNconsumeEvent XtCConsumeEvent XtCallbackList NULL SG
_______________________________________________________________________________________
XtNdepth XtCDepth int (parent's) GI
_______________________________________________________________________________________
XtNdestroyCallback XtCCallback XtCallbackList NULL SI
_______________________________________________________________________________________
XtNheight XtCHeight Dimension (calculated) SGI
_______________________________________________________________________________________
XtNlayoutType XtCLayoutType OlDefine OL_FIXEDROWS SGI
_______________________________________________________________________________________
XtNmappedWhenManaged XtCMappedWhenManaged Boolean TRUE SGI
_______________________________________________________________________________________
Page 2 10/89
Exclusives(3W) UNIX System V Exclusives(3W)
| XtNmeasure | XtCMeasure | int | 1 | SGI |
|_____________________|______________________|_________________|______________|________|
| XtNnoneSet | XtCNoneSet | Boolean | FALSE | SGI |
|_____________________|______________________|_________________|______________|________|
| XtNreferenceName | XtCReferenceName | String | NULL | GI |
|_____________________|______________________|_________________|______________|________|
| XtNreferenceWidget | XtCReferenceWidget | Widget | NULL | GI |
|_____________________|______________________|_________________|______________|________|
| XtNsensitive | XtCSensitive | Boolean | TRUE | GI* |
|_____________________|______________________|_________________|______________|________|
| XtNtraversalOn | XtCTraversalOn | Boolean | TRUE | SGI |
|_____________________|______________________|_________________|______________|________|
| XtNuserData | XtCUserData | XtPointer | NULL | SGI |
|_____________________|______________________|_________________|______________|________|
| XtNwidth | XtCWidth | Dimension | (calculated)| SGI |
|_____________________|______________________|_________________|______________|________|
| XtNx | XtCPosition | Position | 0 | SGI |
|_____________________|______________________|_________________|______________|________|
| XtNy | XtCPosition | Position | 0 | SGI |
|_____________________|______________________|_________________|______________|________|
XtNlayoutType
Range of Values:
OLFIXEDROWS/"fixedrows"
OLFIXEDCOLS/"fixedcols"
This resource controls the type of layout of the child widgets by the
Exclusives composite. The choices are to specify the number of rows or
the number of columns. Only one of these dimensions can be specified
directly; the other is determined by the number of child widgets added,
and will always be enough to show all the child widgets.
The values of the XtNlayoutType resource can be
OLFIXEDROWS if the layout should have a fixed number of rows;
OLFIXEDCOLS if the layout should have a fixed number of columns.
XtNmeasure
Range of Values:
0 < XtNmeasure
This resource gives the number of rows or columns in the layout of the
child widgets. If there are not enough child widgets to fill a row or
column, the remaining space is left blank. If there is only one row
(column), and it is not filled with child widgets, the remaining
``space'' is of zero width (height).
10/89 Page 3
Exclusives(3W) UNIX System V Exclusives(3W)
XtNnoneSet
Range of Values:
TRUE
FALSE
This resource controls whether the buttons controlled by the Exclusives
composite can be toggled into an unset mode directly. If set to FALSE,
at all times exactly one button must be set. Attempting to select the
currently set button does nothing. If set to TRUE, at all times no more
than one button can be set. However, the user can select the currently
set button again to toggle it back into an unset mode.
Page 4 10/89