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

FreeBSD Manual Pages

  
 
  

home | help
XmSpinBoxV...atePosition(3) Library Functions Manual XmSpinBoxV...atePosition(3)

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 ap-
     plications 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_fieldThe  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.  Xm-
	       SpinBoxValidatePosition	first checks to make sure this is an Xm-
	       NUMERIC XmSpinBox child. If it is not,  XSmpinBoxValidatePosition
	       sets   position	to  the  current  position  and  returns  XmCUR-
	       RENT_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 be-
     longs to the series defined by XmNminimumValue ... XmNminimumValue + ((n  -
     1) * XmNincrementValue). If the integer does not belong to this series, Xm-
     SpinBoxValidatePosition  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 valida-
     tion.  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)

						     XmSpinBoxV...atePosition(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+15.1.quarterly>

home | help