home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ARM Club 3
/
TheARMClub_PDCD3.iso
/
hensa
/
keyboard
/
wimpkeys_1
/
!WimpKeys
/
!RunImage
(
.txt
)
< prev
next >
Wrap
RISC OS BBC BASIC V Source
|
1994-03-27
|
9KB
|
406 lines
><WimpKeys>!RunImage
Another amazing program by Garry, garry@goldhill.demon.co.uk
Copyright Garry, garry@goldhill.demon.co.uk 1994
Real men use WIMPs without line numbers !
version$="1.00 (14 March 1994)"
.version$="1.00" +
(223)+" (27 March 1994)"
"Hourglass_On"
error:
loadsprites
block% 3855
block2% 20
databuff% 1024
iconsp% 12
icontext$(12)
ind% 2079
mb1% &100
q% &500
r% &500
close%=
icontxt$=""
indend%=ind%+2079
8mask%=0+(1<<4)+(1<<5)+(1<<7)+(1<<10)+(1<<11)+(1<<12)
quit%=
shaded%=1<<22
text$=""
"OS_FSControl",28,"<WimpKeys$DIR>.WimpKeys.*"
,,,numwkeys%
numwkeys%+=1
wimpkeydef$(numwkeys%,18)
wimpkeyicon$(numwkeys%,18)
wkeyset%=1
keyset%=1
"Wimp_Initialise",200,&4B534154,"WimpKeys"
,task%
"Wimp_OpenTemplate",,"<WimpKeys$DIR>.Templates"
indtemp%=ind%
infohdl%=
template("info")
keyshdl%=
template("keys")
*#wkeyshdl%=
template("wimpkeys")
"Wimp_CloseTemplate"
iconbar%=
iconbar
seticontext(15,infohdl%,version$)
getwkeys
wimperror
close%=
close:
"Hourglass_Off"
*POINTER
"Wimp_Poll",mask%,block%
reason%,block%
reason%
"Wimp_RedrawWindow",,block%
"Wimp_OpenWindow",,block%
closewindow(block%!0)
mouse_click(block%)
keypress
menu_action(block%)
17,18:
receive(block%)
quit%=
close
template(name$)
"Wimp_LoadTemplate",,block%,indtemp%,indend%,-1,name$,0
,,indtemp%
"Wimp_CreateWindow",,block%
hdl%
H =hdl%
getwkeys
wkeys%=0
wkeys%+=1
NIloadwkeys%=
loadwkeyfile("<WimpKeys$DIR>.WimpKeys."+
(wkeys%),wkeys%)
loadwkeys%=
loadwkeyfile(file$,wkeyset%)
"OS_File",5,file$
type%
type%
icon%=1
channel%=
(file$)
nokey%=
Z
byte1%=
#(channel%)
byte1%=124
^ byte%=
#(channel%)
_0
#(channel%)
byte%=10
byte%=13
byte1%<>124
#channel%=
#channel%-1
wkey%=1
d
e/
settext(wimpkeydef$(wkeyset%,wkey%))
f0
settext(wimpkeyicon$(wkeyset%,wkey%))
wkey%+=1
nokey%=
wkey%>9
#(channel%)
=
settext(
tkey$)
tkey$=""
byte%=
#(channel%)
tkey$=tkey$+
(byte%)
#(channel%)
byte%=10
byte%=13
#(channel%)
nokey%=
tkey$=
tkey$)+
closewindow(hdl%)
hdl%=infohdl%
"Wimp_CreateMenu",,-1
block%!0=hdl%
"Wimp_CloseWindow",,block%
loadsprites
"<WimpKeys$DIR>.!Sprites":T%=
#S%+16:
sprites% T%
*sprites%!0=T% :
Length of sprite file
sprites%!4=0
.sprites%!8=16 :
first free sprite counter
'sprites%!12=16:
free space counter
"OS_SpriteOp",&109,sprites%
"OS_SpriteOp",&10A,sprites%,"<WimpKeys$DIR>.!Sprites"
iconbar
window handle=-1 (icon bar utils):box (0,0) to (68,68)
flags:icon is sprite, indirected, button type 2
6!q%=-1:q%!4=0:q%!8=0:q%!12=68:q%!16=68:q%!20=&2102
$iconsp%="!WimpKeys"
4q%!24=iconsp%:q%!28=sprites%:q%!32=
($iconsp%)+1
"Wimp_CreateIcon",,q%
'!q%=-2:q%!4=iconbar%:q%!8=0:q%!12=0
"Wimp_SetIconState",,q%
geticontext(icon%,hdl%,
icontxt$)
block%!0=hdl%
block%!4=icon%
&400CE,,block%
icontxt$=$(block%!28)+
mouse_click(block%)
mousex%=block%!0
mousey%=block%!4
buttonstate%=block%!8
hdl%=block%!12
iconclick%=block%!16
buttonstate%
iconclick%=iconbar%
wkeys
hdl%
%
wkeyshdl%:
wkeychange(-1)
!
keyshdl%:
newdefs(-1)
)
iconclick%=iconbar%
hdl%=-2
menu_setup(mb1%,5)
"
create_menu("WimpKeys")
menu%=1
4
"Wimp_CreateMenu",,mb1%,mousex%-100,216
&
iconclick%=iconbar%
wkeys
hdl%
-
infohdl%:
"Wimp_CreateMenu",,-1
$
wkeyshdl%:
wkeychange(1)
keyshdl%:
newdefs(1)
newdefs(step%)
iconclick%
showdefs(step%)
updatewkeys
L junk%=
loadwkeyfile("<WimpKeys$DIR>.WimpKeys."+
(wkeyset%),wkeyset%)
icon%=1
C
seticontext(icon%,wkeyshdl%,wimpkeyicon$(keyset%,icon%))
B
seticontext(icon%,keyshdl%,wimpkeyicon$(keyset%,icon%))
D
seticontext(icon%+18,keyshdl%,wimpkeydef$(keyset%,icon%))
icon%
savewkeys
showdefs(step%)
"Hourglass_On"
block%!0=keyshdl%
"Wimp_GetWindowState",,block%
block%!28=-1
"Wimp_OpenWindow",,block%
keyset%+=step%
keyset%>numwkeys%
keyset%=1
keyset%<1
keyset%=numwkeys%
seticontext(38,keyshdl%,
(keyset%))
icon%=1
seticontext(icon%,keyshdl%,
wimpkeyicon$(keyset%,icon%)))
seticontext(icon%+18,keyshdl%,
wimpkeydef$(keyset%,icon%)))
icon%
"Hourglass_Off"
wkeys
block%!0=wkeyshdl%
"Wimp_GetWindowState",,block%
block%!28=-1
"Wimp_OpenWindow",,block%
icon%=1
seticontext(0,wkeyshdl%,
(wkeyset%))
seticontext(icon%,wkeyshdl%,
wimpkeyicon$(wkeyset%,icon%)))
icon%
out(text$)
charout%=1
(text$)
! byte%=
text$,charout%,1))
byte%
)
controlcode(text$,charout%)
"OS_Byte",138,0,byte%
charout%
controlcode(text$,counter%)
text$,counter%+3,1)="]"
"OS_Byte",138,0,
text$,counter%+1,2))
"OS_Byte",138,0,byte%
counter%+=3
charout%=counter%
receive(block%)
message%=block%!16
message%
0:quit%=
seticontext(icon%,hdl%,icontxt$)
block%!0=hdl%:block%!4=icon%
&400CE,,block%
3textpointer%=block%!28:$(textpointer%)=icontxt$
block%!8=0:block%!12=0
*FX19
&400CD,,block%
wkeychange(step%)
geticontext(0,wkeyshdl%,wkeyset$)
wkeyset%=
(wkeyset$)
iconclick%
wkeyset%+=step%
wkeyset%>numwkeys%
wkeyset%=1
wkeyset%<1
wkeyset%=numwkeys%
icon%=1
-
seticontext(0,wkeyshdl%,
(wkeyset%))
D
seticontext(icon%,wkeyshdl%,
wimpkeyicon$(wkeyset%,icon%)))
icon%
wimpkeydef$(wkeyset%,iconclick%)))
step%=-1
closewindow(hdl%)
savewkeys
!/file$="<WimpKeys$DIR>.WimpKeys."+
(keyset%)
"OS_File",6,(file$)
channel%=
(file$)
icon%=1
geticontext(icon%+18,keyshdl%,wimpkeydef$(keyset%,icon%))
&2 keystore$=
wimpkeydef$(keyset%,icon%))+
#channel%,keystore$;
geticontext(icon%,keyshdl%,wimpkeyicon$(keyset%,icon%))
)3 keystore$=
wimpkeyicon$(keyset%,icon%))+
#channel%,keystore$;
seticontext(icon%,wkeyshdl%,wimpkeyicon$(keyset%,icon%))
icon%
#channel%
"OS_File",18,file$,&fff
updatewkeys
icon%=1
geticontext(icon%,keyshdl%,wimpkeyicon$(keyset%,icon%))
seticontext(icon%,wkeyshdl%,wimpkeyicon$(keyset%,icon%))
geticontext(icon%+18,keyshdl%,wimpkeydef$(keyset%,icon%))
icon%
keypress
hdl%=block%!0
key%=block%!24
key%
"Wimp_ProcessKey",key%
menu_setup(mb%,itemwidth%)
mb%?12=7
mb%?13=2
mb%?14=7
mb%?15=0
mb%!16=itemwidth%*16
mb%!20=40
mb%!24=0
create_menu(title$)
$mb1%=title$
flags%=mb1%+28
submenu%=flags%+4
menuicon%=flags%+8
menutext%=flags%+12
flags%!0=&00
submenu%!0=infohdl%
menuicon%!0=%110001+(7<<24)
$(menutext%)="Info"
flags%=mb1%+52
submenu%=flags%+4
menuicon%=flags%+8
menutext%=flags%+12
flags%!0=&00
submenu%!0=-1
menuicon%!0=%110001+(7<<24)
$(menutext%)="Defs"
flags%=mb1%+76
submenu%=flags%+4
menuicon%=flags%+8
menutext%=flags%+12
flags%!0=&80
submenu%!0=-1
menuicon%!0=%110001+(7<<24)
$(menutext%)="Quit"
menu_action(block%)
level0%=block%!0
level1%=block%!4
level2%=block%!8
"Wimp_GetPointerInfo",,block%
mouse%=block%!8
level0%
block%!0=keyshdl%
y(
"Wimp_GetWindowState",,block%
block%!28=-1
{$
"Wimp_OpenWindow",,block%
showdefs(0)
2:quit%=
sayerror(message$)
!block%=
$(block%+4)=message$+
"Wimp_ReportError",block%,%10001,"WimpKeys"
error
"Wimp_CommandWindow",99
$;" at line ";
wimperror
!block%=
=222
=248
>&FFFF
<&20000)
sayerror("Filing system error")
2 $(block%+4)=
$+" at line "+
+" ("+
+")"+
"Wimp_ReportError",block%,%10001,"WimpKeys"
close:close%=
"Hourglass_Smash"
close
$block%="TASK"
"XWimp_CloseTemplate"
"Wimp_CloseDown",task%,!block%