home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / programming / blink_1 / !BLink_!RunImage (.txt) < prev    next >
Encoding:
RISC OS BBC BASIC V Source  |  1997-04-05  |  11.8 KB  |  525 lines

  1.  ><BLink$Dir>.!RunImage
  2.  This application is FreeWare. (c) 1997 Dick Alstein
  3. Appl$="BLink"
  4. #ApplVersion$="1.12 (05-Apr-97)"
  5. error
  6. quit%=
  7.     0mask%=1+(1<<4)+(1<<5)+(1<<7)+(1<<11)+(1<<12)
  8.  "Wimp_Poll",mask%,blk% 
  9.  reason%
  10.  reason% 
  11. (    
  12.  2 : 
  13.  "Wimp_OpenWindow",,blk%
  14. )    
  15.  3 : 
  16.  "Wimp_CloseWindow",,blk%
  17. ?    
  18.  6 : 
  19. mouseclick(blk%!0,blk%!4,blk%!8,blk%!12,blk%!16)
  20.      
  21.  7 : 
  22. startsavedialogue
  23. *    
  24.  8 : 
  25.  "Wimp_ProcessKey",blk%!24
  26.  9 : 
  27. menuselect(blk%)
  28. 1    
  29.  17,18 : 
  30. receive(blk%!4,blk%!8,blk%!16)
  31.  quit%
  32. msg_exit
  33.  "Wimp_CloseDown"
  34.  errblk% &100
  35.  "Wimp_Initialise",200,&4B534154,Appl$ 
  36.  osversion%,thistask%
  37. error
  38.  scrapblk% 256
  39.  blk% &800
  40. indsize%=&500
  41.  indir% indsize%
  42. indirend%=indir%+indsize%
  43.  ptrinfo% 24
  44. msg_init
  45. scrapblk%!0=-1
  46. &!scrapblk%!4=0 : scrapblk%!8=0
  47. '%scrapblk%!12=68 : scrapblk%!16=68
  48. scrapblk%!20=&7000301A
  49. $(scrapblk%+24)="!blink"
  50.  "Wimp_CreateIcon",,scrapblk% 
  51.  baricon%
  52.  "Wimp_OpenTemplate",,"<BLink$Dir>.Templates"
  53. ,"infowin%=
  54. loadtemplate("Info")
  55. -%$(blk%!(92+9*32+20))=ApplVersion$
  56. .$optwin%=
  57. loadtemplate("Options")
  58. /$inclibsfname%=blk%!(92+11*32+20)
  59. 0#outputfname%=blk%!(92+16*32+20)
  60. 1$savewin%=
  61. loadtemplate("SaveAs")
  62. 2 savefname%=blk%!(92+0*32+20)
  63.  "Wimp_CloseTemplate"
  64. initmenus
  65. readscreenvars
  66. loadstatus
  67. selecticon(optwin%,2,blibcmds%)
  68. selecticon(optwin%,3,evalfns%)
  69. selecticon(optwin%,4,basiclnrs%)
  70. selecticon(optwin%,5,increms%)
  71. selecticon(optwin%,6,throwback%)
  72. selecticon(optwin%,7,unuseddefs%)
  73. selecticon(optwin%,10,inclibs%)
  74. selecticon(optwin%,14,sameleafname%)
  75. selecticon(optwin%,15,
  76.  sameleafname%)
  77. selecticon(optwin%,19,verbose%=0)
  78. selecticon(optwin%,20,verbose%=1)
  79. selecticon(optwin%,21,verbose%=2)
  80. dirname(F$)
  81.  p%,q%
  82. F$,".",p%)
  83.  q% > 0 
  84.  p%=q%+1
  85.  q%=0
  86. F$,p%-2)
  87. errbox(err$,boxes%)
  88. errblk%!0=0
  89. $(errblk%+4)=err$+
  90.  "Wimp_ReportError",errblk%,boxes%,Appl$ 
  91.  ,click%
  92. =(click%=1)
  93. error
  94.  "Wimp_CloseDown" : 
  95. errbox(
  96. $+" (line "+
  97. )+")",3) 
  98.  "Wimp_CloseDown"
  99. fileexists(f$)
  100.  type%,flags%
  101. type%=0
  102. (f$)>0 
  103.  "XOS_File",17,f$ 
  104.  type%;flags%
  105. =(type%=1)
  106. ((flags% 
  107.  1)=0)
  108. initmenus
  109.  "MenuUtil_Initialise",010,0
  110.  "MenuUtil_New",,Appl$ 
  111.  mainmenu%
  112.  "MenuUtil_Add",mainmenu%,"Info" 
  113.  item_info%
  114.  "MenuUtil_Add",mainmenu%,"Options..." 
  115.  item_options%
  116.  "MenuUtil_Add",mainmenu%,"Quit" 
  117.  item_quit%
  118.  "MenuUtil_SubMenu",item_info%,infowin%
  119. leafname(f$)
  120.  p%,q%
  121.   p%=q%+1
  122.   q%=
  123. f$,".",p%)
  124.  q%=0
  125. f$,p%)
  126. defaultstatus
  127. blibcmds%=
  128. evalfns%=
  129. basiclnrs%=
  130. increms%=
  131. throwback%=
  132. unuseddefs%=
  133. verbose%=0
  134. inclibs%=
  135. $(inclibsfname%)=""
  136. nooutput%=
  137. sameleafname%=
  138. $(outputfname%)="!RunImage"
  139. loadstatus
  140.  efn$,ofn$
  141.  ("<BLink$Dir>.Options")
  142.  F%=0 
  143. defaultstatus
  144.  #F% : 
  145. error : 
  146. defaultstatus : 
  147. #F%,blibcmds%,evalfns%,basiclnrs%,increms%
  148. #F%,throwback%,unuseddefs%,verbose%
  149. #F%,inclibs%,efn$,nooutput%,sameleafname%,ofn$
  150.   $(inclibsfname%)=efn$
  151.   $(outputfname%)=ofn$
  152. savestatus
  153.  ("<BLink$Dir>.Options")
  154.  #F% : 
  155. error : 
  156. #F%,blibcmds%,evalfns%,basiclnrs%,increms%
  157. #F%,throwback%,unuseddefs%,verbose%
  158. #F%,inclibs%,$(inclibsfname%),nooutput%,sameleafname%,$(outputfname%)
  159. loadtemplate(name$)
  160.  handle%
  161.  "Wimp_CloseTemplate" : 
  162. error
  163.  "Wimp_LoadTemplate",,blk%+4,indir%,indirend%,-1,name$,0 
  164.  ,,indir%
  165.  "Wimp_CreateWindow",,blk%+4 
  166.  handle%
  167. =handle%
  168. menuselect(selection%)
  169.  "Wimp_GetPointerInfo",,ptrinfo%
  170.  selection%!0 
  171. openoptionswin
  172.     quit%=
  173.  (ptrinfo%!8 
  174. showmenu(0)
  175. mouseclick(xpos%,ypos%,button%,wndw%,icon%)
  176.  wndw% 
  177.  button% 
  178.       
  179.         
  180. showmenu(blk%)
  181.       
  182.         
  183. openoptionswin
  184.         
  185.  optwin%
  186.  icon% 
  187. &      
  188.  2  : blibcmds%=
  189.  blibcmds%
  190. $      
  191.  3  : evalfns%=
  192.  evalfns%
  193. (      
  194.  4  : basiclnrs%=
  195.  basiclnrs%
  196. $      
  197.  5  : increms%=
  198.  increms%
  199. (      
  200.  6  : throwback%=
  201.  throwback%
  202. *      
  203.  7  : unuseddefs%=
  204.  unuseddefs%
  205. $      
  206.  12 : inclibs%=
  207.  inclibs%
  208.       
  209.         sameleafname%=
  210.         nooutput%=
  211.       
  212.         sameleafname%=
  213.         nooutput%=
  214.       
  215.         sameleafname%=
  216.         nooutput%=
  217. (      
  218.  19,20,21 : verbose%=icon%-19
  219.       
  220.         
  221. savestatus
  222.         scrapblk%!0=optwin%
  223. ,        
  224.  "Wimp_CloseWindow",,scrapblk%
  225.       
  226.         scrapblk%!0=optwin%
  227. ,        
  228.  "Wimp_CloseWindow",,scrapblk%
  229.         
  230.  savewin%
  231.  icon% 
  232.       
  233.  2 : 
  234. startsavedrag
  235.         
  236. msg_init
  237.  fname$,flags%,size%,buf%
  238. !fname$="<BLink$Dir>.Messages"
  239.  "MessageTrans_FileInfo",,fname$ 
  240.  flags%,,size%
  241.  flags% 
  242.   buf%=0
  243.  buf% size%
  244.  msgdesc% 17+
  245. (fname$)
  246. $(msgdesc%+16)=fname$
  247.  "MessageTrans_OpenFile",msgdesc%,msgdesc%+16,buf%
  248. msg_exit
  249.  "MessageTrans_CloseFile",msgdesc%
  250. msgdesc%=0
  251. msg_lookup0(token$)
  252.  result%
  253.  "MessageTrans_Lookup",msgdesc%,token$,0 
  254.  ,,result%
  255. str(result%)
  256. msg_lookup1(token$,param$)
  257.  result%
  258.  "MessageTrans_Lookup",msgdesc%,token$,scrapblk%,&100,param$ 
  259.  ,,result%
  260. str(result%)
  261. openoptionswin
  262.  dx%,dy%
  263.     dx%=0
  264.     dy%=0
  265. blk%!0=optwin%
  266.  "Wimp_GetWindowState",,blk%
  267.  (blk%!32 
  268.  (1<<16))=0 
  269.  center window to screen if not already open
  270. .  dx%=(screensize_x%-(blk%!12+blk%!4)) 
  271. .  dy%=(screensize_y%-(blk%!16+blk%!8)) 
  272. blk%!4=blk%!4+dx%
  273. blk%!8=blk%!8+dy%
  274. blk%!12=blk%!12+dx%
  275. blk%!16=blk%!16+dy%
  276. blk%!28=-1
  277.  "Wimp_OpenWindow",,blk%
  278. readscreenvars
  279.  xeig%,yeig%,xpixels%,ypixels%
  280.  "OS_ReadModeVariable",-1,4 
  281.  ,,xeig%
  282.  "OS_ReadModeVariable",-1,5 
  283.  ,,yeig%
  284.  "OS_ReadModeVariable",-1,11 
  285.  ,,xpixels%
  286.  "OS_ReadModeVariable",-1,12 
  287.  ,,ypixels%
  288. Escreensize_x%=(xpixels%+1)*(1<<xeig%) : 
  289.  screen size in OS units
  290. )screensize_y%=(ypixels%+1)*(1<<yeig%)
  291. receive(sender%,ref%,code%)
  292.  ack%,icon%,window%,fname$,ftype%,fsize%,hlp$,tok$,lfn$
  293. ack%=0
  294.  sender% <> thistask% 
  295.  code% 
  296.  0 : quit%=
  297.  $      
  298. startblink(
  299. str(blk%+44))
  300. !"      
  301.  "Wimp_CreateMenu",,-1
  302.       ack%=3
  303.       window%=blk%!20
  304.       icon%=blk%!24
  305.       fname$=
  306. str(blk%+44)
  307.       ftype%=blk%!40
  308.       
  309.  (ftype%=&FFB) 
  310.         
  311.  window% 
  312.           
  313. +"            inputfname$=fname$
  314. ,#            inputfsize%=blk%!36
  315.             
  316.  nooutput% 
  317. ."              
  318. startblink("-")
  319.             
  320. 0#              
  321.  sameleafname% 
  322. 13                $(savefname%)=
  323. leafname(fname$)
  324.               
  325. 31                $(savefname%)=$(outputfname%)
  326.               
  327. 5&              scrapblk%!0=savewin%
  328. 65              
  329.  "Wimp_GetWindowState",,scrapblk%
  330. 74              
  331.  "Wimp_GetPointerInfo",,ptrinfo%
  332. 83              
  333.  (window%=-2)
  334. (icon%=baricon%) 
  335. 9D                xpos%=ptrinfo%!0-((scrapblk%!12-scrapblk%!4)
  336. :5                ypos%=96+scrapblk%!16-scrapblk%!8
  337.               
  338. <D                xpos%=ptrinfo%!0-((scrapblk%!12-scrapblk%!4)
  339. =D                ypos%=ptrinfo%!4+((scrapblk%!16-scrapblk%!8)
  340.               
  341. ?<              
  342.  "Wimp_CreateMenu",,savewin%,xpos%,ypos%
  343.             
  344.           
  345.  optwin%
  346. B,            
  347.  (icon%>=8) 
  348.  (icon%<=11) 
  349. C'              lfn$=$(inclibsfname%)
  350. D)              
  351. (lfn$)>0 
  352.  lfn$+=","
  353. E.              $(inclibsfname%)=lfn$+fname$
  354. FE              
  355. selecticon(optwin%,11,0) : 
  356.  forces redraw of icon
  357.             
  358.         
  359.       
  360.  &502
  361. K*      
  362.  request from !Help application
  363.       hlp$=""
  364.       icon%=blk%!36
  365.       
  366.  blk%!32 
  367.         
  368. P+          hlp$=
  369. msg_lookup0("HLP_IBAR")
  370.         
  371.  optwin%
  372.           tok$="HLP_OPT"
  373.           
  374.  icon% 
  375. T0            
  376.  2           : tok$+="blibcmds"
  377. U/            
  378.  3           : tok$+="evalfns"
  379. V1            
  380.  4           : tok$+="basiclnrs"
  381. W/            
  382.  5           : tok$+="increms"
  383. X1            
  384.  6           : tok$+="throwback"
  385. Y2            
  386.  7           : tok$+="unuseddefs"
  387. Z/            
  388.  8,9,10,11   : tok$+="inclibs"
  389. [0            
  390.  14          : tok$+="sameleaf"
  391. \1            
  392.  15,16       : tok$+="otherleaf"
  393. ]/            
  394.  18,19,20,21 : tok$+="verbose"
  395. ^0            
  396.  22          : tok$+="saveexit"
  397. _,            
  398.  23          : tok$+="exit"
  399.           
  400. a%          hlp$=
  401. msg_lookup0(tok$)
  402.         
  403.  savewin%
  404. c+          hlp$=
  405. msg_lookup0("HLP_SAVE")
  406.       
  407.       
  408.  hlp$<>"" 
  409.         $(blk%+20)=hlp$
  410.         ack%=&503
  411.       
  412.  &400C1
  413.       
  414. readscreenvars
  415.  ack%<>0 
  416.     blk%!0=256
  417.     blk%!12=ref%
  418.     blk%!16=ack%
  419. p-    
  420.  "Wimp_SendMessage",17,blk%,sender%
  421. selecticon(window%,icon%,f%)
  422. scrapblk%!0=window%
  423. scrapblk%!4=icon%
  424.   scrapblk%!8=1<<21
  425.   scrapblk%!8=0
  426. scrapblk%!12=1<<21
  427.  "Wimp_SetIconState",,scrapblk%
  428. iconselected(window%,icon%)
  429. scrapblk%!0=window%
  430. scrapblk%!4=icon%
  431.  "Wimp_GetIconState",,scrapblk%
  432. #=((scrapblk%!24) 
  433.  (1<<21)) > 0
  434. shadeicon(window%,icon%,f%)
  435. scrapblk%!0=window%
  436. scrapblk%!4=icon%
  437.   scrapblk%!8=(1<<22)
  438.   scrapblk%!8=0
  439. scrapblk%!12=1<<22
  440.  "Wimp_SetIconState",,scrapblk%
  441. showmenu(blkptr%)
  442.  "MenuUtil_Show",mainmenu%,blkptr%
  443. startsavedialogue
  444.  dragasprite% 
  445.  "DragASprite_Stop"
  446. blk%!0=64
  447. blk%!12=0
  448. blk%!16=1
  449.  "Wimp_GetPointerInfo",,ptrinfo%
  450. blk%!20=ptrinfo%!12
  451. blk%!24=ptrinfo%!16
  452. blk%!28=ptrinfo%!0
  453. blk%!32=ptrinfo%!4
  454. blk%!36=inputfsize%
  455. blk%!40=&FFB
  456. *$(blk%+44)=
  457. leafname($(savefname%))+
  458.  "Wimp_SendMessage",17,blk%,ptrinfo%!12,ptrinfo%!16
  459. startsavedrag
  460.  b%,win0x%,win0y%
  461. scrapblk%!0=savewin%
  462.  "Wimp_GetWindowState",,scrapblk%
  463. #win0x%=scrapblk%!4-scrapblk%!20
  464. $win0y%=scrapblk%!16-scrapblk%!24
  465. scrapblk%!0=savewin%
  466. scrapblk%!4=2
  467.  "Wimp_GetIconState",,scrapblk%
  468. blk%!4=5
  469. blk%!8=scrapblk%!8+win0x%
  470. blk%!12=scrapblk%!12+win0y%
  471. blk%!16=scrapblk%!16+win0x%
  472. blk%!20=scrapblk%!20+win0y%
  473.  "Wimp_GetPointerInfo",,ptrinfo%
  474. blk%!24=blk%!8-ptrinfo%!0
  475. blk%!28=blk%!12-ptrinfo%!4
  476. ,blk%!32=screensize_x%+blk%!16-ptrinfo%!0
  477. ,blk%!36=screensize_y%+blk%!20-ptrinfo%!4
  478.  "OS_Byte",161,&1C 
  479.  ,,b%
  480. dragasprite%=(b% 
  481.  2)<>0
  482.  dragasprite% 
  483.  "DragASprite_Start",&A1,1,"file_ffb",blk%+8,blk%+24
  484.  "Wimp_DragBox",1,blk%
  485. startblink(outputfname$)
  486.  cmd$,lfn$,taskwin%
  487. cmd$="<BLink$Dir>.blink "
  488. taskwin%=
  489.  blibcmds% 
  490.  cmd$+="-b "
  491.  evalfns% 
  492.  cmd$+="-e "
  493.  basiclnrs% 
  494.   cmd$+="-n "
  495.  increms% 
  496.  cmd$+="-r "
  497.  throwback% 
  498.   cmd$+="-t "
  499.   taskwin%=
  500.  unuseddefs% 
  501.   cmd$+="-u "
  502.   taskwin%=
  503.  nooutput% 
  504.  taskwin%=
  505.  verbose% 
  506.  1 : cmd$+="-v "  : taskwin%=
  507.  2 : cmd$+="-vv " : taskwin%=
  508. lfn$=$(inclibsfname%)
  509.  inclibs% 
  510.  (lfn$<>"") 
  511.  cmd$+="-l"+lfn$+" "
  512. &cmd$+=inputfname$+" "+outputfname$
  513.  (taskwin%) 
  514.  (osversion%>=300) 
  515. +  cmd$="TaskWindow -quit "+
  516. 34+cmd$+
  517.  "Wimp_StartTask",cmd$
  518. str(s%)
  519.  i%,n$
  520.  (s%?i%>=32) 
  521.  (i%<255)
  522.   n$+=
  523. (s%?i%)
  524.   i%+=1
  525.