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

FreeBSD Manual Pages

  
 
  

home | help
XmSpinBox...tePosition(3)  Library Functions Manual  XmSpinBox...tePosition(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)

						     XmSpinBox...tePosition(3)

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

home | help