home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a012 / 1.ddi / CHAP12.EXE / CHP1201.PRG < prev    next >
Encoding:
Text File  |  1991-04-30  |  1.5 KB  |  62 lines

  1. /*
  2.    Listing 12.1. Save the screen environment with SaveEnv().
  3.    Listing 12.2. Restore previous environment with RestEnv().
  4.    Author: Greg Lief / Craig Yellick
  5.    Excerpted from "Clipper 5: A Developer's Guide"
  6.    Copyright (c) 1991 M&T Books
  7.                       501 Galveston Drive
  8.                       Redwood City, CA 94063-4728
  9.                       (415) 366-3600
  10. */
  11.  
  12. //  Stack used by both SaveEnv() and RestEnv().
  13. static envstack_ := {}
  14.  
  15. //  Manifest constants used by RestEnv().
  16. #define ROW     1
  17. #define COLUMN  2
  18. #define CURSOR  3
  19. #define COLOR   4
  20. #define SCREEN  5
  21.  
  22. function SaveEnv()
  23. /*
  24.    Save current cursor row/column/size, color, and screen.
  25. */
  26.  
  27.   aadd(envstack_, { row(), col(), ;
  28.                     setcursor(), ;
  29.                     setcolor(), ;
  30.                     savescreen(0, 0, maxrow(), maxcol()) } )
  31. return nil
  32.  
  33. function RestEnv()
  34. /*
  35.    Restore cursor row/column/size, color, and screen.
  36. */
  37. local ele := len(envstack_)
  38.  
  39.   //  Avoid an empty array,
  40.   //  which would cause an array access error.
  41.   if ele > 0
  42.  
  43.     //  Restore row/column position.
  44.     setpos(envstack_[ele, ROW], envstack_[ele, COLUMN])
  45.  
  46.     //  Restore cursor state.
  47.     setcursor(envstack_[ele, CURSOR])
  48.  
  49.     //  Restore color.
  50.     setcolor(envstack_[ele, COLOR])
  51.  
  52.     //  Restore screen.
  53.     restscreen(0, 0, maxrow(), maxcol(), envstack_[ele, SCREEN])
  54.  
  55.     //  Truncate array by lopping off last element.
  56.     asize(envstack_, ele - 1)
  57.   endif
  58.  
  59. return nil
  60.  
  61. // end of file CHP1201.PRG
  62.