XmSimpleSpinBox

library call

`XmSimpleSpinBox`

a simple SpinBox widget class

    #include <Xm/SSpinB.h>

## DESCRIPTION

The XmSimpleSpinBox widget is a user interface control to increment and decrement an arbitrary TextField. For example, it can be used to cycle through the months of the year or days of the month.

Widget subclassing is not supported for the XmSimpleSpinBox widget class.

### Classes

The XmSimpleSpinBox widget inherits behavior and resources from the `Core`, `Composite` and `XmManager` classes.

The class pointer is XmSimpleSpinBoxWidgetClass.

The class name is XmSimpleSpinBoxWidget.

### New Resources

The following table defines a set of widget resources used by the application to specify data. The application 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, the application must 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, the application must remove the `Xm` prefix and use the remaining letters (in either lower case or upper case, but including 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).

`XmSimpleSpinBox Resource Set`
`Name` | `Class` | `Type` | `Default` | `Access`
`XmNarrowLayout` | `XmCArrowLayout` | unsigned char | XmARROWS_END | CSG
`XmNarrowSensitivity` | `XmCArrowSensitivity` | unsigned char | XmARROWS-_SENSITIVE | CSG
`XmNcolumns` | `XmCColumn` | short | 20 | CSG
`XmNdecimalPoints` | `XmCDecimalPoints` | short | 0 | CSG
`XmNeditable` | `XmCEditable` | `Boolean` | True | CSG
`XmNincrementValue` | `XmCIncrementValue` | int | 1 | CSG
`XmNinitialDelay` | `XmCInitialDelay` | unsigned int | 250 | CSG
`XmNmaximumValue` | `XmCMaximumValue` | int | 10 | CSG
`XmNminimumValue` | `XmCMinimumValue` | int | 0 | CSG
`XmNmodifyVerifyCallback` | `XmCCallback` | XtCallbackList | NULL | C
`XmNnumValues` | `XmCNumValues` | int | 0 | CSG
`XmNposition` | `XmCPosition` | int | 0 | CSG
`XmNrepeatDelay` | `XmCRepeatDelay` | unsigned int | 200 | CSG
`XmNspinBoxChildType` | `XmCSpinBoxChildType` | unsigned char | XmSTRING | CG
`XmNtextField` | `XmCTextField` | Widget | dynamic | G
`XmNvalueChangedCallback` | `XmCCallback` | XtCallbackList | NULL | C
`XmNvalues` | `XmCValues` | XmStringTable | NULL | CSG

`XmNarrowLayout`

- Specifies the style and position of the SpinBox arrows. The following values are supported:

  XmARROWS_FLAT_BEGINNING

- The arrows are placed side by side to the right of the TextField.

XmARROWS_FLAT_END

- The arrows are placed side by side to the left of the TextField.

XmARROWS_SPLIT

- The down arrow is on the left and the up arrow is on the right of the TextField.

XmARROWS_BEGINNING

- The arrows are stacked and placed on the left of the TextField.

XmARROWS_END

- The arrows are stacked and placed on the right of the TextField.

`XmNarrowSensitivity`

- Specifies the sensitivity of the arrows in the XmSimpleSpinBox. The following values are supported:

  XmARROWS_SENSITIVE

- Both arrows are active to user selection.

XmARROWS_DECREMENT_SENSITIVE

- The down arrow is active and the up arrow is inactive to user selection.

XmARROWS_INCREMENT_SENSITIVE

- The up arrow is active and the down arrow is inactive to user selection.

XmARROWS_INSENSITIVE

- Both arrows are inactive to user selection.

`XmNcolumns`

- Specifies the number of columns of the text field.

`XmNdecimalPoints`

- Specifies the position of the radix character within the numeric value when `XmNspinBoxChildType` is `XmNUMERIC`. This resource is used to allow for floating point values in the XmSimpleSpinBox widget.

`XmNeditable`

