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

  1. /*
  2.     sdgtofld.c
  3.  
  4.     % sed_GotoField
  5.  
  6.     C-scape 3.2
  7.     Copyright (c) 1986, 1987, by Oakland Group, Inc.
  8.     ALL RIGHTS RESERVED.
  9.  
  10.     Revision History:
  11.     -----------------
  12.     11/08/86 jmd    added calls to do_funcs
  13.     11/10/86 jmd    added protected mode and added returns 
  14.      4/01/87 jmd    added active mode check
  15.     11/18/87 jmd     changed names of some low-level funcs
  16.      4/08/88 jmd     changed sed->fieldcount to sed_GetFieldCount()
  17.  
  18.      1/27/89 jdc     fixed another field deletion related bug, sed->fieldno == -1
  19.      3/24/89 jmd    added sed_ macros
  20.      5/27/89 jmd    removed unnecessary call to goto_field
  21.  
  22.      3/17/90 jmd    added Cache/Flush
  23.      3/28/90 jmd    ansi-fied
  24. */
  25.  
  26. #include "sed.h"
  27.  
  28. int sed_GotoField(sed_type sed, int fieldno)
  29. /*
  30.     requires:    a field number that's within range.
  31.     modifies:   the sed.
  32.     effects:    moves to the field number given.  if the field is off the
  33.                 screen, scroll the screen until it's just on.
  34.                 If the sed is active, call the fenter and fexit functions.
  35. */
  36. {
  37.     cs_Assert(sed_Ok(sed), CS_SD_GTF_SED, 0);
  38.     cs_Assert(fieldno >= 0 && fieldno < sed_GetFieldCount(sed), CS_SD_GTF_BFN, 0);
  39.  
  40.     /* check if new field is protected */
  41.     if (menu_IsProtected(sed_GetMenu(sed), fieldno)) {
  42.         return(SED_STUCK);
  43.     }
  44.     
  45.     if (sed_GetFieldNo(sed) != -1 && !sd_exitfield(sed)) {
  46.         return(SED_INVALID);
  47.     }
  48.  
  49.     disp_Cache();
  50.     sd_scroll_adjust(sed, fieldno);
  51.     sd_goto_field(sed, fieldno);
  52.  
  53.     if (sed_IsActive(sed)) {
  54.         sed_DoFieldFenter(sed, sed_GetFieldNo(sed));
  55.     }
  56.     disp_Flush();
  57.  
  58.     return(SED_MOVED);
  59. }
  60.  
  61.