WkTimeEditor
As its name implies, the WkTimeEditor widget provides a convenient control for editing times. It contains three fields for setting the hours, minutes, and meridian of a time value. Since it is specifically designed for time manipulation, it assures that any time entered is guaranteed to be valid.
WkTimeEditors allow the user to edit a time by manipulating the hour, minute and meridian fields as if they were WkNumericEditors. When a time pane has the input focus, there is one current field. That field (hour, minute, or meridian value) can be edited using either the arrow buttons or by using the keyboard to type the value. The current field can be selected by using the mouse or the left and right arrow keys. Correct times are enforced; e.g. incrementing past 59 minutes or 23 hours will increment the related fields correctly.
WkTimeEditor provides a variety of styles to allow for flexibility in choosing a time format. These styles mirror the settings dialog provided by Windows, and should allow all supported cultural time variations, including changing the separator (usually “:”), switching between 12 hour and 24 hour format, and showing hour leading zeros or different meridian strings (usually AM/PM).
The contents of a WkTimeEditor is a Time object, both for setting and retrieving the current value. 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.
amString: aString
Specifies the string used for AM time values in 12 hour mode.
editable: aBoolean
Specifies whether a user can edit text in the entry field part of the spin button.
leadingZero: aBoolean
Specifies whether the hour field is displayed with a leading zero.
maximum: anInteger
Specifies a numeric spin button’s maximum value.
minimum: anInteger
Specifies a numeric spin button’s minimum value.
pmString: aString
Specifies the string used for PM time values in 12 hour mode.
separator: aCharacter
Specifies the separator character used to separate the hour and minute fields.
twelveHour: aBoolean
Specifies whether the time is displayed in 12 hour format or not.
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.
AM String
Specifies the string used for AM time values in 12 hour mode.
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.
Leading Zero
Specifies whether the hour field is displayed with a leading zero.
Maximum
Specifies a numeric spin button’s maximum value.
Minimum
Specifies a numeric spin button’s minimum value.
PM String
Specifies the string used for PM time values in 12 hour mode.
Separator
Specifies the separator character used to separate the hour and minute fields.
Twelve Hour
Specifies whether the time is displayed in 12 hour format or not.
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 WkTimeEditor that displays the time in 24 hour mode (e.g., 23:00 rather than 11:00 PM) with a center alignment and the leading zero on the hour field suppressed.
aWkTimeEditor := WkTimeEditor
createWidget: 'aWkTimeEditor'
parent: self form
argBlock: [:w | w
x: 100;
y: 137;
width: 148;
height: 24;
alignment: XmALIGNMENTCENTER;
twelveHour: false;
leadingZero: false;
scale].