home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / forth / compiler / fpc / source / smenu.seq < prev    next >
Text File  |  1988-11-30  |  3KB  |  87 lines

  1. \ SMENU.SEQ             A sample menu file              by Tom Zimmer
  2.  
  3. only forth also definitions hidden also
  4. \       ┌─────────────────────────────────────────────────┐
  5. \       │ This is an example of menu usage.               │
  6. \       │ You can make a copy of this file and edit to    │
  7. \       │ suit your needs.                                │
  8. \       └─────────────────────────────────────────────────┘
  9.  
  10. \ Install the functions into these defered words you want performed
  11. \ when a menu item is selected.
  12.  
  13. defer item1
  14. defer item2
  15. defer item3
  16. defer item4
  17. defer item5
  18. defer item6
  19. defer item7
  20. defer item8
  21. defer item9
  22.  
  23.  0 value amsave                 \ a place to save the previous menu column
  24.  0 value amline                 \ Menu starting line and column on screen
  25.  0 value amcolumn
  26.  
  27. newmenu menu1$
  28.         menuline"  A item1            Alt-1 " item1
  29.         menuline"  B item2            Alt-2 " item2
  30.         menuline" ──────────────────────────" noop
  31.         menuline"  C item3                  " item3
  32.         menuline"  D item4            Alt-4 " item4
  33.         menuline" ──────────────────────────" noop
  34.         menuline"  Quit item5           F10 " item5
  35. endmenu
  36.  
  37. newmenu menu2$
  38.         menuline"  E item6            Alt-6 " item6
  39.         menuline"  F item7            Alt-7 " item7
  40.         menuline" ──────────────────────────" noop
  41.         menuline"  G item8               F8 " item8
  42.         menuline" ──────────────────────────" noop
  43.         menuline"  H item9               F9 " item9
  44. endmenu
  45.  
  46. newmenubar amenubar +," A menu1 "         \ the menu bar contains only two items
  47.                     +," B menu2 "
  48. endmenu
  49. create amenulist menu1$ ,               \ and two lists of functions
  50.                  menu2$ ,
  51.  
  52. \ initialize the default condition of the menu bar
  53.  
  54. amenubar   =: menubar
  55. amenulist  =: menulist
  56. ' amline   is mline
  57. ' amcolumn is mcolumn
  58. ' drop     is doother
  59.  
  60. \ defered routine to handle all keys the menu handler doesn't understand.
  61. \ can be used to insert any unknown key pressed in an editor if you
  62. \ want, or it can just throw the keys away as is done here. The
  63. \ character the menu driver didn't understand is on the stack when
  64. \ AOTHER is called.
  65.  
  66. defer aother            ' drop is aother
  67.  
  68. : amenu         ( --- )         \ the rolodex menu driver
  69.                 amsave =: mcol
  70.                 savemenu
  71.                 amenubar     =: menubar
  72.                 amenulist    =: menulist
  73.                 ['] amline   is mline
  74.                 ['] amcolumn is mcolumn
  75.                 ['] aother   is doother
  76.                 menu
  77.                 restmenu
  78.                 mcol =: amsave ;
  79.  
  80. \s
  81.   This word AMENU is then called whenever a menu operation is to be
  82. performed.  In an editing application, I normally use ESC to enable
  83. the menu.  To do this you look for the user to press the ESC key
  84. while typing in text, if the escape key is pressed then execute RMENU
  85. rather than inserting the key pressed.
  86.  
  87.