home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c185 / 1.ddi / FUNCS.EXE / CSCAPE / SOURCE / FNIFLD.C < prev    next >
Encoding:
C/C++ Source or Header  |  1989-09-07  |  1.7 KB  |  79 lines

  1. /*
  2.     fnifld.c
  3.  
  4.     % inter_field
  5.  
  6.     This function is used by the standard field functions to facilitate
  7.     movement between fields.
  8.  
  9.     Handling the interfield movement in one place save code space and
  10.     makes it easy to modify the interfield behavior.  Simply replace
  11.     inter_field with a new function that performs as desired.
  12.  
  13.     C-scape 3.1
  14.     Copyright (c) 1986, 1987, 1988 by Oakland Group, Inc.
  15.     ALL RIGHTS RESERVED.
  16.  
  17.     Revision History:
  18.     -----------------
  19.     10/08/88 jmd    Added TAB and SHFT_TAB
  20.     12/15/88 jmd    ifdef'd out TAB and SHFT_TAB support
  21. */
  22.  
  23. #include <stdio.h>
  24. #include "cscape.h"
  25. #include "scancode.h"
  26.  
  27. boolean inter_field(sed, scancode)
  28.     sed_type sed;
  29.     int scancode;
  30. /*
  31.     effects:    Handles movement between fields.
  32.                     ESC        sets baton to 0, exits
  33.                     ENTER    goes to next field if possible
  34.                             else sets baton to fieldno, exits
  35.                     UP         goes to the previous field,
  36.                     DOWN     goes to the next field,
  37.                   * TAB            goes to the right field
  38.                   * SHFT_TAB    goes to the left field
  39.  
  40.     * Note:    define the symbol TAB_SUPPORT to enable these keys
  41.  
  42.     returns:    TRUE if intercepted a key, FALSE otherwise.
  43. */
  44. {
  45.     switch (scancode) {
  46.     case ESC:
  47.         sed_SetBaton(sed, 0);
  48.         sed_ToggleExit(sed);
  49.         return(TRUE);
  50.     case ENTER:
  51.         /* try to go to the next field else exit */
  52.         if (sed_IncField(sed) == SED_STUCK) {
  53.             sed_SetBaton(sed, sed_GetFieldNo(sed)+1);
  54.             sed_ToggleExit(sed);
  55.         }
  56.         return(TRUE);
  57.  
  58. #ifdef TAB_SUPPORT
  59.     case TAB:
  60.         sed_RightField(sed);
  61.         return(TRUE);
  62.     case SHFT_TAB:
  63.         sed_LeftField(sed);
  64.         return(TRUE);
  65. #endif
  66.  
  67.     case UP:
  68.         sed_DecField(sed);
  69.         return(TRUE);
  70.     case DOWN:
  71.         sed_IncField(sed);
  72.         return(TRUE);
  73.     default:
  74.         break;
  75.     }
  76.     return(FALSE);
  77. }
  78.  
  79.