home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 1 / ARM_CLUB_CD.iso / contents / apps / desktop / m / makeboot / !MakeBoot / Source (.txt) < prev   
Encoding:
RISC OS BBC BASIC V Source  |  1993-07-12  |  26.9 KB  |  1,236 lines

  1.  ><MakeBoot$Dir>.Source
  2.  This application is FreeWare. (c) 1993 Dick Alstein
  3. error
  4. quit%=
  5. )mask%=1+(1<<4)+(1<<5)+(1<<11)+(1<<12)
  6.  "Wimp_Poll",mask%,blk% 
  7.  reason%
  8.  reason% 
  9.  2 : 
  10.  "Wimp_OpenWindow",,blk%
  11.  blk%!0 
  12. !      
  13.  winhdl%(0),winhdl%(1)
  14. .        
  15.  "Wimp_GetPointerInfo",,ptrinfo%
  16.         
  17.  ptrinfo%!8=1 
  18. )          
  19.  "Filer_OpenDir "+bootdir$
  20.         
  21.         
  22.  -1) 
  23. )          
  24.  "Wimp_CloseWindow",,blk%
  25.         
  26.       
  27. '        
  28.  "Wimp_CloseWindow",,blk%
  29.         
  30.  6 : 
  31. mouseclick(blk%!0,blk%!4,blk%!8,blk%!12,blk%!16)
  32.  7 : 
  33. moveappl
  34.  8 : 
  35. key(blk%!0,blk%!4,blk%!24)
  36.  9 : 
  37. menuselect(blk%)
  38.  17,18 : 
  39. receive(blk%!4,blk%!8,blk%!16)
  40.  quit%
  41. msg_exit
  42.  "Wimp_CloseDown"
  43.  buf%,w%,i%
  44. Appl$="MakeBoot"
  45. Version$="1.13 (12-7-93)"
  46.  errblk% &100
  47.  "Wimp_Initialise",200,&4B534154,Appl$ 
  48.  osversion%,thistask%
  49. error : 
  50.  blk% &600
  51. indsize%=&600
  52.  indir% indsize%
  53. indirend%=indir%+indsize%
  54.  ptrinfo% 20
  55.  dragblk% 60
  56.  scrapblk% 256
  57.  "OS_ReadVarVal","MakeBoot$Dir",scrapblk%,256,0 
  58.  ,,len%
  59. scrapblk%?len%=13
  60. ApplDir$=$(scrapblk%)
  61. ApplPath$="MakeBootRes:"
  62. scrapblk%!0=-1
  63. 7!scrapblk%!4=0 : scrapblk%!8=0
  64. 8%scrapblk%!12=82 : scrapblk%!16=68
  65. scrapblk%!20=&7000301A
  66. $(scrapblk%+24)="!makeboot"
  67.  "Wimp_CreateIcon",,scrapblk% 
  68.  baricon%
  69.  winhdl%(1)
  70.  wintitle%(1)
  71. maxapps%=64
  72.  "Wimp_OpenTemplate",,ApplPath$+"Templates"
  73. @"infowin%=
  74. loadtemplate("Info")
  75. A!$(blk%!(92+3*32+20))=Version$
  76. B'winhdl%(0)=
  77. loadtemplate("BootSeq")
  78. wintitle%(0)=blk%!76
  79. icon0xmin%=blk%!(92+0*32+0)
  80. icon0xmax%=blk%!(92+0*32+8)
  81. icon0ymin%=blk%!(92+0*32+4)
  82. icon1xmin%=blk%!(92+1*32+0)
  83. icon1xmax%=blk%!(92+1*32+8)
  84. I+winhdl%(1)=
  85. loadtemplate("DeskBootSeq")
  86. wintitle%(1)=blk%!76
  87. K#filewin%=
  88. loadtemplate("Files")
  89.  fname%(1)
  90. fname%(0)=blk%!(92+2*32+20)
  91. fname%(1)=blk%!(92+3*32+20)
  92. O(dialogwin%=
  93. loadtemplate("Dialogue")
  94. dial_msg%=blk%!(92+20)
  95. Q<dial_buttoncol%=(blk%!(92+1*32+16)) 
  96.  ((1<<2)+(&FF<<24))
  97. R(seqinfowin%=
  98. loadtemplate("SeqInfo")
  99. S#seqinfo_name%=blk%!(92+1*32+20)
  100. T&seqinfo_nritems%=blk%!(92+3*32+20)
  101. U&seqinfo_changed%=blk%!(92+5*32+20)
  102.  "Wimp_CloseTemplate"
  103. msg_init
  104. nractions%=6
  105.  action$(nractions%+1)
  106. action$(0)="Run"
  107. action$(1)="Boot"
  108. action$(2)="IconSprites"
  109. action$(3)="Filer_OpenDir"
  110. action$(4)="ToolSprites"
  111. action$(5)="Filer_Boot"
  112. action$(6)="RMLoad"
  113.  Action$(nractions%+1)
  114.  i%=0 
  115.  nractions%
  116. c&  Action$(i%)=
  117. upcase(action$(i%))
  118.  nrapps%(1)
  119. nrapps%(0)=-1
  120. nrapps%(1)=-1
  121.  applname$(1,maxapps%)
  122.  appltype%(1,maxapps%)
  123.  applsprite%(1,maxapps%)
  124.  appltext%(1,maxapps%)
  125.  applaction%(1,maxapps%)
  126.  applactiontxt%(1,maxapps%)
  127.  applargs%(1,maxapps%)
  128.  apploff%(1,maxapps%)
  129.  w%=0 
  130.  i%=0 
  131.  maxapps%
  132.  buf% 16
  133.     appltext%(w%,i%)=buf%
  134.  buf% 12
  135.     applsprite%(w%,i%)=buf%
  136.  buf% 16
  137. w"    applactiontxt%(w%,i%)=buf%
  138.  buf% 64
  139.     $(buf%)=""
  140.     applargs%(w%,i%)=buf%
  141. initmenus
  142. readscreenvars
  143.  changed%(1)
  144. changed%(0)=
  145. changed%(1)=
  146. *bootdir$=
  147. striproot(ApplDir$)+".!Boot"
  148.  seqfname$(1)
  149. seqfname$(0)="!Run"
  150. seqfname$(1)="DeskBoot"
  151. loadall
  152. addappl(w%,name$,type%,action%,args$,off%,nr%)
  153.  nrapps%(w%)=maxapps% 
  154. dialogue(0)
  155. addicons(w%)
  156.  (nr%<=nrapps%(w%)) 
  157.  (nrapps%(w%)>=0) 
  158. #    
  159.  I%=nrapps%(w%) 
  160.  nr% 
  161. -      applname$(w%,I%+1)=applname$(w%,I%)
  162. -      appltype%(w%,I%+1)=appltype%(w%,I%)
  163. 1      applaction%(w%,I%+1)=applaction%(w%,I%)
  164. -      applargs%(w%,I%+1)=applargs%(w%,I%)
  165. +      apploff%(w%,I%+1)=apploff%(w%,I%)
  166.       
  167. updateline(w%,I%+1)
  168.   applname$(w%,nr%)=name$
  169.   appltype%(w%,nr%)=type%
  170.  action%=-1 
  171. +    
  172.  attach default action to new item
  173.  type% 
  174. )      
  175.  &1000 : applaction%(w%,nr%)=3
  176.       
  177.  &2000
  178. +        
  179. fileexists(name$+".!Boot") 
  180. #          applaction%(w%,nr%)=1
  181.         
  182. 0          
  183. fileexists(name$+".!Sprites") 
  184. %            applaction%(w%,nr%)=1
  185.           
  186. %            applaction%(w%,nr%)=0
  187.           
  188.         
  189. )      
  190.  &FF9  : applaction%(w%,nr%)=2
  191. )      
  192.  &FFA  : applaction%(w%,nr%)=6
  193. $      
  194.   : applaction%(w%,nr%)=0
  195.         
  196. #    applaction%(w%,nr%)=action%
  197.    $(applargs%(w%,nr%))=args$
  198.   apploff%(w%,nr%)=off%
  199. updateline(w%,nr%)
  200.   nrapps%(w%)+=1
  201. setchanged(w%,
  202. addicons(w%)
  203.  linenr%,at%,as%,aa%
  204. linenr%=nrapps%(w%)+1
  205. scrapblk%!0=winhdl%(w%)
  206. scrapblk%!4=icon0xmin%+12
  207. scrapblk%!12=icon0xmax%
  208. (scrapblk%!16=icon0ymin%-(80*linenr%)
  209. !scrapblk%!8=(scrapblk%!16)-80
  210. scrapblk%!20=&17006133
  211. at%=appltext%(w%,linenr%)
  212. $(at%)=""
  213. scrapblk%!24=at%
  214. as%=applsprite%(w%,linenr%)
  215. $(as%)="S"
  216. scrapblk%!28=as%
  217. scrapblk%!32=16
  218.  "Wimp_CreateIcon",,scrapblk%
  219. "aa%=applactiontxt%(w%,linenr%)
  220. scrapblk%!4=icon1xmin%
  221. scrapblk%!12=icon1xmax%
  222. scrapblk%!20=&1B003131
  223. $(aa%)=""
  224. scrapblk%!24=aa%
  225. scrapblk%!28=-1
  226. scrapblk%!32=16
  227.  "Wimp_CreateIcon",,scrapblk%
  228. setextent(w%,linenr%)
  229. clearsequence(w%)
  230.  nrapps%(w%)>=0
  231. deleteicons(w%)
  232.   nrapps%(w%)-=1
  233. deleteappl(w%,nr%)
  234.  I%=nr% 
  235.  (nrapps%(w%)-1)
  236. )  applname$(w%,I%)=applname$(w%,I%+1)
  237. )  appltype%(w%,I%)=appltype%(w%,I%+1)
  238. -  applaction%(w%,I%)=applaction%(w%,I%+1)
  239. )  applargs%(w%,I%)=applargs%(w%,I%+1)
  240. '  apploff%(w%,I%)=apploff%(w%,I%+1)
  241. updateline(w%,I%)
  242. deleteicons(w%)
  243. nrapps%(w%)-=1
  244. setchanged(w%,
  245. deleteicons(w%)
  246.  linenr%
  247. linenr%=nrapps%(w%)
  248. applname$(w%,linenr%)=""
  249. updateline(w%,linenr%)
  250. scrapblk%!0=winhdl%(w%)
  251. scrapblk%!4=2*linenr%+2
  252.  "Wimp_DeleteIcon",,scrapblk%
  253. scrapblk%!4=2*linenr%+3
  254.  "Wimp_DeleteIcon",,scrapblk%
  255. setextent(w%,linenr%-1)
  256. dirname(F$)
  257.  p%,q%
  258. F$,".",p%)
  259.  q% > 0 
  260.  p%=q%+1
  261.  q%=0
  262. F$,p%-2)
  263. errbox(err$,boxes%)
  264. errblk%!0=0
  265. $(errblk%+4)=err$+
  266.  "Wimp_ReportError",errblk%,boxes%,Appl$ 
  267.  ,click%
  268. =(click%=1)
  269. error
  270.  "Wimp_CloseDown" : 
  271. errbox(
  272. $+" (line "+
  273. )+")",3) 
  274.  "Wimp_CloseDown"
  275. direxists(f$)
  276.  type%,flags%
  277. type%=0
  278. (f$)>0 
  279.  "XOS_File",17,f$ 
  280.  type%;flags%
  281. =(type%=2)
  282. ((flags% 
  283.  1)=0)
  284. fileexists(f$)
  285.  type%,flags%
  286. type%=0
  287. (f$)>0 
  288.  "XOS_File",17,f$ 
  289.  type%;flags%
  290. =(type%=1)
  291. ((flags% 
  292.  1)=0)
  293. seqfname(i%)
  294. =bootdir$+"."+seqfname$(i%)
  295. key(window%,icon%,key%)
  296.  window% 
  297.  filewin%
  298. %!    
  299.  (icon%=3) 
  300.  (key%=13) 
  301.       bootdir$=$(fname%(0))
  302. '#      seqfname$(1)=$(fname%(1))
  303. (#      
  304. selecticon(filewin%,4,1)
  305. )"      
  306.  "Wimp_CreateMenu",,-1
  307. *#      
  308. selecticon(filewin%,4,0)
  309. +        
  310. ,#      
  311.  "Wimp_ProcessKey",key%
  312. -        
  313. /!    
  314.  "Wimp_ProcessKey",key%
  315. leafname(f$)
  316.  p%,q%
  317.   p%=q%+1
  318.   q%=
  319. f$,".",p%)
  320.  q%=0
  321. f$,p%)
  322.  --- split name of root directory from pathname ---
  323. striproot(f$)
  324.  p%,q%
  325. f$,"$")
  326.  q%>0
  327.   p%=q%
  328.   q%=
  329. f$,"$",p%+1)
  330. f$,p%)
  331. loadall
  332.  i%,loaderror%
  333. loaderror%=0
  334.  "Hourglass_On"
  335. direxists(bootdir$) 
  336.  i%=0 
  337. M&    
  338. fileexists(
  339. seqfname(i%)) 
  340.       
  341. loadsequence(i%)
  342. O        
  343. P*      
  344.  loaderror%=0 
  345.  loaderror%=1+i%
  346. Q        
  347.   loaderror%=4
  348.  "Hourglass_Off"
  349.  loaderror% 
  350.  1 : 
  351. dialogue(1)
  352.  2 : 
  353. dialogue(2)
  354.  3 : 
  355. dialogue(3)
  356.  4 : 
  357. dialogue(4)
  358. loadsequence(w%)
  359.  p%,in$,cmd$,file$,arg$,act%,tagfound%,disabled%
  360. tagfound%=
  361. seqfname(w%))
  362.  F%<>0 
  363.  #F% : 
  364. error : 
  365.   in$=
  366.   p%=
  367. in$,"|")
  368.   disabled%=(p%=1)
  369.  p%>0 
  370.  tagfound% 
  371. k'      tagfound%=(
  372. in$,Appl$,p%)<>0)
  373. l        
  374.  disabled% 
  375.       in$=
  376. in$,p%+1)
  377. o        
  378.   p%=
  379. in$," ")
  380. r)  cmd$=
  381. upcase(
  382. trimleft(
  383. in$,p%-1)))
  384.   in$=
  385. trimleft(
  386. in$,p%+1))
  387.   p%=
  388. in$," ")
  389.   file$=
  390. in$,p%-1)
  391. v   arg$=
  392. trimleft(
  393. in$,p%+1))
  394. cmd$,1)="*"
  395. x9    cmd$=
  396. cmd$,2) : 
  397.  strip leading "*"s from command
  398. cmd$,1)="%" 
  399. {8    cmd$=
  400. cmd$,2) : 
  401.  strip leading "%" from command
  402.  (cmd$<>"") 
  403.  (file$<>"") 
  404.     act%=0
  405. 5    
  406.  (act%<=nractions%) 
  407.  (cmd$<>Action$(act%))
  408.       act%+=1
  409.         
  410.  (act%<=nractions%) 
  411.       
  412.  act% 
  413.         
  414. 3          
  415. upcase(
  416. leafname(file$))="!BOOT" 
  417.             act%=1
  418. %            file$=
  419. dirname(file$)
  420.           
  421.         
  422. :          
  423. upcase(
  424. leafname(file$)),8)="!SPRITES" 
  425. 6            
  426. leafname(
  427. dirname(file$)),1)="!" 
  428.               act%=1
  429. '              file$=
  430. dirname(file$)
  431.             
  432.           
  433.       
  434. N      
  435. addappl(w%,file$,
  436. objtype(file$),act%,arg$,disabled%,nrapps%(w%)+1)
  437.         
  438. 9      
  439.  (cmd$="DESKTOP") 
  440.  (file$="-File") 
  441.  (w%=0) 
  442. (        seqfname$(1)=
  443. leafname(arg$)
  444.       
  445.         
  446.  tagfound%) 
  447.  (loaderror%=0) 
  448.   loaderror%=3
  449. setchanged(w%,
  450. loadtemplate(name$)
  451.  handle%
  452.  "Wimp_CloseTemplate" : 
  453. error
  454.  "Wimp_LoadTemplate",,blk%+4,indir%,indirend%,-1,name$,0 
  455.  ,,indir%
  456.  "Wimp_CreateWindow",,blk%+4 
  457.  handle%
  458. =handle%
  459. mouseclick(xpos%,ypos%,button%,wndw%,icon%)
  460.  wndw% 
  461.  button% 
  462.       
  463. $        
  464. closewindow(winhdl%(0))
  465. $        
  466. closewindow(winhdl%(1))
  467.       
  468. %        
  469. openwindow(winhdl%(0),1)
  470. %        
  471. openwindow(winhdl%(1),2)
  472.       
  473. +        
  474. showmenu(blk%,mainmenu%,-1,-1)
  475.         
  476.  winhdl%(0),winhdl%(1)
  477.  wndw%=winhdl%(0) 
  478.       w%=0
  479.         
  480.       w%=1
  481.         
  482.     linenr%=(icon%-2) 
  483.  button% 
  484.       
  485.  2 : 
  486.  menu button
  487.         
  488.  icon%>=2 
  489. 1          
  490. showmenu(blk%,seqmenu%,w%,linenr%)
  491.         
  492. ,          
  493. showmenu(blk%,seqmenu%,w%,-1)
  494.         
  495. )      
  496.  1 : 
  497.  adjust button on action
  498. ,        
  499.  ((icon% 
  500.  2)=1) 
  501.  (icon%>=2) 
  502.           
  503. -            
  504.  applaction%(w%,linenr%)=0 
  505. 4              applaction%(w%,linenr%)=nractions%
  506.             
  507. ,              applaction%(w%,linenr%)-=1
  508.             
  509. N          
  510. validaction(applaction%(w%,linenr%),w%,appltype%(w%,linenr%))
  511. %          
  512. updateline(w%,linenr%)
  513.           
  514. setchanged(w%,
  515.         
  516. ,        
  517.  ((icon% 
  518.  2)=0) 
  519.  (icon%>=2) 
  520. *          
  521.  adjust button on item name
  522. 9          apploff%(w%,linenr%)=
  523.  apploff%(w%,linenr%)
  524. %          
  525. updateline(w%,linenr%)
  526.           
  527. setchanged(w%,
  528.         
  529.       
  530. ,        
  531.  ((icon% 
  532.  2)=1) 
  533.  (icon%>=2) 
  534. '          
  535.  select button on action
  536.           
  537. 6            
  538.  applaction%(w%,linenr%)=nractions% 
  539. +              applaction%(w%,linenr%)=0
  540.             
  541. ,              applaction%(w%,linenr%)+=1
  542.             
  543. N          
  544. validaction(applaction%(w%,linenr%),w%,appltype%(w%,linenr%))
  545. %          
  546. updateline(w%,linenr%)
  547.           
  548. setchanged(w%,
  549.         
  550. %      
  551.  4*16 : 
  552.  drag with select
  553. &        
  554.  (linenr%<=nrapps%(w%)) 
  555. $          
  556. startdrag(w%,linenr%)
  557.         
  558.         
  559.  filewin%
  560.  icon% 
  561.       
  562. !        bootdir$=$(fname%(0))
  563. %        seqfname$(1)=$(fname%(1))
  564. $        
  565.  "Wimp_CreateMenu",,-1
  566.         
  567.  dialogwin%
  568.  lastdialogue% 
  569.       
  570.         
  571.  icon%=1 
  572.  quit%=
  573.         
  574.      
  575.  "Wimp_CreateMenu",,-1
  576.  --- open a window
  577.      pos%=0 -> at current position
  578.      pos%=1 -> topleft screen corner
  579.      pos%=2 -> topright screen corner
  580. openwindow(handle%,pos%)
  581.  dx%,dy%
  582. scrapblk%!0=handle%
  583.  "Wimp_GetWindowState",,scrapblk%
  584. scrapblk%!28=-1
  585.     dx%=0
  586.     dy%=0
  587.  pos% 
  588.     dx%=-scrapblk%!4
  589. &    dy%=screensize_y%-scrapblk%!16
  590. &    dx%=screensize_x%-scrapblk%!12
  591.     &    dy%=screensize_y%-scrapblk%!16
  592. scrapblk%!4=scrapblk%!4+dx%
  593. scrapblk%!8=scrapblk%!8+dy%
  594. !scrapblk%!12=scrapblk%!12+dx%
  595. !scrapblk%!16=scrapblk%!16+dy%
  596.  "Wimp_OpenWindow",,scrapblk%
  597. closewindow(handle%)
  598. scrapblk%!0=handle%
  599.  "Wimp_CloseWindow",,scrapblk%
  600. moveappl
  601.  w%,linenr%,an$,at%,aa%,ar$,ar%,ao%
  602.  "Wimp_GetPointerInfo",,ptrinfo%
  603.     w%=-1
  604.  ptrinfo%!12=winhdl%(0) 
  605.  w%=0
  606.  ptrinfo%!12=winhdl%(1) 
  607.  w%=1
  608.  w%<>-1 
  609.  ptrinfo%!16 
  610.       
  611.  w%=dragfromwin% 
  612.         linenr%=nrapps%(w%)
  613.       
  614. #!        linenr%=nrapps%(w%)+1
  615.       
  616.       linenr%=0
  617. '        
  618. (&      linenr%=(ptrinfo%!16 - 2)
  619. */  an$=applname$(dragfromwin%,dragfromline%)
  620. +/  at%=appltype%(dragfromwin%,dragfromline%)
  621. ,1  aa%=applaction%(dragfromwin%,dragfromline%)
  622. -/  ar%=applargs%(dragfromwin%,dragfromline%)
  623. .2  ar$=$(applargs%(dragfromwin%,dragfromline%))
  624. /.  ao%=apploff%(dragfromwin%,dragfromline%)
  625.  w%=dragfromwin% 
  626. 1!    
  627.  dragfromline%>linenr% 
  628.       
  629.  move down
  630. 3/      
  631.  I%=(dragfromline%-1) 
  632.  linenr% 
  633. 4/        applname$(w%,I%+1)=applname$(w%,I%)
  634. 5/        appltype%(w%,I%+1)=appltype%(w%,I%)
  635. 63        applaction%(w%,I%+1)=applaction%(w%,I%)
  636. 7/        applargs%(w%,I%+1)=applargs%(w%,I%)
  637. 8-        apploff%(w%,I%+1)=apploff%(w%,I%)
  638. 9         
  639. updateline(w%,I%+1)
  640.       
  641. ;        
  642. <!    
  643.  dragfromline%<linenr% 
  644.       
  645.  move up
  646. >*      
  647.  I%=dragfromline% 
  648.  (linenr%-1)
  649. ?/        applname$(w%,I%)=applname$(w%,I%+1)
  650. @/        appltype%(w%,I%)=appltype%(w%,I%+1)
  651. A3        applaction%(w%,I%)=applaction%(w%,I%+1)
  652. B/        applargs%(w%,I%)=applargs%(w%,I%+1)
  653. C-        apploff%(w%,I%)=apploff%(w%,I%+1)
  654.         
  655. updateline(w%,I%)
  656.       
  657. F        
  658. G!    applname$(w%,linenr%)=an$
  659. H!    appltype%(w%,linenr%)=at%
  660. I#    applaction%(w%,linenr%)=aa%
  661. J!    applargs%(w%,linenr%)=ar%
  662. K     apploff%(w%,linenr%)=ao%
  663. updateline(w%,linenr%)
  664. M$    
  665.  (dragfromline%<>linenr%) 
  666.       
  667. setchanged(w%,
  668. O        
  669.  move to other window
  670. R     
  671.  nrapps%(w%)<maxapps% 
  672. S2      
  673. addappl(w%,an$,at%,aa%,ar$,ao%,linenr%)
  674. T1      
  675. deleteappl(dragfromwin%,dragfromline%)
  676. U        
  677. readscreenvars
  678.  xeig%,yeig%,xpixels%,ypixels%
  679.  "OS_ReadModeVariable",-1,4 
  680.  ,,xeig%
  681.  "OS_ReadModeVariable",-1,5 
  682.  ,,yeig%
  683.  "OS_ReadModeVariable",-1,11 
  684.  ,,xpixels%
  685.  "OS_ReadModeVariable",-1,12 
  686.  ,,ypixels%
  687. `Escreensize_x%=(xpixels%+1)*(1<<xeig%) : 
  688.  screen size in OS units
  689. a)screensize_y%=(ypixels%+1)*(1<<yeig%)
  690. receive(sender%,ref%,code%)
  691.  w%,ack%,file$,type%,hlp$
  692. ack%=0
  693.  sender% <> thistask% 
  694.  code% 
  695.       quit%=
  696.       file$=
  697. str(blk%+44)
  698.       type%=blk%!40
  699.       
  700.  blk%!20 
  701. o#        
  702.  winhdl%(0),winhdl%(1)
  703. p&          
  704.  (blk%!20=winhdl%(0)) 
  705.             w%=0
  706.           
  707.             w%=1
  708.           
  709.           
  710.  (blk%!24=-1) 
  711. v%            linenr%=nrapps%(w%)+1
  712.           
  713. x'            linenr%=(blk%!24 - 2)
  714. y'            
  715.  linenr%<0 
  716.  linenr%=0
  717.           
  718. {6          
  719. addappl(w%,file$,type%,-1,"",0,linenr%)
  720.           ack%=4
  721.         
  722. ~4          
  723.  (blk%!24=baricon%) 
  724.  (type%=&2000) 
  725. 0            
  726. upcase(
  727. file$,7))="$.!BOOT" 
  728.                bootdir$=file$
  729. #              
  730. clearsequence(0)
  731. #              
  732. clearsequence(1)
  733.               
  734. loadall
  735.               ack%=4
  736.             
  737.           
  738.       
  739.  &502
  740. *      
  741.  request from !Help application
  742.       hlp$=""
  743.       icon%=blk%!36
  744.       
  745.  blk%!32 
  746.         
  747.            
  748.  icon%=baricon% 
  749. -            hlp$=
  750. msg_lookup0("HLP_IBAR")
  751.           
  752. #        
  753.  winhdl%(0),winhdl%(1)
  754. $          
  755.  blk%!32=winhdl%(0) 
  756. -            hlp$=
  757. msg_lookup0("HLP_SEQ0")
  758.           
  759. -            hlp$=
  760. msg_lookup0("HLP_SEQ1")
  761.           
  762.           
  763.  icon%>=2 
  764. !            
  765.  (icon% 
  766.  2)=0 
  767. 5              hlp$+="|M"+
  768. msg_lookup0("HLP_ITEM")
  769.             
  770. 5              hlp$+="|M"+
  771. msg_lookup0("HLP_ACTN")
  772.             
  773.           
  774.         
  775.  filewin%
  776. +          hlp$=
  777. msg_lookup0("HLP_FILE")
  778.       
  779.       
  780.  hlp$<>"" 
  781.         $(blk%+20)=hlp$
  782.         ack%=&503
  783.       
  784.  &400C0
  785.       $(fname%(0))=bootdir$
  786. #      $(fname%(1))=seqfname$(1)
  787. :      
  788.  "Wimp_CreateSubMenu",,blk%!20,blk%!24,blk%!28
  789.  &400C1
  790.       
  791. readscreenvars
  792.  ack%>0 
  793.     blk%!0=256
  794.     blk%!12=ref%
  795.     blk%!16=ack%
  796. -    
  797.  "Wimp_SendMessage",17,blk%,sender%
  798. saveall
  799. savesequence(0)
  800. savesequence(1)
  801. savesequence(w%)
  802.  (nrapps%(w%)<0) 
  803.  (w%=1) 
  804. dialogue(5)
  805.   F%=0
  806.   F%=
  807. seqfname(w%))
  808.  F%<>0 
  809.  #F% : 
  810. error : 
  811. #F%,"|"
  812. #F%,"| This file was automatically generated by "+Appl$+" v"+Version$
  813. #F%,"| Do not edit with another program; changes may make it unreadable"
  814. #F%,"|"
  815.  I%=0 
  816.  nrapps%(w%)
  817.  apploff%(w%,I%) 
  818.       
  819. #F%,"|";
  820.         
  821. "    
  822.  appltype%(w%,I%)=&2000 
  823. !      
  824.  applaction%(w%,I%) 
  825.         
  826. 8          
  827. fileexists(applname$(w%,I%)+".!Boot") 
  828. 6            
  829. #F%,"Run "+applname$(w%,I%)+".!Boot";
  830.           
  831. A            
  832. #F%,"IconSprites "+applname$(w%,I%)+".!Sprites";
  833.           
  834.         
  835. D          
  836. #F%,action$(applaction%(w%,I%))+" "+applname$(w%,I%);
  837.       
  838.         
  839. @      
  840. #F%,action$(applaction%(w%,I%))+" "+applname$(w%,I%);
  841.         
  842. $    
  843. #F%," "+$(applargs%(w%,I%))
  844.  w%=0 
  845. ,    
  846. #F%,"%Desktop -File "+
  847. seqfname(1);
  848.  "OS_File",18,
  849. seqfname(w%),&FEB
  850. setchanged(w%,
  851. setchanged(w%,newval%)
  852.  changed%(w%) 
  853.  newval% 
  854.   t$=$(wintitle%(w%))
  855.  changed%(w%) 
  856. %    $(wintitle%(w%))=
  857. (t$)-2)
  858.      $(wintitle%(w%))=t$+" *"
  859. !  changed%(w%)=
  860.  changed%(w%)
  861.   blk%!0=winhdl%(w%)
  862.  "Wimp_GetWindowState",,blk%
  863.  (blk%!32 
  864.  (1<<16)) 
  865. H    
  866.  "Wimp_ForceRedraw",-1,blk%!4,(blk%!16)+4,blk%!12,(blk%!16)+36
  867. setextent(w%,lastline%)
  868.  lastline%<2 
  869.  lastline%=2
  870. scrapblk%!0=0
  871. -scrapblk%!4=icon0ymin%-80*(lastline%+2)-8
  872. scrapblk%!8=icon0xmax%
  873. scrapblk%!12=0
  874.  "Wimp_SetExtent",winhdl%(w%),scrapblk%
  875. scrapblk%!0=winhdl%(w%)
  876.  "Wimp_GetWindowState",,scrapblk%
  877.  (scrapblk%!32 
  878.  (1<<16)) 
  879.  "Wimp_OpenWindow",,scrapblk%
  880. sprexists(sp$)
  881.  flags%
  882.  "XWimp_SpriteOp",&18,,sp$ 
  883.  ;flags%
  884. =((flags% 
  885.  1)=0)
  886. startdrag(w%,linenr%)
  887. blk%!0=winhdl%(w%)
  888.  "Wimp_GetWindowState",,blk%
  889. dragblk%!4=5
  890. dragblk%!8=(blk%!4)+4
  891. Adragblk%!12=(blk%!16)+icon0ymin%-((linenr%+1)*80)-(blk%!24)-4
  892. 7dragblk%!16=(dragblk%!8)+(icon1xmax%-icon0xmin%-16)
  893.  dragblk%!20=(dragblk%!12)+88
  894. dragblk%!24=0
  895. dragblk%!28=0
  896. dragblk%!32=xpixels%
  897. dragblk%!36=ypixels%
  898.  "Wimp_DragBox",,dragblk%
  899. dragfromwin%=w%
  900. dragfromline%=linenr%
  901. str(s%)
  902.  i%,n$
  903.  s%?i% >= 32 : n$+=
  904. (s%?i%) : i%+=1 : 
  905. trimleft(s$)
  906. s$,p%,1)=" "
  907.   p%+=1
  908. s$,p%)
  909. upcase(s$)
  910.  i%=1 
  911.   a%=
  912. s$,i%,1))
  913.  (a%>=97)
  914. (a%<=122) 
  915. s$,i%,1)=
  916. (a%-32)
  917. updateicon(window%,icon%,fgcol%)
  918. scrapblk%!0=window%
  919. scrapblk%!4=icon%
  920. scrapblk%!8=fgcol%<<24
  921. scrapblk%!12=&F<<24
  922.  "Wimp_SetIconState",,scrapblk%
  923. updateline(w%,linenr%)
  924.  leafn$,spr$
  925. 9+leafn$=
  926. leafname(applname$(w%,linenr%))
  927. :'$(appltext%(w%,linenr%))=" "+leafn$
  928. spr$=""
  929.  leafn$<>"" 
  930.  appltype%(w%,linenr%) 
  931. >"    
  932.  &1000 : spr$="directory"
  933.  &2000
  934. @       
  935. sprexists(leafn$) 
  936.         spr$=leafn$
  937.       
  938.         spr$="application"
  939.       
  940.  &FFFFFFFF
  941.       spr$="file_xxx"
  942. G        
  943. H0      spr$="file_"+
  944. ~(appltype%(w%,linenr%))
  945. I       
  946. sprexists(spr$) 
  947.         spr$="file_xxx"
  948.       
  949. N'$(applsprite%(w%,linenr%))="S"+spr$
  950.  leafn$="" 
  951. P&  $(applactiontxt%(w%,linenr%))=""
  952. RD  $(applactiontxt%(w%,linenr%))=action$(applaction%(w%,linenr%))
  953.  apploff%(w%,linenr%) 
  954. updateicon(winhdl%(w%),2*linenr%+2,3)
  955. updateicon(winhdl%(w%),2*linenr%+3,3)
  956. updateicon(winhdl%(w%),2*linenr%+2,7)
  957. updateicon(winhdl%(w%),2*linenr%+3,&B)
  958. objtype(name$)
  959.  type%,loadaddr%
  960.  "OS_File",17,name$ 
  961.  type%,,loadaddr%
  962.  type% 
  963. b(    
  964.  ((loadaddr%>>20)
  965.  &FFF)=&FFF 
  966. c%      type%=(loadaddr%>>8) 
  967.  &FFF
  968. d        
  969.       type%=-1
  970. f        
  971. h$    
  972. leafname(file$),1)="!" 
  973.       type%=&2000
  974. j        
  975.       type%=&1000
  976. l        
  977. =type%
  978. validaction(action%,window%,type%)
  979.  valid%
  980.  type% 
  981.  &FF9
  982.     valid%=(action%=2)
  983. u7    
  984.  osversion%>=300 
  985.  valid%=valid% 
  986.  (action%=4)
  987.  &FFA
  988. w(    valid%=(action%=0) 
  989.  (action%=6)
  990.  &1000
  991.     valid%=(action%=3)
  992.  &2000
  993.  action% 
  994.       
  995.  0,1,3 : valid%=
  996. }:      
  997.  5     : valid%=(osversion%>=300) 
  998.  (window%=1)
  999.       
  1000.   : valid%=
  1001.         
  1002.     valid%=(action%=0)
  1003. =valid%
  1004. seticonstate(window%,icon%,eor%,clr%)
  1005. scrapblk%!0=window%
  1006. scrapblk%!4=icon%
  1007. scrapblk%!8=eor%
  1008. scrapblk%!12=clr%
  1009.  "Wimp_SetIconState",,scrapblk%
  1010. selecticon(window%,icon%,f%)
  1011. scrapblk%!0=window%
  1012. scrapblk%!4=icon%
  1013.   scrapblk%!8=1<<21
  1014.   scrapblk%!8=0
  1015. scrapblk%!12=1<<21
  1016.  "Wimp_SetIconState",,scrapblk%
  1017. menuselect(selection%)
  1018.  adjust%,selinfo%,itemnr%,item%,item$,parentitem%,seq%
  1019.  "MenuUtil_Decode",lastmenu%,selection% 
  1020.  ,adjust%,selinfo%
  1021. itemnr%=selinfo%!0
  1022. item%=selinfo%!8
  1023. item$=
  1024. str(selinfo%!12)
  1025. parentitem%=selinfo%!24
  1026. seq%=lastmenu_seq%
  1027.  item% 
  1028.  item_reread%
  1029. clearsequence(0)
  1030. clearsequence(1)
  1031. loadall
  1032.  item_saveall%
  1033. saveall
  1034.  item_quit%
  1035. %    
  1036.  changed%(0) 
  1037.  changed%(1) 
  1038.       
  1039. dialogue(6)
  1040.         
  1041.       quit%=
  1042.         
  1043.  item_openparent%
  1044. C    
  1045.  "Filer_OpenDir "+
  1046. dirname(applname$(seq%,lastmenu_line%))
  1047.  item_off%
  1048. E    apploff%(seq%,lastmenu_line%)=
  1049.  apploff%(seq%,lastmenu_line%)
  1050. (    
  1051. updateline(seq%,lastmenu_line%)
  1052. setchanged(seq%,
  1053.  item_delete%
  1054. (    
  1055. deleteappl(seq%,lastmenu_line%)
  1056.     lastmenu_line%=-1
  1057.  item_args%
  1058. /    $(applargs%(seq%,lastmenu_line%))=item$
  1059. setchanged(seq%,
  1060.  item_toroot%
  1061. Q    applname$(seq%,lastmenu_line%)=
  1062. striproot(applname$(seq%,lastmenu_line%))
  1063. (    
  1064. updateline(seq%,lastmenu_line%)
  1065.  item_saveseq%
  1066. savesequence(seq%)
  1067.  adjust% 
  1068. showmenu(0,lastmenu%,lastmenu_seq%,lastmenu_line%)
  1069.  *** procs for creating menus ***
  1070. showmenu(blkptr%,menu%,seq%,linenr%)
  1071.  item$
  1072.  blkptr%<>0 
  1073.   blkptr%!4=blkptr%!4+22
  1074.   lastmenu%=menu%
  1075.   lastmenu_seq%=seq%
  1076.   lastmenu_line%=linenr%
  1077.  menu%=seqmenu% 
  1078. (  item$=
  1079. msg_lookup0("IT_ITEM")+" '"
  1080.  linenr%>=0 
  1081. 1    item$+=
  1082. leafname(applname$(seq%,linenr%))
  1083. @    
  1084.  "MenuUtil_Text",item_args%,$(applargs%(seq%,linenr%))
  1085. H    
  1086.  "MenuUtil_Fade",item_toroot%,(appltype%(seq%,linenr%)<>&1000)
  1087. I    
  1088.  "MenuUtil_Tick",item_argsmenu%,
  1089. ($(applargs%(seq%,linenr%)))>0
  1090. ;    
  1091.  "MenuUtil_Tick",item_off%,apploff%(seq%,linenr%)
  1092.   item$+="'"
  1093.  "MenuUtil_Text",item_item%,item$
  1094.  "MenuUtil_Fade",item_item%,linenr%<0
  1095. &  $(seqinfo_name%)=
  1096. seqfname(seq%)
  1097. *  $(seqinfo_nritems%)=
  1098. (nrapps%(seq%))
  1099.  changed%(seq%) 
  1100. /    $(seqinfo_changed%)=
  1101. msg_lookup0("YES")
  1102. .    $(seqinfo_changed%)=
  1103. msg_lookup0("NO")
  1104.  "MenuUtil_Show",lastmenu%,blkptr%
  1105. menu_add(text$,submenu%,genmsg%)
  1106.  handle%
  1107.  "MenuUtil_Add",,text$ 
  1108.  handle%
  1109.  submenu%<>-1 
  1110.  "MenuUtil_SubMenu",handle%,submenu%
  1111.  genmsg% 
  1112.  "MenuUtil_Warning",handle%,1
  1113. =handle%
  1114. menu_addwritable(maxlen%,validstr%)
  1115.  handle%
  1116.  "MenuUtil_Add",,"" 
  1117.  handle%
  1118.  "MenuUtil_Writable",,1,maxlen%,validstr%
  1119. =handle%
  1120. initmenus
  1121.  "MenuUtil_Initialise",010,0
  1122.  "MenuUtil_New",,Appl$ 
  1123.  mainmenu%
  1124. <item_info%=
  1125. menu_add(
  1126. msg_lookup0("IT_INFO"),infowin%,0)
  1127. 8item_reread%=
  1128. menu_add(
  1129. msg_lookup0("IT_RERD"),-1,0)
  1130. >item_fnames%=
  1131. menu_add(
  1132. msg_lookup0("IT_FNMS"),filewin%,1)
  1133. 9item_saveall%=
  1134. menu_add(
  1135. msg_lookup0("IT_SVAL"),-1,0)
  1136.  "MenuUtil_Dots",0,1
  1137. 6item_quit%=
  1138. menu_add(
  1139. msg_lookup0("IT_QUIT"),-1,0)
  1140.  "MenuUtil_New",,
  1141. msg_lookup0("IT_ARGS") 
  1142.  argsmenu%
  1143. &item_args%=
  1144. menu_addwritable(64,0)
  1145.  "MenuUtil_New",,
  1146. msg_lookup0("IT_ITEM") 
  1147.  itemsubmenu%
  1148. 4item_off%=
  1149. menu_add(
  1150. msg_lookup0("IT_OFF"),-1,0)
  1151. Aitem_argsmenu%=
  1152. menu_add(
  1153. msg_lookup0("IT_ARGS"),argsmenu%,0)
  1154. <item_openparent%=
  1155. menu_add(
  1156. msg_lookup0("IT_OPAR"),-1,0)
  1157. 8item_toroot%=
  1158. menu_add(
  1159. msg_lookup0("IT_ROOT"),-1,0)
  1160.  "MenuUtil_Dots",0,1
  1161. 7item_delete%=
  1162. menu_add(
  1163. msg_lookup0("IT_DEL"),-1,0)
  1164.  "MenuUtil_New",,
  1165. msg_lookup0("IT_SEQ") 
  1166.  seqmenu%
  1167. +item_item%=
  1168. menu_add("",itemsubmenu%,0)
  1169. Bitem_seqinfo%=
  1170. menu_add(
  1171. msg_lookup0("IT_SINF"),seqinfowin%,0)
  1172. 9item_saveseq%=
  1173. menu_add(
  1174. msg_lookup0("IT_SVSQ"),-1,0)
  1175. lastmenu%=0
  1176.  *** procs for handling messages in the Messages file ***
  1177. msg_init
  1178.  fname$,flags%,size%,buf%
  1179. fname$=ApplPath$+"Messages"
  1180.  "MessageTrans_FileInfo",,fname$ 
  1181.  flags%,,size%
  1182.  flags% 
  1183.   buf%=0
  1184.  buf% size%
  1185.  MsgDesc% 17+
  1186. (fname$)
  1187. $(MsgDesc%+16)=fname$
  1188.  "MessageTrans_OpenFile",MsgDesc%,MsgDesc%+16,buf%
  1189. msg_exit
  1190.  "MessageTrans_CloseFile",MsgDesc%
  1191. MsgDesc%=0
  1192. msg_lookup0(token$)
  1193.  result%
  1194.  "MessageTrans_Lookup",MsgDesc%,token$,0 
  1195.  ,,result%
  1196. str(result%)
  1197. msg_lookup1(token$,param$)
  1198.  result%
  1199.  "MessageTrans_Lookup",MsgDesc%,token$,scrapblk%,&100,param$ 
  1200.  ,,result%
  1201. str(result%)
  1202. dialogue(no%)
  1203.  mask%,cancelbutton%
  1204. mask%=(1<<2)+(&FF<<24)
  1205. cancelbutton%=
  1206.  no% 
  1207. 1'    $dial_msg%=
  1208. msg_lookup0("NRMI")
  1209. 34    $dial_msg%=
  1210. msg_lookup1("CFBS",
  1211. seqfname(0))
  1212. 54    $dial_msg%=
  1213. msg_lookup1("CFBS",
  1214. seqfname(1))
  1215. 7-    $dial_msg%=
  1216. msg_lookup1("NTAG",Appl$)
  1217. 90    $dial_msg%=
  1218. msg_lookup1("CFBD",bootdir$)
  1219. ;'    $dial_msg%=
  1220. msg_lookup0("SEQ0")
  1221. ='    $dial_msg%=
  1222. msg_lookup0("QNYW")
  1223.     cancelbutton%=
  1224.  cancelbutton% 
  1225. seticonstate(dialogwin%,1,dial_buttoncol%,mask%)
  1226. seticonstate(dialogwin%,2,&11<<24,mask%) : 
  1227.  make button invisible
  1228. seticonstate(dialogwin%,3,dial_buttoncol%,mask%)
  1229. seticonstate(dialogwin%,1,&11<<24,mask%)
  1230. seticonstate(dialogwin%,2,dial_buttoncol%,mask%)
  1231. seticonstate(dialogwin%,3,&11<<24,mask%)
  1232. scrapblk%!0=dialogwin%
  1233.  "Wimp_GetWindowState",,scrapblk%
  1234.  "Wimp_CreateMenu",,dialogwin%,scrapblk%!4,scrapblk%!16
  1235. lastdialogue%=no%
  1236.