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

  1. /*
  2.     fnbob.c  8/30/88
  3.  
  4.     % bob_funcs
  5.  
  6.     Object control passing functions.
  7.  
  8.     C-scape 3.1
  9.     Copyright (c) 1986-1989 by Oakland Group, Inc.
  10.     ALL RIGHTS RESERVED.
  11.  
  12.     Revision History:
  13.     -----------------
  14.      9/15/88 jmd     removed vid_Cursor calls
  15.      9/17/88 jmd     added std_ funcs
  16.     10/14/88 jdc    added var_size element to field_funcs_struct
  17.     12/05/88 jmd    added mouse checking
  18.     12/06/88 jmd    added special func, nesting support
  19.     05/23/89 jdc    made default case pass value back instead of sed_IncField
  20. */
  21.  
  22. #include <stdio.h>
  23. #include <ctype.h>
  24.  
  25. #include "cscape.h"
  26. #include "fnfunc.h"
  27. #include "scancode.h"
  28.  
  29. OGLOBAL field_funcs_struct bob_funcs = {
  30.     std_fenter,
  31.     std_fexit,
  32.     bob_fkey,
  33.     FNULL,
  34.     FNULL,
  35.     0
  36. };
  37.  
  38. void bob_fkey(sed)
  39.     sed_type sed;
  40. /*
  41.     Calls bob_Go for the bob attached to the field.
  42.     Moves to the next field in the direction indicated
  43.     by bob_Go's return value.
  44. */
  45. {
  46.     bob_type bob;
  47.     int ret, fieldno;
  48.  
  49.     fieldno = sed_GetFieldNo(sed);
  50.     if ((bob = sed_GetFieldBob(sed, fieldno)) == NULL) {
  51.  
  52.         /* Error: no bob attached to the field */
  53.         sed_SetBaton(sed, BOB_QUIT);
  54.         sed_ToggleExit(sed);
  55.         return;
  56.     }
  57.  
  58.     ret = bob_Go(bob);
  59.  
  60.     /* See if special function is interested in BOB_ code */
  61.     if (sed_DoSpecial(sed, ret))
  62.         return;
  63.  
  64.     switch (ret) {
  65.     case BOB_UP:
  66.         sed_UpField(sed);
  67.         break;
  68.     case BOB_DOWN:
  69.         sed_DownField(sed);
  70.         break;
  71.     case BOB_LEFT:
  72.         sed_LeftField(sed);
  73.         break;
  74.     case BOB_RIGHT:
  75.         sed_RightField(sed);
  76.         break;
  77.  
  78.     case BOB_QUIT:
  79.     default:
  80.         sed_SetBaton(sed, ret);
  81.         sed_ToggleExit(sed);
  82.         break;
  83.     }
  84. }
  85.  
  86.