home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / OTHERUTI / TCPP10-8.ZIP / TCALC.ZIP / TCALC.C next >
Text File  |  1990-09-26  |  4KB  |  172 lines

  1. /* Turbo C++ - (C) Copyright 1987,1988,1990 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 "tcalc.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 ((input >= ' ') && (input <= '~'))
  137.      getinput(input);
  138.     break;
  139.   } /* switch */
  140.  }
  141.  while (!stop);
  142. } /* run */
  143.  
  144. void main(int argc, char *argv[])
  145. {
  146.  window(1, 1, 80, 25);
  147.  initcursor();
  148.  initcolortable();
  149.  setcursor(nocursor);
  150.  setcolor(WHITE);
  151.  clrscr();
  152.  writef((80 - strlen(MSGHEADER)) >> 1, 11, MSGHEADERCOLOR, strlen(MSGHEADER),
  153.         MSGHEADER);
  154.  writef((80 - strlen(MSGKEYPRESS)) >> 1, 13, PROMPTCOLOR,
  155.         strlen(MSGKEYPRESS), MSGKEYPRESS);
  156.  gotoxy(80, 25);
  157.  getkey();
  158.  setcolor(WHITE);
  159.  clrscr();
  160.  initvars();
  161.  memleft = memsize;
  162.  redrawscreen();
  163.  if (argc > 1)
  164.   loadsheet(argv[1]);
  165.  clearinput();
  166.  run();
  167.  setcolor(LIGHTGRAY);
  168.  clrscr();
  169.  setcursor(oldcursor);
  170. }
  171.  
  172.