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

FreeBSD Manual Pages

  
 
  

home | help
cdk_traverse(3)			 Library calls		       cdk_traverse(3)

NAME
       cdk_traverse - Cdk functions for	keyboard traversal

SYNOPSIS
       cc [ flag ... ] file ...	 -lcdk [ library ... ]

       #include	<cdk.h>

       CDKOBJS *getCDKFocusCurrent (CDKSCREEN *screen);

       CDKOBJS *setCDKFocusCurrent (CDKSCREEN *screen, CDKOBJS *obj);

       CDKOBJS *setCDKFocusFirst (CDKSCREEN *screen);

       CDKOBJS *setCDKFocusLast	(CDKSCREEN *screen);

       CDKOBJS *setCDKFocusNext	(CDKSCREEN *screen);

       CDKOBJS *setCDKFocusPrevious (CDKSCREEN *screen);

       int traverseCDKScreen (CDKSCREEN	*screen);

       void exitOKCDKScreen (CDKSCREEN *screen);

       void exitCancelCDKScreen	(CDKSCREEN *screen);

       void resetCDKScreen (CDKSCREEN *screen);

       void exitOKCDKScreenOf(CDKOBJS *obj);

       void exitCancelCDKScreenOf (CDKOBJS *obj);

       void resetCDKScreenOf (CDKOBJS *obj);

       void traverseCDKOnce (
		      CDKSCREEN	*screen,
		      CDKOBJS *curobj,
		      int keyCode,
		      boolean functionKey,
		      CHECK_KEYCODE funcMenuKey);

DESCRIPTION
       The  functions  above  handle  the traversal of a screen	populated with
       various widgets.	 Once the screen has been created and  populated  with
       widgets,	 a  single  call to traverseCDKScreen()	will allow the user to
       move between widgets and	enter data (or otherwise manipulate  widgets).
       Other functions are provided for	use as callbacks by the	widgets	on the
       screen.	Finally, there are several functions which allow the caller to
       manipulate  the	state of the traversal,	i.e., the object which has fo-
       cus.

       In order	for widgets to be used on a screen which is to be  handled  by
       traverseCDKScreen(), it must have the following methods available:
	  injectCharObj
	  inputWindowObj
	  focusObj
	  unfocusObj
	  saveDataObj
	  refreshDataObj

       In addition, the	following object properties must be properly handled:
	  acceptsFocus
	  hasFocus
	  inputWindow
	  dataPtr
	  dataType

       At the time of this writing, not	all widgets have been modified to work
       with the	screen-traversal facility.

AVAILABLE FUNCTIONS
       int traverseCDKScreen (CDKSCREEN	*screen);
	  This	function  contains  the	main screen traversal engine.  It does
	  the following:

	   1. Calls the	refreshData method on each of the widgets to tell them
	      to update	their appearance to match the data  which  are	refer-
	      enced by their respective	data pointers.

	   2. Calls the	focusObject method on the first	widget.

	   3. Repeats  the  following  until  one of the exit functions	listed
	      above has	been called:

	      	  Read a keystroke from	the keyboard.

	      	  If the keystroke is ESCAPE and a menu	widget is present, ac-
		  tivate the menu and traverse it until	the  user  selects  an
		  entry	or hits	TAB.

	      	  If  the keystroke is TAB/BACKTAB then	call the unfocusObject
		  method  on  the  current  widget,  and  move	focus  to  the
		  next/previous	 widget	(not counting menu widgets).  Call the
		  focusObject method on	the newly current widget.

	      	  If the keystroke is the EXIT-SAVE keystroke, then  call  the
		  saveData method on each widget and return 1.

	      	  If  the  keystroke  is  the  EXIT-CANCEL keystroke, return 0
		  without saving changes made by the user.

	      	  If the keystroke is the RESET-DATA keystroke,	then call  the
		  refreshData method on	each of	the widgets to reset their ap-
		  pearance to match the	data values that were present upon en-
		  try.

	      	  Otherwise, pass the keystroke	to the current widget.

       CDKOBJS *getCDKFocusCurrent (CDKSCREEN *screen);
	    Return  a  pointer	to the object which currently has focus	in the
	    given screen.

       CDKOBJS *setCDKFocusCurrent (CDKSCREEN *screen, CDKOBJS *obj);
	    Set	the focus to the given object, if the screen contains that ob-
	    ject.  If the screen does not contain  the	object,	 return	 null.
	    Otherwise, return the object.

       CDKOBJS *setCDKFocusFirst (CDKSCREEN *screen);
	    Set	focus on the first object in the given screen.

       CDKOBJS *setCDKFocusLast	(CDKSCREEN *screen);
	    Set	focus on the last object in the	given screen.

       CDKOBJS *setCDKFocusNext	(CDKSCREEN *screen);
	    Set	focus on the next object in the	given screen.

       CDKOBJS *setCDKFocusPrevious (CDKSCREEN *screen);
	    Set	focus on the previous object in	the given screen.

       exitOKCDKScreen
	  Causes  the  traversal  engine  to  exit  after calling the saveData
	  method for each of the widgets.

       exitOKCDKScreenOf
	  Calls	exitOKCDKScreen() on the screen	associated  with  widget  obj.
	  This	function  was  designed	to be used as a	callback routine for a
	  button widget	used as	an OK button on	a data-entry screen.

       exitCancelCDKScreen
	  Causes the traversal engine to exit  without	saving	user  modified
	  data.

       exitCancelCDKScreenOf
	  Calls	 exitCancelCDKScreen()	on  the	 screen	associated with	widget
	  obj.	This function was designed to be used as  a  callback  routine
	  for a	button widget used as a	Cancel button on a data-entry screen.

       resetCDKScreen
	  Causes  the traversal	engine to call the refreshData method for each
	  widget.  This	will cause any unsaved changes to be discarded and the
	  widget states	will be	restored to their initial values.

       resetCDKScreenOf
	  Calls	resetCDKScreen() on the	screen	associated  with  widget  obj.
	  This	function  was  designed	to be used as a	callback routine for a
	  button widget	used as	a Reset	button on a data-entry screen.

       traverseCDKOnce
	  This is a utility function, one of the pieces	 from  which  you  can
	  construct a customized version of traverseCDKScreen.

BUGS
       Not all widgets have had	the extra methods added	so that	they work with
       the screen traversal engine.

AUTHORS
       Grant Edwards, Aspen Research Corporation
       Thomas E. Dickey	and contributors.

SEE ALSO
       cdk(3), cdk_binding(3), cdk_display(3), cdk_screen(3)

				  2024-03-28		       cdk_traverse(3)

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

home | help