- Specifies whether the text field can take input.

  When `XmNeditable` is used on a widget it sets the dropsite to `XmDROP_SITE_ACTIVE`.

`XmNincrementValue`

- Specifies the amount to increment or decrement the `XmNposition` when the `XmNspinBoxChildType` is `XmNUMERIC`. When the Up action is activated, the `XmNincrementValue` is added to the `XmNposition` value; when the Down action is activated, the `XmNincrementValue` is subtracted from the `XmNposition` value. When `XmNspinBoxChildType` is `XmSTRING`, this resource is ignored.

`XmNinitialDelay`

- Specifies the amount of time in milliseconds before the Arrow buttons will begin to spin continuously.

`XmNnumValues`

- Specifies the number of items in the `XmNvalues` list when the `XmNspinBoxChildType` resource is `XmSTRING`. The value of this resource must be a positive integer. The `XmNnumValues` is maintained by the XmSimpleSpinBox widget when items are added or deleted from the `XmNvalues` list. When `XmNspinBoxChildType` is not `XmSTRING`, this resource is ignored.

`XmNvalues`

- Supplies the list of strings to cycle through when the XmNspinButtonChildType resource is `XmSTRING`. When `XmNspinBoxChildType` is not `XmSTRING`, this resource is ignored.

`XmNmaximumValue`

- Specifies the upper bound on the XmSimpleSpinBox's range when `XmNspinBoxChildType` is `XmNUMERIC`.

`XmNminimumValue`

- Specifies the lower bound on the XmSimpleSpinBox's range when `XmNspinBoxChildType` is `XmNUMERIC`.

`XmNmodifyVerifyCallback`

- Specifies the callback to be invoked just before the XmSimpleSpinBox position changes. The application can use this callback to implement new application-related logic (including setting new position spinning to, or canceling the impending action). For example, this callback can be used to stop the spinning just before wrapping at the upper and lower position boundaries. If the application sets the doit member of the XmSimpleSpinBoxCallbackStruct to False, nothing happens. Otherwise, the position changes. Reasons sent by the callback are `XmCR_SPIN_NEXT`, or `XmCR_SPIN_PRIOR`.

`XmNposition`

- The `XmNposition` resource has a different value based on the `XmNspinBoxChildType` resource. When `XmNspinBoxChildType` is `XmSTRING`, the `XmNposition` is the index into the `XmNvalues` list for the current item. When the `XmNspinBoxChildType` resource is `XmNUMERIC`, the `XmNposition` is the integer value of the XmSimpleSpinBox that falls within the range of `XmNmaximumValue` and `XmNminimumValue`.

`XmNrepeatDelay`

- Specifies the number of milliseconds between repeated calls to the `XmNvalueChangedCallback` while the user is spinning the XmSimpleSpinBox.

`XmNspinBoxChildType`

- Specifies the style of the XmSimpleSpinBox. The following values are supported:

  XmSTRING

- The child is a string value that is specified through the `XmNvalues` resource and incremented and decremented by changing the `XmNposition` resource.

XmNUMERIC

- The child is a numeric value that is specified through the `XmNposition` resource and incremented according to the `XmNincrementValue` resource.

`XmtextField`

- Specifies the textfield widget.

`XmNvalueChangedCallback`

- Specifies the callback to be invoked whenever the value of the `XmNposition` resource is changed through the use of the spinner arrows. The `XmNvalueChangedCallback` passes the XmSimpleSpinBoxCallbackStruct call_data structure.

### Inherited Resources

The XmSimpleSpinBox widget inherits behavior and resources from the following named superclasses. For a complete description of each resource, see the for that superclass.

