Provided by: libcdk5-dev_5.0.20230201-4_amd64 bug

NAME

       cdk_traverse - functions to support 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 focus.

       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  referenced  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, activate 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 appearance to match the data values  that
                  were present upon entry.

              •   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 object.  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.

AUTHOR

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

SEE ALSO

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

                                                                                  cdk_traverse(3)