home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1993 #2 / Image.iso / clipper / snip0693.zip / STACKEY.PRG < prev    next >
Text File  |  1992-09-05  |  2KB  |  84 lines

  1. //----------------------- StackKey.prg -----------------------------------
  2. /***
  3. *
  4. *  PushKeys(), PopKeys(), ResetAllKeys()
  5. *
  6. *  SET KEY stack system
  7. *
  8. *  By Patrick Oonk
  9. *
  10. *  PushKeys()                       // save SET KEY settings
  11. *  set key K_F2 to SomeLookup()
  12. *  // do something
  13. *  PopKeys()                        // restore SET KEY settings
  14. */
  15.  
  16. STATIC aKeyStack := {}
  17.  
  18. // save all SET KEY settings on stack
  19. FUNCTION PushKeys()
  20.    LOCAL n
  21.    aadd(aKeyStack, {})
  22.    for n := -39 to 306
  23.       aadd(aKeyStack[len(aKeyStack)], setkey(n))
  24.    next
  25. RETURN( NIL )
  26.  
  27.  
  28. // pop SET KEY stack
  29. FUNCTION PopKeys()
  30.    LOCAL n, n2 := 0
  31.    for n := -39 to 306
  32.       setkey(n, aKeyStack[len(aKeyStack),++n2])
  33.    next
  34.    asize(aKeystack, len(aKeyStack)-1)
  35. RETURN( NIL )
  36.  
  37.  
  38. // reset all SET KEYS
  39. FUNCTION ResetAllKeys()
  40.    LOCAL n
  41.    for n := -39 to 306
  42.       setkey(n, NIL)
  43.    next
  44. RETURN( NIL )
  45.  
  46. --------------------------------- StackSets.prg ---------------------------
  47.  
  48. /***
  49. *
  50. *  PushSets(), PopSets()
  51. *
  52. *  SET KEY stack system
  53. *
  54. *  By Patrick Oonk, R.W. Vergeer
  55. *
  56. *  Example:
  57. *
  58. *  PushSets()        // save current sets
  59. *  set deleted off
  60. *  // do something
  61. *  PopSets()         // restore sets
  62. *
  63. */
  64.  
  65. #include "Set.ch"
  66.  
  67. STATIC aSets := {}
  68.  
  69. FUNCTION PushSets()
  70.    LOCAL n
  71.    aadd(aSets, {})
  72.    for n := 1 TO _SET_COUNT
  73.       aadd(aSets[len(aSets)],  SET(n))
  74.    next
  75. RETURN ( NIL )
  76.  
  77. FUNCTION PopSets()
  78.    LOCAL n
  79.    for n := 1 TO _SET_COUNT
  80.       set(n, aSets[len(aSets), n])
  81.    next
  82.    asize(aSets, len(aSets)-1)
  83. RETURN ( NIL )
  84.