XmDrawnButton(library call) XmDrawnButton(library call)
NAME
XmDrawnButton -- The DrawnButton widget class
SYNOPSIS
#include <Xm/DrawnB.h>
DESCRIPTION
The DrawnButton widget consists of an empty widget window surrounded
by a shadow border. It provides the application developer with a
graphics area that can have PushButton input semantics.
Callback types are defined for widget exposure and widget resize to
allow the application to redraw or reposition its graphics. If the
DrawnButton widget has a highlight and shadow thickness, the
application should not draw in that area. To avoid drawing in the
highlight and shadow area, create the graphics context with a
clipping rectangle for drawing in the widget. The clipping rectangle
should take into account the size of the widget's highlight thickness
and shadow. DrawnButton uses the
XmQTmenuSystem and
XmQTspecifyRenderTable traits, and holds the
XmQTactivatable trait.
Classes
DrawnButton inherits behavior, resources, and traits from the
Core,
Primitive, and
XmLabel classes.
The class pointer is
xmDrawnButtonWidgetClass.
The class name is
XmDrawnButton.
New Resources
The following table defines a set of widget resources used by the
programmer to specify data. The programmer can also set the resource
values for the inherited classes to set attributes for this widget.
To reference a resource by name or by class in a
.Xdefaults file,
remove the
XmN or
XmC prefix and use the remaining letters. To
specify one of the defined values for a resource in a
.Xdefaults file, remove the
Xm prefix and use the remaining letters (in either
lowercase or uppercase, but include any underscores between words).
The codes in the access column indicate if the given resource can be
set at creation time (C), set by using
XtSetValues (S), retrieved by
using
XtGetValues (G), or is not applicable (N/A).
+-------------------------------------------------------------------------------------------+
|
XmDrawnButton Resource Set |
|
Name |
Class |
Type |
Default |
Access |
+---------------------+----------------------+----------------+--------------------+--------+
|XmNactivateCallback | XmCCallback | XtCallbackList | NULL | C |
+---------------------+----------------------+----------------+--------------------+--------+
|XmNarmCallback | XmCCallback | XtCallbackList | NULL | C |
+---------------------+----------------------+----------------+--------------------+--------+
|XmNdisarmCallback | XmCCallback | XtCallbackList | NULL | C |
+---------------------+----------------------+----------------+--------------------+--------+
|XmNexposeCallback | XmCCallback | XtCallbackList | NULL | C |
+---------------------+----------------------+----------------+--------------------+--------+
|XmNmultiClick | XmCMultiClick | unsigned char | dynamic | CSG |
+---------------------+----------------------+----------------+--------------------+--------+
|XmNpushButtonEnabled | XmCPushButtonEnabled | Boolean | False | CSG |
+---------------------+----------------------+----------------+--------------------+--------+
|XmNresizeCallback | XmCCallback | XtCallbackList | NULL | C |
+---------------------+----------------------+----------------+--------------------+--------+
|XmNshadowType | XmCShadowType | unsigned char | XmSHADOW_ETCHED_IN | CSG |
+---------------------+----------------------+----------------+--------------------+--------+
+---------------------+----------------------+----------------+--------------------+--------+
XmNactivateCallback Specifies the list of callbacks that is called when the
widget becomes selected. The reason sent by the callback
is
XmCR_ACTIVATE. This callback uses the
XmQTactivatable trait.
XmNarmCallback Specifies the list of callbacks that is called when the
widget becomes armed. The reason sent by the callback is
XmCR_ARM.
XmNdisarmCallback Specifies the list of callbacks that is called when the
widget becomes disarmed. The reason sent by the callback
is
XmCR_DISARM.
XmNexposeCallback Specifies the list of callbacks that is called when the
widget receives an exposure event. The reason sent by the
callback is
XmCR_EXPOSE.
XmNmultiClick If a button click is followed by another button click
within the time span specified by the display's multiclick
time, and this resource is set to
XmMULTICLICK_DISCARD, the
second click is not processed. If this resource is set to
XmMULTICLICK_KEEP, the event is processed and
click_count is incremented in the callback structure. When the button
is not in a menu, the default value is
XmMULTICLICK_KEEP.
XmNpushButtonEnabled Enables or disables the 3-dimensional shadow drawing as in
PushButton.
XmNresizeCallback Specifies the list of callbacks that is called when the
widget receives a resize event. The reason sent by the
callback is
XmCR_RESIZE. The event returned for this
callback is NULL.
XmNshadowType Describes the drawing style for the DrawnButton. This
resource can have the following values:
XmSHADOW_IN Draws the DrawnButton so that the shadow appears
inset. This means that the bottom shadow visuals
and top shadow visuals are reversed.
XmSHADOW_OUT Draws the DrawnButton so that the shadow appears
outset.
XmSHADOW_ETCHED_IN Draws the DrawnButton using a double line. This
gives the effect of a line etched into the
window. The thickness of the double line is equal
to the value of
XmNshadowThickness.
XmSHADOW_ETCHED_OUT Draws the DrawnButton using a double line. This
gives the effect of a line coming out of the
window. The thickness of the double line is equal
to the value of
XmNshadowThickness.
Inherited Resources
DrawnButton inherits behavior and resources from the superclasses
described in the following tables. For a complete description of
each resource, refer to the reference page for that superclass.
+------------------------------------------------------------------------------------------------------------+
|
XmLabel Resource Set |
|
Name |
Class |
Type |
Default |
Access |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNaccelerator | XmCAccelerator | String | NULL | N/A |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNacceleratorText | XmCAcceleratorText | XmString | NULL | N/A |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNalignment | XmCAlignment | unsigned char | dynamic | CSG |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNfontList | XmCFontList | XmFontList | dynamic | CSG |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNlabelInsensitivePixmap | XmCLabelInsensitivePixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNlabelPixmap | XmCLabelPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNlabelString | XmCXmString | XmString | "\0" | CSG |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNlabelType | XmCLabelType | unsigned char | XmSTRING | CSG |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNmarginBottom | XmCMarginBottom | Dimension | 0 | CSG |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNmarginHeight | XmCMarginHeight | Dimension | 2 | CSG |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNmarginLeft | XmCMarginLeft | Dimension | 0 | CSG |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNmarginRight | XmCMarginRight | Dimension | 0 | CSG |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNmarginTop | XmCMarginTop | Dimension | 0 | CSG |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNmarginWidth | XmCMarginWidth | Dimension | 2 | CSG |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNmnemonic | XmCMnemonic | KeySym | NULL | N/A |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNmnemonicCharSet | XmCMnemonicCharSet | String | XmFONTLIST_DEFAULT_TAG | N/A |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNrecomputeSize | XmCRecomputeSize | Boolean | True | CSG |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNrenderTable | XmCRenderTable | XmRenderTable | dynamic | CSG |
+--------------------------+---------------------------+-------------------+------------------------+--------+
|XmNstringDirection | XmCStringDirection | XmStringDirection | dynamic | CSG |
+--------------------------+---------------------------+-------------------+------------------------+--------+
+--------------------------+---------------------------+-------------------+------------------------+--------+
+---------------------------------------------------------------------------------------------------+
|
XmPrimitive Resource Set |
|
Name |
Class |
Type |
Default |
Access |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNbottomShadowColor | XmCBottomShadowColor | Pixel | dynamic | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNbottomShadowPixmap | XmCBottomShadowPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNconvertCallback | XmCCallback | XtCallbackList | NULL | C |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNforeground | XmCForeground | Pixel | dynamic | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNhelpCallback | XmCCallback | XtCallbackList | NULL | C |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNhighlightColor | XmCHighlightColor | Pixel | dynamic | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNhighlightOnEnter | XmCHighlightOnEnter | Boolean | False | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNhighlightPixmap | XmCHighlightPixmap | Pixmap | dynamic | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNhighlightThickness | XmCHighlightThickness | Dimension | 2 | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNlayoutDirection | XmCLayoutDirection | XmDirection | dynamic | CG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNnavigationType | XmCNavigationType | XmNavigationType | XmNONE | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNpopupHandlerCallback | XmCCallback | XtCallbackList | NULL | C |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNshadowThickness | XmCShadowThickness | Dimension | 2 | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNtopShadowColor | XmCTopShadowColor | Pixel | dynamic | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNtopShadowPixmap | XmCTopShadowPixmap | Pixmap | dynamic | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNtraversalOn | XmCTraversalOn | Boolean | True | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNunitType | XmCUnitType | unsigned char | dynamic | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
|XmNuserData | XmCUserData | XtPointer | NULL | CSG |
+------------------------+-----------------------+------------------+----------------------+--------+
+------------------------+-----------------------+------------------+----------------------+--------+
+---------------------------------------------------------------------------------------------------------------+
|
Core Resource Set |
|
Name |
Class |
Type |
Default |
Access |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNaccelerators | XmCAccelerators | XtAccelerators | dynamic | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNancestorSensitive | XmCSensitive | Boolean | dynamic | G |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNbackground | XmCBackground | Pixel | dynamic | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNbackgroundPixmap | XmCPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNborderColor | XmCBorderColor | Pixel | XtDefaultForeground | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNborderPixmap | XmCPixmap | Pixmap | XmUNSPECIFIED_PIXMAP | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNborderWidth | XmCBorderWidth | Dimension | 0 | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNcolormap | XmCColormap | Colormap | dynamic | CG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNdepth | XmCDepth | int | dynamic | CG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNdestroyCallback | XmCCallback | XtCallbackList | NULL | C |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNheight | XmCHeight | Dimension | dynamic | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNinitialResourcesPersistent | XmCInitialResourcesPersistent | Boolean | True | C |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNmappedWhenManaged | XmCMappedWhenManaged | Boolean | True | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNscreen | XmCScreen | Screen * | dynamic | CG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNsensitive | XmCSensitive | Boolean | True | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNtranslations | XmCTranslations | XtTranslations | dynamic | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNwidth | XmCWidth | Dimension | dynamic | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNx | XmCPosition | Position | 0 | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
|XmNy | XmCPosition | Position | 0 | CSG |
+------------------------------+-------------------------------+----------------+----------------------+--------+
+------------------------------+-------------------------------+----------------+----------------------+--------+
Callback Information
A pointer to the following structure is passed to each callback:
typedef struct
{
int
reason;
XEvent
* event;
Window
window;
int
click_count;
} XmDrawnButtonCallbackStruct;
reason Indicates why the callback was invoked.
event Points to the
XEvent that triggered the callback. This is
NULL for
XmNresizeCallback.
window Is set to the window ID in which the event occurred.
click_count Contains the number of clicks in the last multiclick
sequence if the
XmNmultiClick resource is set to
XmMULTICLICK_KEEP, otherwise it contains 1. The activate
callback is invoked for each click if
XmNmultiClick is set
to
XmMULTICLICK_KEEP.
Translations
XmDrawnButton includes translations from Primitive. Additional
XmDrawnButton translations are described in the following list. The
following key names are listed in the X standard key event
translation table syntax. This format is the one used by Motif to
specify the widget actions corresponding to a given key. A brief
overview of the format is provided under
VirtualBindings(3). For a
complete description of the format, please refer to the X Toolkit
Instrinsics Documentation.
c<Btn1Down>:
ButtonTakeFocus()
~c<Btn1Down>:
Arm()
~c<Btn1Down>,~c<Btn1Up>:
Activate() Disarm()
~c<Btn1Down>(2+):
MultiArm()
~c<Btn1Up>(2+):
MultiActivate()
~c<Btn1Up>:
Activate() Disarm()
:<Key><osfActivate>:
PrimitiveParentActivate()
:<Key><osfCancel>:
PrimitiveParentCancel()
:<Key><osfSelect>:
ArmAndActivate()
:<Key><osfHelp>:
Help()
~s ~m ~a <Key>Return:
PrimitiveParentActivate()
~s ~m ~a <Key>space:
ArmAndActivate()
Action Routines
The
XmDrawnButton action routines are
Activate():
If
XmNpushButtonEnabled is True, redraws the shadow in the
unselected state; otherwise, redraws the shadow according
to
XmNshadowType. If the pointer is within the
DrawnButton, calls the
XmNactivateCallback callbacks.
Arm(): If
XmNpushButtonEnabled is True, redraws the shadow in the
selected state; otherwise, redraws the shadow according to
XmNshadowType. Calls the callbacks for
XmNarmCallback.
ArmAndActivate():
If
XmNpushButtonEnabled is True, redraws the shadow in the
selected state; otherwise, redraws the shadow according to
XmNshadowType. Calls the callbacks for
XmNarmCallback.
If
XmNpushButtonEnabled is True, the shadow is redrawn in
the unselected state; otherwise, the shadow is redrawn
according to
XmNshadowType. The callbacks for
XmNactivateCallback and
XmNdisarmCallback are called.
These actions happen either immediately or at a later time.
ButtonTakeFocus():
Causes the PushButton to take keyboard focus when
Ctrl<Btn1Down> is pressed, without activating the widget.
Disarm(): Marks the DrawnButton as unselected and calls the callbacks
for
XmNdisarmCallback.
Help(): Calls the callbacks for
XmNhelpCallback if any exist. If
there are no help callbacks for this widget, this action
calls the help callbacks for the nearest ancestor that has
them.
MultiActivate():
If
XmNmultiClick is
XmMULTICLICK_DISCARD, this action does
nothing.
If
XmNmultiClick is
XmMULTICLICK_KEEP, this action
increments
click_count in the callback structure. If
XmNpushButtonEnabled is True, this action redraws the
shadow in the unselected state; otherwise, it redraws the
shadow according to
XmNshadowType. If the pointer is
within the DrawnButton, this action calls the
XmNactivateCallback callbacks and calls the callbacks for
XmNdisarmCallback.
MultiArm():
If
XmNmultiClick is
XmMULTICLICK_DISCARD, this action does
nothing.
If
XmNmultiClick is
XmMULTICLICK_KEEP and if
XmNpushButtonEnabled is True, this action redraws the
shadow in the selected state; otherwise, it redraws the
shadow according to
XmNshadowType and calls the callbacks
for
XmNarmCallback.
Additional Behavior
This widget has the following additional behavior:
<EnterWindow>:
Draws the shadow in its selected state if
XmNpushButtonEnabled is True and if the cursor leaves and
re-enters the window while
BSelect is pressed.
<LeaveWindow>:
Draws the shadow in its unselected state if
XmNpushButtonEnabled is True and if the cursor leaves the
window while
BSelect is pressed.
Virtual Bindings
The bindings for virtual keys are vendor specific. For information
about bindings for virtual buttons and keys, see
VirtualBindings(3).
RELATED
Core(3),
XmCreateDrawnButton,
XmLabel(3),
XmPrimitive(3),
XmPushButton,
XmSeparator(3),
XmVaCreateDrawnButton,
XmVaCreateManagedDrawnButton.
XmDrawnButton(library call)