Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ XmPuButtA(Xm) — OpenDesktop Software Development System 3.0.0

Media Vault

Software Library

Restoration Projects

Artifacts Sought


 XmPushButton(Xm)               6 January 1993               XmPushButton(Xm)


 Name

    XmPushButton - the PushButton widget class

 Syntax


    #include <Xm/PushB.h>


 Description

    PushButton issues commands within an application.  It consists of a text
    label or pixmap surrounded by a border shadow.  When a PushButton is
    selected, the shadow changes to give the appearance that it has been
    pressed in. When a PushButton is unselected, the shadow changes to give
    the appearance that it is out.

    The default behavior associated with a PushButton in a menu depends on
    the type of menu system in which it resides.  By default, BSelect con-
    trols the behavior of the PushButton.  In addition, BMenu controls the
    behavior of the PushButton if it resides in a PopupMenu system.  The
    actual mouse button used is determined by its RowColumn parent.

    Thickness for a second shadow, used when the PushButton is the default
    button, may be specified by using the XmNshowAsDefault resource. If it
    has a non-zero value, the Label's resources XmNmarginLeft, XmNmargin-
    Right, XmNmarginTop, and XmNmarginBottom may be modified to accommodate
    the second shadow.

    If an initial value is specified for XmNarmPixmap but not for XmNlabel-
    Pixmap, the XmNarmPixmap value is used for XmNlabelPixmap.

    Classes

    PushButton inherits behavior and resources from Core, XmPrimitive, and
    XmLabel classes.

    The class pointer is xmPushButtonWidgetClass.

    The class name is XmPushButton.

    New resources

    The following table defines a set of widget resources used by the pro-
    grammer 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).

 XmPushButton resource set

 ____________________________________________________________________________
 Name               Class             Type            Default          Access
 ____________________________________________________________________________
 XmNactivate-       XmCCallback       XtCallbackList  NULL             C
 Callback
 XmNarmCallback     XmCCallback       XtCallbackList  NULL             C
 XmNarmColor        XmCArmColor       Pixel           dynamic          CSG
 XmNarmPixmap       XmCArmPixmap      Pixmap          XmUNSPECIFIED_-  CSG
                                                      PIXMAP
 XmNdefaultButton-  XmCDefaultButton- Dimension       dynamic          CSG
 ShadowThickness    ShadowThickness
 XmNdisarmCallback  XmCCallback       XtCallbackList  NULL             C
 XmNfillOnArm       XmCFillOnArm      Boolean         True             CSG
 XmNmultiClick      XmCMultiClick     unsigned char   dynamic          CSG
 XmNshowAsDefault   XmCShowAsDefault  Dimension       0                CSG


    XmNactivateCallback
            Specifies the list of callbacks that is called when PushButton is
            activated.  PushButton is activated when the user presses and
            releases the active mouse button while the pointer is inside that
            widget. Activating the PushButton also disarms it.  For this
            callback the reason is XmCRACTIVATE.

    XmNarmCallback
            Specifies the list of callbacks that is called when PushButton is
            armed.  PushButton is armed when the user presses the active
            mouse button while the pointer is inside that widget.  For this
            callback the reason is XmCRARM.

    XmNarmColor
            Specifies the color with which to fill the armed button.
            XmNfillOnArm must be set to True for this resource to have an
            effect.  The default for a color display is a color between the
            background and the bottom shadow color. For a monochrome display,
            the default is set to the foreground color, and any text in the
            label appears in the background color when the button is armed.

    XmNarmPixmap
            Specifies the pixmap to be used as the button face if XmNlabel-
            Type is XmPIXMAP and PushButton is armed. This resource is dis-
            abled when the PushButton is in a menu.

    XmNdefaultButtonShadowThickness
            This resource specifies the width of the default button indicator
            shadow.  If this resource is zero, the width of the shadow comes
            from the value of the XmNshowAsDefault resource. If this resource
            is greater than zero, the XmNshowAsDefault resource is only used
            to specify whether this button is the default.  The default value
            is the initial value of XmNshowAsDefault.

    XmNdisarmCallback
            Specifies the list of callbacks that is called when PushButton is
            disarmed. PushButton is disarmed when the user presses and
            releases the active mouse button while the pointer is inside that
            widget. For this callback, the reason is XmCRDISARM.

    XmNfillOnArm
            Forces the PushButton to fill the background of the button with
            the color specified by XmNarmColor when the button is armed and
            when this resource is set to True. If False, only the top and
            bottom shadow colors are switched.  When the PushButton is in a
            menu, this resource is ignored and assumed to be False.

    XmNmultiClick
            If a button click is followed by another button click within the
            time span specified by the display's multi-click time, and this
            resource is set to XmMULTICLICKDISCARD, do not process the
            second click.  If this resource is set to XmMULTICLICKKEEP, pro-
            cess the event and increment clickcount in the callback struc-
            ture.  When the button is in a menu, the default is
            XmMULTICLICKDISCARD; otherwise, for a button not in a menu,
            XmMULTICLICKKEEP is the default value.

    XmNshowAsDefault
            If XmNdefaultButtonShadowThickness is greater than zero, a value
            greater than zero in this resource specifies to mark this button
            as the default button.  If XmNdefaultButtonShadowThickness is
            zero, a value greater than zero in this resource specifies to
            mark this button as the default button with the shadow thickness
            specified by this resource.  The space between the shadow and the
            default shadow is equal to the sum of both shadows.  The default
            value is zero. When this value is not zero, the Label resources
            XmNmarginLeft, XmNmarginRight, XmNmarginTop, and XmNmarginBottom
            may be modified to accommodate the second shadow.  This resource
            is disabled when the PushButton is in a menu.

    Inherited resources

    PushButton inherits behavior and resources from the following superc-
    lasses. For a complete description of each resource, refer to the man
    page for that superclass.

 XmLabel resource set

 ____________________________________________________________________________
 Name                Class             Type             Default        Access
 ____________________________________________________________________________
 XmNaccelerator      XmCAccelerator    String           NULL           CSG
 XmNacceleratorText  XmCAcceleratorTextXmString         NULL           CSG
 XmNalignment        XmCAlignment      unsigned char    dynamic        CSG
 XmNfontList         XmCFontList       XmFontList       dynamic        CSG
 XmNlabelInsensitive-XmCLabelInsensi-  Pixmap           XmUNSPECIFIED_-CSG
 Pixmap              tivePixmap                         PIXMAP
 XmNlabelPixmap      XmCLabelPixmap    Pixmap           dynamic        CSG
 XmNlabelString      XmCXmString       XmString         dynamic        CSG
 XmNlabelType        XmCLabelType      unsigned char    XmSTRING       CSG
 XmNmarginBottom     XmCMarginBottom   Dimension        dynamic        CSG
 XmNmarginHeight     XmCMarginHeight   Dimension        2              CSG
 XmNmarginLeft       XmCMarginLeft     Dimension        dynamic        CSG
 XmNmarginRight      XmCMarginRight    Dimension        dynamic        CSG
 XmNmarginTop        XmCMarginTop      Dimension        dynamic        CSG


 XmNmarginWidth      XmCMarginWidth    Dimension        2              CSG
 XmNmnemonic         XmCMnemonic       KeySym           NULL           CSG
 XmNmnemonicCharSet  XmCMnemonicCharSetString           XmFONTLIST_-   CSG
                                                        DEFAULT_TAG
 XmNrecomputeSize    XmCRecomputeSize  Boolean          True           CSG
 XmNstringDirection  XmCStringDirectionXmStringDirectiondynamic        CSG


 XmPrimitive resource set

 ____________________________________________________________________________
 Name               Class             Type             Default         Access
 ____________________________________________________________________________
 XmNbottom-         XmCBottom-        Pixel            dynamic         CSG
 ShadowColor        ShadowColor
 XmNbottom-         XmCBottom-        Pixmap           XmUNSPECIFIED_- CSG
 ShadowPixmap       ShadowPixmap                       PIXMAP
 XmNforeground      XmCForeground     Pixel            dynamic         CSG
 XmNhelpCallback    XmCCallback       XtCallbackList   NULL            C
 XmNhighlightColor  XmCHighlightColor Pixel            dynamic         CSG
 XmNhighlight-      XmCHighlight-     Boolean          False           CSG
 OnEnter            OnEnter
 XmNhighlightPixmap XmCHighlightPixmapPixmap           dynamic         CSG
 XmNhighlight-      XmCHighlight-     Dimension        2               CSG
 Thickness          Thickness
 XmNnavigationType  XmCNavigationType XmNavigationType XmNONE          CSG


 XmNshadowThickness XmCShadowThicknessDimension        2               CSG
 XmNtopShadowColor  XmCTopShadowColor Pixel            dynamic         CSG
 XmNtopShadowPixmap XmCTopShadowPixmapPixmap           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
 XmNancestor-       XmCSensitive       Boolean        dynamic          G
 Sensitive
 XmNbackground      XmCBackground      Pixel          dynamic          CSG
 XmNbackground-     XmCPixmap          Pixmap         XmUNSPECIFIED_-  CSG
 Pixmap                                               PIXMAP
 XmNborderColor     XmCBorderColor     Pixel          XtDefault-       CSG
                                                      Foreground
 XmNborderPixmap    XmCPixmap          Pixmap         XmUNSPECIFIED_-  CSG
                                                      PIXMAP
 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
 XmNinitial-        XmCInitial-        Boolean        True             C
 Resources-         Resources-
 Persistent         Persistent
 XmNmappedWhen-     XmCMappedWhen-     Boolean        True             CSG
 Managed            Managed
 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;
           int click_count;
       } XmPushButtonCallbackStruct;


    reason  Indicates why the callback was invoked.

    event   Points to the XEvent that triggered the callback.

    clickcount
            This value is valid only when the reason is XmCRACTIVATE.  It
            contains the number of clicks in the last multiclick sequence if
            the XmNmultiClick resource is set to XmMULTICLICKKEEP, otherwise
            it contains 1.  The activate callback is invoked for each click
            if XmNmultiClick is set to XmMULTICLICKKEEP.

    Translations

    XmPushButton includes translations from Primitive.

    Note that altering translations in #override or #augment mode is unde-
    fined.

    Additional XmPushButton translations for XmPushButtons not in a menu sys-
    tem are listed below.  These translations may not directly correspond to
    a translation table.

       BDrag Press:            ProcessDrag()

       BSelect Press:          Arm()
       BSelect Click:          Activate()
                               Disarm()
       BSelect Release:        Activate()
                               Disarm()
       BSelect Press 2+:       MultiArm()
       BSelect Release 2+:     MultiActivate()
                               Disarm()
       KSelect:                ArmAndActivate()
       KHelp:                  Help()

    XmPushButton inherits menu traversal translations from XmLabel.  Addi-
    tional XmPushButton translations for PushButtons in a menu system are
    listed below.  In a Popup menu system, BMenu also performs the BSelect
    actions.  These translations may not directly correspond to a translation
    table.

       BSelect Press:          BtnDown()
       BSelect Release:        BtnUp()
       KActivate:              ArmAndActivate()
       KSelect:                ArmAndActivate()
       MAny KCancel:           MenuShellPopdownOne()


    Action routines

    The XmPushButton action routines are described below:

    Activate():
            This action draws the shadow in the unarmed state.  If the button
            is not in a menu and if XmNfillOnArm is set to True, the back-
            ground color reverts to the unarmed color.  If XmNlabelType is
            XmPIXMAP, the XmNlabelPixmap is used for the button face.  If the
            pointer is still within the button, this action calls the call-
            backs for XmNactivateCallback.

    Arm():  This action arms the PushButton.  It draws the shadow in the
            armed state.  If the button is not in a menu and if XmNfillOnArm
            is set to True, it fills the button with the color specified by
            XmNarmColor.  If XmNlabelType is XmPIXMAP, the XmNarmPixmap is
            used for the button face.  It calls the XmNarmCallback callbacks.

    ArmAndActivate():
            In a menu, does the following:  Unposts all menus in the menu
            hierarchy.  Unless the button is already armed, calls the XmNarm-
            Callback callbacks.  Calls the XmNactivateCallback and XmNdisarm-
            Callback callbacks.

            Outside a menu, does the following:  Draws the shadow in the
            armed state and, if XmNfillOnArm is set to True, fills the button
            with the color specified by XmNarmColor.  If XmNlabelType is
            XmPIXMAP, the XmNarmPixmap is used for the button face.  Calls
            the XmNarmCallback callbacks.

            Outside a menu, this action also arranges for the following to
            happen, either immediately or at a later time:  The shadow is
            drawn in the unarmed state and, if XmNfillOnArm is set to True,
            the background color reverts to the unarmed color.  If XmNlabel-
            Type is XmPIXMAP, the XmNlabelPixmap is used for the button face.
            The XmNactivateCallback and XmNdisarmCallback callbacks are
            called.

    BtnDown():
            This action unposts any menus posted by the PushButton's parent
            menu, disables keyboard traversal for the menu, and enables mouse
            traversal for the menu.  It draws the shadow in the armed state
            and, unless the button is already armed, calls the XmNarmCallback
            callbacks.

    BtnUp():
            This action unposts all menus in the menu hierarchy and activates
            the PushButton.  It calls the XmNactivateCallback callbacks and
            then the XmNdisarmCallback callbacks.
    Disarm():
            Calls the callbacks for XmNdisarmCallback.

    Help(): In a Pulldown or Popup MenuPane, unposts all menus in the menu
            hierarchy and, when the shell's keyboard focus policy is XmEX-
            PLICT, restores keyboard focus to the widget that had the focus
            before the menu system was entered.  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.

    MenuShellPopdownOne():
            In a toplevel Pulldown MenuPane from a MenuBar, unposts the menu,
            disarms the MenuBar CascadeButton and the MenuBar, and, when the
            shell's keyboard focus policy is XmEXPLICT, restores keyboard
            focus to the widget that had the focus before the MenuBar was
            entered.  In other Pulldown MenuPanes, unposts the menu.

            In a Popup MenuPane, unposts the menu and restores keyboard focus
            to the widget from which the menu was posted.

    MultiActivate():
            If XmNmultiClick is XmMULTICLICKDISCARD, this action does noth-
            ing.

            If XmNmultiClick is XmMULTICLICKKEEP, this action does the fol-
            lowing:  Increments clickcount in the callback structure.  Draws
            the shadow in the unarmed state.  If the button is not in a menu
            and if XmNfillOnArm is set to True, the background color reverts
            to the unarmed color.  If XmNlabelType is XmPIXMAP, the
            XmNlabelPixmap is used for the button face.  If the pointer is
            within the PushButton, calls the callbacks for XmNactivate-
            Callback.  Calls the callbacks for XmNdisarmCallback.

    MultiArm():
            If XmNmultiClick is XmMULTICLICKDISCARD, this action does noth-
            ing.

            If XmNmultiClick is XmMULTICLICKKEEP, this action does the fol-
            lowing:  Draws the shadow in the armed state.  If the button is
            not in a menu and if XmNfillOnArm is set to True, fills the but-
            ton with the color specified by XmNarmColor.  If XmNlabelType is
            XmPIXMAP, the XmNarmPixmap is used for the button face.  Calls
            the XmNarmCallback callbacks.

    ProcessDrag():
            Drags the contents of a PushButton label, identified by pressing
            BDrag. This action creates a DragContext object whose XmNexport-
            Targets resource is set to COMPOUNDTEXT for a label type of
            XmSTRING; otherwise, PIXMAP if the label type is XmPIXMAP. This
            action is undefined for PushButtons used in a menu system.

    Additional behavior

    This widget has the additional behavior described below:

    <EnterWindow>:
            In a menu, if keyboard traversal is enabled, this action does
            nothing.  Otherwise, it draws the shadow in the armed state and
            calls the XmNarmCallback callbacks.

            If the PushButton is not in a menu and the cursor leaves and then
            reenters the PushButton's window while the button is pressed,
            this action draws the shadow in the armed state.  If XmNfillOnArm
            is set to True, it also fills the button with the color specified
            by XmNarmColor.  If XmNlabelType is XmPIXMAP, the XmNarmPixmap is
            used for the button face.

    <LeaveWindow>:
            In a menu, if keyboard traversal is enabled, this action does
            nothing.  Otherwise, it draws the shadow in the unarmed state and
            calls the XmNdisarmCallback callbacks.

            If the PushButton is not in a menu and the cursor leaves the
            PushButton's window while the button is pressed, this action
            draws the shadow in the unarmed state.  If XmNfillOnArm is set to
            True, the background color reverts to the unarmed color.  If
            XmNlabelType is XmPIXMAP, the XmNlabelPixmap is used for the but-
            ton face.

    Virtual bindings

    The bindings for virtual keys are vendor specific.  For information about
    bindings for virtual buttons and keys, see VirtualBindings(Xm).

 See also

    Core(Xm), XmCreatePushButton(Xm), XmLabel(Xm), XmPrimitive(Xm) and
    XmRowColumn(Xm).


Typewritten Software • bear@typewritten.org • Edmonds, WA 98026