Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
XmSpinBoxValidatePosition(3Library Functions ManuaXmSpinBoxValidatePosition(3)

NAME
       XmSpinBoxValidatePosition  -- translate the current value of the	speci-
       fied 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 modifica-
       tions 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	XmSpinBoxValidatePosi-
		 tion.	 XmSpinBoxValidatePosition  first  checks to make sure
		 this is an XmNUMERIC XmSpinBox	child. If it is	 not,  XSmpin-
		 BoxValidatePosition 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, XmSpinBoxValidatePo-
       sition sets  position  to  the  current	position  and  returns	XmCUR-
       RENT_VALUE.

       XmSpinBoxValidatePosition  converts the floating	point number to	an in-
       teger 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, XmSpinBoxValidatePo-
       sition sets position to the nearest limit and  returns  either  XmMINI-
       MUM_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 XmINCRE-
       MENT_VALUE.

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

RETURN VALUE
       The  XmSpinBoxValidatePosition function returns the status of the vali-
       dation.	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 func-
       tion  could be used from	inside an XmNmodifyVerifyCallback callback in-
       stalled 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 in-
       stalled 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(3)

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | EXAMPLES | SEE ALSO

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=XmSpinBoxValidatePosition&sektion=3&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help