home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / r / rollerdex / !RollerDex / Wimp (.txt) < prev    next >
Encoding:
RISC OS BBC BASIC V Source  |  1994-02-21  |  21.5 KB  |  698 lines

  1.  WimpED Libary
  2. |_________________________________________________________________________
  3. |_________________________________________________________________________
  4. |                -------------------------------          6/1/92
  5. |                   WIMP PROCEDURE LIBRARY
  6. |                     Index of Contents
  7. |                -------------------------------
  8. |                    1.
  9. Windows
  10. |                    2.
  11. Icons
  12. |                    3.
  13. Menus
  14. |                    4.
  15. Sprites
  16. |                    5.
  17. Miscellaneous
  18. |                    6.
  19. Polling
  20. |                -------------------------------
  21. |                -------------------------------
  22. |                          1.
  23. Windows
  24. |                -------------------------------
  25. |          ------------------------------------------------
  26. |                      Procedures :
  27. |             PROCWimp_WindowAlert(title$,message$)
  28. |             PROCWimp_WindowAlertBox(title$,message$,button%)
  29. |             FNWimp_WindowCancel(title$,message$)
  30. |             PROCWimp_WindowErrorBox(title$,message$)
  31. |             FNWimp_WindowTitle(window%)
  32. |             FNWimp_WindowLoad(window$)
  33. |             FNWimp_WindowLoadFrom(window$,template$)
  34. |             PROCWimp_WindowBringToTop(window%)
  35. |             PROCWimp_WindowForceDraw(window%)
  36. |             PROCWimp_WindowOpen(window%)
  37. |             PROCWimp_WindowInterface
  38. |           ----------------------------------------------
  39. Wimp_WindowAlert(title$,message$)
  40. Wimp_WindowAlertBox(title$,message$,0)
  41. Wimp_WindowAlertBox(title$,message$,button%)
  42.  response%
  43. $(wimp%+4)=message$
  44.  button% 
  45.  2    : response%=1
  46.  1    : response%=15
  47.  3    : response%=(1<<5)+16
  48.  4    : response%=(1<<6)+16
  49.  : response%=16
  50.  "Wimp_ReportError",wimp%,response%,title$ 
  51.  ,response%
  52. Wimp_WindowCancel(title$,message$)
  53. $(wimp%+4)=message$
  54. response%=23
  55.  "Wimp_ReportError",wimp%,response%,title$ 
  56.  ,response%
  57. =response%-2
  58. Wimp_WindowErrorBox(title$,message$)
  59. Wimp_WindowAlertBox(title$,message$,2)
  60. Wimp_WindowTitle(window%)
  61. wimp%!0=window%
  62.  "Wimp_GetWindInfo",,wimp%
  63.  ((wimp%!60)
  64. &100)=0 
  65.  1,"Title isn't indirected"
  66. =$(wimp%!76)
  67. Wimp_WindowLoad(window$)
  68. Wimp_WindowLoadFrom(window$,"<Obey$Dir>.Templates")
  69. Wimp_WindowLoadFrom(window$,template$)
  70.  fonts% 256
  71.  c%,i%,n%,j%,sp$,sp2$
  72.  "Wimp_OpenTemplate",,template$
  73.  "Wimp_LoadTemplate",,wimp%,icons%,icon_memory%,fonts%,window$,0 
  74.  ,,icons%
  75.  sprites% 
  76.  1    : wimp%!64=sprites%
  77.  : wimp%!64=
  78. Event_Sprites(window%)
  79.  "Wimp_CreateWindow",,wimp% 
  80.  "Wimp_CloseTemplate"
  81.  "Wimp_WhichIcon",c%,wimp%+40,1+2+(1<<8),2+(1<<8)
  82.  wimp%!40 
  83.  -1   :
  84.  : i%=40
  85. n$   wimp%!4=wimp%!i% : wimp%!0=c%
  86. o$   
  87.  "Wimp_GetIconState",,wimp%
  88. p-   sp$=
  89. Wimp_GetStringAtAddress(wimp%!28)
  90. q"   
  91.  "Wimp_DeleteIcon",,wimp%
  92.  sprites% 
  93.  1    : wimp%!32=1
  94. u/     
  95.  "OS_SpriteOp",&108,sprites% 
  96.  ,,,n%
  97.      j%=0
  98.      
  99.  : j%+=1
  100. x=      
  101.  "OS_SpriteOp",&10D,sprites%,pointer_block%,20,j%
  102. y7      sp2$=
  103. Wimp_GetStringAtAddress(pointer_block%)
  104.      
  105.  j%=n% 
  106.  sp$=sp2$
  107. {4     
  108.  sp$=sp2$ 
  109.  wimp%!32=sprites% 
  110.  wimp%!32=1
  111.    wimp%!4=c%
  112. ~.   
  113.  "Wimp_CreateIcon",,wimp%+4 
  114.  handle%
  115.    i%+=4
  116.  (wimp%!i%)=-1
  117. Wimp_WindowBringToTop(window%)
  118. !wimp%=window%
  119.  "Wimp_GetWindowState",,wimp%
  120. wimp%!28=-1
  121.  "WimpExt_OpenLinked",,wimp%
  122. Wimp_WindowClose(window%)
  123. !wimp%=window%
  124.  "WimpExt_CloseLinked",,wimp%
  125. Wimp_WindowForceDraw(window%)
  126.  window% 
  127.  -1   : 
  128.  "Wimp_ForceRedraw",-1,0,0,2*1280,2*1024
  129.  "Wimp_ForceRedraw",window%,0,-2*1024,2*1280,0
  130. Wimp_WindowOpen(window%)
  131. !wimp%=window%
  132.  "Wimp_GetWindowState",,wimp%
  133.  "WimpExt_OpenLinked",,wimp%
  134. Wimp_WindowInterface
  135. "Wimp_BorderWindow",,wimp%
  136. |                  -------------------------
  137. |                          2.
  138. Icons
  139. |                  -------------------------
  140. |             ------------------------------------------
  141. |                      Procedures :
  142. |              FNWimp_IconBar(Sprite$)
  143. |              PROCWimp_IconCaret(window%,icon%,chars%)
  144. |              FNWimp_IconText(window%,icon%)
  145. |              FNWimp_IconValidation(window%,icon%)
  146. |              PROCWimp_IconDisable(window%,icon%)
  147. |              PROCWimp_IconEnable(window%,icon%)
  148. |              FNWimp_IconPutSprite(window%,icon%,sprite$)
  149. |              PROCWimp_IconPutText(window%,icon%,text$)
  150. |              PROCWimp_IconInterfaceStart
  151. |              PROCWimp_IconInterfaceFinish
  152. |             ------------------------------------------
  153. Wimp_IconBar(Sprite$)
  154.  icon%
  155. wimp%!0=-1
  156. wimp%!4=0     : wimp%!8=0
  157. wimp%!12=68 : wimp%!16=68
  158. wimp%!20=&3002
  159. $(wimp%+24)=Sprite$
  160.  "Wimp_CreateIcon",,wimp% 
  161.  icon%
  162. =icon%
  163. Wimp_IconCaret(window%,icon%,chars%)
  164.  "Wimp_SetCaretPosition",window%,icon%,,,-1,chars%
  165. Wimp_IconText(window%,icon%)
  166. #wimp%!0=window% : wimp%!4=icon%
  167.  "Wimp_GetIconState",,wimp%
  168.  ((wimp%!24) 
  169.  &100)=0 
  170.  1,"Icon isn't indirected"
  171. =$(wimp%!28)
  172. Wimp_IconValidation(window%,icon%)
  173. #wimp%!0=window% : wimp%!4=icon%
  174.  "Wimp_GetIconState",,wimp%
  175.  ((wimp%!24) 
  176.  &100)=0 
  177.  1,"Icon isn't indirected"
  178. =$(wimp%!32)
  179. Wimp_IconDisable(window%,icon%)
  180. #wimp%!0=window% : wimp%!4=icon%
  181. $wimp%!8=1<<22   : wimp%!12=1<<22
  182.  "Wimp_SetIconState",,wimp%
  183. Wimp_IconEnable(window%,icon%)
  184. #wimp%!0=window% : wimp%!4=icon%
  185. $wimp%!8=0       : wimp%!12=1<<22
  186.  "Wimp_SetIconState",,wimp%
  187. Wimp_IconPutSprite(window%,icon%,sprite$)
  188. !wimp%!0=window%:wimp%!4=icon%
  189.  "Wimp_GetIconState",,wimp%
  190.  "Wimp_DeleteIcon",,wimp%
  191. =wimp%!4=wimp%!8   : wimp%!8=wimp%!12  : wimp%!12=wimp%!16
  192. ?wimp%!16=wimp%!20 : wimp%!20=wimp%!24 : $(wimp%+24)=sprite$
  193.  "Wimp_CreateIcon",,wimp% 
  194.  icon%
  195. =icon%
  196. Wimp_IconPutText(window%,icon%,text$)
  197. #wimp%!0=window% : wimp%!4=icon%
  198.  "Wimp_GetIconState",,wimp%
  199.  ((wimp%!24) 
  200.  &100)=0 
  201.  1,"Icon isn't indirected"
  202. $(wimp%!28)=text$
  203. #wimp%!0=window% : wimp%!4=icon%
  204. wimp%!8=0 : wimp%!12=0
  205.  "Wimp_SetIconState",,wimp%
  206. Wimp_IconInterfaceStart
  207. "Wimp_BorderIcon",,wimp%
  208. Wimp_IconInterfaceFinish
  209. wimp%!8=0
  210. "Wimp_BorderIcon",,wimp%
  211. |                  -------------------------
  212. |                          3.
  213. Menus
  214. |                  -------------------------
  215. |           ----------------------------------------------
  216. |                      Procedures :
  217. |            PROCWimp_MenuAdjustOn(menu%)
  218. |            FNWimp_MenuChoice(level%)
  219. |            FNWimp_MenuCreate(menu$)
  220. |            FNWimp_MenuColours
  221. |            FNWimp_MenuCreateColours(title$)
  222. |            FNWimp_MenuNoOfEntries(menu$)
  223. |            PROCWimp_MenuBackGroundColour(menu%,item%,colour%)
  224. |            PROCWimp_MenuCentre(menu%,item%)
  225. |            PROCWimp_MenuClose
  226. |            PROCWimp_MenuDisable(menu%,item%)
  227. |            PROCWimp_MenuDottedLine(menu%,item%)
  228. |            PROCWimp_MenuEnable(menu%,item%)
  229. |            PROCWimp_MenuForegroundColour(menu%,item%,colour%)
  230. |            PROCWimp_MenuGlue(menu1%,item%,menu2%)
  231. |            PROCWimp_MenuItem(menu%,item%,item$)
  232. |            PROCWimp_MenuMessage(menu%,item%)
  233. |            PROCWimp_MenuPopUp(Menu%,x%,y%)
  234. |            PROCWimp_MenuPopUpBar(x%,y%)
  235. |            PROCWimp_MenuTick(menu%,item%)
  236. |            PROCWimp_MenuTitle(menu%,title$)
  237. |            PROCWimp_MenuWrite(menu%,item%,buffer%,val%,BufferLength%)
  238. |           ----------------------------------------------
  239. Wimp_MenuAdjustOn(menu%)
  240.  "Wimp_GetPointerInfo",,pointer_block%
  241.  ((pointer_block%!8)
  242. 1)=1 
  243.  "Wimp_CreateMenu",,menu%,pointer_block%!0,pointer_block%!4
  244. Wimp_MenuChoice(level%)
  245. =(wimp%!(4*level%))+1
  246. Wimp_MenuCreate(menu$)
  247.  menu$="Colours" 
  248. Wimp_MenuColours
  249.  menu%,index%,width%,length%,k%,s%
  250.  menu% 28+
  251. Wimp_MenuNoOfEntries(menu$)*24
  252. .7menu%?12=7   : menu%?13=2  : menu%?14=7 :menu%?15=0
  253. /+menu%!16=140 : menu%!20=44 : menu%!24=0
  254. index%=menu%+28
  255. 1 $menu%=
  256. menu$,
  257. menu$,"\")-1)
  258. 2#width%=
  259. menu$,
  260. menu$,"\")-1))
  261. 3$menu$+="\" : Menu_NoOfEntries%=0
  262.  menu$<>""
  263. menu$=
  264. menu$,
  265. menu$,"\")+1)
  266.  menu$ 
  267. 91  !index%=0 : index%!4=-1 : index%!8=&7000021
  268.   length%=
  269. menu$,"\")-1
  270.   k%=
  271. menu$,length%),">")
  272. ?%    s%=
  273. menu$,k%+1,length%-k%))
  274.     index%!4=s%
  275.     length%=k%-1
  276. C"  $(index%+12)=
  277. menu$,length%)
  278.  length%>width% 
  279.  width%=length%
  280.   index%+=24
  281. menu%!16=16*(width%+1)
  282. I(index%!-24=index%!-24 
  283.  &80 : =menu%
  284. Wimp_MenuColours
  285. Wimp_MenuCreateColours(" ")
  286. Wimp_MenuCreateColours(title$)
  287.  x$,men%,j%,i%
  288. P6x$=title$+"\0\1\2\3\4\5\6\7\8\9\10\11\12\13\14\15"
  289. men%=
  290. Wimp_MenuCreate(x$)
  291.  i%=0 
  292.  i%<4,i%=9,i%=12,i%=14,i%=15 : j%=7
  293.  : j%=0
  294. men%?(39+i%*24)=i%*16+j%
  295. Wimp_MenuCentre(men%,i%+1)
  296. Z    =men%
  297. Wimp_MenuNoOfEntries(menu$)
  298.  n% ,j% : n%=0 : j%=0
  299. menu$,"\",j%+1)
  300.  j%<>0 
  301.  n%+=1
  302.  j%=0
  303. Wimp_MenuBackGroundColour(menu%,item%,colour%)
  304.  fore%,i%
  305. f&fore%=(menu%?(39+(item%-1)*24))
  306. g(i%=((menu%?(39+(item%-1)*24))
  307. h/menu%?(39+(item%-1)*24)=fore%+16*colour%+i%
  308. Wimp_MenuCentre(menu%,item%)
  309. l:menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)
  310. (1<<3)
  311. Wimp_MenuClose
  312.  "Wimp_CreateMenu",-1
  313. Wimp_MenuDisable(menu%,item%)
  314. t;menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)
  315. (1<<22)
  316. Wimp_MenuDottedLine(menu%,item%)
  317. x7menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))
  318. Wimp_MenuEnable(menu%,item%)
  319. Wimp_MenuDisable(menu%,item%)
  320. };menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)
  321. (1<<22)
  322. Wimp_MenuForegroundColour(menu%,item%,colour%)
  323. Emenu%?(39+(item%-1)*24)=colour%+16*((menu%?(39+(item%-1)*24))
  324. Wimp_MenuGlue(menu1%,item%,menu2%)
  325. menu1%!(8+item%*24)=menu2%
  326. Wimp_MenuItem(menu%,item%,item$)
  327. ,$(menu%+(40+(item%-1)*24))=
  328. item$,12)+
  329. Wimp_MenuMessage(menu%,item%)
  330. <menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))
  331. (1<<3)
  332. Wimp_MenuPopUp(Menu%,x%,y%)
  333. menu%=Menu%
  334.  "Wimp_CreateMenu",,menu%,x%-64,y%+20
  335. Wimp_MenuPopUpBar(x%,y%)
  336.  n% : n%=0
  337.  ((Bar_Menu%!(28+n%*24))
  338. %10000000)=0
  339.     n%+=1
  340.  "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*44
  341. menu%=Bar_Menu%
  342. Wimp_MenuTick(menu%,item%)
  343. 7menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))
  344. Wimp_MenuTitle(menu%,title$)
  345. $menu%=
  346. title$,12)+
  347. Wimp_MenuWrite(menu%,item%,buffer%,val%,BufferLength%)
  348. 7menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))
  349. 8menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)
  350. #menu%!(40+(item%-1)*24)=buffer%
  351.  menu%!(44+(item%-1)*24)=val%
  352. )menu%!(48+(item%-1)*24)=BufferLength%
  353. |                  -------------------------
  354. |                          4.
  355. Sprites
  356. |                  -------------------------
  357. |                ------------------------------------
  358. |                      Procedures :
  359. |                  PROCWimp_SpritesLoad
  360. |                  PROCWimp_SpritesPathLoad(pathname$
  361. |                ------------------------------------
  362. Wimp_SpritesLoad
  363. Wimp_SpritesPathLoad("<Obey$Dir>.Sprites")
  364. direct_sprites%=sprites%
  365. Wimp_SpritesPathLoad(pathname$)
  366. S%,T%
  367. "<Obey$Dir>.Sprites":T%=
  368. #S%+16:
  369. sprites%T%,spname%12
  370. !sprites%=T%:sprites%!8=0
  371. "OS_SpriteOp",&109,sprites%
  372. "OS_SpriteOp",&10A,sprites%,pathname$
  373. |                  -------------------------
  374. |                          5.
  375. Files
  376. |                  -------------------------
  377. |                -------------------------------
  378. |                      Procedures :
  379. |                  FNWimp_FileType(type%)
  380. |                  FNWimp_GetFilePathName
  381. |                  FNWimp_FileLoad(pathname$)
  382. |                  FNWimp_GetStringAtAddress(array%)
  383. |                  FNWimp_GetFileFromPathname(f$)
  384. |                  PROCWimp_SendToEdit(file$)
  385. |                -------------------------------
  386. Wimp_FileType(type%)
  387. type%
  388. &FFF:="Text"
  389. &FFD:="Data"
  390. &FFB:="Basic"
  391. &FF9:="Sprite"
  392. &FED:="Palette"
  393. &FEC:="Template"
  394. &AFF:="Draw"
  395. &1000:="Folder"
  396. &2000:="Application"
  397. ~(type%)
  398. Wimp_GetFilePathName
  399. Wimp_GetStringAtAddress(wimp%+44)
  400. Wimp_FileLoad(pathname$)
  401. S%,T%,file%
  402. pathname$
  403. #S%+16
  404. file%T%
  405. ("LOAD"+pathname$+""+
  406. ~file%)
  407. =file%
  408. Wimp_GetStringAtAddress(array%)
  409. s$:s$=""
  410. (?array%<>13)
  411. (?array%<>0):s$+=
  412. (?array%):array%+=1:
  413. Wimp_GetFileFromPathname(f$)
  414. f$,".") 
  415.  0    :=f$
  416. Wimp_GetFileFromPathname(
  417. (f$)-
  418. f$,".")))
  419. Wimp_SendToEdit(file$)
  420. wimp%!4=&6CC01C0C
  421. wimp%!16=5
  422. wimp%!36=0
  423. wimp%!40=&FFF
  424. $(wimp%+44)=file$+
  425. file$+45
  426.  !wimp%=4+(n%>>2)<<2 
  427.  !wimp%=n%
  428.  "Wimp_SendMessage",17,wimp%,0
  429. |                  -------------------------
  430. |                      5.
  431. Miscellaneous
  432. |                  -------------------------
  433. |                -------------------------------
  434. |                      Procedures :
  435. |                  PROCWimp_Start(TaskName$)
  436. |                  FNWimp_BASICParameters
  437. |                  PROCWimp_SetEventVariables
  438. |                  PROCWimp_Error(task%,TaskName$)
  439. |                  PROCWimp_CloseDown
  440. |                  PROCWimp_Quit
  441. |                  FNWimp_ReadVariable(Variable$)
  442. |                -------------------------------
  443. Wimp_Start(TaskName$,wimp_memory%,icon%)
  444.  wimp% wimp_memory%,icons% icon%
  445.  wimp_memory%<256 
  446.  wimp_memory%=256
  447. icon_memory%=icons%+icon%
  448. task$=TaskName$
  449. 9+indirect_sprites%=1 : direct_sprites%=1
  450. Wimp_SetEventVariables
  451. Wimp_Error:
  452. "Wimp_Initialise",200,&4B534154,TaskName$ 
  453.  version%,task%
  454.  "WimpExt_Initialise",12,task%,%100001111
  455. Wimp_BASICParameters
  456.  com$,param$,I%
  457.  "OS_GetEnv" 
  458.  com$
  459.  params$=""
  460. com$," -quit ")
  461.  params$=
  462. com$,
  463. com$," ",I%+
  464. " -quit ")+1)
  465. =params$
  466. Wimp_SetEventVariables
  467.  pointer_block% 20
  468. interface%=
  469. K.null%=1  :draw%=2 :  pointer_leaving%=1<<4
  470. L1pointer_entering%=1<<5:mouse%=1<<6:drag%=1<<7
  471. M&key%=1<<8:menu%=1<<9:scroll%=1<<10
  472. N@lose_caret%=1<<11:gain_caret%=1<<12:message%=(1<<17)+(1<<18)
  473. O0recorder%=1<<18:acknowledge%=1<<19:window%=0
  474. P!sprites%=1:version%=0:task%=0
  475. Q*Bar_Window%=-2:Bar_Icon%=0:Bar_Menu%=0
  476. R*x_origin%=0:y_origin%=0:SaveWindow%=-3
  477. S3message_quit%=0:message_save%=2:message_load%=3
  478. T!mouse_button%=2:save_event%=0
  479. U top_line%=0 : bottom_line%=0
  480. Wimp_Error
  481. X$,x%
  482. $+"atline"+
  483. ErrorMsg%36
  484. ^EErrorMsg%!0=36:ErrorMsg%!12=0:ErrorMsg%!16=&81080:ErrorMsg%!20=x%
  485. $(ErrorMsg%+24)="!RunImage"
  486. "Wimp_SendMessage",17,ErrorMsg%
  487. Wimp_WindowAlert(task$,X$)
  488. Wimp_CloseDown
  489. Wimp_CloseDown
  490. "Wimp_CloseDown",task%,"TASK"
  491. Wimp_Quit
  492. finished%=
  493. Wimp_ReadVariable(Variable$)
  494. len%,result%,variable%
  495. $wimp%=Variable$
  496. "OS_ReadVarVal",wimp%,wimp%+255,255,,3
  497. ,,len%
  498. wimp%?(len%+255)=13
  499. =$(wimp%+255)
  500. |                   ----------------
  501. |                     Wimp Polling
  502. |                   ----------------
  503. Wimp_WaitForEvent
  504.  mask%,event%
  505. finished%=
  506. mask%=%111000011001
  507.  "XWimpExt_SlabIcon",,,0,0,0
  508.  "WimpExt_PrePoll"
  509. "Wimp_Poll",0,wimp% 
  510.  event%
  511.  "WimpExt_Action",task%,wimp%,event% 
  512.  event%
  513.  event% 
  514. Wimp_PollDrawWindow
  515.  "WimpExt_OpenLinked",,wimp%
  516. Wimp_PollCloseWindow
  517. Wimp_PollMouseClick
  518. Wimp_PollSaveMessage
  519. Wimp_PollKeyPress
  520. Event_MenuChoice(menu%)
  521. 17,18: 
  522. Wimp_PollMessages
  523.  finished%
  524. Wimp_PollDrawWindow
  525.  more%
  526. "Wimp_RedrawWindow",,wimp%
  527. more%
  528. window%=wimp%!0
  529. Ax_origin%=16+wimp%!4-wimp%!20:y_origin%=-16+wimp%!16-wimp%!24
  530. more%
  531.  "WimpExt_Redraw",,wimp%
  532.  interface% 
  533. "Wimp_BorderWindow",,wimp%
  534. Event_Draw(window%,x_origin%,y_origin%)
  535. "Wimp_GetRectangle",,wimp%
  536. more%
  537. Wimp_PollCloseWindow
  538.  "Wimp_GetPointerInfo",,wimp%
  539. )  window%=wimp%!12 : buttons%=wimp%!8
  540. Event_WindowClose(window%,buttons%)
  541. 5 !wimp%=window% : 
  542.  "WimpExt_CloseLinked",,wimp%
  543. Wimp_PollMouseClick
  544. J button%=wimp%!8:window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4
  545.  button% 
  546. 2    : 
  547. Wimp_PollMenuPopUp
  548. Event_Save(window%) 
  549. ,               
  550. Wimp_PollMouseSave
  551. 1               
  552. Wimp_PollEventMouseClick
  553.               
  554. Wimp_PollMenuPopUp
  555. menu%=
  556. Event_Menu(window%)
  557.  menu%  
  558.      
  559.  window% 
  560.       
  561.  -2   : n%=0
  562. 3        
  563.  ((Bar_Menu%!(28+n%*24))
  564. %10000000)=0
  565.          n%+=1
  566.         
  567. :        
  568.  "Wimp_CreateMenu",,Bar_Menu%,x%-64,96+n%*44
  569. 8      
  570.  "WimpExt_CreateMenu",,menu%,x%-64,y%+20
  571.      
  572. Wimp_PollMouseSave
  573.  icon% 
  574.  0 : 
  575.  button% 
  576.  &50 
  577. Wimp_PollDragBox(window%)
  578.  2 : 
  579.  button% 
  580. Wimp_PollSaveFile(window%)
  581. Wimp_PollEventMouseClick
  582.  interface% 
  583. "Wimp_BorderIcon",,wimp%
  584. Event_MouseClick(window%,icon%,button%,x%,y%)
  585.   interface% 
  586. (   wimp%!0=x%:wimp%!4=y% : wimp%!8=0
  587. (   wimp%!12=window% : wimp%!16=icon%
  588. "Wimp_BorderIcon",,wimp%
  589. Wimp_PollSaveFile(window%)
  590. file$
  591. @ wimp%!0=window% : wimp%!4=1 : 
  592.  "Wimp_GetIconState",,wimp%
  593.  file$=$(wimp%!28)
  594. file$,".") 
  595.  0   :
  596. @   $(wimp%+4)="To save, drag the icon to a directory window"
  597.  "Wimp_ReportError",wimp%,16,task$
  598. Event_SaveFile(file$,window%)
  599.  "WimpExt_CreateMenu",-1
  600. Wimp_PollDragBox(window%)
  601. $sp$=
  602. Event_windowSprite(window%)
  603. save%=window%
  604.  "WimpExt_DragIcon",%10000101,sprites%,window%,0,sp$
  605. x%,y%
  606.  save%=window%
  607.  !wimp%=window%
  608. "Wimp_GetWindowState",,wimp%
  609. - x%=wimp%!4-wimp%!20:y%=wimp%!16-wimp%!24
  610.  wimp%!4=0
  611. "Wimp_GetIconState",,wimp%
  612.  !wimp%=window%
  613.  wimp%!4=5
  614. , wimp%!8=x%+wimp%!8:wimp%!12=y%+wimp%!12
  615. . wimp%!16=x%+wimp%!16:wimp%!20=y%+wimp%!20
  616.  wimp%!24=0:wimp%!28=0
  617. * wimp%!32=&7FFFFFFF:wimp%!36=&7FFFFFFF
  618. "Wimp_DragBox",,wimp%
  619. Wimp_PollKeyPress
  620.  "Wimp_ProcessKey",wimp%!24
  621. 1  window%=wimp%!0:icon%=wimp%!4:key%=wimp%!24
  622.  window%=Address_W% 
  623.  saved%=
  624. Event_Save(window%) 
  625. WimpPoll_SaveFile(window%)
  626. Event_KeyPress(window%,icon%,key%)
  627. Wimp_PollSaveMessage
  628. file$,window%,icon%,x%,y%
  629. "Wimp_GetPointerInfo",,wimp%
  630. : window%=wimp%!12:icon%=wimp%!16:x%=wimp%!0:y%=wimp%!4
  631. > wimp%!0=save% : wimp%!4=1 : 
  632.  "Wimp_GetIconState",,wimp%
  633.  file$=$(wimp%!28)
  634. + file$=
  635. Wimp_GetFileFromPathname(file$)
  636.  wimp%!20=window%
  637.  wimp%!24=icon%
  638.  wimp%!28=x%:wimp%!32=y%
  639.  wimp%!36=length%
  640.  wimp%!0=64
  641.  wimp%!12=0
  642.  wimp%!16=1
  643.  wimp%!40=&FFF
  644.  $(wimp%+44)=file$
  645. "Wimp_SendMessage",17,wimp%,wimp%!20,wimp%!24
  646. Wimp_PollMessages
  647.  file$
  648. !,file$=
  649. Wimp_GetStringAtAddress(wimp%+44)
  650.  wimp%!16 
  651.      
  652.  0 : 
  653.      
  654.      
  655. &/      
  656.  PROCWimp_IconPutText(save%,1,file$)
  657. 'C      wimp%!0=save% : wimp%!4=1 : 
  658.  "Wimp_GetIconState",,wimp%
  659.       $(wimp%!28)=file$
  660. )<      wimp%!0=save% : wimp%!4=1 : wimp%!8=0 : wimp%!12=0
  661. *'      
  662.  "Wimp_SetIconState",,wimp%
  663. +0      
  664.  PROCWimp_IconCaret(save%,1,LENfile$)
  665. ,8      
  666.  "Wimp_SetCaretPosition",save%,1,,,-1,
  667. file$
  668. -&      
  669. Event_SaveFile(file$,save%)
  670.      
  671. /G      type$=
  672. Wimp_FileType(wimp%!40) : 
  673. Event_LoadFile(file$,type$)
  674. 0        
  675. Wimp_GetStringAtAddress(array%)
  676. s$:s$=""
  677. (?array%<>13)
  678. (?array%<>0):s$+=
  679. (?array%):array%+=1:
  680. Wimp_GetFileFromPathname(f$)
  681. f$,".") 
  682.  0    :=f$
  683. Wimp_GetFileFromPathname(
  684. (f$)-
  685. f$,".")))
  686. Wimp_FileType(type%)
  687. type%
  688. &FFF:="Text"
  689. &FFD:="Data"
  690. &FFB:="Basic"
  691. &FF9:="Sprite"
  692. &FED:="Palette"
  693. &FEC:="Template"
  694. &AFF:="Draw"
  695. &1000:="Folder"
  696. &2000:="Application"
  697. ~(type%)
  698.