Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

Object(3X)

RectObj(3X)

XmCreateLabelGadget(3X)

XmFontListCreate(3X)

XmStringCreate(3X)

XmStringCreateLtoR(3X)

XmGadget(3X)

XmLabelGadget(3)  —  C LIBRARY FUNCTIONS

NAME

XmLabelGadget — the LabelGadget widget class.

SYNOPSIS

#include <Xm/LabelG.h>

DESCRIPTION

LabelGadget is an instantiable widget and is also used as a superclass for other button gadgets, such as PushButtonGadget and ToggleButtonGadget. 

LabelGadget can contain either text or a pixmap.  LabelGadget text is a compound string.  Refer to the OSF/Motif Programmer’s Guide for more information on compound strings.  The text can be multilingual, multiline, and/or multifont.  When a LabelGadget is insensitive, its text is stippled, or the user-supplied insensitive pixmap is displayed. 

LabelGadget supports both accelerators and mnemonics primarily for use in LabelGadget subclass widgets that are contained in menus.  Mnemonics are available in a  menu system when the button is visible.  Accelerators in a menu system are accessible even when the button is not visible.  The LabelGadget displays the mnemonic by underlining the first matching character in the text string.  The accelerator is displayed as a text string to the side of the label text or pixmap. 

LabelGadget consists of many margin fields surrounding the text or pixmap.  These margin fields are resources that may be set by the user, but LabelGadget subclasses also modify some of these fields.  The subclasses tend to modify the XmNmarginLeft, XmNmarginRight, XmNmarginTop, and XmNmarginBottom resources and leave the XmNmarginWidth and XmNmarginHeight resources as set by the application. 

Classes

LabelGadget inherits behavior and resources from Object, RectObj and XmGadget classes. 

The class pointer is xmLabelGadgetClass. 

The class name is XmLabelGadget. 

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). 

XmLabelGadget Resource Set
Name Class Type Default Access
XmNaccelerator XmCAccelerator String NULL CSG
XmNacceleratorText XmCAcceleratorText XmString NULL CSG
XmNalignment XmCAlignment unsigned char XmALIGNMENT_CENTER CSG
XmNfontList XmCFontList XmFontList dynamic CSG
XmNlabelInsensitivePixmap XmCLabelInsensitivePixmap Pixmap XmUNSPECIFIED_PIXMAP CSG
XmNlabelPixmap XmCLabelPixmap Pixmap XmUNSPECIFIED_PIXMAP CSG
XmNlabelString XmCXmString XmString dynamic 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 CSG
XmNmnemonicCharSet XmCMnemonicCharSet String dynamic CSG
XmNrecomputeSize XmCRecomputeSize Boolean True CSG
XmNstringDirection XmCStringDirection XmStringDirection dynamic CSG

XmNaccelerator
Sets the accelerator on a button widget in a menu, which activates a visible or invisible button from the keyboard. This resource is a string that describes a set of modifiers and the key that may be used to select the button. The format of this string is identical to that used by the translations manager, with the exception that only a single event may be specified and only KeyPress events are allowed. 

Accelerators for buttons are supported only for PushButtonGadget and ToggleButtonGadget in Pulldown and Popup menus. 

XmNacceleratorText
Specifies the text displayed for the accelerator. The text is displayed to the side of the label string or pixmap. Accelerator text for buttons is displayed only for PushButtonGadgets and ToggleButtonGadgets in Pulldown and Popup Menus.

XmNalignment
Specifies the label alignment for text or pixmap.

•XmALIGNMENT_BEGINNING (left alignment) — causes the left sides of the lines of text to be vertically aligned with the left edge of the gadget.  For a pixmap, its left side is vertically aligned with the left edge of the gadget. 

•XmALIGNMENT_CENTER (center alignment) — causes the centers of the lines of text to be vertically aligned in the center of the gadget.  For a pixmap, its center is vertically aligned with the center of the gadget. 

•XmALIGNMENT_END (right alignment) — causes the right sides of the lines of text to be vertically aligned with the right edge of the gadget.  For a pixmap, its right side is vertically aligned with the right edge of the gadget. 

The above descriptions for text are correct when XmNstringDirection is XmSTRING_DIRECTION_L_TO_R; the descriptions for XmALIGNMENT_BEGINNING and XmALIGNMENT_END are switched When the resource is XmSTRING_DIRECTION_R_TO_L. 

