WkSpinButton
The WkSpinButton widget provides a compact editor for choosing one string from a set of choices. This functionality is similar to a list box or combo box, but it uses two small arrows to allow the user to scroll through the possible choices, one at a time. Since a spin button does not display all of the choices at once, it is best suited for sets of choices that have obvious members. And because the choices are stepped through in order, the spin button makes the most sense when the set of choices are familiarly ordered. Examples would be the days of the week or the answers to a survey question (Strongly Agree, Agree, No Opinion, Disagree, Strongly Disagree).
Spin buttons take as their contents an OrderedCollection of strings. The strings can be displayed in the spin button in one of three formats: left justified, right justified, or centered. When a new item is selected by the user, the valueChanged callback will occur.
A user can increment or decrement the values using up/down arrow keys or by selecting the up/down buttons. A user can change the value in an editable spin button by typing in the entry field.
Protocol
alignment: anInteger
Specifies the text alignment used by the widget.
Default: XmALIGNMENTEND (Right)
Valid resource values:
XmALIGNMENTBEGINNING (Left) - Causes the left side of the line of text to be vertically aligned with the left edge of the widget window.
XmALIGNMENTCENTER (Center) - Causes the center of the line of text to be vertically aligned in the center of the widget window.
XmALIGNMENTEND (Right) - Causes the right side of the line of text to be vertically aligned with the right edge of the widget window.
allowNil: aBoolean
Specifies whether the text field may have a blank (nil) value.
editable: aBoolean
Specifies whether a user can edit text in the entry field part of the spin button.
items: anOrderedCollection
Specifies the list of Strings being spun over.
value: aString
Specifies the initial value of the widget.
wrap: aBoolean
Specifies whether the spin button should cycle or stop upon reaching the end of the collection, or max or min for a numeric spin button.
Callbacks & Events
Activate Callback
These callbacks are triggered when the user presses the default action key. This is typically a carriage return.
Decrement Callback
These callbacks are triggered when the user decreases the spin button value by one step. This can happen either when the down arrow key is pressed or when the down arrow button is selected with the mouse.
Focus Callback
These callbacks are triggered before the entry field has accepted input focus.
Increment Callback
These callbacks are triggered when the user increases the spin button value by one step. This can happen either when the up arrow key is pressed or the up arrow button is selected with the mouse.
Losing Focus Callback
These callbacks are triggered before the entry field loses input focus.
Modify Verify Callback
These callbacks are triggered before text is deleted from or inserted into the widget. This callback can be used to check a character value after it is entered by the user and before it is accepted by the control.
Call data arguments:
doit - Indicates whether the action that invoked the callback is performed.
Setting doit to false negates the action.
text - a String which contains the text which is to be inserted.
currInsert - the current position of the insert cursor.
startPos - the starting position of the text to modify.
endPos - the ending position of the text to modify.
Value Changed Callback
These callbacks are triggered after text is deleted from or inserted into the widget. This callback can be used to retrieve the current value of the widget.
Editor
Alignment
Specifies the text alignment used by the widget.
Left - Causes the left side of the line of text to be vertically aligned with the left edge of the widget window.
Center - Causes the center of the line of text to be vertically aligned in the center of the widget window.
Right - Causes the right side of the line of text to be vertically aligned with the right edge of the widget window.
Allow Nil
Specifies whether the text field may have a blank (nil) value.
Border Width
Specifies the width of the border that surrounds the widget’s window on all four sides. The width is specified in pixels. A width of zero means that no border will show.
Border - Causes the widget to have a border.
No Border - Causes the widget to have no border.
Editable
Specifies whether a user can edit text in the entry field part of the spin button.
Enabled
Determines whether a widget will react to input events. Disabled (insensitive) widgets do not react to input events.
Items
Specifies the list of Strings being spun over.
Visible
Maps the widget (makes visible) as soon as it is both realized and managed, if set to True. If set to False, the client is responsible for mapping and unmapping the widget.
Value
Specifies the initial value of the widget.
Wrap
Specifies whether the spin button should cycle or stop upon reaching the end of the collection, or max or min for a numeric spin button.
Example
The following example code creates a WkSpinButton that has been initialized with the days of the week. The initial value has been set to “Sunday”.
spinButton := WkSpinButton
createWidget: 'spinButton'
parent: self form
argBlock: [:w | w
x: 184;
y: 212;
width: 124;
height: 22;
value: 'Sunday';
items: #('Sunday' 'Monday' 'Tuesday'
'Wednesday' 'Thursday' 'Friday' 'Saturday');
scale].