home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / SOURCE / FUNCS / FNIFLDG.C < prev    next >
C/C++ Source or Header  |  1990-03-28  |  2KB  |  74 lines

  1. /*
  2.     fnifldg.c
  3.  
  4.     % inter_field_grid
  5.  
  6.     This function is used by the gmenu field functions to facilitate
  7.     orthoganal movement between fields.
  8.  
  9.     Handling the inter_field_grid movement in one place save code space and
  10.     makes it easy to modify the interfield behavior.  Simply replace
  11.     inter_field_grid with a new function that performs as desired.
  12.  
  13.     C-scape 3.2
  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.      3/28/90 jmd    ansi-fied
  21. */
  22.  
  23. #include <stdio.h>
  24. #include "cscape.h"
  25. #include "scancode.h"
  26.  
  27. boolean inter_field_grid(sed_type sed, int scancode)
  28. /*
  29.     effects:    Handles movement between fields.
  30.                     ESC        sets baton to 0, exits
  31.                     ENTER    goes to next field if possible
  32.                             else sets baton to fieldno, exits
  33.                     UP         goes up,
  34.                     DOWN     goes down,
  35.                     LEFT    goes left,
  36.                     RIGHT    goes right,
  37.                     SHFT_TAB    goes left,
  38.                     TAB        goes right,
  39.     returns:    TRUE if intercepted a key, FALSE otherwise.
  40. */
  41. {
  42.     switch (scancode) {
  43.     case ESC:
  44.         sed_SetBaton(sed, 0);
  45.         sed_ToggleExit(sed);
  46.         return(TRUE);
  47.     case ENTER:
  48.         /* try to go to the next field else exit */
  49.         if (sed_IncField(sed) == SED_STUCK) {
  50.             sed_SetBaton(sed, sed_GetFieldNo(sed)+1);
  51.             sed_ToggleExit(sed);
  52.         }
  53.         return(TRUE);
  54.     case UP:
  55.         sed_UpField(sed);
  56.         return(TRUE);
  57.     case DOWN:
  58.         sed_DownField(sed);
  59.         return(TRUE);
  60.     case SHFT_TAB:
  61.     case LEFT:
  62.         sed_LeftField(sed);
  63.         return(TRUE);
  64.     case TAB:
  65.     case RIGHT:
  66.         sed_RightField(sed);
  67.         return(TRUE);
  68.     default:
  69.         break;
  70.     }
  71.     return(FALSE);
  72. }
  73.  
  74.