XmSpinBoxValidatePosition(library call)

NAME


XmSpinBoxValidatePosition -- translate the current value of the
specified XmSpinBox child into a valid position

SYNOPSIS


#include <Xm/SpinBox.h>
int XmSpinBoxValidatePosition(
Widget textfield,
int *position);

DESCRIPTION


The XmSpinBoxValidatePosition function is a utility that can be used
by applications wanting to implement a policy for tracking user
modifications to editable XmSpinBox children of type XmNUMERIC. The
specifics of when and how the user's modifications take effect is
left up to the application.

text_field
The text_field argument specifies the widget ID of the
child of the XmSpinBox that is being modified. The
requirement on text_field is that it holds the
accessTextual trait (already a requirement for children of
XmSpinBox). This way, XmSpinBox can extract the string out
of the text_field widget (even if it is not an
XmTextField).

position The location pointed to by the position argument is
assigned the result of the translation done by
XmSpinBoxValidatePosition. XmSpinBoxValidatePosition first
checks to make sure this is an XmNUMERIC XmSpinBox child.
If it is not, XSmpinBoxValidatePosition sets position to
the current position and returns XmCURRENT_VALUE.

XmSpinBoxValidatePosition attempts to translate the input string to a
floating point number. If this translation fails,
XmSpinBoxValidatePosition sets position to the current position and
returns XmCURRENT_VALUE.

XmSpinBoxValidatePosition converts the floating point number to an
integer using the XmNdecimalPoints resource. Extra decimal places are
truncated. The resulting integer is range checked to make sure it
falls within the valid range defined by XmNminimumValue and
XmNmaximumValue inclusive. If the input falls outside this range,
XmSpinBoxValidatePosition sets position to the nearest limit and
returns either XmMINIMUM_VALUE or XmMAXIMUM_VALUE.

Finally, XmSpinBoxValidatePosition checks the integer to make sure it
belongs to the series defined by XmNminimumValue ... XmNminimumValue
+ ((n - 1) * XmNincrementValue). If the integer does not belong to
this series, XmSpinBoxValidatePosition sets position to the nearest
element which is less than or equal to the integer and returns
XmINCREMENT_VALUE.

Otherwise, XmSpinBoxValidatePosition assigns the integer to position
and returns XmVALID_VALUE.

RETURN VALUE


The XmSpinBoxValidatePosition function returns the status of the
validation. The set of possible values returned is as follows:

XmCURRENT_VALUE
Cannot convert, returning current position_value.

XmMINIMUM_VALUE
Less than min.

XmMAXIMUM_VALUE
More than max.

XmINCREMENT_VALUE
Not on increment.

XmVALID_VALUE
Okay.

EXAMPLES


This first example demonstrates how the XmSpinBoxValidatePosition
function could be used from inside an XmNmodifyVerifyCallback
callback installed on the XmSpinBox or the XmSimpleSpinBox:

/*
* Install a callback on a spin box arrow press.
*/
XtAddCallback(sb, XmNmodifyVerifyCallback, ModifyVerifyCB, NULL);
XtAddCallback(simple_sb, XmNmodifyVerifyCallback, ModifyVerifyCB, NULL);

with the callback doing:

void ModifyVerifyCB(widget, call_data, client_data) {
XmSpinBoxCallbackStruct *cbs = (XmSpinBoxCallbackStruct*) call_data;
int position;
Widget textual = NULL;
if (XtIsSubclass(w, xmSimpleSpinBoxWidgetClass))
{
Arg args[1];
XtSetArg(args[0], XmNtextField, &textual);
XtGetValues(w, args, 1);
}
else if (XtIsSubclass(w, xmSpinBoxWidgetClass))
textual = cbs->widget;
else
textual = (Widget) NULL;

...

if (XmSpinBoxValidatePosition(textual, &position) == XmCURRENT_VALUE)
XBell(XtDisplay(w), 0);
else
cbs->position = position;
}

This second example demonstrates how the XmSpinBoxValidatePosition
function could be used from inside an XmNactivateCallback callback
installed on the TextField child of the XmSpinBox:

/*
* Install a callback on a spin box arrow press.
*/
XtAddCallback(tf, XmNactivateCallback, ModifyVerifyChildCB, NULL);

with the callback doing:

void ModifyVerifyChildCB(widget, call_data, client_data) {
int position;
Widget textual = widget;
Arg args[1];

if (XmSpinBoxValidatePosition (textual, &position) == XmCURRENT_VALUE)
XBell(XtDisplay(widget), 0);

/* Set the position constraint resource of the textfield */

XtSetArg(args[0], XmNposition, position);
XtSetValues(textual, args, 1);
}

SEE ALSO


XmSpinBox(3), XmCreateSpinBox(3)


XmSpinBoxValidatePosition(library call)

tribblix@gmail.com :: GitHub :: Privacy