home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / mag_discs / 11 / programs / WimpExt / !ExtDemo / !RunImage (.txt) < prev    next >
RISC OS BBC BASIC V Source  |  1993-05-09  |  8KB  |  351 lines

  1.  >!RunImage
  2.  ExtDemo - WimpExtension Demo Application
  3.  (c) Jon Ribbens of DoggySoft, 1993
  4. @xdragasprite_stop%=&62401 : 
  5.  Spot the anagram of a musical?
  6.  "OS_ReadModeVariable",-1,5 
  7.  ,,yeig%
  8.  yeig%<2 
  9.  sprite$="Sprites22" 
  10.  sprite$="Sprites"
  11.  "OS_File",17,"<ExtDemo$Dir>."+sprite$ 
  12.  type%,,,,length%
  13.  type%<>1 
  14.  length%>12288 
  15.  0,"Incorrect or missing Sprites file"
  16.  sprite% length%+4
  17. !sprite%=length%+4
  18.  "OS_SpriteOp",266,sprite%,"<ExtDemo$Dir>."+sprite$
  19.  "OS_File",17,"<ExtDemo$Dir>.DrawFile" 
  20.  type%,,,,drawlen%
  21.  type%<>1 
  22.  drawlen%>4096 
  23. 0,"Incorrect or missing DrawFile file"
  24.  draw% drawlen%,drawsc% 24
  25.  "OS_File",255,"<ExtDemo$Dir>.DrawFile",draw%,0
  26.  but_ok% 32,but_okquit% 32
  27. $but_ok%="OK"+
  28. ($but_okquit%="OK"+
  29. 0+"Quit"+
  30.  q% 3072,indir% 2048,font% 256
  31.  i%=0 
  32.  255:font%?i%=0:
  33.  "Wimp_Initialise",200,&4B534154,"ExtDemo" 
  34.  ,task%
  35.  "WimpExt_Initialise",16,task%,%10100001111,sprite%
  36. !q%=0:q%!4=0:q%!8=0
  37.  "WimpExt_LoadTemplates",q%,q%+12,indir%,indir%+2048,font%,"<ExtDemo$Dir>.Templates",sprite%
  38. &infow%=!q%:mainw%=q%!4:linkw%=q%!8
  39.  "WimpExt_LinkWindows",,,mainw%,linkw%,%1111
  40. makemenu
  41.  "WimpExt_SetIconString",,,infow%,0,"0.11 (09-May-1993)"
  42.  "WimpExt_IconBarSprite",,,-1,"!extdemo",,3
  43.  save% 256
  44. !:$save%="This is an example file saved by ExtDemo."+
  45. "5$save%+="WimpExtension makes it very easy to"+
  46. #8$save%+="implement save boxes, and they can use"+
  47. $6$save%+="<Wimp$Scrap> and RAM transfer - drag"+
  48. %8$save%+="the icon to a text editor to try it out..."
  49. &!esave%=save%+
  50. $save%:error%=0
  51. 'Aptrc%=
  52. :ptrl%=
  53. :colour%=8:menu%=0:cmenu%=-1:fmenu%=-1:quit%=
  54.  iconbox% 40,windbox% 16
  55. )C!iconbox%=linkw%:iconbox%!4=32:
  56.  "Wimp_GetIconState",,iconbox%
  57. iconbox%+=8:heap%=0
  58.  SYS "WimpExt_Heap",0,0
  59.  "WimpExt_Heap",0,
  60. error
  61.  quit%
  62.  "XWimpExt_SlabIcon",,,0,0,0
  63.  "WimpExt_PrePoll"
  64.  "Wimp_Poll",1,q% 
  65.  reason%
  66.  "WimpExt_Action",task%,q%,reason% 
  67.  reason%
  68.  reason% 
  69. 5*    
  70.  "Wimp_RedrawWindow",,q% 
  71.  flag%
  72.  flag%
  73. 7!      
  74.  "WimpExt_Redraw",,q%
  75.       
  76.  !q%=linkw% 
  77. 9.        xorg%=q%!4-q%!20:yorg%=q%!16-q%!24
  78. :%        !windbox%=!iconbox%+xorg%
  79. ;'        windbox%!4=iconbox%!4+yorg%
  80. <'        windbox%!8=iconbox%!8+xorg%
  81. =)        windbox%!12=iconbox%!12+yorg%
  82. >9        
  83.  "WimpExt_Intersect",1,,windbox%,q%+28 
  84.         
  85. @E          !drawsc%=65536:drawsc%!4=0:drawsc%!8=0:drawsc%!12=65536
  86. AD          drawsc%!16=!iconbox%+xorg%:drawsc%!20=iconbox%!4+yorg%
  87. BI          
  88.  "WimpExt_DrawOp",0,drawsc%,draw%+40,draw%+drawlen%,q%+28
  89.         
  90.       
  91. E,      
  92.  "Wimp_GetRectangle",,q% 
  93.  flag%
  94. F        
  95.  2 : 
  96.  "WimpExt_OpenLinked",,q%
  97.  3 : 
  98.  "WimpExt_CloseLinked",,q%
  99. J"    
  100.  q%!12=infow% 
  101.  q%!8<>2 
  102. K6      q%!24=infow%:
  103.  "Wimp_GetWindowState",,q%+24
  104. L<      
  105.  q%!8=4 
  106.  q%!52=-1:
  107.  "WimpExt_OpenLinked",,q%+24
  108. M7      q%!20=infow%:q%!24=1:
  109.  "Wimp_DragBox",,q%+20
  110. N        
  111.  q%!12=-2 
  112.  q%!8=4 
  113. P+      
  114.  "WimpExt_OpenWindowTop",mainw%
  115. Q.      
  116.  "WimpExt_PutCaretIcon",,,linkw%,9
  117. R        
  118.  q%!12=-2 
  119.  q%!8=2 
  120. T4      
  121.  "WimpExt_CreateMenu",,imenu%,!q%-64,184
  122.       menu%=imenu%
  123. V        
  124.  q%!12=linkw% 
  125.       
  126.  q%!16=2 
  127.  q%!16=3 
  128. Y<        
  129.  "WimpExt_GetFontMenu",0,"Font menu" 
  130.  ,fmenu%
  131. Z:        
  132.  "WimpExt_CreateMenu",,fmenu%,!q%-64,16+q%!4
  133.         menu%=fmenu%
  134.       
  135.       
  136.  q%!16=5 
  137. ^7        
  138.  "WimpExt_ColoursMenu",colour%,0 
  139.  cmenu%
  140. _:        
  141.  "WimpExt_CreateMenu",,cmenu%,!q%-64,16+q%!4
  142.         menu%=cmenu%
  143.       
  144.       
  145.  q%!16=8 
  146.  q%!8<>2 
  147. cH        
  148.  "WimpExt_DragIcon",%100000101,sprite%,linkw%,8,"file_fff"
  149.       
  150. e       
  151.  q%!16=10 
  152.  q%!8<>2 
  153. f6        
  154.  "WimpExt_GetIcon",,,linkw%,9 
  155.  ,,,file$
  156. gP        
  157. file$,".")=0 
  158.  1,"To save, drag the icon to a directory viewer"
  159. h4        
  160.  "OS_File",10,file$,&FFF,,save%,esave%
  161.       
  162. j       
  163.  q%!16=13 
  164.  q%!8<>2 
  165.         
  166.  "WimpExt_OpenRequester",,,"Message from ExtDemo","This is an ordinary, multitasking requester. The message, title and buttons can be anything you like.",but_ok%,0
  167.         
  168. resptr(1)
  169.       
  170. n       
  171.  q%!16=14 
  172.  q%!8<>2 
  173.         
  174.  "WimpExt_ControlImmediate",,2,"Message from ExtDemo","This is an immediate, non-multitasking requester. The message, title and buttons can be anything you like.",but_ok%,0
  175.         
  176. resptr(1)
  177.       
  178. r       
  179.  q%!16=17 
  180.  q%!8<>2 
  181.         
  182.  ptrl% 
  183. t)          
  184.  "WimpExt_ReleasePointer"
  185. uD          
  186.  "WimpExt_SetIconString",,,linkw%,17,"Limit pointer"
  187.           ptrl%=
  188.          
  189. x.          
  190.  "WimpExt_LimitPointer",linkw%
  191. yF          
  192.  "WimpExt_SetIconString",,,linkw%,17,"Release pointer"
  193.           ptrl%=
  194.         
  195.       
  196. }       
  197.  q%!16=18 
  198.  q%!8<>2 
  199.         
  200.  ptrc% 
  201. '          
  202.  "WimpExt_SetPointer",0
  203. E          
  204.  "WimpExt_SetIconString",,,linkw%,18,"Change pointer"
  205.           ptrc%=
  206.          
  207. 9          
  208.  "WimpExt_SetPointer","ptr_extdemo",,16,6
  209. D          
  210.  "WimpExt_SetIconString",,,linkw%,18,"Reset pointer"
  211.           ptrc%=
  212.         
  213.       
  214.         
  215.  xdragasprite_stop%
  216. 2    
  217.  "WimpExt_GetIcon",,,linkw%,9 
  218.  ,,,file$
  219. =    
  220.  "WimpExt_DataSave",esave%-save%,file$,&FFF,save%,1
  221. "    
  222.  "Wimp_ProcessKey",q%!24
  223.  menu%=imenu% 
  224.       
  225.  !q% 
  226. 9      
  227.  0 : 
  228.  "WimpExt_OpenDialogue",,,infow%,398,44
  229.       
  230.  1 : quit%=
  231.       
  232.         
  233.  menu%=fmenu% 
  234. /      
  235.  "WimpExt_DecodeFontMenu",q%+256,q%
  236. 6      
  237.  "WimpExt_SetIconString",,,linkw%,2,q%+256
  238.         
  239. !    
  240.  menu%=cmenu% 
  241.  !q%>=0 
  242.       colour%=!q%
  243. :      
  244.  "WimpExt_SetIconColour",,,linkw%,5,-1,colour%
  245. ,      
  246.  "WimpExt_ColoursMenu",colour%,0
  247.         
  248.  17,18 :
  249.  q%!16 
  250.  0      : quit%=
  251. 1    
  252.  1,3    : 
  253.  "WimpExt_DataLoad",0,q%,0,0
  254.  &400C1 : 
  255. resptr(3)
  256.  &45782 :
  257. 1      
  258.  q%!20=0 
  259.  "OS_GenerateError",q%+24
  260. A      
  261.  q%!20=2 
  262.  "WimpExt_SetIconString",,,linkw%,9,q%+24
  263.  &45784 :
  264. 1      
  265.  q%!20=0 
  266.  "OS_GenerateError",q%+28
  267.       
  268.  q%!20=1 
  269.  q%!20=2 
  270.         heap%=q%!24
  271.         bk%=!heap%
  272. /        
  273.  "WimpExt_FindLeaf",q%+40 
  274.  file$
  275.         
  276.  "WimpExt_ControlImmediate",,2,"Message from ExtDemo","File '"+file$+"' loaded and will be saved as RAM:$.ExtDemoT.",but_ok%,0
  277. B        
  278.  "OS_File",10,"RAM:$.ExtDemoT",&FFF,,bk%,bk%+(q%!28)
  279.       
  280. 1      A%=heap%:heap%=0:
  281.  "WimpExt_Heap",3,A%
  282.  &45790 :
  283.       
  284.  q%!20=18 
  285. 7        q%!12=q%!8:
  286.  "Wimp_SendMessage",19,q%,q%!4
  287. /        
  288.  "WimpExt_SlabIcon",,,linkw%,13,1
  289.         
  290.  "WimpExt_OpenRequester",,,"Message from ExtDemo","This is an ordinary, multitasking requester. The message, title and buttons can be anything you like.",but_ok%,0
  291.         
  292. resptr(1)
  293.       
  294.         
  295.  xdragasprite_stop%
  296.  "XWimpExt_SetPointer",0
  297.  "XWimpExt_ReleasePointer"
  298. losefonts
  299.  "XWimpExt_CloseDown",task%
  300.  "XWimp_CloseDown"
  301. makemenu
  302.  imenu% 72
  303.   $imenu%="ExtDemo"
  304.   imenu%!12=&70207
  305.   imenu%!16=7*16+16
  306.   imenu%!20=44
  307.   imenu%!24=0
  308.   imenu%!28=0
  309.   imenu%!32=infow%
  310.   imenu%!36=&7000021
  311.   $(imenu%+40)="Info"
  312.   imenu%!52=128
  313.   imenu%!56=0
  314.   imenu%!60=&7000021
  315.   $(imenu%+64)="Quit"
  316. resptr(F%)
  317. >    
  318.  "WimpExt_SetIconString",,,linkw%,17,"Limit pointer"
  319.     ptrl%=
  320. ?    
  321.  "WimpExt_SetIconString",,,linkw%,18,"Change pointer"
  322.     ptrc%=
  323. error
  324.  error%=2 
  325.  heap% 
  326.  A%=heap%:heap%=0:
  327.  "XWimpExt_Heap",3,A%
  328.  error%=1 
  329.  error%=2:
  330. error2:error%=0:
  331.   error%=1
  332. resptr(3)
  333.  "WimpExt_ControlImmediate",,2,"Error from ExtDemo",
  334. $,but_okquit%,0 
  335.  button%
  336.   error%=0
  337.  button%<>3 
  338. error2
  339. "  A$=
  340. A$,1)="." 
  341. ;  !q%=
  342. :$(q%+4)=A$+". Click CANCEL to quit program."+
  343.  "Wimp_ReportError",q%,%10011,"Serious error from ExtDemo" 
  344.  ,button%
  345.  button%<>2 
  346. losefonts
  347.  i%=1 
  348. :    
  349.  font%?i%>0:font%?i%-=1:
  350.  "XFont_LoseFont",i%:
  351.