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

  1. /*
  2.     menuifld.c     4/10/88
  3.  
  4.     % menu_InsertRows
  5.  
  6.     C-scape 3.2
  7.     Copyright (c) 1988, by Oakland Group, Inc.
  8.     ALL RIGHTS RESERVED.
  9.  
  10.     Revision History:
  11.     -----------------
  12.      6/07/88 jmd    added call to tb_InsertRow
  13.      6/24/88 jmd    converted to new xarray/iarray calls
  14.  
  15.      4/16/89 jmd     adjusted for jarray
  16.      7/02/89 jdc    added frowcount change
  17.  
  18.      3/28/90 jmd    ansi-fied
  19.      5/30/90 jdc    made menu_InsRowTB a function and put it in here
  20.     10/31/90 ted    changed menu_InsRowTB declaration to ansii style.
  21. */
  22.  
  23. #include "menu.h"
  24.  
  25. boolean menu_InsertRows(menu_type menu, int row, int count)
  26. /*
  27.     Inserts count rows in the menu before row.
  28. */
  29. {
  30.     register int     i;
  31.     int      fno;
  32.  
  33.     /* test menu and row number */
  34.     cs_Assert(menu_Ok(menu), CS_M_IR_MENU, 0);    /* passed bad menu */
  35.     cs_Assert(row >= 0 && row < menu_GetRowCount(menu) && count > 0, CS_M_IR_ARG, 0);    /* passed bad args */
  36.  
  37.     /* insert rows into the text buffer */
  38.     for (i = 0; i < count; i++) {
  39.         menu_InsRowTB(menu, row, 0);
  40.     }
  41.  
  42.     /* slide the row array */
  43.     /* adjust the row position for all the fields below */
  44.     for (i = menu->frowcount - 1; i >= row; i--) {
  45.         fno = ia_Get(menu->fgrid, i);
  46.         ia_Put(menu->fgrid, i + count, fno);
  47.         if (fno > 0) {
  48.             for (fno = fno - 1; fno >= 0; fno = menu_GetFieldRight(menu, fno)) {
  49.                 field_SetRow(menu_GetField(menu, fno), i + count);
  50.             }
  51.         }
  52.     }
  53.     menu->frowcount += count;
  54.  
  55.     /* clear the inserted area of the row array */
  56.     fno = 0;
  57.     for (i = row; i < row + count; i++) {
  58.         ia_Put((menu)->fgrid, i, fno);
  59.     }
  60.  
  61.     /* menu size is now incorrect */
  62.     menu_SetDirty(menu, TRUE);
  63.  
  64.     return(TRUE);
  65. }
  66.  
  67. boolean menu_InsRowTB(menu_type menu, int row, int col)
  68. {
  69.     boolean ret;
  70.     int ins;
  71.  
  72.     ins = menu_GetTextbuf(menu)->insert;
  73.  
  74.     menu_GetTextbuf(menu)->insert = TED_INSERT;
  75.     ret = menu_Addc(menu, row, col, '\n', 1);
  76.  
  77.     menu_GetTextbuf(menu)->insert = ins;
  78.  
  79.     return(ret);
  80. }
  81.