›/* ** DirWorks ARexx Script ** ** ** This program will create two columns of buttons. One on each side of an ** overscan/non-interlaced DW-2 screen. Each button will hold a disk drive ** path or assignment. */ options results parse arg config bg.1=3 /* Background color pen for real drives/partitions */ co.1=2 /* Text color pen for real drives/partitions */ bg.2=6 /* Background color pen for assignments */ co.2=2 /* Text color pen for assignments */ /* Enter all the subdirectory segments you want skip. */ skip = 'asim adpro jpeg game bbs doors/ copiers Video: ca:' /* Enter the assignments/drives you want to guarantee to be used */ force = 'S C ENV T REXX MyC MyNew Work UUCP UUMail UUSpool' /* ------------------< CHANGE NOTHING BEYOND THIS POINT >------------------ */ if length(config)<1 then config='s:dw.cfg' say '' say '' skip=upper(skip) force=upper(force) count=0 if open(infile,config,'r') then do say 'Reading config "'config'"...' t=readln(infile) do while ~eof(infile) if left(t,3)='B,x' then do t2=translate(t,' _',', ') do x=1 to words(t2) t3=word(t2,x) if left(t3,2)="t'" & right(t3,3)="'@D" & pos(' q$5 ',t2)>0 then t='' if pos('h230',t3) then t='' end end if length(t)>0 then do count=count+1 line.count=t end t=readln(infile) end close(infile) bcount=1 button.1='RAM' ; path.1='RAM:' say 'Adding buttons...' shell command 'info >t:dw-buttons.list1' shell command 'sort t:dw-buttons.list1 TO t:dw-buttons.list' if open(infile,'t:dw-buttons.list','r') then do t=readln(infile) do while ~eof(infile) if words(t)>2 & right(word(t,1),1)=':' & word(t,1)~='RAM:' then do t2=word(t,1) t3=word(t,words(t))||':' bcount=bcount+1 button.bcount=t2 path.bcount=t2 if left(t2,2)='DH' then do button.bcount=strip(left(word(t3,1),7)) path.bcount=t3 end end t=readln(infile) end close(infile) end do x=1 to bcount button.x=strip(translate(button.x,' ',':')) end start=bcount+1 used='' shell command 'assign >t:dw-buttons.list1' shell command 'sort t:dw-buttons.list1 t:dw-buttons.list' if open(infile,'t:dw-buttons.list','r') then do t=readln(infile) do while ~eof(infile) p=pos('RAM DISK:',upper(t)) if p>0 then t=overlay(' RAM:',t,p) if word(t,1)~='+' & words(t)=2 & left(word(t,2),1)~='[' then do bcount=bcount+1 button.bcount=strip(left(word(t,1),7)) path.bcount=word(t,2) used=used' 'upper(word(t,2)) end t=readln(infile) end close(infile) end shell command 'copy s:dw.cfg to s:dw.old.cfg' if words(skip)>0 then do say 'Removing unwanted buttons...' x=start do while x<=bcount y=x-1 if button.y=button.x then do if length(path.y)0 then do SkipIt=1 button.x=button.bcount path.x=path.bcount bcount=bcount-1 end z=z+1 end if SkipIt=0 then x=x+1 end end do qq=1 to bcount; shell command 'echo >>t:test "'qq'... 'button.qq'"'; end shell command 'echo >>t:test ""' if bcount>46 then do say 'You have 'bcount' buttons... That is too many...' say 'Sorting buttons by path...' sorted=0 do while sorted=0 sorted=1 do x=start to bcount-1 y=x+1 if upper(path.x)>upper(path.y) then do t=button.x button.x=button.y button.y=t t=path.x path.x=path.y path.y=t sorted=0 end end end say 'Stripping any duplicate paths...' x=start do while x0 then button.x=button.y do z=y to bcount-1 zz=z+1 button.z=button.zz path.z=path.zz end bcount=bcount-1 end; else x=x+1 end; else x=x+1 end if bcount>46 then do say 'There are now 'bcount' buttons... Still too many...' say 'Trunkating the button list...' y=start z=bcount do x=start to bcount do while pos(upper(button.x),upper(force))>0 & yupper(button.y) then do t=button.x button.x=button.y button.y=t t=path.x path.x=path.y path.y=t sorted=0 end end end high=10 half=23 if bcount<46 then do if bcount/2 ~= trunc(bcount/2) then do bcount=bcount+1 button.bcount='' path.bcount='RAM:' end half=bcount/2 high=trunc(230/half) end if open(outfile,config,'w') then do say 'Writing config...' do x=1 to count writeln(outfile,line.x) end xx=0 yy=11 do x=1 to bcount if xNIL: t:dw-buttons.list#?' shell command 'run <>NIL: rx "address ''DIRWORK_1''; ''X@X,v1,n'''''config'''''''"'