home *** CD-ROM | disk | FTP | other *** search
/ Acorn User 2 / AUCD2.iso / internet / acornet.spk / !Acornet / Apps / !Finger / !Runimage (.txt) < prev    next >
RISC OS BBC BASIC V Source  |  1996-03-13  |  9KB  |  353 lines

  1.  Runimage for Finger
  2. "Wimp_Initialise",200,&4B534154,"Finger" 
  3.  ,myhandle%
  4. version$="0.13 (12-Mar-96)"
  5.  errorblock% 100
  6. errbox(
  7. indlength%=&400
  8. fingers%=0
  9. maxfingers%=20
  10. maxfingerlength%=128
  11. "OS_File",17,"<Finger$Dir>.Sprites" 
  12.  ,,,,spsize%
  13. spsize%+=4
  14. $fingerm%=99:
  15.  just silly numbers
  16. mainm%=137
  17.  indirected% indlength%
  18.  wblk% &300
  19.  menublk% 28+24*maxfingers%
  20.  messb% &200
  21.  iconblock% 42
  22.  plblk% &100 
  23.  sp% spsize%
  24.  fingerslot% (maxfingers%+1)*maxfingerlength%
  25. !sp%=spsize%
  26.  &2E,266,sp%,"<Finger$Dir>.Sprites"
  27. set_message_numbers
  28. load_my_windows
  29. load_messages
  30. rewriteIcon(info%,3,version$)
  31. get_fingers
  32.  PROCrewriteIcon(pane%,0,$fingerslot%)
  33. all_over%=
  34. mask%=1
  35. errbox(
  36. $+" "+
  37. +". "+"OK to continue CANCEL to Quit",3):
  38.  errreturn%=2 
  39. openOnTop
  40.  SYS"Wimp_SetCaretPosition",pane%,0,0,0,-1,LEN FNgeticontext(pane%,0)
  41.  all_over%
  42. "Wimp_CloseDown",myhandle%,&4B534154
  43. "Wimp_Poll",mask%,plblk% 
  44.  reason%
  45.  reason% 
  46.  2     : 
  47. "Wimp_OpenWindow",,plblk%
  48.  3     : all_over%=
  49.  6     : 
  50. buttons
  51.  8     : 
  52. keyPress
  53.  9     : 
  54. menu_selection
  55.  17,18 : 
  56. receive
  57. receive
  58.  plblk%!16 
  59. >%   
  60.  Quit%          : all_over%=
  61.  HelpRequest%   : 
  62.  plblk%!32 
  63.  pane%     :win$="PN":
  64. sendhelp
  65. sendhelp
  66. "MessageTrans_Lookup",filedesc%,win$+
  67.  plblk%!36,plblk%+20,200
  68. !plblk%=256
  69. plblk%!12=plblk%!8
  70. plblk%!16=HelpReply%
  71. "Wimp_SendMessage",17,plblk%,plblk%!4
  72. "<Finger$Dir>.fingers"
  73. geticontext(pane%,0)
  74.  fingers%>0 
  75.  i%=0 
  76.  fingers%-1
  77. \/    
  78. #x%,$(fingerslot%+maxfingerlength%*i%)
  79. memtostring(ptr%)
  80.  ?ptr%<>0
  81. (?ptr%):ptr%+=1
  82. reminder(mess$)
  83. rewriteIcon(message%,0,mess$)
  84. !wblk%=message%
  85. "Wimp_GetWindowState",,wblk%
  86. centreWindow(wblk%)
  87. wblk%!28=-1
  88. "Wimp_OpenWindow",,wblk%
  89. keyPress
  90. window%=plblk%!0
  91. key%=plblk%!24
  92.  key%=13 
  93. finger
  94. "Wimp_ProcessKey",key%
  95. menu_selection
  96. option%=plblk%!0
  97.  menu% 
  98.  mainm%   : 
  99.  option%=1 
  100.  all_over%=
  101. C                  
  102.  option%=0 
  103. reminder(
  104. )+" bytes free")
  105.  fingerm% : 
  106. finger_selection
  107. "Wimp_GetPointerInfo",,plblk%
  108.  plblk%!8=1 
  109. finger_menu
  110. finger_selection
  111.  6,129,0
  112. &FF,&FF 
  113.  ,key%
  114.  key%=255 
  115.  fingers%>0 
  116. cut(option%)
  117.  fingers%>0 
  118. E    
  119. rewriteIcon(pane%,0,$(fingerslot%+maxfingerlength%*option%))
  120. )    
  121. "Wimp_GetCaretPosition",,plblk%
  122. h    
  123.  plblk%!0=pane% 
  124.  plblk%!4=0 
  125. "Wimp_SetCaretPosition",pane%,0,0,0,-1,
  126. geticontext(pane%,0)
  127. buttons
  128. button%=plblk%!8
  129. window%=plblk%!12
  130. icon%=plblk%!16
  131.  button%=2 
  132. main_menu
  133. menu%=mainm%
  134. "Wimp_CreateMenu",,menublk%,plblk%!0-64,plblk%!4
  135.  window% 
  136.  pane%     : 
  137. pane_buttons
  138.  message%  : 
  139. closeWindow(message%)
  140.  IF button% AND &50 THEN 
  141.  wblk%!4=pane%:SYS "Wimp_GetWindowState",,wblk%+4: REM drag whole window if not on card
  142.  !wblk%=pane%:wblk%!4=1:SYS "Wimp_DragBox",,wblk%
  143.  ENDIF
  144. closeWindow(w%)
  145. !wblk%=w%
  146. "Wimp_CloseWindow",,wblk%
  147. openOnTop
  148. !plblk%=pane%
  149. "Wimp_GetWindowState",,plblk%
  150. centreWindow(plblk%)
  151. plblk%!28=-1
  152. "Wimp_OpenWindow",,plblk%
  153. openwin(handle%)
  154. !plblk%=handle%
  155.  "Wimp_GetWindowState",,plblk%
  156. plblk%!28=-1
  157. "Wimp_OpenWindow",,plblk%
  158. pane_buttons
  159.  icon% 
  160.   1 : 
  161. finger
  162.   2 : 
  163.   3 : 
  164. remove
  165.   4 : 
  166.   5 : all_over%=
  167.   6 : 
  168. finger_menu
  169. cut(what%)
  170.  what%<>fingers%-1 
  171.  i%=what% 
  172.  fingers%-1
  173. R     $(fingerslot%+maxfingerlength%*i%)=$(fingerslot%+maxfingerlength%*(i%+1))
  174.         
  175. (  $(fingerslot%-maxfingerlength%)=""
  176.   fingers%-=1
  177. remove
  178. (at%=
  179. position(
  180. geticontext(pane%,0))
  181.  at%<>-1 
  182. cut(at%)
  183.  fingers%<maxfingers% 
  184. position(
  185. geticontext(pane%,0))=-1 
  186. F    $(fingerslot%+maxfingerlength%*fingers%)=
  187. geticontext(pane%,0)
  188.     fingers%+=1
  189. reminder("Sorry I can only remember "+
  190.  maxfingers%+" fingers.")
  191. position(f$)
  192.  return%
  193. return%=-1
  194.  fingers%>0 
  195.  i%=0 
  196.  fingers%-1
  197.  $(fingerslot%+i%*maxfingerlength%)=f$ 
  198.  return%=i%
  199. =return%
  200. finger
  201.  place$=
  202. geticontext(pane%,0)
  203.  "Wimp_StartTask","taskwindow -wimpslot 32k -quit -name FingerInfo "+
  204. (34)+"finger "+place$+
  205. exists(f$)
  206.  exists%
  207. "XOS_File",17,(f$) 
  208.  found%
  209.  found%=1 
  210.  found%=2 
  211.  exists%=
  212. =exists%
  213. rewriteIcon(wind%,icon%,text$)
  214. !iconblock%=wind%
  215. iconblock%!4=icon%
  216. &400CE,,iconblock%
  217. $iconblock%!28=text$
  218. iconblock%!8=0
  219. iconblock%!12=&400000
  220. &400CD,,iconblock%
  221. geticontext(window%,ic%)
  222. !iconblock%=window%
  223. iconblock%!4=ic%
  224. &400CE,,iconblock%
  225. =$iconblock%!28
  226. centreWindow(b%)
  227. getmodeInfo
  228. width%=(b%!12-b%!4)
  229. height%=(b%!16-b%!8)
  230. x%=(xos%+1-width%)/2
  231. y%=(yos%+1-height%)/2
  232. b%!12=x%+width%:b%!4=x%
  233. b%!16=y%+height%:b%!8=y%
  234. getmodeInfo
  235.  "OS_ReadModeVariable",-1,11 
  236.  ,,Xpixels%
  237.  "OS_ReadModeVariable",-1,12 
  238.  ,,Ypixels%
  239.  "OS_ReadModeVariable",-1,4 
  240.  ,,XEigFactor%
  241.  "OS_ReadModeVariable",-1,5 
  242.  ,,YEigFactor%
  243. A"xos%=(Xpixels%+1)<<XEigFactor%
  244. B"yos%=(Ypixels%+1)<<YEigFactor%
  245. get_fingers
  246. fingers%=0
  247. exists("<Finger$Dir>.Fingers") 
  248. J   c%=
  249. "<Finger$Dir>.Fingers"
  250. rewriteIcon(pane%,0,
  251. #c%) 
  252.  fingers%<maxfingers%
  253. M5    $(fingerslot%+maxfingerlength%*fingers%)=
  254.     fingers%+=1
  255. RI$(fingerslot%+fingers%*maxfingerlength%)="" : 
  256.  ensure one empty slot
  257. errbox(msg$,flags%)
  258. Xn!errorblock%=0:$(errorblock%+4)=msg$+
  259. "Wimp_ReportError",errorblock%,flags%, "!Finger" 
  260.  ,errreturn%
  261. main_menu
  262. b%=wblk%
  263. menu_head(b%,"MTITLE")
  264. p%=b%+
  265. "MTITLE"+1+6
  266. menuitem(0,"BM0")
  267. menuitem(&80,"BM1")
  268. c    !p%=0
  269. "MessageTrans_MakeMenus",filedesc%,b%,menublk%,256
  270. menublk%!(28+4)=info%
  271. finger_menu
  272. menwid%=9*16:
  273.  (title+1)*16
  274. $menublk%="Fingers"
  275. menublk%?12=7
  276. menublk%?13=2
  277. menublk%?14=7
  278. menublk%?15=0
  279. menublk%!20=44
  280. menublk%!24=0
  281. at%=menublk%+28
  282.  fingers%>0 
  283.  i%=0 
  284.  fingers%-1
  285. inditem(at%,0  ,0    ,&07000111,fingerslot%+maxfingerlength%*i%)
  286. $(fingerslot%+maxfingerlength%*i%)>9 
  287.  menwid%=(
  288. $(fingerslot%+maxfingerlength%*i%)+1)*16
  289. {3  $fingerslot%="Sorry I don't have any fingers"
  290.   menwid%=32*16
  291. inditem(at%,0  ,0    ,&07000111,fingerslot%+maxfingerlength%*i%)
  292. at%!(-24)=&80
  293. menu%=fingerm%
  294. menublk%!16=menwid%
  295. "Wimp_CreateMenu",,menublk%,plblk%!0+24,plblk%!4+22
  296. menuitem(flags%,token$)
  297. $p%=token$+
  298.  token$+1
  299. p%=((p%+3)
  300. !p%=flags%
  301. p%!4=0
  302. p%!8=&7000011
  303. p%+=12
  304. inditem(
  305.  where%,mflags%,submpointer%,miconflags%,item%)
  306. where%!0=mflags%
  307. where%!4=submpointer%
  308. where%!8=miconflags%
  309. !(where%+12)=item%
  310. $(item%+
  311. $item%+1)=""
  312.  !(where%+16)=item%+
  313. $item%+1
  314.  PROCerrbox($item%+"   "+$!(where%+16))
  315. !!(where%+20)=1+
  316. $!(where%+16)
  317. where%+=24
  318. menu_head(where%,t$)
  319. $where%=t$
  320. where%+=
  321.  t$+1
  322. !where%=&70207
  323. where%?4=44
  324. where%?5=0
  325. load_my_windows
  326.  "Wimp_OpenTemplate",,"<Finger$Dir>.Templates"
  327. 5indy%=indirected%:ind_end%=indirected%+indlength%
  328. $pane%        =
  329. onewindow("Pane")
  330. $info%        =
  331. onewindow("Info")
  332. 'message%     =
  333. onewindow("Message")
  334.  "Wimp_CloseTemplate"
  335. onewindow(t$)
  336.  "Wimp_LoadTemplate",,wblk%,indy%,ind_end%,-1,t$,0 
  337.  ,,indy%
  338. wblk%!64=sp%
  339.  "Wimp_CreateWindow",,wblk% 
  340. set_message_numbers
  341. Quit%        =0
  342. HelpRequest% =&502
  343. HelpReply%   =&503
  344. load_messages
  345. m$="<Finger$Dir>.Messages"
  346. "MessageTrans_FileInfo",,m$ 
  347.  flags%,,size%
  348. "OS_Module",6,,,17+
  349.  ,,filedesc%
  350. $(filedesc%+16)=m$
  351. "MessageTrans_OpenFile",filedesc%,filedesc%+16,messb%
  352. "MessageTrans_CloseFile",filedesc%
  353.