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

  1. /*
  2.     sdincfld.c
  3.  
  4.     % sed_IncField
  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/05/86 jmd    converted to boolean    
  13.     11/06/86 jmd    removed references to toggled_in_exit
  14.     11/07/86 jmd    cleaned up the logic
  15.     11/08/86 jmd    added calls to do_funcs
  16.     11/10/86 jmd    added protected mode
  17.     11/18/87 jmd     changed names of some low-level funcs
  18.      4/08/88 jmd     changed sed->fieldcount to sed_GetFieldCount()
  19.  
  20.      3/24/89 jmd    added sed_ macros
  21.      5/27/89 jmd    removed unnecessary call to goto_field
  22.  
  23.      3/17/90 jmd    added Cache/Flush
  24.      3/28/90 jmd    ansi-fied
  25. */
  26.  
  27. #include "sed.h"
  28.  
  29. int sed_IncField(sed_type sed)
  30. /*
  31.     modifies:    sed object.
  32.     effects:    tries to go to the next editing field, without wrapping 
  33.                 around (contingent upon passing the fexit test).  
  34. */
  35. {
  36.     register int    next_fld;
  37.     menu_type         menu;
  38.  
  39.     cs_Assert(sed_Ok(sed), CS_SD_IF_SED, 0);
  40.  
  41.     menu = sed_GetMenu(sed);
  42.  
  43.     if (sed_GetFieldNo(sed) + 1 >= menu_GetFieldCount(menu)) {
  44.         return(SED_STUCK);
  45.     }
  46.  
  47.     /* find next unprotected field */
  48.     for (next_fld = sed_GetFieldNo(sed) + 1; next_fld < menu_GetFieldCount(menu); next_fld++) {
  49.         if (!menu_IsProtected(menu, next_fld)) {
  50.             break;
  51.         }
  52.     }
  53.  
  54.     if (next_fld >= menu_GetFieldCount(menu)) {        /* no unprotected fields found */
  55.         sd_goto_field(sed, sed_GetFieldNo(sed));        /* refresh current field */
  56.         return(SED_STUCK);
  57.     }
  58.  
  59.     if (!sd_exitfield(sed)) {
  60.         return(SED_INVALID);
  61.     }
  62.  
  63.     disp_Cache();
  64.     sd_scroll_adjust(sed, next_fld);
  65.     sd_goto_field(sed, next_fld);
  66.         
  67.     if (sed_IsActive(sed)) {
  68.         sed_DoFieldFenter(sed, sed_GetFieldNo(sed));
  69.     }
  70.     disp_Flush();
  71.  
  72.     return(SED_MOVED);
  73. }
  74.  
  75.