home *** CD-ROM | disk | FTP | other *** search
RISC OS BBC BASIC V Source | 1994-09-05 | 2.9 KB | 136 lines |
- menu - Menu creation and linking code.
- Supports
- PROC createmenu - creates a single depth menu
- PROC link - links a submenu onto a menu
- PROC tick - ticks an option in a menu
- PROC Grey - greys out an option in a menu
- Requires menu%(X) array
- Places pointer in (X)
- Also needs ws% memory block for indirected data
- eg call. PROCcreatemenu("Yes,No,Maybe_g,Quit",3)
- defines menu#3, "Maybe" will be greyed out
- other _controls are t=ticked
- u=underlined
- w=writeable
- a=generate message
- g=greyed
- ***********************************************************
- menu_CreateMenu(a$,a%)
- b$,men%,width%,entry$,mode$
- men%=menuspc%
- menu%(a%)=men%
- menu_precomma(a$):$(menuspc%)=b$
- menuspc%?12=7
- menuspc%?13=2
- menuspc%?14=7
- menuspc%?15=0
- menuspc%!20=44
- menuspc%!24=0
- menuspc%+=28
- width%=
- a$,",")
- !menuspc%=0
- !menuspc%=&80
- menuspc%!4=-1
- menuspc%!8=&07000021
- entry$=
- menu_precomma(a$)
- entry$,"_")
- (- mode$=
- entry$,
- (entry$)-
- entry$,"_"))
- )& entry$=
- entry$,
- entry$,"_")-1)
- mode$=""
- mode$,"t")
- !menuspc%=!menuspc%
- mode$,"u")
- !menuspc%=!menuspc%
- mode$,"w")
- !menuspc%=!menuspc%
- mode$,"a")
- !menuspc%=!menuspc%
- mode$,"g")
- menuspc%!8=menuspc%!8
- &400000
- entry$<13
- $(menuspc%+12)=entry$
- 5; !(menuspc%+12)=ws%:$(ws%)=entry$+
- 13:ws%+=
- entry$+1
- !(menuspc%+16)=0
- 7 !(menuspc%+20)=
- entry$+1
- 8) !(menuspc%+8)=!(menuspc%+8)
- width%<
- (entry$)
- width%=
- (entry$)
- menuspc%+=24
- a$=""
- men%!16=width%*16+10
- menu_Link(menu%,item$,submenu%)
- ptr%,mitem$
- ptr%=menu%+4
- ptr%+=24
- (!(ptr%+8)
- &100)=0
- mitem$=$(ptr%+12)
- mitem$=$(ptr%!12)
- (mitem$=item$)
- (?ptr%
- &80)=&80
- mitem$=item$
- ptr%!4=submenu%
- menu_Tick(menu%,item$,eff%)
- ptr%,mitem$
- ptr%=menu%+4
- ptr%+=24
- (!(ptr%+8)
- &100)=0
- mitem$=$(ptr%+12)
- mitem$=$(ptr%!12)
- (mitem$=item$)
- (?ptr%
- &80)=&80
- mitem$=item$
- eff%
- 0 : ?ptr%=?ptr%
- \
- 1 : ?ptr%=?ptr%
- &01
- -1 : ?ptr%=?ptr%
- menu_Grey(menu%,item$,eff%)
- ptr%,mitem$
- ptr%=menu%+4
- ptr%+=24
- (!(ptr%+8)
- &100)=0
- mitem$=$(ptr%+12)
- mitem$=$(ptr%!12)
- (mitem$=item$)
- (?ptr%
- &80)=&80
- mitem$=item$
- eff%
- o(
- 0 : ptr%!8=ptr%!8
- (&400000)
- p&
- 1 : ptr%!8=ptr%!8
- &400000
- q%
- -1 : ptr%!8=ptr%!8
- &400000
- menu_precomma(
- a$,",")
- b$=
- a$,",")-1)
- a$=
- (a$)-
- a$,","))
- b$=a$
- a$=""
-