`XmManager Resource Set`
`Name` | `Class` | `Type` | `Default` | `Access`
`XmNbottomShadowColor` | `XmCBottomShadowColor` | Pixel | dynamic | CSG
`XmNbottomShadowPixmap` | `XmCBottomShadowPixmap` | Pixmap | `XmUNSPECIFIED_PIXMAP` | CSG
`XmNforeground` | `XmCForeground` | Pixel | dynamic | CSG
`XmNhelpCallback` | `XmCCallback` | XtCallbackList | NULL | C
`XmNhighlightColor` | `XmCHighlightColor` | Pixel | dynamic | CSG
`XmNhighlightPixmap` | `XmCHighlightPixmap` | Pixmap | dynamic | CSG
`XmNinitialFocus` | `XmCInitialFocus` | Widget | NULL | CSG
`XmNnavigationType` | `XmCNavigationType` | XmNavigationType | dynamic | CSG
`XmNshadowThickness` | `XmCShadowThickness` | Dimension | dynamic | CSG
`XmNstringDirection` | `XmCStringDirection` | XmStringDirection | dynamic | CG
`XmNtopShadowColor` | `XmCTopShadowColor` | Pixel | dynamic | CSG
`XmNtopShadowPixmap` | `XmCTopShadowPixmap` | Pixmap | dynamic | CSG
`XmNtraversalOn` | `XmCTraversalOn` | Boolean | dynamic | CSG
`XmNunitType` | `XmCUnitType` | unsigned char | dynamic | CSG
`XmNuserData` | `XmCUserData` | XtPointer | NULL | CSG

`Composite Resource Set`
`Name` | `Class` | `Type` | `Default` | `Access`
`XmNchildren` | `XmCReadOnly` | WidgetList | NULL | G
`XmNinsertPosition` | `XmCInsertPosition` | XtOrderProc | default procedure | CSG
`XmNnumChildren` | `XmCReadOnly` | Cardinal | 0 | G

`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 XmSimpleSpinBox callback:

    typedef struct {
            int             reason;
            XEvent          *event;
            Widget          widget;
            Boolean doit;
            int             position;
            XmString        value;
            Boolean crossed_boundary;
    } XmSimpleSpinBoxCallbackStruct;

The reason argument indicates why the callback was invoked. There are three possible reasons for this callback to be issued. The reason is `XmCR_OK` when this is the first call to the callback at the beginning of a spin or if it is a single activation of the spin arrows. If the XmSimpleSpinBox is in the process of being continuously spun, then the reason will be `XmCR_SPIN_NEXT` or `XmCR_SPIN_PRIOR`, depending on the arrow that is spinning.

The event argument points to the XEvent that triggered the callback. It can be `NULL` when the XmSimpleSpinBox is continuously spinning.

The widget argument is the widget identifier for the simple spin box widget that has been affected by this callback.

The doit argument is set only when the call_data comes from the `XmNmodifyVerifyCallback`. It indicates that the action that caused the callback to be called should be performed. The action is not performed if doit is set to False.

The position argument is the new value of the `XmNposition` resource as a result of the spin.

The value argument is the new XmString value displayed in the Text widget as a result of the spin. The application must copy this string if it is used beyond the scope of the call_data structure.

The crossed_boundary argument is True when the spinbox cycles. This is the case when a `XmNspinBoxChildType` of `XmSTRING` wraps from the first item to the last or the last item to the first. In the case of the `XmNspinBoxChildType` of `XmNUMERIC`, the boundary is crossed when the XmSimpleSpinBox cycles from the maximum value to the minimum or vice versa.

## ERRORS/WARNINGS

The toolkit will display a warning if the application tries to set the value of the `XmNtextField` resource, which is read-only (marked G in the resource table).

## SEE ALSO

&cdeman.XmSpinBox;, &cdeman.XmCreateSpinBox;, &cdeman.XmSimpleSpinBoxAddItem;, &cdeman.XmSimpleSpinBoxDeletePos;, XtGetValues(3), `XtSetValues`(3) ]]>Composite, `Core`, `XmManager`, `XmText`, `XmTextField`, in the &str-ZM;; `XtGetValues`, `XtSetValues` in the &str-Zt;. ]]>