home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 2
/
DATAFILE_PDCD2.iso
/
utilities
/
_shield
/
!Shield
/
!RunImage
(
.txt
)
< prev
next >
Wrap
RISC OS BBC BASIC V Source
|
1994-06-21
|
4KB
|
171 lines
>!RunImage
!Shield !RunImage file
By Ben Carter
1994 (FreeWare)
d= 12*4
^ Max # of directories (must be a multiple of 12)
Db$="!Shield":
"Fatal initialisation error - "+
$+" ("+
+")":
$+" at line "+
+" - Quit?"):
a(a%):e=
i::c=1:j=
"Wimp_Initialise",200,&4B534154,b$
r%,f%:
"WimpExt_Initialise",11,f%,400::
a 3000,l 100:
a$(d):e=
"WimpExt_PrePoll":
"Wimp_Poll",0,a
"WimpExt_Action",f%,a,g%
C,E,F::
"WimpExt_OpenLinked",,a
"WimpExt_CloseLinked",,a
17,18:
"WimpExt_CloseDown",f%:
"Wimp_CloseDown":
b(g$):
"Hourglass_Smash":!a=0:$(a+4)=g$+
"Wimp_ReportError",a,0,b$:
z(g$):
"Hourglass_Smash":!a=0:$(a+4)=g$+
"Wimp_ReportError",a,0,b$:
d(h$):
"Hourglass_Smash"
(E!a=0:$(a+4)=h$+
"Wimp_ReportError",a,19,"Message from "+b$
G(h$):
"Hourglass_Smash":!a=0:$(a+4)=h$+
"Wimp_ReportError",a,19,"Message from "+b$:
e(b,k$,r):$b=k$:b!12=459271:b!16=r:b!20=44:b!24=0:b+=28:=b
c(b,i,i$,k%,l%,m%,n%,o%):!b=0:
!b+=1
!b+=2
!b+=4
!b+=128
0Gb!4=o%:b!8=&7000021:$(b+12)=i$:
(i$)+1)*16>i!16
i!16=(
(i$)+1)*16
b+=24:=b
A(b,s,t,u,v,w):
"WimpExt_MenuWidth",,b
"WimpExt_CreateMenu",,b,!a-64,102+(44*(s+1))
"WimpExt_CreateMenu",,b,v,w
8 x=t:
y 400:f=y::i=f:f=
e(f,"Shield",0)::f=
c(f,i,"Info",
,i%):f=
c(f,i,"Quit",
,-1)::z=2:A=i:
k:$l="!Shield"+
"WimpExt_IconBarSprite",,,-1,l,,3
"Wimp_GetPointerInfo",,a::
A(A,z,1,
,0,0):
z("Menu click when no menu open!")
a(b%)
a(a%)
a(i%)
B 1000,m 6000,g 100::
g+100
4:!I=0:
"WimpExt_LoadTemplates",g,B,m,m+4000,-1,"<Shield$Dir>.Templates",1::i%=!g:b%=g!4:a%=g!8:e%=g!12::
a(h%):!a=h%:
"Wimp_GetWindowInfo",,a:
"WimpExt_OpenLinked",,a:
h(h%):!a=h%:
"Wimp_GetWindowInfo",,a:
"WimpExt_CloseLinked",,a:
d(c%,d%,l$):!a=c%:a!4=d%:
"Wimp_GetIconState",,a:a!8=0:a!12=0:$(a!28)=l$+
"Wimp_SetIconState",,a:
a(c%,d%):!a=c%:a!4=d%:
"Wimp_GetIconState",,a:=
b(a!28)
f(c$):
c$,"."):c$=
c$,".")+1):
:=c$+
y:m$=
b(a+44):j%=a!40:k=a!24:
(a!20)<>b%
j%<>4096
j%<>8192
b("This is not a directory or application"):
d(b%,k,m$):
"Wimp_SetCaretPosition",-1:
g(h):d$="":
?h>31:d$+=
(?h):h+=1:
"Wimp_RedrawWindow",,a
n:s%=a!4-a!20:t%=a!16-a!24:
"WimpExt_Redraw",,a:
"Wimp_GetRectangle",,a
b(h):d$="":o=0:
?h>31
o<255:d$+=
(?h):h+=1:o+=1:
H:!a=-1:a!4=p%:a!8=0:a!12=0:
"Wimp_SetIconState",,a:
I(c%,d%,q%):
"WimpExt_SetIcon",,,c%,d%,q%:
"<Shield$Dir>.Prefs":
#D,p:
b("There are more directories to protect than I have room for. Please increase max_directories or enter a new list"):
#D,a$(I):
"<Shield$Dir>.Prefs":
#D,d:
#D,a$(I):
I=c
c+11
d(b%,I-c,a$(I))
"Wimp_SetCaretPosition",-1
c+11:a$(I)=
a(b%,I-c):
a$(I),1)=
13a$(I)=
a$(I),
(a$(I))-1)
c<(d-12)
c:c+=12:
c:c-=12:
a(e%)
v:e$=
a(a%,3):
e$,1)=
13e$=
(e$)-1)
e$=a$
b("Sorry. That is the wrong password")
h(a%):
d(a%,3,""):
w:a$=
a(e%,0):
a$,1)=
10a$=
(a$)-1)
h(e%):
"<Shield$Dir>.RTLib":
b("There is no password set - You will need to set one"):a$="":j=
#D,f$:
#D:a$="":
(f$):a$+=
f$,I,1))
F:f$="":
(a$):f$+=
a$,I,1))
"<Shield$Dir>.RTLib":
#D,f$:
("Settype <Shield$Dir>.RTLib FFC"):
}<j$=
b(a+44):o$="":
(j$):
j$,I,1))>31o$+=
j$,I,1)
o$=a$(I)
("Filer_CloseDir "+o$):I=d