home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / k / keyboard / !Keyboard / Library (.txt) < prev    next >
RISC OS BBC BASIC V Source  |  1993-12-26  |  12KB  |  421 lines

  1.  Wimp Programming Library
  2.  By R.Peach
  3.  Window Procedures
  4. Window_Load(window$,template$)
  5.  c%,i%,n%,j%,sp$,sp2$
  6.  "Wimp_OpenTemplate",,template$
  7.  "Wimp_LoadTemplate",,block%,icons%,icon_memory%,font%,window$,0 
  8.  ,,icons%
  9.  sprites% 
  10.  1    : block%!64=sprites%
  11.  : block%!64=
  12. Event_Sprites(window%)
  13.  "Wimp_CreateWindow",,block% 
  14.  "Wimp_CloseTemplate"
  15.  "Wimp_WhichIcon",c%,block%+40,1+2+(1<<8),2+(1<<8)
  16.  block%!40 
  17.  -1   :
  18.  : i%=40
  19. '   block%!4=block%!i% : block%!0=c%
  20.  "Wimp_GetIconState",,block%
  21. .   sp$=
  22. Wimp_GetStringAtAddress(block%!28)
  23.  "Wimp_DeleteIcon",,block%
  24.  sprites% 
  25.  1    : block%!32=1
  26. /     
  27.  "OS_SpriteOp",&108,sprites% 
  28.  ,,,n%
  29.      j%=0
  30.      
  31.  : j%+=1
  32. "=      
  33.  "OS_SpriteOp",&10D,sprites%,pointer_block%,20,j%
  34. #7      sp2$=
  35. Wimp_GetStringAtAddress(pointer_block%)
  36.      
  37.  j%=n% 
  38.  sp$=sp2$
  39. %8     
  40.  sp$=sp2$ 
  41.  block%!32=sprites% 
  42.  block%!32=cc1
  43.    block%!4=c%
  44. (/   
  45.  "Wimp_CreateIcon",,block%+4 
  46.  handle%
  47.    i%+=4
  48.  (block%!i%)=-1
  49. Window_Open(window%,top%)
  50. !block%=window%
  51.  "Wimp_GetWindowState",,block%
  52.  top% 
  53.  block%!28=-1
  54.  "Wimp_OpenWindow",,block%
  55. Window_OpenLink(window%,top%)
  56. !block%=window%
  57.  "Wimp_GetWindowState",,block%
  58.  top% 
  59.  block%!28=-1
  60.  "WimpExt_OpenLinked",,block%
  61. Window_Link(window1%,window2%)
  62.  "WimpExt_LinkWindows",,,window1%,window2%
  63. Window_UnLink(window1%,window2%)
  64.  "WimpExt_UnLinkWindows",,,window1%,window2%
  65. Window_HideLink(window1%,window2%)
  66.  "WimpExt_HideLink",window1%,,window2%
  67. Window_CloseLink(window%)
  68. !block%=window%
  69.  "Wimp_CloseWindow",,block%
  70. Window_Close(window%)
  71. !block%=window%
  72.  "Wimp_CloseWindow",,block%
  73. Window_OpenDialogue(window%,x%,y%)
  74.  "WimpExt_OpenDialogue",,,window%,x%,y%
  75.  Icon Procdures
  76. Icon_PutText(window%,icon%,text$)
  77. \%block%!0=window% : block%!4=icon%
  78.  "Wimp_GetIconState",,block%
  79.  ((block%!24) 
  80.  &100)=0 
  81.  1,"Icon isn't indirected"
  82. $(block%!28)=text$
  83. `%block%!0=window% : block%!4=icon%
  84. block%!8=0 : block%!12=0
  85.  "Wimp_SetIconState",,block%
  86. Icon_SetColour(window%,icon%,fcolour%,bcolour%)
  87.  "WimpExt_SetIconColour",,,window%,icon%,fcolour%,bcolour% 
  88.  old%
  89. create_icon(whan%,ix%,iy%,iw%,ih%,flag%,text$,ptr1%,ptr2%,ptr3%)
  90.  !block%=whan%
  91.  block%!4=ix%
  92.  block%!8=iy%
  93.  block%!12=ix%+iw%
  94.  block%!16=iy%+ih%
  95.  block%!20=flag%
  96.  ptr1%=0 
  97.  $(block%+24)=text$
  98.  block%!24=ptr1%
  99.  block%!28=ptr2%
  100.  block%!32=ptr3%
  101.  "Wimp_CreateIcon",,block% 
  102.  ihandle%
  103.  =ihandle%
  104. Icon_Validate(whandle%,ihandle%,val1$,val2$,val3$)
  105. $text%=val1$
  106. $val%=val2$
  107. spr%=21
  108. &!block%=whandle%:block%!4=ihandle%
  109.  "Wimp_GetIconState",,block%
  110.  $(text%)=text$
  111. block%!24=text%
  112. block%!28=val%
  113. block%!32=spr%
  114. &!block%=whandle%:block%!4=ihandle%
  115.  block%!8=0:block%!12=0
  116.  "Wimp_SetIconState",,block%
  117. Icon_Dissable(window%,icon%)
  118.  "WimpExt_ShadeIcon",window%,icon%,1,2
  119. Icon_Enable(window%,icon%)
  120.  "WimExt_ShadeIcon",window%,icon%,0,0
  121. Icon_GetText(window%,icon%)
  122.  "WimpExt_GetIcon",,,window%,icon% 
  123.  ,,,text$
  124. =text$
  125. Icon_Caret(window%,icon%)
  126.  "WimpExt_PutCaretIcon",,,window%,icon%
  127. Icon_Drag(window%,icon%,sp$,shadow%)
  128. Swindow%=window%
  129. Sicon%=icon%+1
  130.  shadow% 
  131.  "WimpExt_DragIcon",%100000101,sprites%,window%,icon%,sp$ 
  132.  "WimpExt_DragIcon",%100000111,sprites%,window%,icon%,sp$
  133. Icon_Create(whandle%,x%,y%,w%,h%,flag%,text$,icon1%,icon2%,icon3%)
  134.  handle%,ist%
  135.  !block%=whandle%:block%!4=x%
  136. #block%!8=-y%-h%:block%!12=x%+w%
  137. !block%!16=-y%:block%!20=flag%
  138. !ist%=((flag%>>6)
  139. 4)+(flag%
  140.  ist% 
  141.  1,2,3:$(block%+24)=text$
  142.  5,6,7:block%!24=icon1%:block%!28=icon2%:block%!32=icon3%:$icon1%=text$
  143.  "Wimp_CreateIcon",,block% 
  144.  handle%
  145. =handle%
  146. Icon_PutSprite(window%,icon%,sprite$)
  147. #block%!0=window%:block%!4=icon%
  148.  "Wimp_GetIconState",,block%
  149.  "Wimp_DeleteIcon",,block%
  150. Cblock%!4=block%!8   : block%!8=block%!12  : block%!12=block%!16
  151. Dblock%!16=block%!20 : block%!20=block%!24 : $(block%+24)=sprite$
  152.  "Wimp_CreateIcon",,block% 
  153.  icon%
  154.  Menus
  155. Menu_Tick(menu%,item%)
  156. 7menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))
  157. MenuPop(menu%,mx%,my%)
  158. menuopen%=menu%
  159.  "WimpExt_CreateMenu",,menu%,mx%,my%
  160. Menu_Colours(coltick%)
  161.  coltick%>15 
  162.  "Error 0 colour to high max 15" quit%=
  163.  "WimpExt_ColoursMenu",coltick%,0 
  164.  cmenu%
  165. =cmenu%
  166. Menu_Font(system%,title$)
  167.  "WimpExt_GetFontMenu",system%,title$ 
  168.  ,fmenu%
  169. =fmenu%
  170. Menu_Write(menu%,item%,buffer%,val%,BuffLength%)
  171. 7menu%!(28+(item%-1)*24)=(menu%!(28+(item%-1)*24))
  172. 8menu%!(36+(item%-1)*24)=menu%!(36+(item%-1)*24)
  173. #menu%!(40+(item%-1)*24)=buffer%
  174.  menu%!(44+(item%-1)*24)=val%
  175. 'menu%!(48+(item%-1)*24)=BuffLength%
  176. Menu_PutFontInIcon(window%,icon%)
  177.  "WimpExt_DecodeFontMenu",block%+256,block%
  178.  "WimpExt_SetIconString",,,window%,icon%,block%+256
  179. Menu_Choice(level%)
  180. =(block%!(4*level%))+1
  181. Menu_NoOfEntries(menu$)
  182.  n% ,j% : n%=0 : j%=0
  183. menu$,"\",j%+1)
  184.  j%<>0 
  185.  n%+=1
  186.  j%=0
  187. Menu_Create(menu$)
  188.  menu%,index%,width%,length%,k%,s%
  189.  menu% 28+
  190. Menu_NoOfEntries(menu$)*24
  191. 7menu%?12=7   : menu%?13=2  : menu%?14=7 :menu%?15=0
  192. +menu%!16=140 : menu%!20=44 : menu%!24=0
  193. index%=menu%+28
  194.  $menu%=
  195. menu$,
  196. menu$,"\")-1)
  197. #width%=
  198. menu$,
  199. menu$,"\")-1))
  200. $menu$+="\" : Menu_NoOfEntries%=0
  201.  menu$<>""
  202. menu$=
  203. menu$,
  204. menu$,"\")+1)
  205.  menu$ 
  206. 1  !index%=0 : index%!4=-1 : index%!8=&7000021
  207.   length%=
  208. menu$,"\")-1
  209.   k%=
  210. menu$,length%),">")
  211. %    s%=
  212. menu$,k%+1,length%-k%))
  213.     index%!4=s%
  214.     length%=k%-1
  215. "  $(index%+12)=
  216. menu$,length%)
  217.  length%>width% 
  218.  width%=length%
  219.   index%+=24
  220. menu%!16=16*(width%+1)
  221. (index%!-24=index%!-24 
  222.  &80 : =menu%
  223.  Sprite Functions
  224. Bar_IconBarTextSprite(spritename$,text$,place%,buttype%)
  225. text$ > 127 Chars 
  226. "ERROR 0 to many Chars max 128" :quit%=
  227.  "WimpExt_IconBarText",,,place%,spritename$,text$,buttype% 
  228.  baricon%
  229. =baricon%
  230. Bar_Sprite(Spritename$,place%)
  231.  "WimpExt_IconBarSprite",,,place%,Spritename$,,3 
  232.  ibar%
  233. =ibar%
  234. load_sprites(file$)
  235.  file%,size%,sprite%
  236. file%=
  237.  file$
  238. size%=
  239. #file%+16:
  240. #file%
  241.  sprite% size%
  242. !sprite%=size%:sprite%!8=16
  243.  "OS_SpriteOp",&109,sprite%
  244.  "OS_SpriteOp",&10A,sprite%,file$
  245. =sprite%
  246.  Error And RecrestorWindows
  247. RequesterMessage(text$)
  248. buttons(buttons%,"OK","","","")
  249.  "WimpExt_OpenRequester",,,("Message From"+appname$),text$,buttons%,0
  250. ErrorMessage(err$)
  251. !block%=255
  252. $(block%+4)=err$+
  253.  "Wimp_ReportError",block%,1,appname$
  254. buttons(but%,a$,b$,c$,d$)
  255. 5K$but%=a$:but%+=
  256. a$+1:$but%=b$:but%+=
  257. b$+1:$but%=c$:but%+=
  258. c$+1:$but%=d$
  259. OpenReq(a$,b$,c$,d$,title$,text$,esc%,why$)
  260. Rec$=why$
  261. buttons(buttons%,a$,b$,c$,d$)
  262.  "WimpExt_OpenRequester",,,title$,text$,buttons%,esc%
  263.  Extra
  264. Put_TextAtCaret(text$)
  265.  a%=1 
  266. text$
  267. text$,a%)
  268. key%=
  269.  "Wimp_ProcessKey",key
  270.  b%=1 
  271.  400 : 
  272. Pointer_Limit(window%)
  273.  "WimpExt_LimitPointer",window%
  274. Pointer_Release
  275.  "WimpExt_ReleasePointer"
  276. Wimp_Start(appname$,font%,wimp_memory%,icon%,interface%)
  277. xdragasprite_stop%=&62401
  278.  block% wimp_memory%,icons% icon%,font% 5
  279. path$="":type$="":obj$=""
  280. desc$="Object is a"
  281.  sbspr% 8,sbtext% 255,sbval% 3
  282. [*$sbspr%="file_fff":$sbtext%="TestFile"
  283. $sbval%="A~ "
  284.  wimp_memory%<256 
  285.  wimp_memory%=256
  286. icon_memory%=icons%+icon%
  287.   task% 256 ,mainind 150, name% 11 ,text% 20 ,val% 20,spr% 20
  288.  item$(20)
  289.  request% 3
  290. quit%=
  291.  list% 15
  292. d.!list%=2 :list%!4=3 :list%!8=8 :list%!12=0
  293.  "Wimp_Initialise",200,&4B534154,appname$,list%
  294. block%!2=font%
  295. block%!0=0
  296. ErrorMessage(
  297. $+" at line "+
  298.  "Wimp_CloseDown":
  299.  "WimpExt_Initialise",12,task%,%100001111
  300. Wimp_PollCloseWindow
  301.  "Wimp_GetPointerInfo",,block%
  302. o+  window%=block%!12 : buttons%=block%!8
  303. p7 !block%=window% : 
  304.  "WimpExt_CloseLinked",,block%
  305. Wimp_Poll
  306.  mask%,event%
  307. finished%=
  308. mask%=%111000011001
  309.  "XWimpExt_SlabIcon",,,0,0,0
  310.  "WimpExt_PrePoll"
  311. "Wimp_Poll",mask%,block% 
  312.  event%
  313. "WimpExt_Action",task%,block%,event% 
  314.  event%
  315.  event% 
  316. Wimp_PollDrawWindow
  317.  "WimpExt_OpenLinked",,block%
  318. Wimp_PollCloseWindow
  319. Wimp_PollMouseClick
  320. Wimp_PollSaveMessage
  321. Wimp_PollKeyPress
  322. RunUser_MenuChoice(menuopen%)
  323. 17,18: 
  324. Wimp_PollMessages
  325.  quit%
  326.  "Wimp_CloseDown",,block%
  327. "WimpExt_CloseDown",task%
  328. Wimp_PollDrawWindow
  329.  more%
  330. "Wimp_RedrawWindow",,block%
  331. more%
  332. window%=block%!0
  333. Ex_origin%=16+block%!4-block%!20:y_origin%=-16+block%!16-block%!24
  334. more%
  335.  "WimpExt_Redraw",,block%
  336.  interface% 
  337. "Wimp_BorderWindow",,block%
  338.  PROCEvent_Draw(window%,x_origin%,y_origin%)
  339. "Wimp_GetRectangle",,block%
  340. more%
  341. Wimp_PollCloseWindow
  342.  "Wimp_GetPointerInfo",,block%
  343. +  window%=block%!12 : buttons%=block%!8
  344. Event_WindowClose(window%,buttons%)
  345. 7 !block%=window% : 
  346.  "WimpExt_CloseLinked",,block%
  347. Wimp_PollMouseClick
  348. O button%=block%!8:window%=block%!12:icon%=block%!16:x