'\"!  tbl | tbl | tbl | tbl | tbl | tbl | tbl | tbl | tbl | tbl | tbl | tbl | tbl | eqn | tbl | tbl | tbl | tbl | tbl | tbl | tbl | tbl | tbl | tbl | eqn | tbl | tbl | tbl | tbl | tbl | tbl | tbl | tbl | mmdoc
'\"macro stdmacro
.if n .pH g3w.olXclusives @(#)olxclusives	40.3 of 1/8/90
.SO BP.HEADER \" This header enables use of .BP macro for PostScript graphics
.ig
Modified by lmh 10/18/89
Modified by lmh 10/27/89
..
.ds cW EXCLUSIVES
.ds rW Exclusives
.ds nW Exclusives
.ds wW exclusives
.ds bW \fB\*(rW\fP
.ds iW \fI\*(rW\fP
.ds oS \*(cW
.nr oN 0
.nr X
.if \nX=0 .ds x} ""EXCLUSIVE SETTINGS WIDGET" 3W "\&"
.if \nX=1 .ds x} ""EXCLUSIVE SETTINGS WIDGET" 3W
.if \nX=2 .ds x} ""EXCLUSIVE SETTINGS "" "\&"
.if \nX=3 .ds x} ""EXCLUSIVE "" "" "\&"
.TH \*(x}
.SH "WIDGET CLASS NAME"
\*(bW
.SH "SYNOPSIS"
.nf
\s-1\f4#include <Intrinsic.h>
#include <StringDefs.h>
#include <OpenLook.h>
#include <\*(nW.h>\f1\s+1\f1
.fi
.P
.nf
\s-1\f4widget = XtCreateWidget(\f2name\f4, \*(wWWidgetClass, ...);\f1\s+1
.fi
.SH "DESCRIPTION"
The \*(bW widget provides a simple way to build a one-of-many
button selection object.
It manages a set of rectangular buttons,
providing layout management.
.sp .5
\f3Grid Layout and Button Labels\f1
.P
The \*(bW 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 \*(bW 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.)
.bp
.ne 3.5i
.BP PSART/ps.excl1
.P
.ce
\f3Figure 1.\f1  Example of Exclusive Buttons
.bp
\f3Selection Control\(emOne Set\f1
.sp .5
In one mode of operation (i.e, \f4XtNnoneSet\f1 is FALSE),
exactly one button in an \*(bW widget must be "set"
(i.e. the
\f4XtNset\f1
resource set to
\f4TRUE\f1).
An error is generated if an \*(bW is configured with two or more
rectangular buttons set or with no button set.
The \*(bW 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
\f4XtNunselect\f1
callbacks are invoked.
However,
clicking SELECT over a button that was already set does
nothing.
.sp .5
\f3Selection Control\(emNone Set\f1
.sp .5
In the other mode of operation (i.e, \f4XtNnoneSet\f1 is TRUE),
at most one button in an \*(bW widget can be set.
An error is generated if an \*(bW is configured with two or more
rectangular buttons set, but not if configured with no button set.
The \*(bW widget maintains this condition by ensuring that when
a button is set by the user clicking SELECT over it,
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
\f4XtNunselect\f1
callbacks.
.P
.bp
\f3Use in a Menu\f1
.P
The \*(bW widget can be added as a single child to a menu pane
to implement a one-of-many menu choice.
.sp .5
\f3Child Constraint\f1
.P
The \*(bW widget constrains its child widgets to be of
the class
\f3rectButtonWidgetClass\f1.
.sp .5
\f3\*(rW Coloration\f1
.P
There is no explicit foreground or background in the \*(bW
composite widget; each rectangular button has its own
coloration.
.sp .5
.SH "RESOURCES"
.TS 
allbox;
cB s s s s
lBp-2 lBp-2 lBp-2 lBp-2 lBp-2
lp-2 lp-2 lp-2 lp-2 lp-2.
\*(bW Resource Set
Name	Class	Type	Default	Access
_
.TH
XtNancestorSensitive	XtCSenstitive	Boolean	TRUE	G*
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
XtNmeasure	XtCMeasure	int	1	SGI
XtNnoneSet	XtCNoneSet	Boolean	FALSE	SGI
XtNsensitive	XtCSensitive	Boolean	TRUE	GI*
XtNuserData	XtCUserData	XtPointer	NULL	SGI
XtNwidth	XtCWidth	Dimension	(calculated)	SGI
XtNx	XtCPosition	Position	0	SGI
XtNy	XtCPosition	Position	0	SGI
.TE
.bp
.sp
\f3XtNlayoutType\f1
.PP
Range of Values:
.br
.in +5
.nf
\f4OL_FIXEDROWS/"fixedrows"
OL_FIXEDCOLS/"fixedcols"\f1
.in -5
.fi
.PP
This resource controls the type of layout of the child widgets
by the \*(bW 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.
.P
The values of the
\f4XtNlayoutType\f1
resource can be
.IP \f4OL_FIXEDROWS\f1 15
.sp -1
if the layout should have a fixed number of rows;
.IP \f4OL_FIXEDCOLS\f1 15
.sp -1
if the layout should have a fixed number of columns.
.P
.sp 
\f3XtNmeasure\f1
.PP
Range of Values:
.br
.in +5
\f40 < XtNmeasure\f1
.in -5
.P
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).
.sp
\f3XtNnoneSet\f1
.PP
Range of Values:
.br
.in +5
.nf
\f4TRUE
FALSE\f1
.in -5
.fi
.PP
This resource controls whether the buttons controlled by the
\*(bW composite can be toggled into an unset mode directly.
If set to
\f4FALSE\f1,
at all times exactly one button must be set.
Attempting to select the currently set button does nothing.
If set to
\f4TRUE\f1,
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.
.P