XmNfontList
Specifies the font of the text used in the gadget. If this value is NULL at initialization, it is initialized by looking up the parent hierarchy of the widget for an ancestor that is a subclass of the XmBulletinBoard, VendorShell, or XmMenuShell widget class. If such an ancestor is found, the font list is initialized to the appropriate default font list of the ancestor widget (XmNdefaultFontList for VendorShell and XmMenuShell, XmNlabelFontList or XmNbuttonFontList for XmBulletinBoard). Refer to XmFontList(3X) for more information on the creation and the structure of a font list. 

XmNlabelInsensitivePixmap
Specifies a pixmap used as the button face if XmNlabelType is XmPIXMAP and the button is insensitive. 

XmNlabelPixmap
Specifies the pixmap when XmNlabelType is XmPIXMAP. 

XmNlabelString
Specifies the compound string when XmNlabelType is XmSTRING.  If this value is NULL, it is initialized by converting the name of the gadget to a compound string.  Refer to XmString(3X) for more information on the creation and the structure of compound strings. 

XmNlabelType
Specifies the label type.

•XmSTRING — text displays XmNlabelString

•XmPIXMAP — icon data in pixmap displays XmNlabelPixmap or XmNlabelInsensitivePixmap

XmNmarginBottom
Specifies the amount of spacing between the bottom of the label text and the top of the bottom margin (specified by XmNmarginHeight).  This may be modified by LabelGadget’s subclasses.  For example, CascadeButtonGadget may increase this field to make room for the cascade pixmap. 

XmNmarginHeight
Specifies the amount of spacing between the top of the label (specified by XmNmarginTop) and the bottom edge of the top shadow, and the amount of spacing between the bottom of the label (specified by XmNmarginBottom) and the top edge of the bottom shadow. 

XmNmarginLeft
Specifies the amount of spacing between the left edge of the label text and the right side of the left margin (specified by XmNmarginWidth).  This may be modified by LabelGadget’s subclasses.  For example, ToggleButtonGadget may increase this field to make room for the toggle indicator and for spacing between the indicator and label.  Whether this actually applies to the left or right side of the label may depend on the value of XmNstringDirection. 

XmNmarginRight
Specifies the amount of spacing between the right edge of the label text and the left side of the right margin (specified by XmNmarginWidth).  This may be modified by LabelGadget’s subclasses.  For example, CascadeButtonGadget may increase this field to make room for the cascade pixmap.  Whether this actually applies to the left or right side of the label may depend on the value of XmNstringDirection. 

XmNmarginTop
Specifies the  amount of spacing between the top of the label text and the bottom of the top margin (specified by XmNmarginHeight).  This may be modified by LabelGadget’s subclasses.  For example, CascadeButtonGadget may increase this field to make room for the cascade pixmap. 

XmNmarginWidth
Specifies the amount of spacing between the left side of the label (specified by XmNmarginLeft) and the right edge of the left shadow, and the amount of spacing between the right side of the label (specified by XmNmarginRight) and the left edge of the right shadow. 

XmNmnemonic
Provides the user with an alternate means of selecting a button. A button in a MenuBar, a Popup MenuPane, or a Pulldown MenuPane can have a mnemonic.

This resource contains a keysym as listed in the X11 keysym table.  The first character in the label string that exactly matches the mnemonic in the character set specified in XmNmnemonicCharSet is underlined when the button is displayed. 

When a mnemonic has been specified, the user activates the button by pressing the mnemonic key while the button is visible.  If the button is a CascadeButtonGadget in a MenuBar and the MenuBar does not have the focus, the user must use the MAlt modifier while pressing the mnemonic.  The user can activate the button by pressing either the shifted or the unshifted mnemonic key. 

XmNmnemonicCharSet
Specifies the character set of the mnemonic for the label. The default is determined dynamically depending on the locale of the widget.

XmNrecomputeSize
Specifies a Boolean value that indicates whether the gadget attempts to be big enough to contain the label. If True, an XtSetValues with a new label string or pixmap, accelerator text, margins, font, or label type causes the gadget to shrink or expand to exactly fit the new label string or pixmap.  If False, the gadget never attempts to change size on its own. 

XmNstringDirection
Specifies the direction in which the string is to be drawn.  The following are the values:

•XmSTRING_DIRECTION_L_TO_R — left to right

•XmSTRING_DIRECTION_R_TO_L — right to left

The default for this resource is determined at creation time.  If no value is specified for this resource and the widget’s parent is a manager, the value is inherited from the parent; otherwise, it defaults to XmSTRING_DIRECTION_L_TO_R. 

Inherited Resources

LabelGadget inherits behavior and resources from the following superclasses.  For a complete description of each resource, refer to the man page for that superclass. 

