home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / tc20 / mcalc.c < prev    next >
Text File  |  1988-10-13  |  4KB  |  169 lines

  1. /* Turbo C - (C) Copyright 1987,1988 by Borland International */
  2.  
  3. #define MAIN
  4.  
  5. #include <string.h>
  6. #include <alloc.h>
  7. #include <stdarg.h>
  8. #include <dos.h>
  9. #include <conio.h>
  10. #include "mcalc.h"
  11.  
  12. CELLPTR cell[MAXCOLS][MAXROWS], curcell;
  13. unsigned char format[MAXCOLS][MAXROWS];
  14. unsigned char colwidth[MAXCOLS];
  15. unsigned char colstart[SCREENCOLS];
  16. int leftcol, rightcol, toprow, bottomrow, curcol, currow, lastcol, lastrow;
  17. char changed = FALSE;
  18. char formdisplay = FALSE;
  19. char autocalc = TRUE;
  20. char stop = FALSE;
  21. char colortable[128];
  22. char colorcard;
  23. char snow;
  24. char far *displayptr;
  25. long memleft;
  26. unsigned int oldcursor, shortcursor, tallcursor, nocursor = 0x2000;
  27.  
  28. void run()
  29. /* The main program loop */
  30. {
  31.  int input;
  32.  
  33.  do
  34.  {
  35.   displaycell(curcol, currow, HIGHLIGHT, NOUPDATE);
  36.   curcell = cell[curcol][currow];
  37.   showcelltype();
  38.   input = getkey();
  39.   switch(input)
  40.   {
  41.    case '/' :
  42.     mainmenu();
  43.     break;
  44.    case F1 :
  45.     recalc();
  46.     break;
  47.    case F2 :
  48.     editcell(curcell);
  49.     break;
  50.    case DELKEY :
  51.     deletecell(curcol, currow, UPDATE);
  52.     printfreemem();
  53.     if (autocalc)
  54.      recalc();
  55.     break;
  56.    case PGUPKEY :
  57.     toprow -= 20;
  58.     currow -= 20;
  59.     if (currow < 0)
  60.      currow = toprow = 0;
  61.     else if (toprow < 0)
  62.     {
  63.      currow -= toprow;
  64.      toprow = 0;
  65.     }
  66.     setbottomrow();
  67.     displayscreen(NOUPDATE);
  68.     break;
  69.    case PGDNKEY :
  70.     toprow += 20;
  71.     currow += 20;
  72.     if ((currow >= MAXROWS) && (toprow >= MAXROWS))
  73.     {
  74.      currow = MAXROWS - 1;
  75.      toprow = MAXROWS - 20;
  76.     }
  77.     else if (toprow > (MAXROWS - 20))
  78.     {
  79.      currow -= (toprow + 20 - MAXROWS);
  80.      toprow = MAXROWS - 20;
  81.     }
  82.     setbottomrow();
  83.     displayscreen(NOUPDATE);
  84.     break;
  85.    case CTRLLEFTKEY :
  86.     displaycell(curcol, currow, NOHIGHLIGHT, NOUPDATE);
  87.     if (leftcol == 0)
  88.      curcol = 0;
  89.     else
  90.     {
  91.      curcol = rightcol = leftcol - 1;
  92.      setleftcol();
  93.      setrightcol();
  94.      displayscreen(NOUPDATE);
  95.     }
  96.     break;
  97.    case CTRLRIGHTKEY :
  98.     displaycell(curcol, currow, NOHIGHLIGHT, NOUPDATE);
  99.     if (rightcol == MAXCOLS - 1)
  100.      curcol = rightcol;
  101.     else
  102.     {
  103.      curcol = leftcol = rightcol + 1;
  104.      setrightcol();
  105.      setleftcol();
  106.      displayscreen(NOUPDATE);
  107.     }
  108.     break;
  109.    case HOMEKEY :
  110.     currow = curcol = leftcol = toprow = 0;
  111.     setrightcol();
  112.     setbottomrow();
  113.     displayscreen(NOUPDATE);
  114.     break;
  115.    case ENDKEY :
  116.     rightcol = curcol = lastcol;
  117.     currow = bottomrow = lastrow;
  118.     settoprow();
  119.     setleftcol();
  120.     setrightcol();
  121.     displayscreen(NOUPDATE);
  122.     break;
  123.    case UPKEY :
  124.     moverowup();
  125.     break;
  126.    case DOWNKEY :
  127.     moverowdown();
  128.     break;
  129.    case LEFTKEY :
  130.     movecolleft();
  131.     break;
  132.    case RIGHTKEY :
  133.     movecolright();
  134.     break;
  135.    default :
  136.     if (inchrset(input)) getinput(input); break;
  137.   } /* switch */
  138.  }
  139.  while (!stop);
  140. } /* run */
  141.  
  142. void main(int argc, char *argv[])
  143. {
  144.  window(1, 1, 80, 25);
  145.  initcursor();
  146.  initcolortable();
  147.  setcursor(nocursor);
  148.  setcolor(WHITE);
  149.  clrscr();
  150.  writef((80 - strlen(MSGHEADER)) >> 1, 11, MSGHEADERCOLOR, strlen(MSGHEADER),
  151.         MSGHEADER);
  152.  writef((80 - strlen(MSGKEYPRESS)) >> 1, 13, PROMPTCOLOR,
  153.         strlen(MSGKEYPRESS), MSGKEYPRESS);
  154.  gotoxy(80, 25);
  155.  getkey();
  156.  setcolor(WHITE);
  157.  clrscr();
  158.  initvars();
  159.  memleft = memsize;
  160.  redrawscreen();
  161.  if (argc > 1)
  162.   loadsheet(argv[1]);
  163.  clearinput();
  164.  run();
  165.  setcolor(LIGHTGRAY);
  166.  clrscr();
  167.  setcursor(oldcursor);
  168. }
  169.