home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / utilities / utilsm / multiboot / !MultiBoot / libs / Menus (.txt) next >
Encoding:
RISC OS BBC BASIC V Source  |  1994-09-05  |  2.9 KB  |  136 lines

  1.  menu - Menu creation and linking code.
  2.  Supports
  3.    PROC createmenu - creates a single depth menu
  4.    PROC link - links a submenu onto a menu
  5.    PROC tick - ticks an option in a menu
  6.    PROC Grey - greys out an option in a menu
  7.  Requires menu%(X) array
  8.  Places pointer in (X)
  9.  Also needs ws% memory block for indirected data
  10.  eg call. PROCcreatemenu("Yes,No,Maybe_g,Quit",3)
  11.  defines menu#3, "Maybe" will be greyed out
  12.  other _controls are t=ticked
  13.                      u=underlined
  14.                      w=writeable
  15.                      a=generate message
  16.                      g=greyed
  17.  ***********************************************************
  18. menu_CreateMenu(a$,a%)
  19.  b$,men%,width%,entry$,mode$
  20. men%=menuspc%
  21. menu%(a%)=men%
  22. menu_precomma(a$):$(menuspc%)=b$
  23. menuspc%?12=7
  24. menuspc%?13=2
  25. menuspc%?14=7
  26. menuspc%?15=0
  27. menuspc%!20=44
  28. menuspc%!24=0
  29. menuspc%+=28
  30. width%=
  31. a$,",") 
  32.  !menuspc%=0 
  33.  !menuspc%=&80
  34.   menuspc%!4=-1
  35.   menuspc%!8=&07000021
  36.   entry$=
  37. menu_precomma(a$)
  38. entry$,"_") 
  39. (-    mode$=
  40. entry$,
  41. (entry$)-
  42. entry$,"_"))
  43. )&    entry$=
  44. entry$,
  45. entry$,"_")-1)
  46.     mode$=""
  47. mode$,"t") 
  48.  !menuspc%=!menuspc% 
  49. mode$,"u") 
  50.  !menuspc%=!menuspc% 
  51. mode$,"w") 
  52.  !menuspc%=!menuspc% 
  53. mode$,"a") 
  54.  !menuspc%=!menuspc% 
  55. mode$,"g") 
  56.  menuspc%!8=menuspc%!8 
  57.  &400000
  58. entry$<13 
  59.     $(menuspc%+12)=entry$
  60. 5;    !(menuspc%+12)=ws%:$(ws%)=entry$+
  61. 13:ws%+=
  62. entry$+1
  63.     !(menuspc%+16)=0
  64. 7     !(menuspc%+20)=
  65. entry$+1
  66. 8)    !(menuspc%+8)=!(menuspc%+8) 
  67.  width%<
  68. (entry$) 
  69.  width%=
  70. (entry$)
  71.   menuspc%+=24
  72.  a$=""
  73. men%!16=width%*16+10
  74. menu_Link(menu%,item$,submenu%)
  75.  ptr%,mitem$
  76. ptr%=menu%+4
  77.   ptr%+=24
  78.  (!(ptr%+8) 
  79.  &100)=0 
  80.     mitem$=$(ptr%+12)
  81.     mitem$=$(ptr%!12)
  82.  (mitem$=item$) 
  83.  (?ptr% 
  84.  &80)=&80
  85.  mitem$=item$ 
  86.  ptr%!4=submenu%
  87. menu_Tick(menu%,item$,eff%)
  88.  ptr%,mitem$
  89. ptr%=menu%+4
  90.   ptr%+=24
  91.  (!(ptr%+8) 
  92.  &100)=0 
  93.     mitem$=$(ptr%+12)
  94.     mitem$=$(ptr%!12)
  95.  (mitem$=item$) 
  96.  (?ptr% 
  97.  &80)=&80
  98.  mitem$=item$ 
  99.  eff% 
  100.   0 : ?ptr%=?ptr% 
  101. \    
  102.   1 : ?ptr%=?ptr% 
  103.   &01
  104.  -1 : ?ptr%=?ptr% 
  105. menu_Grey(menu%,item$,eff%)
  106.  ptr%,mitem$
  107. ptr%=menu%+4
  108.   ptr%+=24
  109.  (!(ptr%+8) 
  110.  &100)=0 
  111.     mitem$=$(ptr%+12)
  112.     mitem$=$(ptr%!12)
  113.  (mitem$=item$) 
  114.  (?ptr% 
  115.  &80)=&80
  116.  mitem$=item$ 
  117.  eff% 
  118. o(   
  119.   0 : ptr%!8=ptr%!8 
  120. (&400000)
  121. p&   
  122.   1 : ptr%!8=ptr%!8 
  123.   &400000
  124. q%   
  125.  -1 : ptr%!8=ptr%!8 
  126.  &400000
  127. menu_precomma(
  128. a$,",") 
  129.   b$=
  130. a$,",")-1)
  131.   a$=
  132. (a$)-
  133. a$,","))
  134.   b$=a$
  135.   a$=""
  136.