XmGadget Resource Set
Name Class Type Default Access
XmNhelpCallback XmCCallback XtCallbackList NULL C
XmNhighlightOnEnter XmCHighlightOnEnter Boolean False CSG
XmNhighlightThickness XmCHighlightThickness Dimension 0 CSG
XmNnavigationType XmCNavigationType XmNavigationType XmNONE G
XmNshadowThickness XmCShadowThickness Dimension 0 CSG
XmNtraversalOn XmCTraversalOn Boolean False CSG
XmNunitType XmCUnitType unsigned char dynamic CSG
XmNuserData XmCUserData Pointer NULL CSG

RectObj Resource Set
Name Class Type Default Access
XmNancestorSensitive XmCSensitive Boolean dynamic G
XmNborderWidth XmCBorderWidth Dimension 0 CSG
XmNheight XmCHeight Dimension dynamic CSG
XmNsensitive XmCSensitive Boolean True CSG
XmNwidth XmCWidth Dimension dynamic CSG
XmNx XmCPosition Position 0 CSG
XmNy XmCPosition Position 0 CSG

Object Resource Set
Name Class Type Default Access
XmNdestroyCallback XmCCallback XtCallbackList NULL C

Behavior

XmLabelGadget includes behavior from XmGadget.  Additional XmLabelGadget behavior is described below:

KHelp:
In a Popup or Pulldown MenuPane, unposts all menus in the menu hierarchy and, when the shell’s keyboard focus policy is XmEXPLICIT, restores keyboard focus to the tab group 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. 

MAny KCancel:
In a MenuBar, disarms the CascadeButton and the menu and, when the shell’s keyboard focus policy is XmEXPLICIT, restores keyboard focus to the tab group that had the focus before the menu was entered. 

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 XmEXPLICIT, restores keyboard focus to the tab group that had the focus before the MenuBar was entered.  In other Pulldown MenuPanes, unposts the menu. 

In a Popup MenuPane, unposts the menu and, when the shell’s keyboard focus policy is XmEXPLICIT, restores keyboard focus to the widget from which the menu was posted. 

KDown:
In a vertical menu, disarms the current menu entry and arms the entry just below it in the MenuPane. This action wraps within the MenuPane.

In a horizontal menu, if the menu entry is a CascadeButton with a submenu, posts the MenuPane associated with the CascadeButton.  Otherwise, this action searches for an ancestor menu that is vertical.  If it finds one, it unposts the cascade from the vertical menu and traverses to the next entry toward the bottom in the vertical menu.  If this entry is a CascadeButton with a submenu, posts the MenuPane associated with the Cascadeutton.  This action wraps within the vertical menu. 

KLeft:
In a vertical menu, if the menu’s parent is a horizontal menu, this action unposts the current MenuPane and traverses to the next entry to the left in the parent menu. If this entry is a CascadeButton with a submenu, posts the MenuPane associated with the CascadeButton. This action wraps within the horizontal menu. If the menu’s parent is a vertical menu, this action unposts the current MenuPane.

In a horizontal menu, disarms the current menu entry and arms the entry just to the left of it in the menu.  This action wraps within the menu. 

KRight:
In a vertical menu, if the menu entry is a CascadeButton with a submenu, posts the MenuPane associated with the CascadeButton. Otherwise, this action searches for an ancestor menu that is horizontal. If it finds one, it unposts the cascade from the horizontal menu and traverses to the next entry to the right in the horizontal menu. If this entry is a CascadeButton with a submenu, posts the MenuPane associated with the CascadeButton. This action wraps within the horizontal menu.

In a horizontal menu, disarms the current menu entry and arms the entry just to the right of it in the menu.  This action wraps within the menu. 

KUp:In a vertical menu, disarms the current menu entry and arms the entry just above it in the MenuPane.  This action wraps within the MenuPane. 

In a horizontal menu, if the menu’s parent is a vertical menu, this action unposts the current MenuPane and traverses to the next entry toward the top in the parent menu.  If this entry is a CascadeButton with a submenu, posts the MenuPane associated with the CascadeButton.  This action wraps within the vertical menu.  If the menu’s parent is a horizontal menu, this action unposts the current MenuPane. 

Virtual Bindings

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

RELATED INFORMATION

Object(3X), RectObj(3X), XmCreateLabelGadget(3X), XmFontListCreate(3X), XmStringCreate(3X), XmStringCreateLtoR(3X) and XmGadget(3X). 

April 13, 2022  —  Last change:

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