home *** CD-ROM | disk | FTP | other *** search
/ APDL Public Domain 1 / APDL_PD1A.iso / program / basic / eventshell / !EvntShell / ShellLibRT (.txt) < prev   
Encoding:
RISC OS BBC BASIC V Source  |  1996-04-18  |  146.7 KB  |  4,643 lines

  1.  >EvntShell:ShellLibRT 
  2.  Squished by Lofty's !Shrink vsn 3.01 on 18-Apr-96 
  3. shell_LibraryVersion:=2.15*&64
  4. shell_DefineConstants:_MSE_SELECTBUT=4:_MSE_MENUBUT=2:_MSE_ADJUSTBUT=1:_EVENT_NULL=0:_EVENT_REDRAWWIN=1:_EVENT_OPENWIN=2:_EVENT_CLOSEWIN=3:_EVENT_PTRLEAVING=4:_EVENT_PTRENTERING=5:_EVNT_MSECLICK=6:_EVNT_DRAGEND=7:_POPUP_TYPE_TEXT=0
  5. _POPUP_TYPE_WIMPCOLOUR=1:_POPUP_TYPE_DATEPICK=2:_POPUP_TYPE_CALCULATOR=3:_POPUP_TYPE_FONTPICK=4:_POPUP_TYPE_LINEFONT=5:_POPUP_TYPE_FONTMENU=6:_POPUP_TYPE_TIMEPICK=7:_POPUP_TYPE_COLOUR24=8:_IBAR_RIGHT%=-1:_IBAR_LEFT%=-2:_BUTTON_TYPE_NEVER=0
  6. <._BUTTON_TYPE_CLICK=3:_BUTTON_TYPE_MENU=9:
  7. shell_GetLastSecureFileName:
  8. h%:h%=_U%!80:
  9. shell_GetEventMenu(AE%,d%,EC%):
  10. f%,r%,y%,HA%,AA%:
  11. d%=-1
  12. d%=-2
  13. SOHA%=
  14. shell_HeapBlockInfo(_U%!&C)-8:f%=0:y%=
  15. :r%=_U%!&C:e$="":
  16. (r%!f%=d%)
  17. r%!(f%+4)=EC%
  18. a%AA%=r%!(f%+8):
  19. AA%=-2
  20. AA%=_U%!&FC
  21. :f%+=48:
  22. (f%>=HA%
  23. y%):=AA%
  24. shell_AttachMenuDBox(cC%,p$,qA$,sA$):
  25. e%,h%,XB%:
  26. shell_WindowLoaded(p$)
  27. shell_MessageOneArg("SHELLMSG03",p$)
  28. shell_HeapBlockFetch(&C):e%!0=
  29. shell_HeapBlockFetch(
  30. p$+1):h%=e%!0:$h%=p$:e%!4=
  31. shell_HeapBlockFetch(
  32. qA$+1):h%=e%!4:$h%=qA$:e%!8=
  33. shell_HeapBlockFetch(
  34. sA$+1):h%=e%!8:$h%=sA$:
  35. &45BCE,cC%,e%:
  36. &45BCC,,
  37. shell_MessageNoArgs(L$):=
  38. shell_MessageLookup(L$,"","")
  39. shell_MessageOneArg(L$,z$):=
  40. shell_MessageLookup(L$,z$,"")
  41. shell_MessageTwoArgs(L$,z$,OA$):=
  42. shell_MessageLookup(L$,z$,OA$)
  43. shell_MessageLookup(L$,z$,OA$):
  44. o%,L%,v$,VD%,jC%:
  45. L$,8)="SHELLMSG"
  46. VD%=_U%!284:jC%=_U%!280
  47. VD%=_U%!64:jC%=_U%!68
  48. &61502,jC%,L$,VD%,256,z$,OA$
  49. ,,,L%;o%:
  50. VD%?L%=&D:v$=$(VD%)
  51. shell_WimpInit(CC%,EA$):
  52. zE%,wA%:
  53. zE%4:!zE%=0:
  54. shell_OSCheckVersion(3.1)
  55. 2CC%=310:
  56. &400C0,CC%,&4B534154,EA$,zE%
  57. CC%,wA%
  58. CC%=&C8:
  59. &400C0,CC%,&4B534154,EA$
  60. CC%,wA%
  61. _U%!&64
  62. "WimpExt_Initialise",&E,wA%
  63. :_U%!&94=wA%:=wA%
  64. shell_WimpInit_I(CC%,EA$):
  65. wA%:wA%=
  66. shell_WimpInit(CC%,EA$):
  67. &81682,wA%:=wA%
  68. shell_WimpCloseDown_I(wA%):
  69. shell_ExReg_FontLib_Loaded
  70. shell_Fonts_LoseFonts
  71. shell_ExReg_FontMenu_Loaded
  72. shell_FontMenu_Deregister
  73. _U%!&64
  74. "WimpExt_Initialise",&E,wA%
  75. &600DD,wA%,&4B534154:
  76. &A1683,wA%:
  77. _U%!&64
  78. "XImpulse_CloseDown",_U%!&94
  79. WimpCloseDown(wA%):
  80. shell_ExReg_FontMenu_Loaded
  81. shell_LoseFonts
  82. shell_ExReg_FontMenu_Loaded
  83. shell_FontMenu_Deregister
  84. _U%!&64
  85. "WimpExt_Initialise",&E,wA%
  86. &600DD,wA%,&4B534154:
  87. _U%!&64
  88. "XImpulse_CloseDown",_U%!&94
  89. ("Unset "+_shell_AppName$+"$BasicFile"):
  90. shell_FindFont(AB$,xI%):
  91. hA%,wF%:wF%=_U%!&E8:
  92. &40081,,AB$,xI%*16,f*16,0,0
  93. hA%:wF%?hA%+=1:
  94. wF%?hA%>=&FF
  95. shell_OK(
  96. shell_MessageNoArgs("SHELLMSG18"))
  97. shell_Init:
  98. KB%,s%,h%,o$:
  99. D$,G$,WE%:
  100. shell_InitModules:
  101. shell_DefineConstants:_SHELL_SENDDATALOAD_MY_REF%=0:_SHELL_SENDDATALOAD_FILE$="":
  102. _U%360,_shell_blk%260:_Q%=
  103. shell_HeapBlockFetch(&BB8):KB%=
  104. shell_HeapBlockFetch(48):KB%!0=0:KB%!4=0:KB%!8=0
  105. KB%!&C=0:KB%!16=0:KB%!20=0:KB%!24=0:KB%!28=0:KB%!32=0:KB%!36=0:KB%!40=0:KB%!44=0:_U%!0=0:_U%!4=0:_U%!8=0:_U%!&C=KB%:_U%!16=1:_U%!20=0:_U%!44=-1:_U%!48=0:_U%!52=0:_U%!56=0:_U%!60=0:_U%!64=0:_U%!68=0:_U%!72=0:_U%!76=
  106. shell_HeapBlockFetch(256):_U%!80=0
  107. _U%!84=-1:_U%!88=0:_U%!92=0:_U%!96=0:_U%!&64=0:_U%!&6C=-1:_U%!&70=-1:_U%!&74=-1:_U%!&78=-1:_U%!&7C=-1:_U%!&80=0:_U%!&84=0:_U%!&88=-1:_U%!&8C=-1:_U%!&90=-1:_U%!&94=0:_U%!&98=0:_U%!&9C=0:_U%!&B0=0:_U%!&B4=0:_U%!&B8=0:_U%!&BC=0:_U%!&C0=0:_U%!&C4=0
  108. _U%!&C8=0:_U%!&CC=0:_U%!&D0=-1:_U%!&D4=-1:_U%!&D8=0:_U%!&DC=0:_U%!&E0=0:_U%!&E4=0:_U%!&E8=
  109. shell_HeapBlockFetch(256):_U%!&EC=
  110. shell_HeapBlockFetch(256):_U%!&F0=-1:_U%!&F4=0:_U%!&FC=0:_U%!256=0:_U%!260=1:_U%!264=0:_U%!268=0:_U%!272=0:_U%!276=0
  111. _U%!280=0:_U%!284=0:_U%!304=0:_U%!308=0:_U%!316=0:_U%!324=0:_U%!336=0:_U%!340=0:_U%!344=0:
  112. shell_MemFill(_U%!&E8,256,0):
  113. shell_MemFill(_U%!&EC,256,0):D$=
  114. shell_OSVarGetVal("Obey$Dir",1):G$=
  115. shell_Leaf(D$),2):_U%!&BC=
  116. shell_HeapBlockFetch((
  117. D$)+1)
  118. _U%!&C4=
  119. shell_HeapBlockFetch((
  120. G$)+1):h%=_U%!&BC:$h%=D$:h%=_U%!&C4:$h%=G$:h%=
  121. shell_OSModuleCheckVersion("WimpExtension",1.98):
  122. _U%!&64=_U%!&64
  123. RO3_Present:
  124. _U%!&64=_U%!&64
  125. 1<<&A
  126. shell_InteractiveHelpOn:WE%=&64:
  127. shell_PollSetInterval(WE%):
  128. shell_PollSetPrevInterval(WE%):
  129. _POLL_EARLIEST_TIME%:_POLL_EARLIEST_TIME%+=WE%:o$=
  130. shell_OSReadCommandArg(1):
  131. o$<>""
  132. L_U%!&64=_U%!&64
  133. 1<<5:h%=
  134. shell_HeapBlockFetch(
  135. o$+1):$(h%)=o$:_U%!324=h%
  136. shell_InitModules:
  137. k%:k%=
  138. _shell_Bumpers_Init:k%=
  139. _shell_CaretMove_Init:k%=
  140. _shell_DataLoad_Init:k%=
  141. _shell_DataSave_Init:k%=
  142. _shell_Debug_Init:k%=
  143. _shell_Errors_Init:k%=
  144. _shell_Evnts_Init:k%=
  145. _shell_ExReg_Init:k%=
  146. _shell_Files_Init
  147. _shell_Iconbar_Init:k%=
  148. _shell_Icons_Init:k%=
  149. _shell_IntHelp_Init:k%=
  150. _shell_Memory_Init:k%=
  151. _shell_Menus_Init:k%=
  152. _shell_MenuList_Init:k%=
  153. _shell_Messages_Init:k%=
  154. _shell_OS_Init:k%=
  155. _shell_Pointer_Init:k%=
  156. _shell_Poll_Init:k%=
  157. _shell_PopUps_Init
  158. _shell_ProgEvnts_Init:k%=
  159. _shell_Sliders_Init:k%=
  160. _shell_Sprites_Init:k%=
  161. _shell_Strings_Init:k%=
  162. _shell_StaticList_Init:k%=
  163. _shell_WindowList_Init:k%=
  164. _shell_Windows_Init:
  165. shell_GetCmdLineArgs:
  166. _U%!324<>0
  167. o$=$(_U%!324)
  168. shell_GetAppDir:
  169. h%:h%=_U%!&BC:=$h%
  170. shell_GetAppDataDir:
  171. h%:h%=_U%!&C0:=$h%
  172. shell_GetAppName:
  173. h%:h%=_U%!&C4:=$h%
  174. shell_ResourcesInit:
  175. MA$,h%,G$,D$,fE%:
  176. ZC%,rD%:G$=
  177. shell_GetAppName:D$=
  178. shell_GetAppDir:
  179. shell_OSVarExists(G$+"Res$Path")
  180. _U%!&64=_U%!&64
  181. shell_OSVarExists(G$+"Data$Dir")
  182. fMA$=
  183. shell_OSVarGetVal(G$+"Data$Dir",1):_U%!&C0=
  184. shell_HeapBlockFetch((
  185. MA$)+1):h%=_U%!&C0:$h%=MA$
  186. _U%!&C0=
  187. shell_HeapBlockFetch((
  188. D$)+1):h%=_U%!&C0:$h%=D$
  189. _U%!&64
  190. shell_FileExists(G$+"Res:Messages")
  191. shell_MessagesInit(G$+"Res:Messages",_U%!68,_U%!64)
  192. shell_FileExists(G$+"Res:ShellMsgs")
  193. shell_MessagesInit(G$+"Res:ShellMsgs",_U%!280,_U%!284)
  194. shell_MessagesInit("EvntShellRes:ShellMsgs",_U%!280,_U%!284)
  195. &20035,-1,4
  196. ,,rD%:
  197. &20035,-1,5
  198. ,,ZC%:
  199. ZC%=1
  200. shell_FileExists(G$+"Res:Sprites22")
  201. 64_U%!16=
  202. shell_SpriteAreaLoad(G$+"Res:Sprites22")
  203. shell_FileExists(G$+"Res:Sprites")
  204. :2_U%!16=
  205. shell_SpriteAreaLoad(G$+"Res:Sprites")
  206. _U%!16=1
  207. :fE%=
  208. shell_3DEnabled:
  209. shell_FileExists(G$+"Res:Templates3")
  210. shell_TemplatesInit(G$+"Res:Templates3",k%)
  211. shell_FileExists(G$+"Res:Templates")
  212. shell_TemplatesInit(G$+"Res:Templates",k%)
  213. shell_FileExists(D$+".Messages")
  214. shell_MessagesInit(D$+".Messages",_U%!68,_U%!64)
  215. shell_FileExists(D$+".ShellMsgs")
  216. shell_MessagesInit(D$+".ShellMsgs",_U%!280,_U%!284)
  217. shell_MessagesInit("EvntShellRes:ShellMsgs",_U%!280,_U%!284)
  218. &20035,-1,4
  219. ,,rD%:
  220. &20035,-1,5
  221. ,,ZC%:
  222. ZC%=1
  223. shell_FileExists(D$+".Sprites22")
  224. X1_U%!16=
  225. shell_SpriteAreaLoad(D$+".Sprites22")
  226. shell_FileExists(D$+".Sprites")
  227. [/_U%!16=
  228. shell_SpriteAreaLoad(D$+".Sprites")
  229. _U%!16=1
  230. :fE%=
  231. shell_3DEnabled:
  232. shell_FileExists(D$+".Templates3")
  233. shell_TemplatesInit(D$+".Templates3",k%)
  234. shell_FileExists(D$+".Templates")
  235. shell_TemplatesInit(D$+".Templates",k%)
  236. &45BC0:
  237. shell_HeapBlockReturn(_Q%):_Q%=
  238. shell_HeapBlockFetch(&400):
  239. shell_FileExists(D$+".EvntData")
  240. shell_EvntLoad_AllEvnts(D$+".EvntData")
  241. shell_ExReg_ShareBan_Loaded
  242. shell_ShareBan_ShowBanner
  243. shell_MessageExpand(s$):
  244. Q$,v$,VB%:Q$="":
  245. s$,"\")>0:VB%=
  246. s$,"\"):Q$+=
  247. s$,VB%-1):v$=
  248. s$,VB%+1,1):s$=
  249. s$,VB%+2):
  250. "A":Q$+="Click ADJUST to"
  251. "a":Q$+="ADJUST"
  252. "D":Q$+="Drag with SELECT to"
  253. "d":Q$+="Drag with ADJUST to"
  254. "G":Q$+="This option is greyed out because"
  255. "R":Q$+="Move the pointer right"
  256. "S":Q$+="Click SELECT to"
  257. "s":Q$+="SELECT"
  258. "T":Q$+="This is the"
  259. "W":Q$+="This window is"
  260. "w":Q$+="window"
  261. Q$+="\"+v$
  262. :=Q$+s$
  263. shell_MessageWindow(J$,cI%,FB$,CA$):
  264. _E%,OD%:OD%=
  265. shell_HeapBlockFetch(260):!OD%=0:$(OD%+4)=J$+
  266. CA$=""
  267. CA$="Message from "+FB$
  268. &400DF,OD%,19,CA$
  269. &400DF,OD%,17,CA$
  270. shell_HeapBlockReturn(OD%):=_E%
  271. shell_CreateWindow2(O,o%,JJ%,RI%,EI%,NB%,yF%,mB%,oB%,tE%):
  272. Q%:Q%=
  273. shell_HeapBlockFetch(&BB8):Q%!0=yF%:Q%!4=mB%:Q%!8=oB%:Q%!&C=tE%:Q%!16=0:Q%!20=0:Q%!24=-1:Q%!28=o%:Q%?32=7:Q%?33=2:Q%?34=JJ%:Q%?35=RI%:Q%?36=3:Q%?37=1:Q%?38=2:Q%?39=0:Q%!40=0:Q%!44=NB%
  274. Q%!48=EI%:Q%!52=0:Q%!56=317:Q%!60=&3000:Q%!68=1:Q%!72=O:Q%!76=-1:Q%!80=
  275. $O:Q%!84=0:
  276. &400C1,,Q%
  277. shell_HeapBlockReturn(Q%):=n%
  278. shell_ClaimKeypress:
  279. _U%!20<>0
  280. &400D4,,-1:k%=
  281. shell_DeleteWindow(_U%!20):_U%!20=0
  282. oktodeletew(n%):=-1
  283. oktoclosew(n%):=-1
  284. cliprect(A,
  285. DI%):
  286. XA%,gA%:
  287. lwaorigin(A,XA%,gA%):uA%=A!24-XA%:DB%=A!28-gA%:LI%=A!32-XA%:DI%=A!36-gA%:
  288. shell_DoBackgroundTask:
  289. shell_HandleAttachedMenu(_Q%,d%,t%):
  290. t%<>-1
  291. d%>-1
  292. #1AA%=
  293. shell_GetEventMenu(_Q%!8,d%,t%):
  294. AA%<>0
  295. shell_HandleMenuOpen(_Q%,AA%,d%,t%,
  296. shell_Action(CJ%):
  297. e$,AA%,x$,XB$,pH%,cB%,vB%,IF%:
  298. d%,t%,k%,_temp28%,_temp32%,_temp24%,_temp%,nI%:
  299. WJ%,a%,nG%:
  300. _EVENT_NULL:
  301. _closedown%=
  302. (nG%-_POLL_EARLIEST_TIME%)>0:_POLL_EARLIEST_TIME%+=_POLL_INTERVAL%:
  303. shell_ExReg_OLELib_Loaded
  304. shell_DoOLEHandling
  305. shell_DoBackgroundTask:
  306. shell_SliderDragInProgress
  307. shell_Slider
  308. shell_EvntHandle_IconWatch
  309. shell_Evnts_WritableDragInProgress
  310. shell_Evnts_MonitorDragPtrPos
  311. _EVENT_REDRAWWIN:
  312. shell_RedrawWindow(_Q%!0)
  313. _EVENT_OPENWIN:
  314. shell_OpenWindow(_Q%!0,
  315. _EVENT_CLOSEWIN:
  316. shell_EvntHandle_WindowClose(_Q%!0)
  317. _EVENT_PTRLEAVING:
  318. shell_EvntHandle_PointerLeavingWindow(!_Q%)
  319. _EVENT_PTRENTERING:
  320. shell_EvntHandle_PointerEnteringWindow(!_Q%)
  321. _EVNT_MSECLICK:cB%=_Q%!0:vB%=_Q%!4:_U%!272=_Q%!0:_U%!276=_Q%!4:_EVNTS_LAST_MOUSEBUTTON%=_Q%!8:_EVNTS_LAST_WINDOWCLICKED%=_Q%!&C:_EVNTS_LAST_ICONCLICKED%=_Q%!16:
  322. _Q%!8
  323. shell_EvntHandle_ClickSelect(
  324. Evnts_GetLastWindowClicked,
  325. Evnts_GetLastIconClicked)
  326. shell_EvntHandle_ClickMenu(
  327. Evnts_GetLastWindowClicked,
  328. Evnts_GetLastIconClicked)
  329. shell_EvntHandle_ClickAdjust(
  330. Evnts_GetLastWindowClicked,
  331. Evnts_GetLastIconClicked)
  332. 7:_U%!&80=0:
  333. shell_SliderDragInProgress=
  334. shell_EvntHandle_UserDragEnd:
  335. shell_EvntHandle_DataSaveEndDrag
  336. shell_SliderDragEnd
  337. _Q%!24
  338. &D,394,398,399,410,430,431:IF%=
  339. shell_WritableIconHandler(_Q%!0,_Q%!4,_Q%!24)
  340. shell_HotKeyProcess(_Q%!24)
  341. &400DC,_Q%!24
  342. shell_EvntHandle_MenuSelect(_Q%)
  343. 17,18:
  344. shell_Receive(_Q%)
  345. shell_UserMessageAcknowledge(_Q%)
  346. shell_HandleMenuOpen(_Q%,AA%,d%,t%,mI%):
  347. KA%,v%:
  348. shell_OpenMenu(_Q%!0,_Q%!4,AA%)
  349. shell_HeapBlockFetch(50):v%=
  350. shell_HeapBlockFetch(36):KA%!0=d%:KA%!4=t%:
  351. &400CE,,KA%:v%!0=d%:
  352. &400CB,,v%:
  353. shell_OpenMenu(v%!4+KA%!16+64,_Q%!4,AA%):
  354. v%!4+KA%!16+64,_Q%!4:
  355. shell_HeapBlockReturn(KA%):
  356. shell_HeapBlockReturn(v%)
  357. shell_ActionAdjustButton:
  358. o%,e$,k%,ZD%,m%:ZD%=
  359. shell_HeapBlockFetch(&C+(
  360. shell_WindowCountIcons(
  361. Evnts_GetLastWindowClicked)*32)):
  362. Evnts_GetLastWindowClicked>0
  363. &400D6,
  364. Evnts_GetLastWindowClicked,ZD%,&F000,&B000:m%=0:
  365. ZD%!m%<>-1:
  366. ZD%!m%=
  367. Evnts_GetLastIconClicked
  368. shell_IconSet(
  369. Evnts_GetLastWindowClicked,
  370. Evnts_GetLastIconClicked,1)
  371. m%+=4:
  372. Evnts_GetLastIconClicked=0
  373. shell_HandleAttachedDataSave(_Q%,
  374. Evnts_GetLastWindowClicked,
  375. Evnts_GetLastIconClicked)
  376. shell_EvntHandle_ClickAdjust(
  377. Evnts_GetLastWindowClicked,
  378. Evnts_GetLastIconClicked):
  379. shell_HeapBlockReturn(ZD%):
  380. shiftmenuclick(d%,t%):=
  381. shell_RedrawWindow(n%):
  382. yD%,e$,XA%,gA%,e%:
  383. shell_HeapBlockFetch(&64):
  384. shell_FatalError
  385. e%!0=n%:
  386. &400C8,,e%
  387. yD%:XA%=e%!4-e%!20:gA%=e%!16-e%!24:
  388. &81681,,e%:
  389. shell_EvntHandle_Redraw(n%,e%,XA%,gA%):
  390. &400CA,,e%
  391. shell_HeapBlockReturn(e%):
  392. shell_Receive(_Q%):
  393. h%,k%,UH%:
  394. _Q%!16
  395. _MESSAGE_QUIT:
  396. shell_Exit:
  397. _MESSAGE_DATASAVE:
  398. shell_DataSave(_Q%)
  399. _MESSAGE_DATASAVEACK:
  400. shell_DataSaveAck(_Q%)
  401. _MESSAGE_DATALOAD:
  402. shell_EvntHandle_DataLoad(_Q%,
  403. _MESSAGE_DATALOADACK:
  404. shell_DataLoadAck(_Q%)
  405. shell_EvntHandle_DataLoad(_Q%,
  406. _MESSAGE_RAMFETCH:
  407. shell_RAMFetch(_Q%)
  408. _MESSAGE_RAMTRANSMIT:
  409. shell_RAMTransmit(_Q%)
  410. _MESSAGE_PREQUIT:
  411. shell_ProgEvnts_PreQuit(_Q%)
  412. _MESSAGE_PALETTECHANGE:
  413. shell_ProgEvnts_PaletteChanged
  414. _MESSAGE_SAVEDESKTOP:
  415. shell_ProgEvnts_SaveDesktop(_Q%!20)
  416. _MESSAGE_SHUTDOWN:
  417. shell_ProgEvnts_Shutdown
  418. _MESSAGE_HELP:
  419. shell_InteractiveHelp(_Q%)
  420. _MESSAGE_MENUWARNING:
  421. shell_MenuWarning(_Q%)
  422. _MESSAGE_MODECHANGE:
  423. shell_ProgEvnts_ModeChanged
  424. _MESSAGE_COLOURPICKERCOLOURCHOICE:UH%=(_Q%!24
  425. shell_ColourPickerSelection(_Q%!28,UH%)
  426. _MESSAGE_DESKFONT_CHANGED:
  427. shell_ProgEvnts_DeskFontChanged(_Q%!20):
  428. shell_ExReg_Fonts_Loaded
  429. shell_Fonts_DeskTopFont_Selected(_Q%!20)
  430. _MESSAGE_TASKINIT:
  431. shell_ProgEvnts_TaskInitialise(_Q%!4,
  432. shell_GetString(_Q%+28)):
  433. _U%!&D0=-1
  434. shell_GetString(_Q%+28)="StrongHelp"
  435. _U%!&D0=_Q%!4:
  436. shell_StrongHlpMsg("Help_Install -DieWithTask "+
  437. shell_GetAppDir+"."+
  438. shell_GetAppName):h%=_U%!&D8:
  439. $h%<>""
  440. shell_HelpWord($h%):
  441. shell_HeapBlockReturn(_U%!&D8):_U%!&D8=0
  442. _MESSAGE_TASKCLOSEDOWN:
  443. shell_ProgEvnts_TaskCloseDown(_Q%!4):
  444. _Q%!4=_U%!&D0
  445. _U%!&D0=-1
  446. _MESSAGE_TASKNAMEIS:
  447. shell_GetString(_Q%+28)="StrongHelp"
  448. _U%!&D0=_Q%!20
  449. shell_ScanForHelp
  450. &80140:
  451. shell_HandlePrintFile(_Q%)
  452. &80143:
  453. shell_HandlePrintError(_Q%)
  454. &80145:
  455. shell_HandlePrintTypeOdd(_Q%)
  456. &80147:
  457. shell_HandleSetPrinter(_Q%)
  458. shell_HandleUnknownMessage2(_Q%)
  459. shell_HandleUnknownMessage2(_Q%):
  460. _Q%!16
  461. &43B00:U$=$(_Q%+20):
  462. U$,30)="EvntShellLib:ShellDBug started"
  463. _U%!&64
  464. r_U%!&64=(_U%!&64
  465. 1<<4):
  466. shell_BroadcastMessage(&43B00,"ShellDBug:Init Debug messages from "+
  467. shell_GetAppName)
  468. U$,25)="EvntShellLib:TraceInitAck"
  469. _U%!&64=(_U%!&64
  470. 1<<4)
  471. U$,20)="EvntShellLib:TraceOn"
  472. shell_TraceOn
  473. U$,21)="EvntShellLib:TraceOff"
  474. shell_TraceOff
  475. U$,28)="EvntShellLib:ListClickSelect"
  476. shell_ListClickSelect
  477. U$,26)="EvntShellLib:ListClickMenu"
  478. shell_ListClickMenu
  479. U$,28)="EvntShellLib:ListClickAdjust"
  480. shell_ListClickAdjust
  481. U$,25)="EvntShellLib:ListHelpTags"
  482. shell_ListHelpTags
  483. U$,24)="EvntShellLib:ListBumpers"
  484. shell_ListBumpers
  485. U$,26)="EvntShellLib:ListPointerIn"
  486. shell_ListPointerIn
  487. U$,27)="EvntShellLib:ListPointerOut"
  488. shell_ListPointerOut
  489. U$,25)="EvntShellLib:ListDataLoad"
  490. shell_ListDataLoad
  491. U$,25)="EvntShellLib:ListDataSave"
  492. shell_ListDataSave
  493. shell_HandleUnknownMessage(_Q%):
  494. shell_HandleUnknownMessage(_Q%):
  495. shell_RAMFetch(_Q%):
  496. PJ%,uE%,yE%:yE%=
  497. _U%!&90>&8000
  498. 4_Q%!&C=_Q%!8:_Q%!16=7:uE%=_U%!&88:
  499. _U%!&8C=&FF9
  500. _U%!&90+=4
  501. (uE%-_U%!&80)<_Q%!24
  502. _Q%!24=uE%-_U%!&80:yE%=
  503. &400F1,_U%!&94,_U%!&90+_U%!&80,_Q%!4,_Q%!20,_Q%!24:
  504. &400E7,17,_Q%,_Q%!4:_U%!&78=_Q%!8:_U%!&80+=_Q%!24:
  505. _U%!&80=0
  506. shell_RAMTransmit(_Q%):
  507. a%,e%,pA$,h%:
  508. _Q%!&C=_U%!&70
  509. $_U%!&80+=_Q%!24:
  510. _Q%!24<_U%!&84
  511. shell_GetEventListOffset(
  512. Evnts_GetLastWindowClicked,
  513. Evnts_GetLastIconClicked,_U%+96,16,
  514. ):e%=_U%!96+a%:h%=_U%!&9C:pA$=
  515. shell_GetString(h%+44):
  516. shell_UserFNLoadFile(h%!40,_U%!&98,e%!8,pA$,_U%!&84,e%)
  517. _U%!&80>_U%!&84
  518. ;_U%!&98=
  519. shell_HeapBlockExtend(_U%!&98,_U%!&80,_U%!&84)
  520. :_Q%!&C=_Q%!8:_Q%!16=6:_Q%!20=_U%!&98+_U%!&80:_Q%!24=_U%!&84:
  521. &400E7,18,_Q%,_Q%!4:_U%!&70=_Q%!8
  522. shell_HeapBlockReturn(_U%!&98):_U%!&98=0:
  523. shell_OK(
  524. shell_MessageNoArgs("SHELLMSG15"))
  525. shell_LoadFile(iJ%):
  526. HA$,LG%,PE%,yB%:HA$=
  527. shell_GetString(_Q%+44):LG%=
  528. shell_FileLength(HA$):
  529. LG%<0
  530. shell_OK(
  531. shell_MessageNoArgs("SHELLMSG16"))
  532. .QyB%=
  533. shell_HeapBlockFetch(LG%):
  534. &20008,16,HA$,yB%,0
  535. ;PE%:
  536. shell_VFlag(PE%)
  537. shell_HeapBlockReturn(yB%)
  538. :=yB%
  539. shell_VFlag(PE%):=((PE%
  540. 1)=1)
  541. shell_Exit:
  542. jC%:jC%=_U%!68:
  543. &61504,jC%:
  544. &2001E,7,,jC%:
  545. shell_TraceExit:
  546. &606C2:
  547. &600D0,,-1:
  548. shell_WimpCloseDown_I(_U%!&94):
  549. shell_DataSave(_Q%):
  550. h%,a%,e%,s%:
  551. _Q%!4<>_U%!&94
  552. nCa%=
  553. shell_GetEventListOffset(_Q%!20,_Q%!24,_U%+96,16,
  554. a%>-1
  555. p2e%=_U%!96+a%:
  556. shell_CheckType(_Q%!40,e%!8,
  557. shell_TopBitLoadInProgress
  558. }n_Q%!0=256:_Q%!&C=_Q%!8:_Q%!36=-1:_Q%!16=2:$(_Q%+44)=
  559. shell_GetAppDir+".ScrapFile"+
  560. &400E7,18,_Q%,_Q%!4
  561. shell_HeapBlockReturn(_U%!&9C):_U%!&9C=
  562. shell_HeapBlockFetch((_Q%!0)+8):h%=_U%!&9C:
  563. _Q%!0
  564. 4:h%!s%=_Q%!s%:
  565. s%:_EVNTS_LAST_WINDOWCLICKED%=_Q%!20:_EVNTS_LAST_ICONCLICKED%=_Q%!24:_U%!&80=0:_U%!&84=_Q%!36:_U%!&98=
  566. shell_HeapBlockFetch(_Q%!36)
  567. l_Q%!0=28:_Q%!&C=_Q%!8:_Q%!16=6:_Q%!20=_U%!&98+_U%!&80:_Q%!24=_U%!&84:
  568. &400E7,18,_Q%,_Q%!4:_U%!&70=_Q%!8
  569. shell_TopBitLoadInProgress:
  570. _U%!&64
  571. shell_DataSaveCheckName(d%,t%):
  572. a%,e%,HA%:e%=_U%!72:a%=0:
  573. e%<>0
  574. 2HA%=
  575. shell_HeapBlockInfo(e%)-8:
  576. !(e%+a%)=d%
  577. ee%+=a%:f$=
  578. shell_IconGetData(!e%,e%!16):
  579. f$,".")=0
  580. shell_OK(
  581. shell_MessageNoArgs("SHELLMSG01"))
  582. a%=HA%
  583. :a%+=24:
  584. a%>=HA%
  585. shell_DataLoadAck(_Q%):
  586. shell_UserMessageAcknowledge(_Q%):
  587. _Q%!16
  588. shell_AckDataLoad(_Q%)
  589. shell_AckRAMFetch(_Q%)
  590. _Q%!8=_SHELL_SENDDATALOAD_MY_REF%
  591. RO3_Present
  592. ("Filer_Run "+_SHELL_SENDDATALOAD_FILE$)
  593. ("Run "+_SHELL_SENDDATALOAD_FILE$)
  594. shell_AckRAMFetch(_Q%):
  595. iH%,h%:h%=_U%!&9C:
  596. _Q%!&C<>_U%!&70
  597. _U%!&80=0
  598. &20023,"Wimp$Scrap",,-1,0,3
  599. ,,iH%:
  600. iH%<>0
  601. $(h%+44)="<Wimp$Scrap>"+
  602. (0):h%!0=(49+
  603. shell_GetString(h%+44)))
  604. 3:h%!&C=h%!8:h%!16=2:h%!36=-1:
  605. &400E7,18,h%,h%!4:_U%!&6C=h%!8
  606. shell_OK(
  607. shell_MessageNoArgs("SHELLMSG14"))
  608. shell_HeapBlockReturn(_U%!&98):_U%!&98=0:
  609. shell_OK("SHELLMSG06")
  610. shell_FindMenuWarnEvent(MA%,
  611. j%,qA%,h%,a%,y%,HA%,xA%,m%:
  612. bC%:bC%=0:qA%=_U%!&DC:a%=0:y%=
  613. :K$="":bC%=0:
  614. shell_HeapBlockExists(qA%)
  615. :m%+=4:
  616. qA%!m%=-1:HA%=m%:m%=0:
  617. :h%=!(qA%+a%+0):
  618. h%<>-1
  619. h%=MA%
  620. aFy%=
  621. :xA%=qA%!(a%+4):K$=$xA%:bC%=qA%!(a%+8):xA%=qA%!(a%+&C):P$=$xA%
  622. :a%+=16
  623. a%=HA%
  624. a%>=HA%
  625. K$="":P$=""
  626. bC%=0
  627. shell_EventListMenuWarn(cC%,tG%,K$,P$):
  628. h%,xA%,m%,qA%:
  629. _U%!&DC=0
  630. _U%!&DC=
  631. shell_HeapBlockFetch(32):h%=_U%!&DC:h%!0=cC%:h%!4=
  632. shell_HeapBlockFetch(
  633. K$+1):$(h%!4)=K$:h%!8=tG%:h%!&C=
  634. shell_HeapBlockFetch(
  635. P$+1):$(h%!&C)=P$:h%!16=-1:h%!20=-1:h%!24=-1:h%!28=-1
  636. shell_HeapBlockExtend(_U%!&DC,32):_U%!&DC=qA%:m%=0:
  637. :m%+=16:
  638. qA%!m%=-1:h%=_U%!&DC:h%!m%=cC%:h%!(m%+4)=
  639. shell_HeapBlockFetch(
  640. K$+1):xA%=h%!(m%+4):$(xA%)=K$:h%!(m%+8)=tG%:h%!(m%+&C)=
  641. shell_HeapBlockFetch(
  642. P$+1):xA%=h%!(m%+&C):$(xA%)=P$
  643. ;h%!(m%+16)=-1:h%!(m%+20)=-1:h%!(m%+24)=-1:h%!(m%+28)=-1
  644. lwaorigin(A,
  645. QA%):PA%=A!0-A!16:QA%=A!&C-A!20:
  646. shell_WritableIconHandler(d%,t%,kA%):
  647. sA%,OC%,RC%,m%:
  648. JE%,dE%,BA%,oE%:oE%=
  649. :sA%=
  650. shell_WindowCountIcons(d%):BA%=
  651. shell_HeapBlockFetch((sA%+1)*4):
  652. &400D3,,BA%:
  653. !BA%=-1
  654. shell_HeapBlockReturn(BA%):oE%=
  655. &400D6,d%,BA%,&40E000,&E000:OC%=!BA%:m%=0:
  656. BA%!m%=t%
  657. !JE%=BA%!(m%-4):dE%=BA%!(m%+4)
  658. :m%+=4:
  659. BA%!m%=-1:RC%=BA%!(m%-4):
  660. shell_FakeMouseClick(d%,0,4)
  661. 398,394:
  662. t%=RC%
  663. &400D2,d%,OC%,-1,-1,-1,
  664. shell_IconGetData(d%,OC%)):
  665. shell_IconEnsureVisible(d%,OC%)
  666. &400D2,d%,dE%,-1,-1,-1,
  667. shell_IconGetData(d%,dE%)):
  668. shell_IconEnsureVisible(d%,dE%)
  669. 399,410:
  670. t%=OC%
  671. &400D2,d%,RC%,-1,-1,-1,
  672. shell_IconGetData(d%,RC%)):
  673. shell_IconEnsureVisible(d%,RC%)
  674. &400D2,d%,JE%,-1,-1,-1,
  675. shell_IconGetData(d%,JE%)):
  676. shell_IconEnsureVisible(d%,JE%)
  677. &400D2,d%,OC%,-1,-1,-1,
  678. shell_IconGetData(d%,OC%)):
  679. shell_IconEnsureVisible(d%,OC%)
  680. &400D2,d%,RC%,-1,-1,-1,
  681. shell_IconGetData(d%,RC%)):
  682. shell_IconEnsureVisible(d%,RC%)
  683. shell_HeapBlockReturn(BA%)
  684. shell_FakeMouseClick(d%,t%,AE%):
  685. 6,&F,1:_Q%!8=AE%:_Q%!&C=d%:_Q%!16=t%:
  686. shell_Action(6):
  687. shell_GetMinXY(o%,J$,q$):
  688. XA%,gA%,uA%,DB%,cB%,vB%:dB%=0:NB%=0:
  689. J$<>""
  690. &40084,o%>>24
  691. ,,gA%,,DB%:
  692. &40097,,
  693. (o%>>24)+J$
  694. ,XA%,,uA%:
  695. &40088,,XA%
  696. ,XA%:
  697. &40088,,uA%
  698. ,uA%:dB%=uA%-XA%:NB%=DB%-gA%
  699. dB%=6*YB%+16*
  700. J$:NB%=32
  701. 4NB%+=2*bB%
  702. q$<>""
  703. &2002E,296,
  704. shell_UserSpritesBase,q$
  705. ,,,cB%,vB%,,gH%;P%:
  706. &20035,gH%,4
  707. ,,yI%:cB%=cB%<<yI%:
  708. &20035,gH%,5
  709. ,,oI%:vB%=vB%<<oI%:
  710. &800 cB%=cB%/2:vB%=vB%/2
  711. 539)=19cB%=dB%+cB%
  712. cB%>dB%dB%=cB%
  713. vB%>NB%NB%=vB%
  714. shell_IconGetState(fC%,iC%):!_Q%=fC%:_Q%!4=iC%:
  715. &400CE,,_Q%:
  716. print_text(K,J,J$):
  717. in(K,J-32,K+16*
  718. (J$),J)
  719. in(A%,B%,C%,D%):
  720. newvals:X=_Q%!28:b=_Q%!32:Q=_Q%!36:a=_Q%!40:T=_Q%!4:V=_Q%!8:W=_Q%!&C:S=_Q%!16:M=_Q%!20:N=_Q%!24:c=W-T:R=S-V:g=M:h=M+c:i=N:e=N-R:
  721. max(rA%,mB%):
  722. rA%<mB%
  723. shell_Leaf(H$):
  724. H$,"."):H$=
  725. H$,".")+1):
  726. shell_Branch(QA$):
  727. LA%,JA$,h%:
  728. QA$,".")=0
  729. JA$=""
  730. h%=0:
  731. :LA%=h%+1:h%=
  732. QA$,".",LA%):
  733. h%=0:JA$=
  734. QA$,LA%-2)
  735. :=JA$
  736. gname(G):IA$="":
  737. ?G<>0
  738. ?G<>&D:IA$=IA$+
  739. ?G:G+=1:
  740. :=IA$
  741. shell_ScreenToWindowCoords(FH%,
  742. vF%,wH%,XJ%,HH%,hG%,dC%:dC%=
  743. shell_HeapBlockFetch(&64+(
  744. shell_WindowCountIcons(FH%)*32)):vF%=dC%:!vF%=FH%:
  745. &400CC,,vF%:wH%=dC%!4:gI%=dC%!16:HH%=dC%!20:hG%=dC%!24:X%=X%+(HH%-wH%):Y%=Y%+(hG%-gI%)
  746. shell_HeapBlockReturn(dC%):
  747. shell_WimpSlotReadEnd:
  748. &400EC,-1,-1
  749. LD%:=LD%
  750. shell_WimpSlotClaimMemory(LD%,UB%):
  751. &400EC,LD%+UB%,-1
  752. CF%<LD%+UB%
  753. shell_WimpSlotReleaseMemory:
  754. &400EC,LD%,-1:
  755. shell_MouseLimit(SA%):
  756. shell_HeapBlockFetch(36):A!0=SA%:
  757. &400CB,,A:
  758. shell_MouseSetRectangle(A!4,A!8,A!&C-A!4,A!16-A!8):
  759. shell_HeapBlockReturn(A):
  760. shell_MouseRemoveLimits:
  761. ("Pointer"):
  762. shell_MouseSetRectangle(PA%,QA%,RE%,x%):
  763. PA%,QA%,RE%,x%:sJ%=PA%:cJ%=QA%:aJ%=RE%:oJ%=x%:
  764. InitialiseSpriteArea(S%,sI%):!S%=sI%:S%!8=16:
  765. 46,9+256,S%:
  766. shell_ListEvents(d%,EC%):
  767. AA%,x$:
  768. d%=-1
  769. d%=-2
  770. -AA%=
  771. shell_GetEventMenu(2,d%,EC%):
  772. AA%=0
  773. x$="None"
  774. shell_AttachHotKey(jA$,BD%,JD%,iD%,p$,d%,m$,n$):
  775. qA%,a%,h%,xA%,kA%,kF%:kF%=
  776. _U%!60=0
  777. 3_U%!60=
  778. shell_HeapBlockFetch(24):a%=0:_U%!&B4=1
  779. a%=_U%!&B4*24:_U%!60=
  780. shell_HeapBlockExtend(_U%!60,24):_U%!&B4=(_U%!&B4)+1
  781. :qA%=_U%!60:
  782. "F1":kA%=385
  783. "F2":kA%=386
  784. "F3":kA%=387
  785. "F4":kA%=388
  786. "F5":kA%=389
  787. "F6":kA%=390
  788. "F7":kA%=391
  789. "F8":kA%=392
  790. "F9":kA%=393
  791. "F10":kA%=458
  792. "F11":kA%=459
  793. kA%=(
  794. jA$)-64:kF%=
  795. kA%+=16
  796. kA%+=32
  797. :h%=qA%+a%:h%!0=kA%:h%?4=BD%:h%?5=JD%:h%?6=iD%:h%!8=
  798. shell_HeapBlockFetch(
  799. p$+1):xA%=h%!8:$xA%=p$:
  800. shell_IsWindowStatic(d%)=
  801. shell_MessageNoArgs("SHELLMSG09")
  802. :h%!&C=d%:h%!16=
  803. shell_HeapBlockFetch(
  804. m$+1):xA%=h%!16:$xA%=m$:h%!20=
  805. shell_HeapBlockFetch(
  806. n$+1):xA%=h%!20:$xA%=n$:
  807. shell_HotKeyProcess(kA%):
  808. qA%,HA%,y%,f%,x%,DA$,m$,n$:
  809. JD%,BD%,iD%,FB%,GB%,CE%,kJ%,a%:
  810. j%,_%:qA%=_U%!60:HA%=_U%!&B4*24:y%=
  811. :f%=0:
  812. qA%!f%=kA%
  813. f%+=24
  814. f%>=HA%:
  815. $-h%=qA%+f%:DA$=$(h%!8):
  816. (DA$<>""
  817. h%!&C=0)
  818. shell_CreateWindow(DA$,x%):_%=
  819. shell_HeapBlockFetch(36):_%!0=x%:
  820. &400CB,,_%:FB%=(_%!4-_%!&C)/2:GB%=(_%!16-_%!8)/2:
  821. shell_HeapBlockReturn(_%)
  822. :m$=$(h%!16):
  823. m$<>""
  824. h%!&C>0
  825. ; k%=
  826. ("FN"+m$+"("+
  827. h%!&C+")")
  828. ("FN"+m$+"("+
  829. x%+")")
  830. shell_IsWindowStatic(h%!&C)
  831. shell_OpenWindowStatic(h%!&C)
  832. h%!&C>0
  833. shell_MessageNoArgs("SHELLMSG09")
  834. shell_OpenWindowDynamic2(x%,FB%,GB%)
  835. :n$=$(h%!20):
  836. n$<>""
  837. h%!&C>0
  838. T k%=
  839. ("FN"+n$+"("+
  840. h%!&C+")")
  841. ("FN"+n$+"("+
  842. x%+")")
  843. DA$="":m$="":n$="":j%=
  844. shell_OpenWindowStaticNewView(d%):
  845. shell_OpenWindow(d%,
  846. ,-1):
  847. shell_OpenWindowStatic(n%):
  848. shell_IsWindowStatic(n%)=
  849. shell_OpenWindow(n%,0,-1)
  850. shell_InitHelpSystem(H$,NJ%):
  851. KA$,LA%,j$,fF%,HC%:_U%!&D4=0:
  852. _U%!&D8<>0
  853. shell_HeapBlockReturn(_U%!&D8)
  854. @_U%!&D8=0:
  855. shell_ScanForHelp:
  856. KA$=" -DieWithTask"
  857. KA$=""
  858. _U%!&64
  859. WH$="":j$=
  860. shell_OSVarGetVal(
  861. shell_GetAppName+"Res$Path",-1):
  862. :LA%=
  863. j$,","):
  864. LA%>0
  865. shell_FileExists(
  866. j$,LA%-1)+
  867. shell_GetAppName)
  868. j$,LA%-1)+
  869. shell_GetAppName:
  870. shell_StrongHlpChkFiles(H$)
  871. j$,LA%+1)
  872. shell_FileExists(j$+
  873. shell_GetAppName)
  874. ?H$=j$+
  875. shell_GetAppName:
  876. shell_StrongHlpChkFiles(H$)
  877. shell_OK(
  878. shell_MessageOneArg("SHELLMSG26",
  879. shell_GetAppName))
  880. H$<>""
  881. shell_FileExists(H$)
  882. shell_StrongHlpChkFiles(H$)
  883. shell_MessageOneArg("SHELLMSG33",H$)
  884. HC%=0
  885. shell_StrongHlpMsg("Help_Install "+H$+KA$):_U%!&64=_U%!&64
  886. shell_HelpWord(WA$):
  887. qJ%,h%:
  888. _U%!&D0=-1
  889. shell_OSVarExists("StrongHelp$Dir")
  890. &600DE,"<StrongHelp$Dir>":
  891. _U%!&D8<>0
  892. shell_HeapBlockReturn(_U%!&D8)
  893. <_U%!&D8=
  894. shell_HeapBlockFetch(
  895. WA$+1):h%=_U%!&D8:$h%=WA$
  896. shell_OK(
  897. shell_MessageNoArgs("SHELLMSG11"))
  898. shell_StrongHlpMsg("Help_Word "+WA$)
  899. shell_StrongHlpMsg(GA$):
  900. shell_BroadcastMessage(&43B00,GA$):
  901. shell_ScanForHelp:
  902. rB%,ME%:rB%=
  903. shell_HeapBlockFetch(256):
  904. :rB%!&C=0:
  905. &400E7,19,rB%,-2,_U%!&D4
  906. ,,ME%:_U%!&D4=_U%!&D4+1:
  907. ME%<>-1
  908. (_U%!&D4)>64:
  909. ME%<>-1
  910. @rB%!0=24:rB%!&C=0:rB%!16=&400C6:rB%!20=ME%:
  911. &400E7,17,rB%,0
  912. shell_HeapBlockReturn(rB%):
  913. shell_MemFill(PD%,tH%,dD%):
  914. I%,iE%,mE%:iE%=tH%
  915. 4:mE%=tH%
  916. iE%>0
  917. (iE%*4)
  918. 4:PD%!(I%-1)=dD%:
  919. mE%>0
  920. .PD%=PD%+(iE%*4):
  921. mE%-1:PD%?I%=dD%:
  922. shell_MenuUpdateHandle(RH%,YH%):
  923. HA%,f%,r%,AA%:HA%=
  924. shell_HeapBlockInfo(_U%!&C)-8:f%=0:y%=
  925. :r%=_U%!&C:
  926. :AA%=r%!(f%+8):
  927. AA%=RH%
  928. r%!(f%+8)=YH%
  929. Nf%+=48:
  930. (f%>=HA%):
  931. shell_MenuLastHandle=RH%
  932. _m_Menu_HandleLastOpened%=YH%
  933. shell_CheckSelection(CI%):
  934. h%,m%:h%=_U%!256:
  935. shell_MenuLastHandle=_U%!&FC
  936. CI%!m%<>h%!m%
  937. m%+=4:
  938. h%!m%=-1:=m%
  939. shell_MenuGetItemAddress(AA%,GH%):
  940. m%,lC%:
  941. &45BC7,AA%
  942. :lC%=AA%+28+((GH%!m%)*24):AA%=lC%!4:m%+=4:
  943. GH%!m%=-1:=lC%
  944. shell_GetLastMouseXPos:=
  945. Evnts_GetLastMouseXPos
  946. shell_GetLastMouseYPos:=
  947. Evnts_GetLastMouseYPos
  948. shell_UpdateWindowHandle(sB%,HB%):
  949. HB%<>sB%
  950. Evnts_GetLastWindowClicked=sB%
  951. _EVNTS_LAST_WINDOWCLICKED%=HB%
  952. !_Q%=sB%
  953. !_Q%=HB%
  954. shell_UpdateStaticWindowHandle(sB%,HB%):
  955. shell_UpdateWindowHandleList(sB%,HB%)
  956. shell_MessagesInit(N$,
  957. KH%):
  958. UB%,o%:
  959. 3,"Cannot open message file '"+N$+"'"
  960. &41500,,N$
  961. o%,,UB%:
  962. KH%=0
  963. shell_HeapBlockFetch(UB%)
  964. 30,6,,,17+
  965. ,,_D%:$(_D%+16)=N$:
  966. &41501,_D%,_D%+16:
  967. shell_WindowSetSpriteArea(x%,pE%):
  968. e%,HB%,sE%,xE%:e%=
  969. shell_HeapBlockFetch(&64+(
  970. shell_WindowCountIcons(x%)*32)):!e%=x%:
  971. &400CC,,e%:e%!68=pE%:
  972. shell_IconSetSpriteArea(e%!60,e%+76,pE%):
  973. (e%!88)>0
  974. sE%=0
  975. (e%!88)-1:xE%=e%+92+sE%*32:
  976. shell_IconSetSpriteArea(xE%!16,xE%+20,pE%):
  977. &400C3,,e%:
  978. &400C1,,e%+4
  979. HB%<>x%
  980. shell_UpdateWindowHandle(x%,HB%):x%=HB%
  981. shell_HeapBlockReturn(e%):=x%
  982. shell_StrongHlpIsAvailable:
  983. oB%,VA%:oB%=
  984. _U%!&64
  985. ,oB%=
  986. shell_OSVarExists("StrongHelp$Dir")
  987. :=oB%
  988. shell_AttachOpenWindow(d%,e$):
  989. e%,h%,a%:
  990. shell_MessageOneArg("SHELLMSG27","AttachOpenWindow")
  991. shell_GetEventListOffset(d%,-1,_U%+304,&C,
  992. ):e%=_U%!304+a%:e%!0=d%:e%!4=-1:e%!8=
  993. shell_HeapBlockFetch(
  994. (e$)+1):h%=e%!8:$h%=e$:
  995. shell_EnsurePoll:
  996. :CA%=
  997. shell_Poll_I(0,_U%!&94):
  998. shell_Action(CA%):
  999. CA%=0:
  1000. shell_WimpGetVersion:=_U%!316
  1001. shell_MessageSendDataLoad(tA%,f$):
  1002. IB%:IB%=
  1003. shell_HeapBlockFetch(256):IB%!0=256:IB%!4=0:IB%!&C=0:IB%!16=5:IB%!20=0:IB%!28=0:IB%!32=0:IB%!36=0:IB%!40=tA%:$(IB%+44)=f$+
  1004. &400E7,18,IB%,0:_SHELL_SENDDATALOAD_MY_REF%=IB%!8
  1005. >_SHELL_SENDDATALOAD_FILE$=f$:
  1006. shell_HeapBlockReturn(IB%):
  1007. shell_BinarySearch(_search_term$,_A$,u$,jI%,_F%):
  1008. _pos%,SD%,_wp$,kE%,mJ%,dF%,XD%,eG%,y%,GG%,j%:_F%+=1:GG%=
  1009. :SD%=_F%:kE%=0:_pos%=SD%
  1010. 2:XD%=jI%-1:
  1011. XD%<0
  1012.     XD%=0
  1013. :dF%=_F%:
  1014. :_wp$=
  1015. ("FN"+_A$+"( _pos% )"):KG%=_pos%:
  1016. _search_term$=_wp$
  1017. ("FN"+u$+"( _search_term$,_wp$ )")=
  1018. +dF%=_pos%:SD%=_pos%-XD%:_pos%=SD%
  1019. 2+kE%
  1020. XD%=_pos%:kE%=_pos%:SD%=dF%-_pos%:_pos%=SD%
  1021. 2+kE%
  1022. eG%=KG%
  1023. eG%=KG%:
  1024.     j%=-1
  1025. j%=KG%
  1026. shell_IconLastClicked:=
  1027. Evnts_GetLastIconClicked
  1028. shell_QuickSort(u$,y$,_asc%,_start%,_end%):
  1029. _lo%,_h%,_F%,_temp%,k%:_lo%=_start%:_hi%=_end%:_F%=
  1030. :_temp%=_lo%-1+
  1031. (_hi%+1-_lo%):k%=
  1032. ("FN"+y$+"(_lo%,_temp%)"):
  1033. _asc%=0
  1034. ("FN"+u$+"(_lo%,_hi%)")
  1035. 1(k%=
  1036. ("FN"+y$+"(_lo%,_hi%)"):_F%=
  1037. ("FN"+u$+"(_hi%,_lo%)")
  1038. 6(k%=
  1039. ("FN"+y$+"(_hi%,_lo%)"):_F%=
  1040. _hi%=_hi%-1
  1041. _lo%=_lo%+1
  1042. _lo%=_hi%:
  1043. _start%<_lo%-1
  1044. shell_QuickSort(u$,y$,_asc%,_start%,_lo%-1)
  1045. _hi%+1<_end%
  1046. shell_QuickSort(u$,y$,_asc%,_hi%+1,_end%)
  1047. _shell_MS_swap(LE%,hE%):
  1048. dA$,zA$,JH%,ZG%:dA$=
  1049. shell_MenuGetItemText(_shell_MS_handle%,LE%):zA$=
  1050. shell_MenuGetItemText(_shell_MS_handle%,hE%):_shell_blk%!0=LE%:_shell_blk%!4=-1:JH%=
  1051. shell_MenuGetItemHandle(_shell_MS_handle%,_shell_blk%)
  1052. _shell_blk%!0=hE%:ZG%=
  1053. shell_MenuGetItemHandle(_shell_MS_handle%,_shell_blk%):
  1054. shell_MenuPutData(JH%,zA$):
  1055. shell_MenuPutData(ZG%,dA$):=0
  1056. _shell_MS_comp(LE%,hE%):
  1057. iA$,mA$,bA%:iA$=
  1058. shell_MenuGetItemText(_shell_MS_handle%,LE%):mA$=
  1059. shell_MenuGetItemText(_shell_MS_handle%,hE%):
  1060. iA$<mA$
  1061. X    bA%=
  1062. :=bA%
  1063. shell_WindowSetTitleRightJust(
  1064. v%,LB%,n%,BC%:BC%=
  1065. shell_WindowIsOpen(d%):v%=
  1066. shell_HeapBlockFetch(&64+(
  1067. shell_WindowCountIcons(d%)*32)):!v%=d%:
  1068. &400CC,,v%:LB%=v%!60:
  1069. (1<<3))
  1070. LB%=LB%
  1071. (1<<3)
  1072. :LB%=LB%
  1073. (1<<9):v%!60=LB%:
  1074. &400C3,,v%:
  1075. &400C1,,v%+4
  1076. d%<>n%
  1077. shell_UpdateWindowHandle(d%,n%):d%=n%
  1078. shell_OpenWindow(n%,0,0)
  1079. shell_HeapBlockReturn(v%):
  1080. shell_WindowSetTitleCentreJust(
  1081. v%,LB%,n%,BC%:BC%=
  1082. shell_WindowIsOpen(d%):v%=
  1083. shell_HeapBlockFetch(&64+(
  1084. shell_WindowCountIcons(d%)*32)):!v%=d%:
  1085. &400CC,,v%:LB%=v%!60:
  1086. (1<<3))=0
  1087. DLB%=LB%
  1088. (1<<3):v%!60=LB%:
  1089. &400C3,,v%:
  1090. &400C1,,v%+4
  1091. d%<>n%
  1092. shell_UpdateWindowHandle(d%,n%):d%=n%
  1093. shell_OpenWindow(n%,0,0)
  1094. shell_HeapBlockReturn(v%):
  1095. shell_GetLastMouseButton:=
  1096. Evnts_GetLastMouseButton
  1097. shell_GetLastWindowClicked:=
  1098. Evnts_GetLastWindowClicked
  1099. shell_GetLastIconClicked:=
  1100. Evnts_GetLastIconClicked
  1101. shell_StrongHlpChkFiles(H$):
  1102. HC%,j%:
  1103. shell_FileExists(H$+".HelpData")
  1104. <HC%=-1:
  1105. shell_MessageOneArg("SHELLMSG32","HelpData")
  1106. shell_FileExists(H$+".Index")
  1107. 9HC%=-1:
  1108. shell_MessageOneArg("SHELLMSG32","Index")
  1109. shell_TemplateFileInfo(N$,
  1110. KD%:KD%=
  1111. RO3_Present:
  1112. shell_TemplateFileInfo3(N$,MB%,IA%,j%)
  1113. shell_TemplateFileInfo2(N$,MB%,IA%,j%)
  1114. shell_TemplateFileInfo2(N$,
  1115. LA%,YC%,tB%:
  1116. VA%,X%,uB%,JI%:
  1117. m%,aE%,KF%,sA%,WD%,o%:LA%=0:IA%=0:YC%=0:tB%=0:j%=0:
  1118. shell_FileExists(N$)
  1119. j%=-1
  1120. shell_FileType(N$)<>&FEC
  1121. j%=-2
  1122. UVA%=
  1123. shell_HeapBlockFetch(&D):X%=
  1124. (N$):
  1125. #X%=16:
  1126. &C,4,X%,VA%,4:WB%=!VA%:
  1127. WB%>0
  1128. IA%+=1:rF%=0:
  1129. &C,4,X%,VA%,4:uB%=!VA%:
  1130. &C,4,X%,VA%,4:JI%=!VA%:
  1131. &C,4,X%,VA%,&C:KF%=
  1132. #X%=WB%+56:
  1133. &C,4,X%,VA%,4:o%=!VA%:
  1134. #X%=WB%+72:
  1135. &C,4,X%,VA%,&C:rF%+=
  1136. shell_IconIndirSize(WB%,o%,VA%,X%):
  1137. #X%=WB%+84:
  1138. &C,4,X%,VA%,4:sA%=!VA%:
  1139. sA%>0
  1140. WD%=0
  1141. sA%-1:
  1142. #X%=WB%+88+(WD%*32)+16:
  1143. &C,4,X%,VA%,4:o%=!VA%:
  1144. #X%=WB%+88+(WD%*32)+20:
  1145. &C,4,X%,VA%,&C:rF%+=
  1146. shell_IconIndirSize(WB%,o%,VA%,X%):
  1147. #X%=KF%:YC%+=rF%:
  1148. uB%>tB%
  1149. tB%=uB%
  1150. WB%=0:
  1151. shell_HeapBlockReturn(VA%):MB%=tB%+YC%
  1152. shell_TemplateFileInfo3(N$,
  1153. LA%,YC%,tB%,WB%:
  1154. m%,aE%,KF%,sA%,WD%,o%:LA%=0:IA%=0:YC%=0:tB%=0:VA%=
  1155. shell_HeapBlockFetch(&D):
  1156. &400D9,,N$:
  1157. :$VA%="*":
  1158. &400DB,,-1,,,,VA%,LA%
  1159. ,MB%,DJ%,,,,LA%:
  1160. LA%<>0
  1161. MB%>tB%
  1162. tB%=MB%
  1163. YC%+=DJ%:IA%+=1
  1164. LA%=0:
  1165. &400DA:MB%=tB%+YC%:
  1166. shell_HeapBlockReturn(VA%):
  1167. RO3_Present:
  1168. e%,aC%,R$,bA%:e%=
  1169. shell_HeapBlockFetch(256):
  1170. ("Set RO3$Check Y"):
  1171. ("RMEnsure UtilityModule 3.00 Set RO3$Check N"):
  1172. 35,"RO3$Check",e%,256,0,0
  1173. ,,aC%:e%?aC%=&D:
  1174. ("Unset RO3$Check"):R$=$e%:
  1175. shell_HeapBlockReturn(e%):
  1176. R$="N"
  1177. [    bA%=
  1178. :=bA%
  1179. _shell_icondrag(d%,t%):
  1180. shell_IconDragBox(d%,t%):=0
  1181. shell_MessageSendPrintSave(wE%,PH%):
  1182. PH%>1
  1183. _U%!336=PH%-1
  1184. _U%!336=0
  1185. shell_DoSendPrintSave(wE%):
  1186. shell_DoSendPrintSave(wE%):
  1187. AB%:AB%=
  1188. shell_HeapBlockFetch(256):AB%!0=256:AB%!&C=0:AB%!16=&80142:AB%!20=0:AB%!24=0:AB%!28=0:AB%!32=0:AB%!36=256:AB%!40=wE%:$(AB%+44)="PrintOut"+
  1189. &400E7,18,AB%,AB%!20,AB%!24:
  1190. shell_HeapBlockReturn(AB%):
  1191. shell_HandlePrintFile(_Q%):
  1192. shell_HandlePrintError(_Q%):
  1193. shell_HandlePrintTypeOdd(_Q%):
  1194. shell_HandleSetPrinter(_Q%):
  1195. shell_3DEnabled:
  1196. oH%,_3d%:
  1197. _U%!&64
  1198. (1<<&A)
  1199. 6,&A1,&8C
  1200. ,,oH%:
  1201. _3d%=
  1202. _3d%=
  1203. _3d%=
  1204. :=_3d%
  1205. shell_HandleAttachedDataSave(_Q%,d%,t%):
  1206. JG%,e%,VH%,_name$,h%,k%:
  1207. shell_DataSaveCheckName(d%,t%):JG%=
  1208. shell_GetEventListOffset(d%,-1,_U%+72,24,
  1209. JG%>=0
  1210. ie%=_U%!72+JG%:VH%=e%!16:_name$=
  1211. shell_IconGetData(d%,VH%):h%=e%!20:
  1212. $h%<>""
  1213. ("FN"+$h%+"(_name$)")
  1214. shell_InstallLib(TB$):
  1215. k%,Z$:Z$="The library routine 'FNshell_InstallLib' is no longer supported. Please load the library with the LIBRARY command and call the initialise routine with 'void% = FN_shell_<libname>_init'"
  1216. shell_MessageWindow(Z$,
  1217. shell_GetAppName,""):_closedown%=
  1218. _shell_Iconbar_Init:=0
  1219. shell_Iconbar(LA%,fA$,J$,aA%,AA%,BD%,JD%,iD%):
  1220. n%,FA%,nE%,qE%:FA%=
  1221. shell_HeapBlockFetch(36):
  1222. nE%20:
  1223. qE%20:!FA%=LA%:FA%!4=0:FA%!&C=96:
  1224. J$<>""
  1225. "/FA%!&C=aA%:FA%!8=-16:FA%!16=92:FA%!32=
  1226. FA%!8=0:FA%!16=70:FA%!32=&C
  1227. :FA%!20=&1700310B:FA%!24=nE%:FA%!28=qE%:$nE%=J$:$qE%=fA$:
  1228. &400C2,,FA%
  1229. shell_AttachMenu(-2,n%,AA%,BD%,JD%,iD%):
  1230. shell_HeapBlockReturn(FA%):=
  1231. shell_IconNewSprite(LA%,n%,fA$)
  1232. shell_IconbarSetText(b%,g%,MB$):
  1233. l%:l%=
  1234. shell_HeapBlockFetch(40):!l%=b%:l%!4=g%:
  1235. &400CE,,l%:$(l%!28)=MB$:
  1236. shell_IconRedraw(b%,g%):
  1237. shell_HeapBlockReturn(l%):
  1238. _shell_Files_Init:=0
  1239. shell_FileLength(d$):
  1240. tA%,DE%,EE%,eB%,sC%,C$:
  1241. 8,5,d$
  1242. tA%,,DE%,EE%,eB%,sC%:=eB%
  1243. shell_FileType(d$):
  1244. 8,5,d$
  1245. ,,tA%:tA%=(tA%
  1246. &FFF00)>>>8:=tA%
  1247. shell_FileExists(d$):
  1248. tA%,E,j%:E=5:
  1249. 8,E,d$
  1250. tA%=0
  1251. shell_CatInfoRead(d$):
  1252. tA%,DE%,EE%,eB%,sC%,C$:
  1253. 8,5,d$
  1254. tA%,,DE%,EE%,eB%,sC%:
  1255. tA%=0
  1256. ="Not Found"
  1257. sC%=51
  1258. C$+="WR "
  1259. sC%=&BB
  1260. C$+="LWR"
  1261. sC%=&88
  1262. C$+="DL "
  1263. C$+=" "+
  1264. shell_StringPadLeading(
  1265. ~DE%,"0",8):C$+=" "+
  1266. shell_StringPadLeading(
  1267. ~EE%,"0",8):C$+=" "+
  1268. shell_StringPadLeading(
  1269. ~eB%,"0",8):=C$
  1270. shell_FileGetDateStamp(d$):
  1271. tA%,cH%,E:E=5:
  1272. 8,E,d$
  1273. tA%,,,cH%:
  1274. tA%=0
  1275. _shell_Evnts_Init:_m_Evnts_HeaderSize%=8:_m_Evnts_LastEvntOffset%=-1:
  1276. _c_Evnts_WorkBuffer%256:
  1277. _c_Evnts_PaneBlk%&BB8:
  1278. _EVNTS_CLICKSELECT_ANCHOR%4:
  1279. _EVNTS_CLICKADJUST_ANCHOR%4:
  1280. _EVNTS_CLICKMENU_ANCHOR%4:
  1281. _EVNTS_HELPTAG_ANCHOR%4
  1282. _EVNTS_POPUPS_ANCHOR%4:
  1283. _EVNTS_PANES_ANCHOR%4:
  1284. _EVNTS_SLIDERS_ANCHOR%4:
  1285. _EVNTS_POINTERIN_ANCHOR%4:
  1286. _EVNTS_POINTEROUT_ANCHOR%4:
  1287. _EVNTS_DATASAVE_ANCHOR%4:
  1288. _EVNTS_REDRAW_ANCHOR%4:
  1289. _EVNTS_DRAG_ANCHOR%4:
  1290. _EVNTS_BUMP_ANCHOR%4:
  1291. _EVNTS_WINDOWOPEN_ANCHOR%4
  1292. _EVNTS_WINDOWCLOSE_ANCHOR%4:
  1293. _EVNTS_ICONWATCH_ANCHOR%4:
  1294. _EVNTS_MENUHELPTAG_ANCHOR%4:!_EVNTS_CLICKSELECT_ANCHOR%=0:!_EVNTS_CLICKADJUST_ANCHOR%=0:!_EVNTS_CLICKMENU_ANCHOR%=0:!_EVNTS_HELPTAG_ANCHOR%=0:!_EVNTS_POPUPS_ANCHOR%=0:!_EVNTS_SLIDERS_ANCHOR%=0
  1295. !_EVNTS_PANES_ANCHOR%=0:!_EVNTS_POINTERIN_ANCHOR%=0:!_EVNTS_POINTEROUT_ANCHOR%=0:!_EVNTS_DATASAVE_ANCHOR%=0:!_EVNTS_REDRAW_ANCHOR%=0:!_EVNTS_DRAG_ANCHOR%=0:!_EVNTS_BUMP_ANCHOR%=0:!_EVNTS_WINDOWOPEN_ANCHOR%=0:!_EVNTS_WINDOWCLOSE_ANCHOR%=0
  1296. !_EVNTS_ICONWATCH_ANCHOR%=0:!_EVNTS_MENUHELPTAG_ANCHOR%=0:
  1297. _EVNTS_CLICKSELECT_DATA%4:
  1298. _EVNTS_CLICKADJUST_DATA%4:
  1299. _EVNTS_CLICKMENU_DATA%4:
  1300. _EVNTS_HELPTAG_DATA%4:
  1301. _EVNTS_POPUPS_DATA%4:
  1302. _EVNTS_PANES_DATA%4:
  1303. _EVNTS_SLIDERS_DATA%4:
  1304. _EVNTS_POINTERIN_DATA%4
  1305. _EVNTS_POINTEROUT_DATA%4:
  1306. _EVNTS_DATASAVE_DATA%4:
  1307. _EVNTS_REDRAW_DATA%4:
  1308. _EVNTS_DRAG_DATA%4:
  1309. _EVNTS_BUMP_DATA%4:
  1310. _EVNTS_WINDOWOPEN_DATA%4:
  1311. _EVNTS_WINDOWCLOSE_DATA%4:
  1312. _EVNTS_ICONWATCH_DATA%4:
  1313. _EVNTS_MENUHELPTAG_DATA%4:!_EVNTS_CLICKSELECT_DATA%=0
  1314. !_EVNTS_CLICKADJUST_DATA%=0:!_EVNTS_CLICKMENU_DATA%=0:!_EVNTS_HELPTAG_DATA%=0:!_EVNTS_POPUPS_DATA%=0:!_EVNTS_PANES_DATA%=0:!_EVNTS_POINTERIN_DATA%=0:!_EVNTS_POINTEROUT_DATA%=0:!_EVNTS_DATASAVE_DATA%=0:!_EVNTS_REDRAW_DATA%=0:!_EVNTS_DRAG_DATA%=0
  1315. !_EVNTS_BUMP_DATA%=0:!_EVNTS_WINDOWOPEN_DATA%=0:!_EVNTS_WINDOWCLOSE_DATA%=0:!_EVNTS_SLIDERS_DATA%=0:!_EVNTS_ICONWATCH_DATA%=0:!_EVNTS_MENUHELPTAG_DATA%=0:_EVNTS_CLICKSELECT_REC_SIZE%=20:_EVNTS_CLICKADJUST_REC_SIZE%=20:_EVNTS_CLICKMENU_REC_SIZE%=24
  1316. _EVNTS_HELPTAG_REC_SIZE%=20:_EVNTS_POPUPS_REC_SIZE%=36:_EVNTS_PANES_REC_SIZE%=32:_EVNTS_POINTERIN_REC_SIZE%=20:_EVNTS_POINTEROUT_REC_SIZE%=20:_EVNTS_DATASAVE_REC_SIZE%=20:_EVNTS_REDRAW_REC_SIZE%=20:_EVNTS_DRAG_REC_SIZE%=28:_EVNTS_BUMP_REC_SIZE%=44
  1317. _EVNTS_SLIDERS_REC_SIZE%=40:_EVNTS_WINDOWOPEN_REC_SIZE%=20:_EVNTS_WINDOWCLOSE_REC_SIZE%=20:_EVNTS_ICONWATCH_REC_SIZE%=24:_EVNTS_MENUHELPTAG_REC_SIZE%=20:_EVNTS_CLICKSELECT_DATAOFFSET%=0:_EVNTS_CLICKADJUST_DATAOFFSET%=0:_EVNTS_CLICKMENU_DATAOFFSET%=0
  1318. _EVNTS_HELPTAG_DATAOFFSET%=0:_EVNTS_POPUPS_DATAOFFSET%=0:_EVNTS_PANES_DATAOFFSET%=0:_EVNTS_POINTERIN_DATAOFFSET%=0:_EVNTS_POINTEROUT_DATAOFFSET%=0:_EVNTS_DATASAVE_DATAOFFSET%=0:_EVNTS_REDRAW_DATAOFFSET%=0:_EVNTS_DRAG_DATAOFFSET%=0
  1319. _EVNTS_BUMP_DATAOFFSET%=0:_EVNTS_SLIDERS_DATAOFFSET%=0:_EVNTS_WINDOWOPEN_DATAOFFSET%=0:_EVNTS_WINDOWCLOSE_DATAOFFSET%=0:_EVNTS_ICONWATCH_DATAOFFSET%=0:_EVNTS_MENUHELPTAG_DATAOFFSET%=0:_EVNTS_LAST_MOUSEBUTTON%=0:_EVNTS_LAST_MOUSEXPOS%=0
  1320. _EVNTS_LAST_MOUSEYPOS%=0:_EVNTS_LAST_ICONCLICKED%=-1:_EVNTS_LAST_WINDOWCLICKED%=-1:_EVNTS_LAST_MENUMAKER_FN$="":_m_evnts_DestTaskHandle%=-1:_m_evnts_DestWindowHandle%=-1:_m_evnts_DestIconHandle%=-1:_m_evnts_MouseXCoord%=-1:_m_evnts_MouseYCoord%=-1
  1321. _m_evnts_DragIconStartWindow%=-1:_m_evnts_DragIconStartIcon%=-1:_m_evnts_DragIconWritableDrag%=
  1322. :_m_evnts_DragIconWinXMin%=0:_m_evnts_DragIconWinYMin%=0:_m_evnts_DragIconWinXMax%=0:_m_evnts_DragIconWinYMax%=0:_m_evnts_DragIconMouseX%=0
  1323. _m_evnts_DragIconMouseY%=0:_m_evnts_DragIconLastScrollUp%=0:_m_evnts_DragIconLastScrollDown%=0:_m_evnts_DragIconLastScrollLeft%=0:_m_evnts_DragIconLastScrollRight%=0:_m_evnts_DragIconLastDX%=0:_m_evnts_DragIconLastDY%=0:_m_evnts_DragIconMargin%=32
  1324. _c_evnts_MaxIconWatchEvnts%=&64:
  1325. _c_evnts_CurrentContents$(_c_evnts_MaxIconWatchEvnts%-1):_c_evnts_CurrentContents$()="":=0
  1326. Evnts_GetEvntListOffset(A$,g%,i%,z%,wD%):
  1327. HA%,f%,y%,a%,BB%,JB%:
  1328. A$="IconBar"
  1329. g%=-1:A$="iconbar"
  1330. (!i%=0
  1331. A$=""
  1332. (!i%=0)
  1333. shell_HeapBlockFetch(z%+_m_Evnts_HeaderSize%):BB%=!i%:BB%!0=z%:BB%!4=1:$(BB%+_m_Evnts_HeaderSize%)="":
  1334. s%=&C
  1335. (z%-4)
  1336. 4:BB%!(s%+_m_Evnts_HeaderSize%)=-1:
  1337. s%:_m_Evnts_LastEvntOffset%=_m_Evnts_HeaderSize%:a%=_m_Evnts_HeaderSize%
  1338. a%<>_m_Evnts_HeaderSize%
  1339. YBB%=!i%:HA%=!BB%:f%=_m_Evnts_HeaderSize%:y%=
  1340. :a%=-1:HJ%=-1:JB%=!i%:
  1341. ($(JB%+f%)=A$)
  1342. JB%!(f%+&C)=g%
  1343. a%=f%:y%=
  1344. f%+=z%
  1345. f%+=z%
  1346. ((f%>=(HA%+_m_Evnts_HeaderSize%))
  1347. (a%=-1
  1348. a%=HA%+_m_Evnts_HeaderSize%:!i%=
  1349. shell_HeapBlockExtend(!i%,z%):fB%=!i%:fB%!0+=z%:fB%!4+=1:fB%+=a%:$(fB%)="":
  1350. s%=&C
  1351. (z%-4)
  1352. 4:fB%!s%=-1:
  1353. :_m_Evnts_LastEvntOffset%=a%
  1354. Evnts_UpdateData(p%,DC%,
  1355. OA%,E$):
  1356. !p%=-1
  1357. !Q!p%=OA%:!DC%=
  1358. shell_HeapBlockExtend(!DC%,
  1359. (E$)+1):$(!DC%+OA%)=E$:OA%+=
  1360. (E$)+1
  1361. t$=$(!DC%+!p%):
  1362. t$<>E$
  1363. (E$)<=
  1364. $(!DC%+!p%)=E$
  1365. !DC%=
  1366. shell_HeapBlockExtend(!DC%,
  1367. (E$)+1):$(!DC%+OA%)=E$:!p%=OA%:OA%+=
  1368. (E$)+1
  1369. Evnts_DebugListHeader(UB$,ZB$):
  1370. shell_AttachClickSelect(b%,g%,B$):
  1371. a%,c%,p%,A$:A$=
  1372. shell_GetWindowIdentifier(b%):
  1373. A$="iconbar"
  1374. U    g%=-1
  1375. Evnts_GetEvntListOffset(A$,g%,_EVNTS_CLICKSELECT_ANCHOR%,_EVNTS_CLICKSELECT_REC_SIZE%,
  1376. ):c%=!_EVNTS_CLICKSELECT_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
  1377. !_EVNTS_CLICKSELECT_DATA%=0
  1378. `<!_EVNTS_CLICKSELECT_DATA%=
  1379. shell_HeapBlockFetch(
  1380. (B$)+1)
  1381. :p%=c%+16:
  1382. Evnts_UpdateData(p%,_EVNTS_CLICKSELECT_DATA%,_EVNTS_CLICKSELECT_DATAOFFSET%,B$):
  1383. shell_IconGetButtonType(b%,g%)=_BUTTON_TYPE_NEVER
  1384. shell_IconSetButtonType(b%,g%,_BUTTON_TYPE_CLICK)
  1385. shell_EvntHandle_ClickSelect(_window_handle%,_icon_handle%):
  1386. A$,a%,B$,i%,w%,j%,Z$:A$=
  1387. shell_GetWindowIdentifier(_window_handle%):
  1388. A$="iconbar"
  1389. _icon_handle%=-1
  1390. Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_CLICKSELECT_ANCHOR%,_EVNTS_CLICKSELECT_REC_SIZE%,
  1391. Evnts_GetEvntListOffset(A$,-1,_EVNTS_CLICKSELECT_ANCHOR%,_EVNTS_CLICKSELECT_REC_SIZE%,
  1392. a%>=0
  1393. i%=!_EVNTS_CLICKSELECT_ANCHOR%+a%:JA%=i%!16:w%=!_EVNTS_CLICKSELECT_DATA%:B$=$(w%+JA%):k%=
  1394. ("FN"+B$+"( _window_handle%, _icon_handle% )"):
  1395. _icon_handle%=0
  1396. _window_handle%=_U%!20
  1397. shell_CloseWindow(_window_handle%)
  1398. _window_handle%>0
  1399. A$<>""
  1400. shell_IconIsDraggable(
  1401. Evnts_GetLastWindowClicked,
  1402. Evnts_GetLastIconClicked):
  1403. Z$="Icon is draggable":
  1404. shell_EvntHandle_UserDragStartDrag(
  1405. Evnts_GetLastWindowClicked,
  1406. Evnts_GetLastIconClicked):
  1407. shell_EvntHandle_DataSaveStartDrag(
  1408. Evnts_GetLastWindowClicked,
  1409. Evnts_GetLastIconClicked)
  1410. shell_HandleSlider(
  1411. Evnts_GetLastWindowClicked,
  1412. Evnts_GetLastIconClicked)
  1413. Z$="Icon is not draggable"
  1414. shell_EvntHandle_PopupMenu(_window_handle%,_icon_handle%):
  1415. shell_EvntHandle_Bumpers(_window_handle%,_icon_handle%):
  1416. shell_HandleSlider(
  1417. Evnts_GetLastWindowClicked,
  1418. Evnts_GetLastIconClicked)
  1419. shell_ListClickSelect:
  1420. HA%,r%,z%,f%,NA%,JB%:
  1421. g%,B$,GA%,s%:r%=!_EVNTS_CLICKSELECT_ANCHOR%:z%=_EVNTS_CLICKSELECT_REC_SIZE%:NA%=r%!4:
  1422. Evnts_DebugListHeader ("ClickSelect","Window         Icon   FN"):
  1423. f%=_m_Evnts_HeaderSize%:
  1424. NA%:A$=$(r%+f%):g%=r%!(f%+&C):GA%=!_EVNTS_CLICKSELECT_DATA%:
  1425. GA%>0
  1426. B$=$(GA%+r%!(f%+16))
  1427. :f%+=_EVNTS_CLICKSELECT_REC_SIZE%:
  1428. shell_AttachClickAdjust(b%,g%,B$):
  1429. a%,c%,A$:A$=
  1430. shell_GetWindowIdentifier(b%):
  1431. A$="iconbar"
  1432.     g%=-1
  1433. Evnts_GetEvntListOffset(A$,g%,_EVNTS_CLICKADJUST_ANCHOR%,_EVNTS_CLICKADJUST_REC_SIZE%,
  1434. ):c%=!_EVNTS_CLICKADJUST_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
  1435. !_EVNTS_CLICKADJUST_DATA%=0
  1436. <!_EVNTS_CLICKADJUST_DATA%=
  1437. shell_HeapBlockFetch(
  1438. (B$)+1)
  1439. :p%=c%+16:
  1440. Evnts_UpdateData(p%,_EVNTS_CLICKADJUST_DATA%,_EVNTS_CLICKADJUST_DATAOFFSET%,B$):
  1441. shell_IconGetButtonType(b%,g%)=_BUTTON_TYPE_NEVER
  1442. shell_IconSetButtonType(b%,g%,_BUTTON_TYPE_CLICK)
  1443. shell_EvntHandle_ClickAdjust(_window_handle%,_icon_handle%):
  1444. A$,a%,B$,i%,w%:A$=
  1445. shell_GetWindowIdentifier(_window_handle%):
  1446. A$="iconbar"
  1447. _icon_handle%=-1
  1448. Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_CLICKADJUST_ANCHOR%,_EVNTS_CLICKADJUST_REC_SIZE%,
  1449. Evnts_GetEvntListOffset(A$,-1,_EVNTS_CLICKADJUST_ANCHOR%,_EVNTS_CLICKADJUST_REC_SIZE%,
  1450. a%>=0
  1451. i%=!_EVNTS_CLICKADJUST_ANCHOR%+a%:JA%=i%!16:w%=!_EVNTS_CLICKADJUST_DATA%:B$=$(w%+JA%):k%=
  1452. ("FN"+B$+"(_window_handle%,_icon_handle%)")
  1453. _window_handle%>0
  1454. shell_EvntHandle_Bumpers(_window_handle%,_icon_handle%)
  1455. shell_ListClickAdjust:
  1456. HA%,r%,z%,f%,NA%,JB%:
  1457. g%,B$,GA%,s%:r%=!_EVNTS_CLICKADJUST_ANCHOR%:z%=_EVNTS_CLICKADJUST_REC_SIZE%:NA%=r%!4:
  1458. Evnts_DebugListHeader ("ClickAdjust","Window         Icon   FN"):
  1459. f%=_m_Evnts_HeaderSize%:
  1460. NA%:A$=$(r%+f%):g%=r%!(f%+&C):GA%=!_EVNTS_CLICKADJUST_DATA%:
  1461. GA%>0
  1462. B$=$(GA%+r%!(f%+16))
  1463. :f%+=_EVNTS_CLICKADJUST_REC_SIZE%:
  1464. shell_AttachMenu(b%,g%,q%,BD%,JD%,iD%):
  1465. a%,c%,A$,JF%:
  1466. shell_IsWindowStatic(b%)=
  1467. shell_OK(
  1468. shell_MessageNoArgs("SHELLMSG30"))
  1469. =YA$=
  1470. shell_GetWindowIdentifier(b%):W$=
  1471. shell_MenuList_GetIdentifier(q%):
  1472. A$="iconbar"
  1473. A    g%=-1
  1474. g%>=0
  1475. shell_IconSetButtonType(b%,g%,_BUTTON_TYPE_CLICK):
  1476. shell_EvntAdd_PopUpMenu(A$,g%,-1,q%,"","",_POPUP_TYPE_TEXT)
  1477. Evnts_GetEvntListOffset(A$,g%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_REC_SIZE%,
  1478. a%>=0
  1479. L    JF%=
  1480. Evnts_GetEvntListOffset(A$,g%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_REC_SIZE%,
  1481. ):c%=!_EVNTS_CLICKMENU_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
  1482. !_EVNTS_CLICKMENU_DATA%=0
  1483. X4!_EVNTS_CLICKMENU_DATA%=
  1484. shell_HeapBlockFetch(1)
  1485. :p%=c%+16:
  1486. Evnts_UpdateData(p%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%,W$):
  1487. _Yp%=c%+20:
  1488. Evnts_UpdateData(p%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%,"")
  1489. shell_AttachPopupMenu(d%,eC%,tC%,AA%,a$,X$):
  1490. eC%>=0
  1491. shell_IconSetButtonType(d%,eC%,_BUTTON_TYPE_CLICK)
  1492. shell_EvntAdd_PopUpMenu(
  1493. shell_GetWindowIdentifier(d%),eC%,tC%,AA%,a$,X$,_POPUP_TYPE_TEXT):
  1494. shell_EvntHandle_ClickMenu(_window_handle%,_icon_handle%):
  1495. A$,a%,i%,lG%,b$,pF%,k%:
  1496. uC%:A$=
  1497. shell_GetWindowIdentifier(_window_handle%):
  1498. A$="iconbar"
  1499. _icon_handle%=-1
  1500. Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_REC_SIZE%,
  1501. Evnts_GetEvntListOffset(A$,-1,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_REC_SIZE%,
  1502. a%>=0
  1503. i%=!_EVNTS_CLICKMENU_ANCHOR%+a%:uC%=i%!16:lG%=i%!20:pF%=!_EVNTS_CLICKMENU_DATA%:q%=
  1504. shell_MenuList_GetSysHandle($(pF%+uC%)):b$=$(pF%+lG%):_EVNTS_LAST_MENUMAKER_FN$=b$:
  1505. b$<>""
  1506. ("FN"+b$+"( "+
  1507. _window_handle%+", "+
  1508. _icon_handle%+" )")
  1509. shell_OpenMenu(_Q%!0,_Q%!4,q%)
  1510. _window_handle%>0
  1511. shell_EvntHandle_PopupMenu(_window_handle%,_icon_handle%)
  1512. shell_ListClickMenu:
  1513. HA%,r%,z%,f%,NA%,JB%,q%:
  1514. g%,s%,b$:r%=!_EVNTS_CLICKMENU_ANCHOR%:z%=_EVNTS_CLICKMENU_REC_SIZE%:NA%=r%!4:
  1515. Evnts_DebugListHeader ("ClickMenu  ","Window         Icon   Menu handle  Maker FN"):
  1516. f%=_m_Evnts_HeaderSize%:
  1517. NA%:A$=$(r%+f%):g%=r%!(f%+&C):q%=r%!(f%+16):GA%=!_EVNTS_CLICKMENU_DATA%:
  1518. GA%>0
  1519. b$=$(GA%+r%!(f%+20))
  1520. b$="None"
  1521. :f%+=_EVNTS_CLICKMENU_REC_SIZE%:
  1522. shell_AttachMenuMaker(b%,g%,q%,b$):
  1523. a%,c%,A$,p%:
  1524. shell_AttachMenu(b%,g%,q%,0,0,0):A$=
  1525. shell_GetWindowIdentifier(b%):
  1526. A$="iconbar"
  1527.     g%=-1
  1528. Evnts_GetEvntListOffset(A$,g%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_REC_SIZE%,
  1529. a%=-1
  1530. 99,"MenuMaker offset not found.."
  1531. Cc%=!_EVNTS_CLICKMENU_ANCHOR%:c%+=a%:
  1532. !_EVNTS_CLICKMENU_DATA%=0
  1533. :!_EVNTS_CLICKMENU_DATA%=
  1534. shell_HeapBlockFetch(
  1535. (b$)+1)
  1536. :p%=c%+20:
  1537. Evnts_UpdateData(p%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%,b$):
  1538. shell_AttachHelpTag(b%,g%,Y$):
  1539. a%,c%,A$:A$=
  1540. shell_GetWindowIdentifier(b%):
  1541. A$="iconbar"
  1542.     g%=-1
  1543. Evnts_GetEvntListOffset(A$,g%,_EVNTS_HELPTAG_ANCHOR%,_EVNTS_HELPTAG_REC_SIZE%,
  1544. ):c%=!_EVNTS_HELPTAG_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
  1545. !_EVNTS_HELPTAG_DATA%=0
  1546. 8!_EVNTS_HELPTAG_DATA%=
  1547. shell_HeapBlockFetch(
  1548. (Y$)+1)
  1549. :p%=c%+16:
  1550. Evnts_UpdateData(p%,_EVNTS_HELPTAG_DATA%,_EVNTS_HELPTAG_DATAOFFSET%,Y$):
  1551. shell_EvntHandle_HelpTags(_window_handle%,_icon_handle%,
  1552. A$,a%,i%,vC%,wC%,YE%:
  1553. o%,tF%,f%,XI%,c%:A$=
  1554. shell_GetWindowIdentifier(_window_handle%):
  1555. A$="iconbar"
  1556. _icon_handle%=-1
  1557. Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_HELPTAG_ANCHOR%,_EVNTS_HELPTAG_REC_SIZE%,
  1558. a%>=0
  1559. %)Y$=
  1560. shell_EvntHandle_AttachedHelp(a%)
  1561. shell_HeapBlockFetch(96):
  1562. &600F4,1,YE%,_window_handle%,_icon_handle%
  1563. o%<>1
  1564. _window_handle%<>
  1565. shell_GetDynamicWindowHandle
  1566. shell_WindowHandleKnown(_window_handle%)
  1567. 2&Y$=
  1568. shell_EvntHandle_MenuHelp(YE%)
  1569. shell_HeapBlockReturn(YE%)
  1570. shell_ListHelpTags:
  1571. HA%,r%,z%,f%,NA%,JB%,B$:
  1572. g%,GA%,s%:r%=!_EVNTS_HELPTAG_ANCHOR%:z%=_EVNTS_HELPTAG_REC_SIZE%:NA%=r%!4:
  1573. Evnts_DebugListHeader ("HelpTag ","Window         Icon   Help tag"):
  1574. f%=_m_Evnts_HeaderSize%:
  1575. NA%:A$=$(r%+f%):g%=r%!(f%+&C):GA%=!_EVNTS_HELPTAG_DATA%:
  1576. GA%>0
  1577. B$=$(GA%+r%!(f%+16))
  1578. :f%+=_EVNTS_HELPTAG_REC_SIZE%:
  1579. shell_AttachMenuHelpTag(W$,hH%,L$):
  1580. a%,c%,p%:a%=
  1581. Evnts_GetEvntListOffset("menu",hH%,_EVNTS_MENUHELPTAG_ANCHOR%,_EVNTS_MENUHELPTAG_REC_SIZE%,
  1582. ):c%=!_EVNTS_MENUHELPTAG_ANCHOR%:c%+=a%:$c%="menu":c%!&C=hH%:
  1583. !_EVNTS_MENUHELPTAG_DATA%=0
  1584. u<!_EVNTS_MENUHELPTAG_DATA%=
  1585. shell_HeapBlockFetch(
  1586. (L$)+1)
  1587. :p%=c%+16:
  1588. Evnts_UpdateData(p%,_EVNTS_MENUHELPTAG_DATA%,_EVNTS_MENUHELPTAG_DATAOFFSET%,L$):
  1589. shell_AttachPane(b%,
  1590. gE%,o%,FB%,GB%):
  1591. a%,c%,WA%,A$,S$,OB%:A$=
  1592. shell_GetWindowIdentifier(b%):S$=
  1593. shell_GetWindowIdentifier(gE%):WA%=0:OB%=
  1594. shell_WindowGetFlags(gE%):
  1595. 1<<5)=0
  1596. shell_WindowToggleFlags(gE%,1<<5)
  1597. 1<<1)
  1598. shell_WindowToggleFlags(gE%,1<<1)
  1599. Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  1600. )>-1:WA%+=1:
  1601. Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  1602. ):c%=!_EVNTS_PANES_ANCHOR%:c%+=a%:$c%=A$:c%!&C=WA%:c%!20=o%:c%!24=FB%
  1603. %c%!28=GB%:
  1604. !_EVNTS_PANES_DATA%=0
  1605. 6!_EVNTS_PANES_DATA%=
  1606. shell_HeapBlockFetch(
  1607. (S$)+1)
  1608. :p%=c%+16:
  1609. Evnts_UpdateData(p%,_EVNTS_PANES_DATA%,_EVNTS_PANES_DATAOFFSET%,S$):
  1610. shell_PaneSetVisibility(xC%,yC%,KJ%):
  1611. A$,S$,WA%,a%:A$=
  1612. shell_GetWindowIdentifier(xC%):S$=
  1613. shell_GetWindowIdentifier(yC%):WA%=0:
  1614. Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  1615. )=-1:WA%+=1:
  1616. Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  1617. a%>=0
  1618. +c%=!_EVNTS_PANES_ANCHOR%:c%+=a%:
  1619. c%!20=c%!20
  1620. (1<<8)
  1621. c%!20=c%!20
  1622. (1<<8)
  1623. shell_HidePane(xC%,yC%):
  1624. shell_PaneSetVisibility(xC%,yC%,
  1625. shell_CloseWindow(yC%):
  1626. shell_ShowPane(xC%,yC%):
  1627. shell_PaneSetVisibility(xC%,yC%,
  1628. shell_OpenWindow(xC%,0,
  1629. shell_ListPanes:
  1630. HA%,r%,z%,f%,NA%,S$:
  1631. GA%,s%,GB$,HB$:r%=!_EVNTS_PANES_ANCHOR%:z%=_EVNTS_PANES_REC_SIZE%:NA%=r%!4:
  1632. Evnts_DebugListHeader ("Pane ","Window         Pane name   X Pos   Y Pos"):
  1633. f%=_m_Evnts_HeaderSize%:
  1634. NA%:A$=$(r%+f%):GA%=!_EVNTS_PANES_DATA%:
  1635. GA%>0
  1636. S$=$(GA%+r%!(f%+16))
  1637. :GB$=
  1638. shell_StringPadTrailing(
  1639. (r%!(f%+24))," ",8):HB$=
  1640. shell_StringPadTrailing(
  1641. (r%!(f%+28))," ",6):f%+=_EVNTS_PANES_REC_SIZE%:
  1642. shell_EvntAdd_WindowOpen(A$,B$):
  1643. a%,c%:a%=
  1644. Evnts_GetEvntListOffset(A$,-1,"WINDOWOPEN",
  1645. ):c%=!_EVNTS_WINDOWOPEN_ANCHOR%:c%+=a%:$c%=A$:c%!&C=-1:
  1646. !_EVNTS_WINDOWOPEN_DATA%=0
  1647. ;!_EVNTS_WINDOWOPEN_DATA%=
  1648. shell_HeapBlockFetch(
  1649. (B$)+1)
  1650. :p%=c%+16:
  1651. Evnts_UpdateData(p%,_EVNTS_WINDOWOPEN_DATA%,_EVNTS_WINDOWOPEN_DATAOFFSET%,B$):
  1652. shell_OpenWindow(_window_handle%,EG%,YD%):
  1653. a%,_G%,ZB%,UA%,aA%:
  1654. zC%,BH%,DH%:
  1655. A$,i%,JA%,w%:
  1656. B$,k%,WA%,gC%,OB%,_C%:
  1657. aD%,DA%,FC%,DF%:
  1658. YG%:A$=
  1659. shell_GetWindowIdentifier(_window_handle%):ZB%=_Q%!28
  1660. .fa%=
  1661. Evnts_GetEvntListOffset(A$,-1,_EVNTS_WINDOWOPEN_ANCHOR%,_EVNTS_WINDOWOPEN_REC_SIZE%,
  1662. a%>=0
  1663. 1pi%=!_EVNTS_WINDOWOPEN_ANCHOR%+a%:JA%=i%!16:w%=!_EVNTS_WINDOWOPEN_DATA%:B$=$(w%+JA%):k%=
  1664. ("FN"+B$+"("+A$+")")
  1665. :zC%=
  1666. :_WINDOWS_GETSTATE_BLK%!0=_window_handle%:
  1667. &400CB,,_WINDOWS_GETSTATE_BLK%:
  1668. (_WINDOWS_GETSTATE_BLK%!32
  1669. &80000)=&80000
  1670. &400CF,,_WINDOWS_GETPINFO_BLK%:_Q%!0=_window_handle%:
  1671. &400CB,,_Q%
  1672. &400C5,,_Q%
  1673. :gC%=
  1674. Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  1675. a%>=0
  1676. L!_Q%!0=_window_handle%:
  1677. YD%>0
  1678. ZB%=YD%
  1679. ZB%=-1
  1680. ZB%=_Q%!28
  1681. &400C5,,_Q%:
  1682. &400CB,,_Q%:
  1683. &400C6,,_Q%
  1684. :WA%=0:
  1685. Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  1686. )>-1:a%=_m_Evnts_LastEvntOffset%:i%=!_EVNTS_PANES_ANCHOR%+a%:hC%=i%!16:w%=!_EVNTS_PANES_DATA%:S$=$(w%+hC%):OB%=i%!20:DF%=
  1687. :_C%=i%!24:aD%=i%!28:
  1688. (1<<8)
  1689. :OB%=OB%
  1690. (1<<8)
  1691. :DA%=
  1692. shell_GetWindowHandleList(S$):FC%=!DA%:_c_Evnts_PaneBlk%!0=FC%:
  1693. _G%=0
  1694. _G%=_c_Evnts_PaneBlk%!0
  1695. o{BH%=_c_Evnts_PaneBlk%!0:
  1696. &400CB,,_c_Evnts_PaneBlk%:
  1697. _WINDOWS_GETPINFO_BLK%!16=-9
  1698. _WINDOWS_GETPINFO_BLK%!16>-5
  1699. 0,1:UA%=_c_Evnts_PaneBlk%!16-_c_Evnts_PaneBlk%!8:aA%=_c_Evnts_PaneBlk%!&C-_c_Evnts_PaneBlk%!4:_c_Evnts_PaneBlk%!4=_Q%!4+_C%:_c_Evnts_PaneBlk%!&C=_c_Evnts_PaneBlk%!4+aA%:_c_Evnts_PaneBlk%!16=_Q%!16+aD%:_c_Evnts_PaneBlk%!8=_c_Evnts_PaneBlk%!16-UA%
  1700. 2:UA%=_c_Evnts_PaneBlk%!16-_c_Evnts_PaneBlk%!8:aA%=_Q%!&C-_Q%!4:_c_Evnts_PaneBlk%!4=_Q%!4+_C%:_c_Evnts_PaneBlk%!&C=_Q%!&C:_c_Evnts_PaneBlk%!16=_Q%!16+aD%:_c_Evnts_PaneBlk%!8=_c_Evnts_PaneBlk%!16-UA%
  1701. 3:UA%=_Q%!16-_Q%!8:aA%=_c_Evnts_PaneBlk%!&C-_c_Evnts_PaneBlk%!4:_c_Evnts_PaneBlk%!4=_Q%!4+_C%:_c_Evnts_PaneBlk%!&C=_c_Evnts_PaneBlk%!4+aA%:_c_Evnts_PaneBlk%!16=_Q%!16:_c_Evnts_PaneBlk%!8=_Q%!8+aD%
  1702. 4:UA%=_c_Evnts_PaneBlk%!16-_c_Evnts_PaneBlk%!8:aA%=_Q%!&C-_Q%!4:_c_Evnts_PaneBlk%!4=_Q%!4+_C%:_c_Evnts_PaneBlk%!&C=_Q%!&C:_c_Evnts_PaneBlk%!16=_Q%!8+UA%+aD%:_c_Evnts_PaneBlk%!8=_c_Evnts_PaneBlk%!16+UA%
  1703. 5:UA%=_Q%!16-_Q%!8:aA%=_c_Evnts_PaneBlk%!&C-_c_Evnts_PaneBlk%!4:_c_Evnts_PaneBlk%!4=_Q%!&C-aA%+_C%:_c_Evnts_PaneBlk%!&C=_c_Evnts_PaneBlk%!4+aA%:_c_Evnts_PaneBlk%!16=_Q%!16:_c_Evnts_PaneBlk%!8=_Q%!8
  1704. :YG%=_c_Evnts_PaneBlk%!28:
  1705. WA%=0
  1706. _c_Evnts_PaneBlk%!28=ZB%
  1707. _c_Evnts_PaneBlk%!28=DH%
  1708. &400C5,,_c_Evnts_PaneBlk%
  1709. _c_Evnts_PaneBlk%!0=YG%
  1710. :DH%=_c_Evnts_PaneBlk%!0:WA%+=1:
  1711. _Q%!28=BH%:
  1712. &400C5,,_Q%
  1713. _Q%!0=_window_handle%:
  1714. &400CB,,_Q%
  1715. ZB%=-2
  1716. _Q%!28=-2
  1717. YD%=-1
  1718. _Q%!28=-1
  1719. &400C5,,_Q%
  1720. shell_AttachCloseWindowHandler(b%,B$):
  1721. a%,c%,A$:A$=
  1722. shell_GetWindowIdentifier(b%):a%=
  1723. Evnts_GetEvntListOffset(A$,-1,_EVNTS_WINDOWCLOSE_ANCHOR%,_EVNTS_WINDOWCLOSE_REC_SIZE%,
  1724. ):c%=!_EVNTS_WINDOWCLOSE_ANCHOR%:c%+=a%:$c%=A$:c%!&C=-1
  1725. !_EVNTS_WINDOWCLOSE_DATA%=0
  1726. <!_EVNTS_WINDOWCLOSE_DATA%=
  1727. shell_HeapBlockFetch(
  1728. (B$)+1)
  1729. :p%=c%+16:
  1730. Evnts_UpdateData(p%,_EVNTS_WINDOWCLOSE_DATA%,_EVNTS_WINDOWCLOSE_DATAOFFSET%,B$):
  1731. shell_EvntHandle_WindowClose(_window_handle%):
  1732. A$,a%,B$,i%,w%,aF%:A$=
  1733. shell_GetWindowIdentifier(_window_handle%):a%=
  1734. Evnts_GetEvntListOffset(A$,-1,_EVNTS_WINDOWCLOSE_ANCHOR%,_EVNTS_WINDOWCLOSE_REC_SIZE%,
  1735. ):aF%=
  1736. a%>=0
  1737. bi%=!_EVNTS_WINDOWCLOSE_ANCHOR%+a%:JA%=i%!16:w%=!_EVNTS_WINDOWCLOSE_DATA%:B$=$(w%+JA%):
  1738. B$<>""
  1739. .aF%=
  1740. ("FN"+B$+"("+
  1741. (_window_handle%)+" )")
  1742. shell_CloseWindow(_window_handle%)
  1743. shell_AttachDrag(b%,g%,B$):
  1744. a%,c%,p%,A$:A$=
  1745. shell_GetWindowIdentifier(b%):a%=
  1746. Evnts_GetEvntListOffset(A$,g%,"DRAG",
  1747. ):c%=!_EVNTS_DRAG_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
  1748. !_EVNTS_DRAG_DATA%=0
  1749. $5!_EVNTS_DRAG_DATA%=
  1750. shell_HeapBlockFetch(
  1751. (B$)+1)
  1752. :p%=c%+16:
  1753. Evnts_UpdateData(p%,_EVNTS_DRAG_DATA%,_EVNTS_DRAG_DATAOFFSET%,B$):
  1754. shell_AttachUserRedraw(
  1755. b%,B$):
  1756. a%,c%,p%,e%,hA%:e%=
  1757. shell_HeapBlockFetch(36):!e%=b%:
  1758. &400CB,,e%:hA%=e%!32:
  1759. shell_HeapBlockReturn(e%):
  1760. shell_Tracef0("AttachUserRedraw:flag% = &"+
  1761. ~hA%):
  1762. 1<<4)
  1763. shell_Tracef0("AttachUserRedraw:auto redraw set!!"):
  1764. shell_WindowToggleFlags(b%,1<<4)
  1765. shell_GetWindowIdentifier(b%):
  1766. shell_Tracef0("AttachUserRedraw:window name is : "+A$):a%=
  1767. Evnts_GetEvntListOffset(A$,-1,_EVNTS_REDRAW_ANCHOR%,_EVNTS_REDRAW_REC_SIZE%,
  1768. ):c%=!_EVNTS_REDRAW_ANCHOR%:c%+=a%:$c%=A$:c%!&C=-1:
  1769. !_EVNTS_REDRAW_DATA%=0
  1770. O7!_EVNTS_REDRAW_DATA%=
  1771. shell_HeapBlockFetch(
  1772. (B$)+1)
  1773. :p%=c%+16:
  1774. Evnts_UpdateData(p%,_EVNTS_REDRAW_DATA%,_EVNTS_REDRAW_DATAOFFSET%,B$):
  1775. shell_EvntHandle_Redraw(_window_handle%,e%,XA%,gA%):
  1776. A$,a%,B$,i%,w%,k%:A$=
  1777. shell_GetWindowIdentifier(_window_handle%):a%=
  1778. Evnts_GetEvntListOffset(A$,-1,_EVNTS_REDRAW_ANCHOR%,_EVNTS_REDRAW_REC_SIZE%,
  1779. a%>=0
  1780. bXi%=!_EVNTS_REDRAW_ANCHOR%+a%:JA%=i%!16:w%=!_EVNTS_REDRAW_DATA%:B$=$(w%+JA%):
  1781. B$<>""
  1782. i/k%=
  1783. ("FN"+B$+"("+
  1784. e%+","+
  1785. XA%+","+
  1786. gA%+")")
  1787. shell_ListRedraw:
  1788. HA%,r%,z%,f%,NA%,B$,A$:
  1789. GA%,s%:r%=!_EVNTS_REDRAW_ANCHOR%:z%=_EVNTS_REDRAW_REC_SIZE%:NA%=r%!4:
  1790. Evnts_DebugListHeader ("Redraw ","Window       User FN"):
  1791. f%=_m_Evnts_HeaderSize%:
  1792. NA%:A$=$(r%+f%):GA%=!_EVNTS_REDRAW_DATA%:
  1793. GA%>0
  1794. B$=$(GA%+r%!(f%+16))
  1795. :f%+=_EVNTS_REDRAW_REC_SIZE%:
  1796. shell_AttachIconWatch(b%,g%,B$):
  1797. a%,c%,p%,A$,k$:A$=
  1798. shell_GetWindowIdentifier(b%):a%=
  1799. Evnts_GetEvntListOffset(A$,g%,_EVNTS_ICONWATCH_ANCHOR%,_EVNTS_ICONWATCH_REC_SIZE%,
  1800. ):c%=!_EVNTS_ICONWATCH_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%
  1801. !_EVNTS_ICONWATCH_DATA%=0
  1802. :!_EVNTS_ICONWATCH_DATA%=
  1803. shell_HeapBlockFetch(
  1804. (B$)+1)
  1805. :p%=c%+16:
  1806. Evnts_UpdateData(p%,_EVNTS_ICONWATCH_DATA%,_EVNTS_ICONWATCH_DATAOFFSET%,B$):k$=
  1807. shell_IconGetData(b%,g%):pG%=(a%-
  1808. Evnts_GetHeaderSize)
  1809. _EVNTS_ICONWATCH_REC_SIZE%:
  1810. pG%>_c_evnts_MaxIconWatchEvnts%
  1811. 99,"Sorry, too many IconWatch events attached (max "+
  1812. (_c_evnts_MaxIconWatchEvnts%)+")"
  1813. _c_evnts_CurrentContents$(pG%)=k$
  1814. shell_EvntHandle_IconWatch:
  1815. i%,z%,YA%,f%,s%,g%,A$,ZJ%:
  1816. DA%,b%,k$,hA$,B$,JA%:
  1817. w%,p%:i%=!_EVNTS_ICONWATCH_ANCHOR%:z%=_EVNTS_ICONWATCH_REC_SIZE%:YA%=i%!4:
  1818. f%=_m_Evnts_HeaderSize%:
  1819. YA%:A$=$(i%+f%):g%=i%!(f%+&C):JA%=i%!(f%+16):w%=!_EVNTS_ICONWATCH_DATA%:B$=$(w%+JA%):hA$=_c_evnts_CurrentContents$( (f%-
  1820. Evnts_GetHeaderSize)
  1821. _EVNTS_ICONWATCH_REC_SIZE%):DA%=
  1822. shell_GetWindowHandleList(A$):
  1823. DA%<>-1
  1824. 0m%=0:
  1825. :b%=DA%!m%:
  1826. shell_WindowIsOpen(b%)=
  1827. shell_IconGetData(b%,g%):
  1828. B$<>""
  1829. k$<>hA$
  1830. ("FN"+B$+"( "+
  1831. (34)+k$+
  1832. (34)+" )"):_c_evnts_CurrentContents$( (f%-
  1833. Evnts_GetHeaderSize)
  1834. _EVNTS_ICONWATCH_REC_SIZE%)=k$
  1835. :m%+=4:
  1836. DA%!m%=-1
  1837. :f%+=_EVNTS_ICONWATCH_REC_SIZE%:
  1838. shell_ListIconWatch:
  1839. HA%,r%,z%,f%,NA%,B$,A$:
  1840. GA%,s%:r%=!_EVNTS_ICONWATCH_ANCHOR%:z%=_EVNTS_ICONWATCH_REC_SIZE%:NA%=r%!4:
  1841. Evnts_DebugListHeader ("IconWatch ","Window       User FN"):
  1842. f%=_m_Evnts_HeaderSize%:
  1843. NA%:A$=$(r%+f%):GA%=!_EVNTS_ICONWATCH_DATA%:
  1844. GA%>0
  1845. B$=$(GA%+r%!(f%+16))
  1846. :f%+=_EVNTS_ICONWATCH_REC_SIZE%:
  1847. shell_AttachUserDrag(b%,g%,B$):
  1848. a%,c%,p%,A$,k$:A$=
  1849. shell_GetWindowIdentifier(b%):a%=
  1850. Evnts_GetEvntListOffset(A$,g%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_REC_SIZE%,
  1851. ):c%=!_EVNTS_DRAG_ANCHOR%:c%+=a%:$c%=A$:c%!&C=g%:
  1852. !_EVNTS_DRAG_DATA%=0
  1853. &5!_EVNTS_DRAG_DATA%=
  1854. shell_HeapBlockFetch(
  1855. (B$)+1)
  1856. :p%=c%+16:
  1857. Evnts_UpdateData(p%,_EVNTS_DRAG_DATA%,_EVNTS_DRAG_DATAOFFSET%,B$):
  1858. shell_EvntHandle_UserDragStartDrag(b%,g%):
  1859. JA%,w%,A$,a%:A$=
  1860. shell_GetWindowIdentifier(b%):a%=
  1861. Evnts_GetEvntListOffset(A$,g%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_REC_SIZE%,
  1862. a%>=0
  1863. shell_IconDragBox2(b%,g%):_m_evnts_DragIconStartWindow%=b%:_m_evnts_DragIconStartIcon%=g%
  1864. shell_IconWritableDragStatus=
  1865. shell_IconIsWritable(b%,g%)
  1866. shell_IconDragBox2(b%,g%):_m_evnts_DragIconStartWindow%=b%:_m_evnts_DragIconStartIcon%=g%:_m_evnts_DragIconWritableDrag%=
  1867. shell_WindowGetPosition(b%,_m_evnts_DragIconWinXMin%,_m_evnts_DragIconWinYMin%,_m_evnts_DragIconWinXMax%,_m_evnts_DragIconWinYMax%):
  1868. shell_PointerGetPosition(_m_evnts_DragIconMouseX%,_m_evnts_DragIconMouseY%)
  1869. shell_EvntHandle_UserDragEnd:
  1870. yA%,A$,a%,i%,JA%,w%:
  1871. k%,B$,LA$,lA$,bD%,gF%:A$=
  1872. shell_GetWindowIdentifier(_m_evnts_DragIconStartWindow%):a%=
  1873. Evnts_GetEvntListOffset(A$,_m_evnts_DragIconStartIcon%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_REC_SIZE%,
  1874. shell_HeapBlockFetch(30):
  1875. &400CF,,yA%:_m_evnts_MouseXCoord%=yA%!0:_m_evnts_MouseYCoord%=yA%!4:_m_evnts_DestWindowHandle%=yA%!&C:_m_evnts_DestIconHandle%=yA%!16:
  1876. shell_HeapBlockReturn(yA%):
  1877. a%>=0
  1878. i%=!_EVNTS_DRAG_ANCHOR%+a%:JA%=i%!16:w%=!_EVNTS_DRAG_DATA%:B$=$(w%+JA%):k%=
  1879. ("FN"+B$+"("+
  1880. _m_evnts_DestTaskHandle%+","+
  1881. _m_evnts_DestWindowHandle%+","+
  1882. _m_evnts_DestIconHandle%+","+
  1883. _m_evnts_MouseXCoord%+","+
  1884. _m_evnts_MouseYCoord%+")")
  1885. _m_evnts_DragIconWritableDrag%=
  1886. _m_evnts_DragIconWritableDrag%=
  1887. shell_IconIsWritable(_m_evnts_DestWindowHandle%,_m_evnts_DestIconHandle%)
  1888. shell_WindowHandleKnown(_m_evnts_DestWindowHandle%)
  1889. shell_IconGetData(_m_evnts_DragIconStartWindow%,_m_evnts_DragIconStartIcon%):lA$=
  1890. shell_IconGetData(_m_evnts_DestWindowHandle%,_m_evnts_DestIconHandle%):
  1891. shell_IconPutData(_m_evnts_DragIconStartWindow%,_m_evnts_DragIconStartIcon%,"",
  1892. (_m_evnts_DestWindowHandle%<>_m_evnts_DragIconStartWindow%)
  1893.     bD%=
  1894. (_m_evnts_DestIconHandle%<>_m_evnts_DragIconStartIcon%)
  1895.     gF%=
  1896. (bD%=
  1897. (bD%=
  1898. shell_IconPutData(_m_evnts_DestWindowHandle%,_m_evnts_DestIconHandle%,lA$+LA$,
  1899. shell_IconPutData(_m_evnts_DestWindowHandle%,_m_evnts_DestIconHandle%,LA$,
  1900. shell_EvntAdd_PopUpMenu(A$,GC%,RA%,q%,T$,X$,CE%):
  1901. a%,c%,W$:a%=
  1902. Evnts_GetEvntListOffset(A$,GC%,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_REC_SIZE%,
  1903. ):c%=!_EVNTS_POPUPS_ANCHOR%:c%+=a%:$c%=A$:c%!&C=GC%:c%!20=RA%:c%!24=CE%:
  1904. !_EVNTS_POPUPS_DATA%=0
  1905. 7!_EVNTS_POPUPS_DATA%=
  1906. shell_HeapBlockFetch(
  1907. (W$)+1)
  1908. T$<>""
  1909. Sp%=c%+16:
  1910. Evnts_UpdateData(p%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%,T$)
  1911. c%!16=-1
  1912. shell_MenuList_GetIdentifier(q%):
  1913. W$<>""
  1914. Sp%=c%+28:
  1915. Evnts_UpdateData(p%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%,W$)
  1916. X$<>""
  1917. !_EVNTS_POPUPS_DATA%=0
  1918. 7!_EVNTS_POPUPS_DATA%=
  1919. shell_HeapBlockFetch(
  1920. (X$)+1)
  1921. :p%=c%+32:
  1922. Evnts_UpdateData(p%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%,X$)
  1923. c%!32=-1
  1924. shell_EvntHandle_PopupMenu(_window_handle%,_icon_handle%):
  1925. A$,a%,w%,OA%,i%,wB%,q%:
  1926. dJ%,T$,X$,k%,W$:A$=
  1927. shell_GetWindowIdentifier(_window_handle%):a%=
  1928. Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_REC_SIZE%,
  1929. a%>=0
  1930. wi%=!_EVNTS_POPUPS_ANCHOR%+a%:OA%=i%!16:w%=!_EVNTS_POPUPS_DATA%:GC%=i%!&C:RA%=i%!20:wB%=i%!24:
  1931. wB%=_POPUP_TYPE_TEXT
  1932. OA%=i%!28:
  1933. OA%>=0
  1934. W$=$(w%+OA%)
  1935. shell_MenuList_GetSysHandle(W$)
  1936. W$="":q%=0
  1937. OA%>=0
  1938. T$=$(w%+OA%)
  1939. :OA%=i%!32:
  1940. OA%>=0
  1941. +X$=$(w%+OA%):
  1942. wB%=_POPUP_TYPE_FONTMENU
  1943. ("FN"+X$+"("+
  1944. shell_FontMenu_GetHandle)+")")
  1945. ("FN"+X$+"("+
  1946. (q%)+")")
  1947. _POPUP_TYPE_TEXT:
  1948. shell_HandleMenuOpen(_Q%,q%,_window_handle%,_icon_handle%,
  1949. _POPUP_TYPE_WIMPCOLOUR:
  1950. _m_WimpColMen_Handle%=-1
  1951. &45BCF,,"",T$
  1952. _m_WimpColMen_Handle%
  1953. shell_HandleMenuOpen(_Q%,_m_WimpColMen_Handle%,_window_handle%,_icon_handle%,
  1954. _POPUP_TYPE_COLOUR24:
  1955. shell_ColourPickerOpen(_window_handle%,RA%,GC%,T$,X$)
  1956. _POPUP_TYPE_FONTMENU:
  1957. shell_FontMenu_ShowMenu(_Q%,_window_handle%,_icon_handle%,
  1958. _POPUP_TYPE_FONTPICK:
  1959. shell_FontPickerOpen(_window_handle%,RA%,GC%,T$,X$)
  1960. _POPUP_TYPE_DATEPICK:
  1961. shell_DatePickerOpen(_window_handle%,RA%,GC%,T$)
  1962. 99,"Unknown popup type detected!"
  1963. shell_EvntHandle_PopupMenuSelection(b%,g%,xB%):
  1964. _item_text$,A$,a%,i%,OA%,w%:
  1965. GC%,RA%,wB%,q%,j%,a$:A$=
  1966. shell_GetWindowIdentifier(b%):a%=
  1967. Evnts_GetEvntListOffset(A$,g%,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_REC_SIZE%,
  1968. a%>=0
  1969. i%=!_EVNTS_POPUPS_ANCHOR%+a%:OA%=i%!16:w%=!_EVNTS_POPUPS_DATA%:GC%=i%!&C:RA%=i%!20:wB%=i%!24:q%=i%!28:
  1970. wB%=_POPUP_TYPE_FONTMENU
  1971. _item_text$=""
  1972. _item_text$=
  1973. shell_MenuGetItemText(q%,!xB%)
  1974. :j%=0:
  1975. OA%<>-1
  1976. P?a$=$(w%+OA%):j%=
  1977. ("FN"+a$+"("+
  1978. b%+","+
  1979. RA%+",_item_text$)")
  1980. j%<>0
  1981. OA%=-1
  1982. RA%>=0
  1983. _POPUP_TYPE_TEXT:
  1984. shell_IconPutData(b%,RA%,_item_text$,
  1985. _POPUP_TYPE_WIMPCOLOUR:
  1986. shell_IconSetBGColour(b%,RA%,xB%)
  1987. 99,"Unknown Popup type in EvntHandle_PopupMenuSelection (type was "+
  1988. wB%+")"
  1989. shell_ListPopUps:
  1990. HA%,r%,z%,f%,NA%,JB%:
  1991. g%,B$,GA%,s%:r%=!_EVNTS_POPUPS_ANCHOR%:z%=_EVNTS_POPUPS_REC_SIZE%:NA%=r%!4:
  1992. Evnts_DebugListHeader ("PopUps","Window         Icon   FN"):
  1993. f%=_m_Evnts_HeaderSize%:
  1994. NA%:A$=$(r%+f%):g%=r%!(f%+&C):GA%=!_EVNTS_POPUPS_DATA%:
  1995. GA%>0
  1996. B$=$(GA%+r%!(f%+16))
  1997. :f%+=_EVNTS_POPUPS_REC_SIZE%:
  1998. shell_EvntSelectButtonPressed(b%,g%,TI%):
  1999. shell_EvntHandle_ClickSelect(b%,g%):
  2000. shell_EvntAdjustButtonPressed(b%,g%):
  2001. shell_EvntHandle_ClickAdjust(b%,g%):
  2002. shell_EvntMenuButtonPressed(b%,g%,TI%):
  2003. shell_EvntHandle_ClickMenu(b%,g%):
  2004. shell_EvntSave_AllEvnts(c$):
  2005. u%:u%=
  2006. (c$):
  2007. Evnts_SaveEvnt(u%,_EVNTS_CLICKSELECT_ANCHOR%,_EVNTS_CLICKSELECT_DATA%,_EVNTS_CLICKSELECT_DATAOFFSET%):
  2008. Evnts_SaveEvnt(u%,_EVNTS_CLICKADJUST_ANCHOR%,_EVNTS_CLICKADJUST_DATA%,_EVNTS_CLICKADJUST_DATAOFFSET%)
  2009. Evnts_SaveEvnt(u%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%):
  2010. Evnts_SaveEvnt(u%,_EVNTS_HELPTAG_ANCHOR%,_EVNTS_HELPTAG_DATA%,_EVNTS_HELPTAG_DATAOFFSET%):
  2011. shell_PointerSaveEvnts(u%)
  2012. Evnts_SaveEvnt(u%,_EVNTS_REDRAW_ANCHOR%,_EVNTS_REDRAW_DATA%,_EVNTS_REDRAW_DATAOFFSET%):
  2013. Evnts_SaveEvnt(u%,_EVNTS_WINDOWCLOSE_ANCHOR%,_EVNTS_WINDOWCLOSE_DATA%,_EVNTS_WINDOWCLOSE_DATAOFFSET%)
  2014. Evnts_SaveEvnt(u%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_DATA%,_EVNTS_PANES_DATAOFFSET%):
  2015. Evnts_SaveEvnt(u%,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%)
  2016. Evnts_SaveEvnt(u%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_DATA%,_EVNTS_SLIDERS_DATAOFFSET%):
  2017. Evnts_SaveEvnt(u%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_DATA%,_EVNTS_BUMP_DATAOFFSET%)
  2018. Evnts_SaveEvnt(u%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_DATA%,_EVNTS_DRAG_DATAOFFSET%):
  2019. Evnts_SaveEvnt(u%,_m_DSave_Anchor%,_m_DSave_DataBlk%,_m_DSave_DataOffset%)
  2020. Evnts_SaveEvnt(u%,_EVNTS_ICONWATCH_ANCHOR%,_EVNTS_ICONWATCH_DATA%,_EVNTS_ICONWATCH_DATAOFFSET%):
  2021. Evnts_SaveEvnt(u%,_m_DLoad_Anchor%,_m_DLoad_DataBlk%,_EVNTS_DATALOAD_DATAOFFSET%):
  2022. Evnts_SaveEvnt(u%,AD%,cD%,OA%):
  2023. c%,PB%,iA%:c%=!AD%:iA%=!cD%:!_c_Evnts_WorkBuffer%=OA%:
  2024. #u%,0
  2025. PB%=!c%:
  2026. #u%,1:
  2027. &C,2,u%,c%,PB%+_m_Evnts_HeaderSize%:
  2028. &C,2,u%,_c_Evnts_WorkBuffer%,4:
  2029. &C,2,u%,iA%,OA%
  2030. shell_EvntLoad_AllEvnts(c$):
  2031. u%,c%,jA%,lB%:u%=
  2032. (c$):
  2033. Evnts_LoadEvnt(u%,_EVNTS_CLICKSELECT_ANCHOR%,_EVNTS_CLICKSELECT_DATA%,_EVNTS_CLICKSELECT_DATAOFFSET%)
  2034. Evnts_LoadEvnt(u%,_EVNTS_CLICKADJUST_ANCHOR%,_EVNTS_CLICKADJUST_DATA%,_EVNTS_CLICKADJUST_DATAOFFSET%):
  2035. Evnts_LoadEvnt(u%,_EVNTS_CLICKMENU_ANCHOR%,_EVNTS_CLICKMENU_DATA%,_EVNTS_CLICKMENU_DATAOFFSET%)
  2036. Evnts_LoadEvnt(u%,_EVNTS_HELPTAG_ANCHOR%,_EVNTS_HELPTAG_DATA%,_EVNTS_HELPTAG_DATAOFFSET%):
  2037. shell_PointerLoadEvnts(u%):
  2038. Evnts_LoadEvnt(u%,_EVNTS_REDRAW_ANCHOR%,_EVNTS_REDRAW_DATA%,_EVNTS_REDRAW_DATAOFFSET%)
  2039. Evnts_LoadEvnt(u%,_EVNTS_WINDOWCLOSE_ANCHOR%,_EVNTS_WINDOWCLOSE_DATA%,_EVNTS_WINDOWCLOSE_DATAOFFSET%):
  2040. Evnts_LoadEvnt(u%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_DATA%,_EVNTS_PANES_DATAOFFSET%)
  2041. Evnts_LoadEvnt(u%,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_DATA%,_EVNTS_POPUPS_DATAOFFSET%):
  2042. Evnts_LoadEvnt(u%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_DATA%,_EVNTS_SLIDERS_DATAOFFSET%)
  2043. Evnts_LoadEvnt(u%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_DATA%,_EVNTS_BUMP_DATAOFFSET%):
  2044. Evnts_LoadEvnt(u%,_EVNTS_DRAG_ANCHOR%,_EVNTS_DRAG_DATA%,_EVNTS_DRAG_DATAOFFSET%):
  2045. Evnts_LoadEvnt(u%,_m_DSave_Anchor%,_m_DSave_DataBlk%,_m_DSave_DataOffset%)
  2046. Evnts_LoadEvnt(u%,_EVNTS_ICONWATCH_ANCHOR%,_EVNTS_ICONWATCH_DATA%,_EVNTS_ICONWATCH_DATAOFFSET%):
  2047. Evnts_LoadEvnt(u%,_m_DLoad_Anchor%,_m_DLoad_DataBlk%,_m_DLoad_DataOffset%):
  2048.     na%=
  2049. Evnts_GetEvntListOffset("iconbar",_c_DLoad_ICONBAR_ICON%,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
  2050. a%>-1
  2051. E_m_DLoad_FileName$=
  2052. shell_GetCmdLineArgs:
  2053. _m_DLoad_FileName$<>""
  2054. dc%=!_m_DLoad_Anchor%:c%+=a%:jA%=c%!16:lB%=jA%
  2055. (1<<31):
  2056. shell_FileType(_m_DLoad_FileName$)=lB%
  2057. DataLoad_CallUserFN(-1,lB%,
  2058. shell_FileLength(_m_DLoad_FileName$),c%)
  2059. Evnts_LoadEvnt(u%,AD%,cD%,
  2060. OA%):
  2061. rH%,PB%,c%,PB%,uB%,iA%:
  2062. !AD%<>0
  2063. shell_HeapBlockReturn(!AD%)
  2064. !cD%<>0
  2065. shell_HeapBlockReturn(!cD%)
  2066. rH%=1
  2067. shell_HeapBlockFetch(_m_Evnts_HeaderSize%):
  2068. &C,4,u%,c%,_m_Evnts_HeaderSize%:PB%=!c%:c%=
  2069. shell_HeapBlockExtend(c%,PB%):
  2070. &C,4,u%,c%+_m_Evnts_HeaderSize%,PB%:!AD%=c%:
  2071. &C,4,u%,_c_Evnts_WorkBuffer%,4:uB%=!_c_Evnts_WorkBuffer%:
  2072. uB%>0
  2073. .EiA%=
  2074. shell_HeapBlockFetch(uB%):
  2075. &C,4,u%,iA%,uB%:!cD%=iA%:OA%=uB%
  2076. !AD%=0
  2077. shell_EvntHandle_MenuSelect(kC%):
  2078. HG%,o%:
  2079. shell_PointerGetMouseButton (_EVNTS_LAST_MOUSEBUTTON%):
  2080. shell_GetLastIconClicked>=0
  2081. shell_EvntHandle_PopupSelect(kC%)
  2082. &65BC4,_m_Menu_HandleLastOpened%,kC%
  2083. HG%,,_c_Evnts_WorkBuffer%;o%:
  2084. o%<>1
  2085. Evnts_CallMenuHandler(HG%,_c_Evnts_WorkBuffer%)
  2086. shell_GetLastMouseButton=_MSE_ADJUSTBUT
  2087. _EVNTS_LAST_MENUMAKER_FN$<>""
  2088. Z=k%=
  2089. ("FN"+_EVNTS_LAST_MENUMAKER_FN$+"( _U%!52, _U%!56 )")
  2090. shell_MenuOpenLast
  2091. shell_EvntHandle_PopupSelect(kC%):
  2092. A$,a%,i%,r$,q%,CD%:
  2093. iA%,zD%,j%,a$:
  2094. RA%,nI%,pH%,uC%:A$=
  2095. shell_GetWindowIdentifier(
  2096. shell_GetLastWindowClicked)
  2097. Evnts_GetEvntListOffset(A$,
  2098. shell_GetLastIconClicked,_EVNTS_POPUPS_ANCHOR%,_EVNTS_POPUPS_REC_SIZE%,
  2099. a%>=0
  2100. A$<>"iconbar"
  2101. p}i%=!_EVNTS_POPUPS_ANCHOR%+a%:CD%=i%!24:iA%=!_EVNTS_POPUPS_DATA%:zD%=i%!16:RA%=i%!20:
  2102. kC%!4<>-1
  2103. CD%<>_POPUP_TYPE_FONTMENU
  2104. 99,"Unable to handle popup with submenus!"
  2105. CD%=_POPUP_TYPE_TEXT
  2106. uC%=i%!28:
  2107. uC%>=0
  2108. W$=$(iA%+uC%)
  2109. shell_MenuList_GetSysHandle(W$)
  2110. CD%=_POPUP_TYPE_FONTMENU
  2111. shell_FontMenu_Decode(kC%)
  2112. shell_MenuGetItemText(q%,!kC%)
  2113. :j%=0:
  2114. zD%>-1
  2115. a$=$(iA%+zD%):
  2116. r$<>""
  2117. ("FN"+a$+"("+
  2118. shell_GetLastWindowClicked)+","+
  2119. RA%+","+
  2120. (34)+r$+
  2121. (34)+")")
  2122. j%<>0
  2123. zD%=-1
  2124. RA%>=0
  2125. _POPUP_TYPE_TEXT:
  2126. shell_IconPutData(
  2127. shell_GetLastWindowClicked,RA%,r$,
  2128. _POPUP_TYPE_WIMPCOLOUR:
  2129. shell_IconSetBGColour(
  2130. shell_GetLastWindowClicked,RA%,!kC%)
  2131. _POPUP_TYPE_FONTMENU:
  2132. r$<>""
  2133. shell_IconPutData(
  2134. shell_GetLastWindowClicked,RA%,r$,
  2135. 99,"Unknown Popup type in PROCshell_EvntHandle_PopupSelect (type was "+
  2136. CD%+")"
  2137. Evnts_CallMenuHandler(x%,YI%):
  2138. ("FN"+$x%+"("+
  2139. YI%+")")
  2140. Evnts_GetHeaderSize:=_m_Evnts_HeaderSize%
  2141. Evnts_GetLastMouseButton:=_EVNTS_LAST_MOUSEBUTTON%
  2142. Evnts_GetLastIconClicked:=_EVNTS_LAST_ICONCLICKED%
  2143. Evnts_GetLastWindowClicked:=_EVNTS_LAST_WINDOWCLICKED%
  2144. Evnts_GetLastMouseXPos:=_EVNTS_LAST_MOUSEXPOS%
  2145. Evnts_GetLastMouseYPos:=_EVNTS_LAST_MOUSEYPOS%
  2146. Evnts_DeleteData(A$,g%,IC%,iA%,z%,OA%,
  2147. _I%):
  2148. t$,p%,YB$,c%,a%:
  2149. DD%,ED%,FD%,JC%,f%,s%,YA%:
  2150. A$="IconBar"
  2151.     g%=-1
  2152. Evnts_GetEvntListOffset(A$,g%,IC%,z%,
  2153. ):c%=!IC%:YA%=c%!4:c%+=a%:p%=c%+OA%:DD%=!p%:!p%=-1:
  2154. DD%=-1
  2155. t$=$(!iA%+DD%):ED%=(!iA%+DD%)+
  2156. (t$)+1:FD%=!iA%+DD%:JC%=ED%-FD%:
  2157. &400F1,_U%!&94,ED%,_U%!&94,FD%,JC%:_I%-=JC%:!iA%=
  2158. shell_HeapBlockExtend(!iA%,-JC%):c%=!IC%:f%=_m_Evnts_HeaderSize%+OA%:
  2159. c%!f%>DD%
  2160. c%!f%-=JC%
  2161. :f%+=z%:
  2162. Evnts_DeleteEvnt(A$,g%,IC%,iA%,z%):
  2163. a%,c%,YA%,ED%,FD%,YA%:a%=
  2164. Evnts_GetEvntListOffset(A$,g%,IC%,z%,
  2165. ):c%=!IC%:YA%=c%!4:
  2166. YA%>0
  2167. *;c%!0-=z%:c%!4-=1:c%+=a%:ED%=c%+z%:FD%=c%:JC%=z%:
  2168. YA%>1
  2169. &400F1,_U%!&94,ED%,_U%!&94,FD%,JC%
  2170. :!IC%=
  2171. shell_HeapBlockExtend(!IC%,-JC%)
  2172. shell_EvntHandle_MenuHelp(lE%):
  2173. Y$,tF%,f%,MA%,a%:
  2174. wC%,vC%:tF%=
  2175. shell_MenuLastHandle:f%=0:
  2176. lE%!f%<>-1:XI%=lE%!f%:f%+=4:
  2177. :MA%=
  2178. shell_MenuGetItemHandle(tF%,lE%):
  2179. MA%<>0
  2180. Sma%=
  2181. Evnts_GetEvntListOffset("menu",MA%,_EVNTS_MENUHELPTAG_ANCHOR%,_EVNTS_MENUHELPTAG_REC_SIZE%,
  2182. a%>=0
  2183. U[i%=!_EVNTS_MENUHELPTAG_ANCHOR%+a%:wC%=i%!16:vC%=!_EVNTS_MENUHELPTAG_DATA%:Y$=$(vC%+wC%)
  2184. Y$=""
  2185. shell_EvntHandle_AttachedHelp(a%):
  2186. i%,wC%,vC%,Y$:i%=!_EVNTS_HELPTAG_ANCHOR%+a%:wC%=i%!16:vC%=!_EVNTS_HELPTAG_DATA%:Y$=$(vC%+wC%):=Y$
  2187. shell_Evnts_WritableDragInProgress:=_m_evnts_DragIconWritableDrag%
  2188. shell_Evnts_DragIconStartWindow:=_m_evnts_DragIconStartWindow%
  2189. shell_Evnts_DragIconStartIcon:=_m_evnts_DragIconStartIcon%
  2190. shell_Evnts_MonitorDragPtrPos:
  2191. GD%,b%,cA%,dA%:
  2192. KC%,LC%,MC%,NC%,YB%,bB%,HD%:
  2193. shell_PointerGetPosition(dA%,cA%):
  2194. shell_PointerGetWindow(b%)
  2195. shell_PointerGetMovementVector(_m_evnts_DragIconMouseX%,_m_evnts_DragIconMouseY%,dA%,cA%,KC%,LC%,MC%,NC%,YB%,bB%):
  2196. YB%<>0
  2197. bB%<>0
  2198. =_m_evnts_DragIconMouseX%=dA%:_m_evnts_DragIconMouseY%=cA%
  2199. shell_PointerGetLastMovementVector(KC%,LC%,MC%,NC%,YB%,bB%):
  2200. YB%<>0
  2201. bB%<>0
  2202. dA%>(_m_evnts_DragIconWinXMax%-_m_evnts_DragIconMargin%)
  2203. shell_WindowScrollBy(
  2204. shell_Evnts_DragIconStartWindow,dA%-(_m_evnts_DragIconWinXMax%-_m_evnts_DragIconMargin%),0)
  2205. dA%<(_m_evnts_DragIconWinXMin%+_m_evnts_DragIconMargin%)
  2206. shell_WindowScrollBy(
  2207. shell_Evnts_DragIconStartWindow,dA%-(_m_evnts_DragIconWinXMin%+_m_evnts_DragIconMargin%),0)
  2208. :mC%=
  2209. shell_Window_GetBottomPaneDepth(
  2210. shell_Evnts_DragIconStartWindow):
  2211. cA%<(_m_evnts_DragIconWinYMin%+_m_evnts_DragIconMargin%+mC%)
  2212. shell_WindowScrollBy(
  2213. shell_Evnts_DragIconStartWindow,0,cA%-(_m_evnts_DragIconWinYMin%+_m_evnts_DragIconMargin%+
  2214. shell_Window_GetBottomPaneDepth(
  2215. shell_Evnts_DragIconStartWindow)))
  2216. :HD%=
  2217. shell_Window_GetTopPaneDepth(
  2218. shell_Evnts_DragIconStartWindow):
  2219. cA%>(_m_evnts_DragIconWinYMax%-_m_evnts_DragIconMargin%-HD%)
  2220. shell_WindowScrollBy(
  2221. shell_Evnts_DragIconStartWindow,0,cA%-(_m_evnts_DragIconWinYMax%-_m_evnts_DragIconMargin%-
  2222. shell_Window_GetTopPaneDepth(
  2223. shell_Evnts_DragIconStartWindow)))
  2224. Evnts_GetEvntListOffset3(A$,g%,jA%,i%,z%,wD%):
  2225. HA%,f%,y%,a%,BB%,JB%:
  2226. s%,lB%:
  2227. A$="IconBar"
  2228. g%=-1:A$="iconbar"
  2229. (!i%=0
  2230. A$=""
  2231. (!i%=0)
  2232. shell_HeapBlockFetch(z%+_m_Evnts_HeaderSize%):BB%=!i%:BB%!0=z%:BB%!4=1:$(BB%+_m_Evnts_HeaderSize%)="":
  2233. s%=&C
  2234. (z%-4)
  2235. 4:BB%!(s%+_m_Evnts_HeaderSize%)=-1:
  2236. s%:_m_Evnts_LastEvntOffset%=_m_Evnts_HeaderSize%:a%=_m_Evnts_HeaderSize%
  2237. a%<>_m_Evnts_HeaderSize%
  2238. YBB%=!i%:HA%=!BB%:f%=_m_Evnts_HeaderSize%:y%=
  2239. :a%=-1:HJ%=-1:JB%=!i%:
  2240. ($(JB%+f%)=A$)
  2241. 7lB%=(JB%!(f%+16))
  2242. (1<<31):
  2243. JB%!(f%+&C)=g%
  2244. lB%=jA%
  2245. a%=f%:y%=
  2246. f%+=z%
  2247. f%+=z%
  2248. ((f%>=(HA%+_m_Evnts_HeaderSize%))
  2249. (a%=-1
  2250. a%=HA%+_m_Evnts_HeaderSize%:!i%=
  2251. shell_HeapBlockExtend(!i%,z%):fB%=!i%:fB%!0+=z%:fB%!4+=1:fB%+=a%:$(fB%)="":
  2252. s%=&C
  2253. (z%-4)
  2254. 4:fB%!s%=-1:
  2255. :_m_Evnts_LastEvntOffset%=a%
  2256. shell_AttachColourPopupMenu(d%,eC%,tC%,q%,a$,X$):
  2257. eC%>=0
  2258. shell_IconSetButtonType(d%,eC%,_BUTTON_TYPE_CLICK)
  2259. _m_WimpColMen_Handle%=q%:
  2260. shell_EvntAdd_PopUpMenu(
  2261. shell_GetWindowIdentifier(d%),eC%,tC%,q%,a$,X$,_POPUP_TYPE_WIMPCOLOUR):
  2262. _shell_Windows_Init:
  2263. _WINDOWS_GETSTATE_BLK%36:
  2264. _WINDOWS_GETWINFO_BLK%88:
  2265. _WINDOWS_GETPINFO_BLK%20:
  2266. _WINDOWS_SETEXTENT_BLK%20:pJ%=-1:jJ%=-1:=0
  2267. shell_WindowHasTitleBar(d%):=(
  2268. shell_WindowGetFlags(d%)
  2269. 1<<26)
  2270. shell_WindowIsMoveable(d%):=(
  2271. shell_WindowGetFlags(d%)
  2272. 1<<1)
  2273. shell_WindowIsAPane(d%):=(
  2274. shell_WindowGetFlags(d%)
  2275. 1<<5)
  2276. shell_WindowIsNotBounded(d%):=(
  2277. shell_WindowGetFlags(d%)
  2278. 1<<6)
  2279. shell_WindowTrapsHotKeys(d%):=(
  2280. shell_WindowGetFlags(d%)
  2281. 1<<&C)
  2282. shell_WindowIsOpen(b%):
  2283. j%:j%=
  2284. shell_WindowGetFlags(b%)
  2285. 1<<16)
  2286. b%=-1
  2287. b%=-2
  2288. shell_WindowIsOnTop(d%):=(
  2289. shell_WindowGetFlags(d%)
  2290. 1<<17)
  2291. shell_WindowHasBeenToggled(d%):=(
  2292. shell_WindowGetFlags(d%)
  2293. 1<<18)
  2294. shell_WindowHasInputFocus(d%):=(
  2295. shell_WindowGetFlags(d%)
  2296. 1<<20)
  2297. shell_WindowHasBackIcon(d%):=(
  2298. shell_WindowGetFlags(d%)
  2299. 1<<24)
  2300. shell_WindowHasCloseIcon(d%):=(
  2301. shell_WindowGetFlags(d%)
  2302. 1<<25)
  2303. shell_WindowHasToggleIcon(d%):=(
  2304. shell_WindowGetFlags(d%)
  2305. 1<<27)
  2306. shell_WindowHasVScrollBar(d%):=(
  2307. shell_WindowGetFlags(d%)
  2308. 1<<28)
  2309. shell_WindowHasAdjustSizeIcon(d%):=(
  2310. shell_WindowGetFlags(d%)
  2311. 1<<29)
  2312. shell_WindowHasHScrollBar(d%):=(
  2313. shell_WindowGetFlags(d%)
  2314. 1<<30)
  2315. shell_WindowGetFlags(b%):
  2316. o%:_WINDOWS_GETSTATE_BLK%!0=b%:
  2317. &400CB,,_WINDOWS_GETSTATE_BLK%:o%=_WINDOWS_GETSTATE_BLK%!32:=o%
  2318. shell_WindowGetTitleFlags(d%):
  2319. o%,e%:e%=
  2320. Windows_ClaimInfoBlock(d%):e%!0=d%:
  2321. &400CC,,e%:o%=e%!60:
  2322. Windows_ReturnInfoBlock(e%):=o%
  2323. shell_WindowTitleFlags(d%):
  2324. o%,e%:e%=
  2325. Windows_ClaimInfoBlock(d%):e%!0=d%:
  2326. &400CC,,e%:o%=e%!60:
  2327. Windows_ReturnInfoBlock(e%):=o%
  2328. shell_WindowTitleHasBorder(d%):=(
  2329. shell_WindowTitleFlags(d%)
  2330. 1<<2)
  2331. shell_WindowTitleIsSprite(d%):=(
  2332. shell_WindowTitleFlags(d%)
  2333. 1<<1)
  2334. shell_WindowTitleIsText(d%):=(
  2335. shell_WindowTitleFlags(d%)
  2336. 1<<0)
  2337. shell_WindowTitleIsHCentred(d%):=(
  2338. shell_WindowTitleFlags(d%)
  2339. 1<<3)
  2340. shell_WindowTitleIsVCentred(d%):=(
  2341. shell_WindowTitleFlags(d%)
  2342. 1<<4)
  2343. shell_WindowTitleIsFilled(d%):=(
  2344. shell_WindowTitleFlags(d%)
  2345. 1<<5)
  2346. shell_WindowTitleIsAAliased(d%):=(
  2347. shell_WindowTitleFlags(d%)
  2348. 1<<6)
  2349. shell_WindowTitleIsIndirected(d%):=(
  2350. shell_WindowTitleFlags(d%)
  2351. 1<<8)
  2352. shell_WindowGetTitle(d%):
  2353. l$,e%:e%=
  2354. Windows_ClaimInfoBlock(d%):e%!0=d%:
  2355. &400CC,,e%:
  2356. (e%!32
  2357. 1<<26)
  2358. ((e%!60)
  2359. 256)=0
  2360. l$=$(e%+76)
  2361. l$=$(!(e%+76))
  2362. Windows_ReturnInfoBlock(e%):=l$
  2363. shell_WindowTitleBufferLength(d%):
  2364. j%,e%:e%=
  2365. Windows_ClaimInfoBlock(d%):e%!0=d%:
  2366. &400CC,,e%:
  2367. ((e%!60)
  2368. 256)=0
  2369.     j%=&C
  2370. j%=e%!84
  2371. Windows_ReturnInfoBlock(e%):=j%
  2372. shell_WindowMoveToIcon(d%,rE%,t%,FB%,GB%):
  2373. KA%,v%:KA%=
  2374. shell_HeapBlockFetch(50):v%=
  2375. shell_HeapBlockFetch(36):v%!20=0:
  2376. shell_OSCheckVersion(3)
  2377. rE%=-1
  2378. !v%=-2
  2379. !v%=rE%
  2380. &400CB,,v%
  2381. :KA%!0=rE%:KA%!4=t%:
  2382. &400CE,,KA%:
  2383. shell_WindowMoveTo(d%,KA%!8+FB%-v%!20,KA%!20+GB%):
  2384. shell_HeapBlockReturn(KA%):
  2385. shell_HeapBlockReturn(v%):
  2386. shell_WindowMoveTo(d%,PA%,QA%):
  2387. zH%,PG%,a%,e%:e%=
  2388. Windows_ClaimInfoBlock(d%):e%!0=d%:
  2389. &400CC,,e%:zH%=e%!&C-e%!4:PG%=e%!16-e%!8:e%!4=PA%:e%!8=QA%:e%!&C=PA%+zH%:e%!16=QA%+PG%:
  2390. &400C5,,e%:
  2391. &400C6,,e%:
  2392. shell_IsWindowStatic(d%)
  2393. shell_OpenWindowStatic(d%)
  2394. shell_OpenWindowDynamic2(d%,0,0)
  2395. Windows_ReturnInfoBlock(e%):
  2396. shell_WindowBringToTop(b%):
  2397. shell_WindowMoveInStack(b%,-1):
  2398. shell_WindowSendToBack(b%):
  2399. shell_WindowMoveInStack(b%,-2):
  2400. shell_WindowIconise(b%):
  2401. shell_WindowMoveInStack(b%,-3):
  2402. shell_CloseWindow(b%):
  2403. a%,_%,TJ%,WA%,hC%,A$:
  2404. i%,S$,DA%,FC%:A$=
  2405. shell_GetWindowIdentifier(b%):
  2406. WA%=0:
  2407. Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  2408. )>-1:a%=_m_Evnts_LastEvntOffset%:i%=!_EVNTS_PANES_ANCHOR%+a%:hC%=i%!16:w%=!_EVNTS_PANES_DATA%:S$=$(w%+hC%):DA%=
  2409. shell_GetWindowHandleList(S$):FC%=!DA%
  2410. s_c_Evnts_PaneBlk%!0=FC%:
  2411. &400C6,,_c_Evnts_PaneBlk%:WA%+=1:
  2412. :_c_Evnts_PaneBlk%!0=b%:
  2413. &400C6,,_c_Evnts_PaneBlk%
  2414. shell_GetDynamicWindowHandle:=_U%!20
  2415. shell_DeleteWindow(n%):
  2416. _%:_%=
  2417. shell_HeapBlockFetch(20):
  2418. oktodeletew(n%)
  2419. shell_RemoveHandleFromWindowList(n%):
  2420. n%=_U%!20
  2421. _U%!20=0
  2422. shell_RemoveStaticWindowFromList(n%)
  2423. :_%!0=n%:
  2424. &600C3,,_%:n%=0
  2425. shell_HeapBlockReturn(_%):=n%
  2426. shell_WindowCountIcons(d%):
  2427. ID%,KD%,sA%:
  2428. (_U%!&64
  2429. 1<<&A)
  2430. d%=-1
  2431. d%=-2
  2432. *}ID%=
  2433. shell_HeapBlockFetch(88):!_WINDOWS_GETWINFO_BLK%=d%:
  2434. &400CC,,_WINDOWS_GETWINFO_BLK%+1:sA%=_WINDOWS_GETWINFO_BLK%!88
  2435. shell_HeapBlockFetch(6000):
  2436. 3$!ID%=d%:
  2437. &400CC,,ID%:sA%=ID%!88
  2438. shell_HeapBlockReturn(ID%)
  2439. :=sA%
  2440. shell_WindowToggleBackIcon(
  2441. shell_WindowToggleFlags(d%,1<<24):
  2442. shell_WindowToggleCloseIcon(
  2443. shell_WindowToggleFlags(d%,1<<25):
  2444. shell_WindowToggleTitleBar(
  2445. shell_WindowToggleFlags(d%,1<<26):
  2446. shell_WindowToggleToggleIcon(
  2447. shell_WindowToggleFlags(d%,1<<27):
  2448. shell_WindowToggleHScrollBar(
  2449. shell_WindowToggleFlags(d%,1<<30):
  2450. shell_WindowToggleAdjustSizeIcon(
  2451. shell_WindowToggleFlags(d%,1<<29):
  2452. shell_WindowToggleVScrollBar(
  2453. shell_WindowToggleFlags(d%,1<<28):
  2454. shell_WindowToggleFlags(
  2455. d%,CB%):
  2456. e%,o%,BE%,n%:BE%=
  2457. shell_WindowIsOpen(d%):e%=
  2458. Windows_ClaimInfoBlock(d%):e%!0=d%:
  2459. &400CC,,e%:o%=e%!32:o%=(o%
  2460. CB%):e%!32=o%:
  2461. &400C3,,e%:
  2462. &400C1,,e%+4
  2463. n%:!e%=n%:
  2464. &400C5,,e%
  2465. Windows_ReturnInfoBlock(e%):
  2466. n%<>d%
  2467. shell_UpdateWindowHandle(d%,n%):
  2468. shell_UpdateWindowHandleList(d%,n%):d%=n%
  2469. shell_UpdateWindow(n%,yF%,mB%,oB%,tE%):
  2470. e%:e%=
  2471. shell_HeapBlockFetch(e%):e%!0=n%:e%!4=yF%:e%!8=mB%:e%!&C=oB%:e%!16=tE%:
  2472. &400C9,,e%
  2473. &400CB,,e%:
  2474. shell_HeapBlockReturn(e%):
  2475. shell_OpenWindowDynamic2(d%,FB%,GB%):
  2476. k%,GD%:GD%=
  2477. shell_HeapBlockFetch(20):_U%!20=d%:
  2478. &400CF,,GD%:
  2479. &400D4,,d%,GD%!0+FB%,GD%!4+GB%:
  2480. shell_HeapBlockReturn(GD%):
  2481. shell_WindowGetPosition(b%,
  2482. mA%):!_WINDOWS_GETSTATE_BLK%=b%:
  2483. &400CB,,_WINDOWS_GETSTATE_BLK%:eA%=_WINDOWS_GETSTATE_BLK%!4:fA%=_WINDOWS_GETSTATE_BLK%!8:lA%=_WINDOWS_GETSTATE_BLK%!&C:mA%=_WINDOWS_GETSTATE_BLK%!16:
  2484. shell_WindowGetSize(b%,
  2485. BJ%):
  2486. eA%,fA%,lA%,mA%:
  2487. shell_WindowGetPosition(b%,eA%,fA%,lA%,mA%):zI%=lA%-eA%:BJ%=mA%-fA%:
  2488. shell_WindowGetCentre(b%,
  2489. GI%):
  2490. eA%,fA%,lA%,mA%:
  2491. shell_WindowGetPosition(b%,eA%,fA%,lA%,mA%):OJ%=eA%+((lA%-eA%)/2):GI%=fA%+((mA%-fA%)/2):
  2492. shell_OpenWindowDynamic(KB$,vA$,wA$):
  2493. x%,FB%,GB%,vE%:vE%=
  2494. shell_GetDynamicWindowHandle:
  2495. vE%<>0
  2496. &400D4,,-1:k%=
  2497. shell_DeleteWindow(vE%)
  2498. shell_CreateWindow(KB$,x%):_WINDOWS_GETSTATE_BLK%!0=x%:
  2499. &400CB,,_WINDOWS_GETSTATE_BLK%:FB%=(_WINDOWS_GETSTATE_BLK%!4-_WINDOWS_GETSTATE_BLK%!&C)/2:GB%=(_WINDOWS_GETSTATE_BLK%!16-_WINDOWS_GETSTATE_BLK%!8)/2:_U%!20=x%:
  2500. vA$<>""
  2501. ("FN"+vA$+"("+
  2502. x%+")")
  2503. shell_OpenWindowDynamic2(x%,FB%,GB%):
  2504. wA$<>""
  2505. ("FN"+wA$+"("+
  2506. x%+")")
  2507. shell_CreateWindow(I$,
  2508. nC%:nC%=
  2509. shell_GetWB(I$):nC%!64=_U%!16:
  2510. &400C1,,nC%
  2511. shell_WindowListAddHandle(I$,b%):
  2512. Windows_ClaimInfoBlock(b%):=
  2513. shell_HeapBlockFetch(&64+(
  2514. shell_WindowCountIcons(b%)*32))
  2515. Windows_ReturnInfoBlock(FA%):
  2516. shell_HeapBlockReturn(FA%):
  2517. shell_WindowResize(SA%,KI%,MI%,NI%,OI%,BE%):
  2518. eD%:eD%=
  2519. Windows_ClaimInfoBlock(SA%):_WINDOWS_SETEXTENT_BLK%!0=KI%:_WINDOWS_SETEXTENT_BLK%!4=MI%:_WINDOWS_SETEXTENT_BLK%!8=NI%:_WINDOWS_SETEXTENT_BLK%!&C=OI%:
  2520. &400D7,SA%,_WINDOWS_SETEXTENT_BLK%:
  2521. 7)eD%!0=SA%:
  2522. &400CC,,eD%:
  2523. &400C5,,eD%
  2524. Windows_ReturnInfoBlock(eD%):
  2525. shell_WindowRetitle(
  2526. SA%,l$):
  2527. h%,_%,n%,kG%:_%=
  2528. Windows_ClaimInfoBlock(SA%):_%!0=SA%:
  2529. &400CC,,_%:
  2530. ((_%!60)
  2531. 256)=0
  2532. KAh%=_%+76:$h%=
  2533. l$,&B):
  2534. &400C3,,_%:
  2535. &400C1,,_%+4
  2536. n%<>SA%
  2537. shell_UpdateWindowHandle(SA%,n%):SA%=n%
  2538. kG%=_%!84:$(!(_%+76))=
  2539. l$,kG%-1):
  2540. ((_%!32)
  2541. (1<<16))<>0
  2542. &400D1,-1,_%!4,_%!16,_%!&C,_%!16+44
  2543. Windows_ReturnInfoBlock(_%)
  2544. shell_WindowTitleIndirected(CE%):
  2545. (1<<8))=(1<<8)
  2546. shell_WindowMoveToPopUpPos(b%,g%,mG%):
  2547. oC%,QB%,qG%,rG%,uG%,vG%:
  2548. wG%:oC%=
  2549. shell_HeapBlockFetch(40):oC%!0=b%:oC%!4=g%:
  2550. &400CE,,oC%:qG%=oC%!16:rG%=oC%!20:QB%=
  2551. shell_HeapBlockFetch(40):QB%!0=b%:
  2552. &400CB,,QB%:uG%=QB%!4:vG%=QB%!16:QB%!0=mG%:
  2553. &400CB,,QB%
  2554. wG%=QB%!16-QB%!8:
  2555. shell_WindowMoveTo(mG%,uG%+qG%,vG%+rG%-(wG%/2)):
  2556. shell_HeapBlockReturn(oC%):
  2557. shell_HeapBlockReturn(QB%):
  2558. shell_WindowScrollTo(b%,PC%,QC%):
  2559. nA%:nA%=
  2560. shell_HeapBlockFetch(36):!nA%=b%:
  2561. &400CB,,nA%:nA%!20=PC%:nA%!24=QC%:
  2562. shell_WindowIsOpen(b%)
  2563. &400C5,,nA%
  2564. &400C5,,nA%:
  2565. &400C6,,nA%
  2566. shell_HeapBlockReturn(nA%):
  2567. shell_WindowScrollBy(b%,PC%,QC%):
  2568. nA%:nA%=
  2569. shell_HeapBlockFetch(36):!nA%=b%:
  2570. &400CB,,nA%:nA%!20+=PC%:nA%!24+=QC%:
  2571. shell_WindowIsOpen(b%)
  2572. &400C5,,nA%
  2573. &400C5,,nA%:
  2574. &400C6,,nA%
  2575. shell_HeapBlockReturn(nA%):
  2576. shell_WindowSetBackgroundColour(
  2577. x%,gB%):
  2578. v%,n%,AH%,ZB%,sA%:sA%=
  2579. shell_WindowCountIcons(x%):AH%=
  2580. shell_WindowIsOpen(x%):v%=
  2581. shell_HeapBlockFetch(&64+(sA%*32)):v%!0=x%:
  2582. &400CC,,v%:v%?39=gB%:_shell_open_behind%=v%!28:ZB%=v%!28:
  2583. &400C3,,v%
  2584. &400C1,,v%+4
  2585. n%:v%!0=n%:
  2586. &400CC,,v%:
  2587. x%<>n%
  2588. shell_UpdateWindowHandle(x%,n%):x%=n%
  2589. shell_OpenWindow(n%,0,ZB%)
  2590. shell_HeapBlockReturn(v%):
  2591. shell_WindowSetForegroundColour(
  2592. x%,gB%):
  2593. v%,n%,BC%,ZB%:BC%=
  2594. shell_WindowIsOpen(d%):v%=
  2595. shell_HeapBlockFetch(&64+(
  2596. shell_WindowCountIcons(x%)*32)):v%!0=x%:
  2597. &400CC,,v%:v%?38=gB%:_shell_open_behind%=v%!28:ZB%=v%!28:
  2598. &400C3,,v%:
  2599. &400C1,,v%+4
  2600. x%<>n%
  2601. shell_UpdateWindowHandle(x%,n%):x%=n%
  2602. shell_OpenWindow(n%,0,ZB%)
  2603. shell_HeapBlockReturn(v%):
  2604. shell_WindowMoveInStack(b%,CA%):
  2605. aB%,MD%:
  2606. CA%<-2
  2607. CA%>-1
  2608. 99,"Invalid action"
  2609. shell_HeapBlockFetch(256):aB%!0=b%:
  2610. &400CB,,aB%:aB%!28=CA%:
  2611. &400E7,2,aB%,b%
  2612. ,,MD%:
  2613. &400C7,0,aB%:
  2614. shell_HeapBlockReturn(aB%):
  2615. MD%=_U%!&94
  2616. *_Q%!28=CA%:
  2617. shell_OpenWindow(b%,0,CA%)
  2618. shell_Window_GetTopPaneDepth(b%):=
  2619. shell_Window_GetPaneDepth(b%,2)
  2620. shell_Window_GetBottomPaneDepth(b%):=
  2621. shell_Window_GetPaneDepth(b%,4)
  2622. shell_Window_GetPaneDepth(b%,HI%):
  2623. A$,a%,WA%,gC%,FE%,S$:
  2624. DA%,hC%,i%,w%,FC%:
  2625. OB%:WA%=0:FE%=0:gC%=
  2626. shell_GetWindowIdentifier(b%):a%=
  2627. Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  2628. a%>=0
  2629. Evnts_GetEvntListOffset(A$,WA%,_EVNTS_PANES_ANCHOR%,_EVNTS_PANES_REC_SIZE%,
  2630. )>-1:a%=_m_Evnts_LastEvntOffset%:i%=!_EVNTS_PANES_ANCHOR%+a%:OB%=i%!20:
  2631. OB%=HI%
  2632. hC%=i%!16:OB%=i%!20:w%=!_EVNTS_PANES_DATA%:S$=$(w%+hC%):DA%=
  2633. shell_GetWindowHandleList(S$):FC%=!DA%:_c_Evnts_PaneBlk%!0=FC%:
  2634. &400CB,,_c_Evnts_PaneBlk%:
  2635. FE%=0
  2636. P0FE%=_c_Evnts_PaneBlk%!16-_c_Evnts_PaneBlk%!8
  2637. :WA%+=1:
  2638. :=FE%
  2639. shell_WindowCentreOnPointer(x%):
  2640. v%,fD%,FB%,GB%:fD%=
  2641. shell_HeapBlockFetch(20):
  2642. &400CF,,fD%:_%=
  2643. shell_HeapBlockFetch(36):_%!0=x%:
  2644. &400CB,,_%:FB%=(_%!4-_%!&C)/2:GB%=(_%!16-_%!8)/2:
  2645. shell_WindowMoveTo(x%,fD%!0+FB%,fD%!4-GB%)
  2646. shell_HeapBlockReturn(_%):
  2647. shell_HeapBlockReturn(fD%):
  2648. shell_WindowCentreOnScreen(x%):
  2649. v%,GE%,HE%,aA%,UA%,rD%,ZC%:
  2650. &20035,-1,4
  2651. ,,rD%:
  2652. &20035,-1,5
  2653. ,,ZC%:
  2654. &20035,-1,&B
  2655. ,,GE%:
  2656. &20035,-1,&C
  2657. ,,HE%:GE%=GE%<<rD%:HE%=HE%<<ZC%:_%=
  2658. shell_HeapBlockFetch(36):_%!0=x%:
  2659. &400CB,,_%:aA%=(_%!&C-_%!4)
  2660. }eUA%=(_%!16-_%!8):
  2661. shell_WindowMoveTo(x%,(GE%/2)-(aA%/2),(HE%-UA%)/2):
  2662. shell_HeapBlockReturn(_%):
  2663. _shell_Icons_Init:_c_Icons_IconDragType%=5:_c_Icons_DragBBoxXMin%=0:_c_Icons_DragBBoxYMin%=0:_c_Icons_DragBBoxXMax%=&7FFFFFFF:_c_Icons_DragBBoxYMax%=&7FFFFFFF:_c_Icons_DragFlags%=&85:_c_Icons_IconOverFlowMess$="SHELLMSG12"
  2664. _c_Icons_NotASpriteIconMess$="SHELLMSG19":_c_Icons_WimpColourRangeMess$="SHELLMSG24":_c_Icons_MinWimpColour%=0:_c_Icons_MaxWimpColour%=&F:
  2665. _c_Icon_SetIconStateBlk%16:
  2666. _c_Icon_GetIconStateBlk%40:
  2667. _c_Icon_GetCaretPositionBlk%24
  2668. %_m_Icons_AllowWritableDrags%=
  2669. shell_IconSetFGColour(b%,g%,gB%):
  2670. gB%<_c_Icons_MinWimpColour%
  2671. gB%>_c_Icons_MaxWimpColour%
  2672. shell_MessageOneArg(_c_Icons_WimpColourRangeMess$,"PROCshell_IconSetFGColour")
  2673. shell_IconSetState(b%,g%,gB%<<24,&F000000):
  2674. shell_IconSetBGColour(b%,g%,gB%):
  2675. gB%<_c_Icons_MinWimpColour%
  2676. gB%>_c_Icons_MaxWimpColour%
  2677. shell_MessageOneArg(_c_Icons_WimpColourRangeMess$,"PROCshell_IconSetBGColour")
  2678. shell_IconSetState(b%,g%,gB%<<28,&F0000000):
  2679. shell_IconUnselectable(b%,g%):
  2680. shell_IconSetUnselectable(b%,g%,1):
  2681. shell_IconSetState(b%,g%,aI%,bI%):_c_Icon_SetIconStateBlk%!0=b%:_c_Icon_SetIconStateBlk%!4=g%:_c_Icon_SetIconStateBlk%!8=aI%:_c_Icon_SetIconStateBlk%!&C=bI%:
  2682. &600CD,,_c_Icon_SetIconStateBlk%:
  2683. shell_IconSet(b%,g%,zA%):
  2684. zA%=0
  2685. shell_IconDeselect(b%,g%)
  2686. shell_IconSelect(b%,g%)
  2687. shell_IconSetSelected(d%,t%,zA%):
  2688. zA%=0
  2689. shell_IconDeselect(d%,t%)
  2690. shell_IconSelect(d%,t%)
  2691. Icons_GetState(b%,g%):_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
  2692. &400CE,,_c_Icon_GetIconStateBlk%:
  2693. shell_IconSelect(fC%,iC%):
  2694. shell_IconSetState(fC%,iC%,&200000,&200000):
  2695. shell_IconDeselect(fC%,iC%):
  2696. shell_IconSetState(fC%,iC%,0,&200000):
  2697. shell_IsIconSelected(fC%,iC%):
  2698. Icons_GetState(fC%,iC%):o%=_c_Icon_GetIconStateBlk%!24:h%=(o%
  2699. &200000):
  2700. e    bA%=
  2701. :=bA%
  2702. shell_IconPutValidation(b%,g%,NA$):
  2703. o%:_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
  2704. &400CE,,_c_Icon_GetIconStateBlk%:o%=_c_Icon_GetIconStateBlk%!24:
  2705. w&$(_c_Icon_GetIconStateBlk%!32)=NA$
  2706. shell_IconGetValidation(b%,g%):
  2707. O$,o%:
  2708. g%=-1
  2709. O$="":_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
  2710. &400CE,,_c_Icon_GetIconStateBlk%:o%=_c_Icon_GetIconStateBlk%!24:
  2711. _c_Icon_GetIconStateBlk%!32>0
  2712. O$=$(_c_Icon_GetIconStateBlk%!32)
  2713. shell_IconRedraw(b%,g%):
  2714. shell_IconSetState(b%,g%,0,0):
  2715. shell_IconGetCommand(IE%,LB$):
  2716. I%,R$:
  2717. IE%<=0
  2718.     R$=""
  2719. shell_StringUpperCase($IE%),";"+
  2720. shell_StringUpperCase(LB$)):
  2721.     R$=""
  2722. $(IE%+I%),
  2723. $(IE%+I%)+";",";")-1)
  2724. shell_IconGetFlags(b%,g%):
  2725. o%:_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
  2726. &400CE,,_c_Icon_GetIconStateBlk%:o%=_c_Icon_GetIconStateBlk%!24:=o%
  2727. shell_IconIsDraggable(b%,g%):
  2728. o%,j%,CB%,bA%:CB%=(1<<&D)+(1<<&E):o%=
  2729. shell_IconGetFlags(b%,g%):j%=(o%
  2730. CB%):
  2731. j%=CB%
  2732.     bA%=
  2733. :=bA%
  2734. shell_IconIsWritable(b%,g%):
  2735. o%,j%,CB%:CB%=1<<&F:o%=
  2736. shell_IconGetFlags(b%,g%):j%=(o%
  2737. CB%):
  2738. j%=CB%
  2739. shell_IconIsSprite(d%,t%):
  2740. o%,h%,bA%:o%=
  2741. shell_IconGetFlags(d%,t%):h%=(o%
  2742. 1<<1):
  2743. h%=(1<<1)
  2744.     bA%=
  2745. :=bA%
  2746. shell_IconHasCaret(b%,g%):
  2747. EB%,SA%,j%:
  2748. &400D3,,_c_Icon_GetCaretPositionBlk%:SA%=_c_Icon_GetCaretPositionBlk%!0:EB%=_c_Icon_GetCaretPositionBlk%!4:
  2749. (EB%=g%
  2750. SA%=b%)
  2751. shell_IconCreate(d%,dB%,NB%,RE%,x%,AF%,BF%,pI%,E$,XB%,aC%,O$):
  2752. uI%,n%,SC%,l%:l%=
  2753. shell_HeapBlockFetch(40):l%!0=d%:l%!4=dB%:l%!8=NB%:l%!&C=dB%+RE%:l%!16=NB%+x%:l%!20=pI%
  2754. BF%<<28
  2755. AF%<<24:
  2756. l%!20
  2757.     #uI%=
  2758. E$,","):l%!24=XB%:
  2759. O$<>""
  2760. 6SC%=
  2761. shell_HeapBlockFetch(
  2762. O$+1):$SC%=O$:l%!28=SC%
  2763. l%!28=-1
  2764. :l%!32=aC%
  2765. $(l%+24)=
  2766. E$,&B)
  2767. &400C2,,l%
  2768. shell_HeapBlockReturn(l%):=n%
  2769. shell_IconDelete(d%,t%):
  2770. shell_DoIconDelete(d%,t%,
  2771. shell_IconDelete2(d%,t%):
  2772. shell_DoIconDelete(d%,t%,
  2773. shell_DoIconDelete(d%,t%,wI%):
  2774. XA%,gA%,uA%,DB%:_c_Icon_GetIconStateBlk%!0=d%:_c_Icon_GetIconStateBlk%!4=t%:
  2775. &400CE,,_c_Icon_GetIconStateBlk%:
  2776. &8168A,,_c_Icon_GetIconStateBlk%+8:XA%=_c_Icon_GetIconStateBlk%!8:gA%=_c_Icon_GetIconStateBlk%!&C
  2777. uA%=_c_Icon_GetIconStateBlk%!16:DB%=_c_Icon_GetIconStateBlk%!20:
  2778. &400CE,,_c_Icon_GetIconStateBlk%:
  2779. shell_HeapBlockExists(_c_Icon_GetIconStateBlk%!28)
  2780. shell_HeapBlockReturn(_c_Icon_GetIconStateBlk%!28)
  2781. shell_HeapBlockExists(_c_Icon_GetIconStateBlk%!32)
  2782. shell_HeapBlockReturn(_c_Icon_GetIconStateBlk%!32)
  2783. &400C4,,_c_Icon_GetIconStateBlk%:
  2784. &400D1,d%,XA%,gA%,uA%,DB%
  2785. shell_IconRadioSelection(b%,TC%):
  2786. uH%,xB%,vH%,xH%:xB%=
  2787. shell_HeapBlockFetch(8):uH%=(TC%<<16)+(1<<21):xH%=(31<<16)+(1<<21):
  2788. &400D6,b%,xB%,xH%,uH%:vH%=!xB%:
  2789. shell_HeapBlockReturn(xB%):=vH%:|d
  2790. shell_IconPutData
  2791. shell_IconPutData(SA%,EB%,E$,U):
  2792. _U%!&64
  2793. "WimpExt_SetIconString",,,SA%,EB%,E$+
  2794. shell_IconGetData(SA%,EB%):
  2795. E$<>eA$
  2796. _c_Icon_GetIconStateBlk%!0=SA%:_c_Icon_GetIconStateBlk%!4=EB%:
  2797. &400CE,,_c_Icon_GetIconStateBlk%:
  2798. (_c_Icon_GetIconStateBlk%!24
  2799. (1<<8))<>0
  2800. E$>_c_Icon_GetIconStateBlk%!36
  2801. shell_MessageNoArgs(_c_Icons_IconOverFlowMess$)
  2802. :$(_c_Icon_GetIconStateBlk%!28)=E$
  2803. $(_c_Icon_GetIconStateBlk%+28)=
  2804. E$,&B)
  2805. shell_IconHasCaret(SA%,EB%)
  2806. shell_CaretSetPosition(SA%,EB%,-1,-1,-1,
  2807. (E$))
  2808. pa_c_Icon_GetIconStateBlk%!8=0:_c_Icon_GetIconStateBlk%!&C=0:
  2809. &400CD,,_c_Icon_GetIconStateBlk%
  2810. shell_IconPutDataNow(SA%,EB%,E$):_c_Icon_GetIconStateBlk%!0=SA%:_c_Icon_GetIconStateBlk%!4=EB%:
  2811. &400CE,,_c_Icon_GetIconStateBlk%:
  2812. (_c_Icon_GetIconStateBlk%!24
  2813. (1<<8))<>0
  2814. (E$)>_c_Icon_GetIconStateBlk%!36
  2815. shell_MessageNoArgs(_c_Icons_IconOverFlowMess$)
  2816. %$(_c_Icon_GetIconStateBlk%!28)=E$
  2817. $(_c_Icon_GetIconStateBlk%+28)=
  2818. E$,&B)
  2819. :_c_Icon_GetIconStateBlk%!8=0:_c_Icon_GetIconStateBlk%!&C=0:
  2820. &400CD,,_c_Icon_GetIconStateBlk%:
  2821. shell_EnsurePoll:
  2822. shell_IconNewSprite(b%,g%,M$):
  2823. KE%,EF%,FF%,GF%:_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
  2824. &400CE,,_c_Icon_GetIconStateBlk%:
  2825. (_c_Icon_GetIconStateBlk%!24
  2826. (1<<1))
  2827.     EF%=
  2828. (_c_Icon_GetIconStateBlk%!24
  2829.     FF%=
  2830. (_c_Icon_GetIconStateBlk%!24
  2831. (1<<8))
  2832.     GF%=
  2833. _c_Icon_GetIconStateBlk%!24
  2834. )$(_c_Icon_GetIconStateBlk%!32)="S"+M$
  2835. $(_c_Icon_GetIconStateBlk%!28)=M$:_c_Icon_GetIconStateBlk%!36=
  2836. :KE%=g%
  2837. &400C4,,_c_Icon_GetIconStateBlk%:_c_Icon_GetIconStateBlk%!4=_c_Icon_GetIconStateBlk%!8:_c_Icon_GetIconStateBlk%!8=_c_Icon_GetIconStateBlk%!&C:_c_Icon_GetIconStateBlk%!&C=_c_Icon_GetIconStateBlk%!16
  2838. _c_Icon_GetIconStateBlk%!16=_c_Icon_GetIconStateBlk%!20:_c_Icon_GetIconStateBlk%!20=_c_Icon_GetIconStateBlk%!24:$(_c_Icon_GetIconStateBlk%+24)=M$:
  2839. &400C2,,_c_Icon_GetIconStateBlk%
  2840. shell_IconRedraw(b%,KE%):=KE%
  2841. shell_IconGetData(b%,g%):
  2842. b%<-2
  2843. _U%!&64
  2844. "WimpExt_GetIcon",,,b%,g%
  2845. ,,,R$
  2846. _c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
  2847. &400CE,,_c_Icon_GetIconStateBlk%:
  2848. (_c_Icon_GetIconStateBlk%!24
  2849. (1<<8))<>0
  2850. %R$=$(_c_Icon_GetIconStateBlk%!28)
  2851. R$=$(_c_Icon_GetIconStateBlk%+28)
  2852. shell_IconMove2(b%,g%,MG%,NG%):_c_Icon_GetIconStateBlk%!0=b%:_c_Icon_GetIconStateBlk%!4=g%:
  2853. &400CE,,_c_Icon_GetIconStateBlk%:_c_Icon_GetIconStateBlk%!8+=MG%:_c_Icon_GetIconStateBlk%!16+=MG%:_c_Icon_GetIconStateBlk%!&C+=NG%
  2854. _c_Icon_GetIconStateBlk%!20+=NG%:g%=
  2855. shell_IconMove(b%,g%,_c_Icon_GetIconStateBlk%!8,_c_Icon_GetIconStateBlk%!&C,_c_Icon_GetIconStateBlk%!16,_c_Icon_GetIconStateBlk%!20):=g%
  2856. shell_IconResize(d%,t%,XA%,gA%,uA%,DB%):=
  2857. shell_IconMove(d%,t%,XA%,gA%,uA%,DB%)
  2858. shell_IconMove(d%,t%,XA%,gA%,uA%,DB%):
  2859. KA%,nJ%,bJ%,hB%,e%:
  2860. OG%,QG%,RG%,SG%:KA%=
  2861. shell_HeapBlockFetch(40):e%=
  2862. shell_HeapBlockFetch(40):!KA%=d%:KA%!4=t%:
  2863. &400CE,,KA%:!e%=d%:e%!4=t%:
  2864. &400CE,,e%:
  2865. &8168A,,e%+8:SI%=KA%!24:HF%=KA%+28
  2866. OG%=SI%:QG%=HF%!0:RG%=HF%!4:SG%=HF%!8:hB%=KA%!8-e%!8:
  2867. &400C4,,KA%:
  2868. &400D1,!KA%,KA%!8-hB%,KA%!&C-hB%,KA%!16+hB%,KA%!20+hB%:t%=
  2869. shell_CreateIcon2(d%,XA%,gA%,uA%,DB%,OG%,QG%,RG%,SG%,hB%):
  2870. shell_HeapBlockReturn(KA%):
  2871. shell_HeapBlockReturn(e%):=t%
  2872. shell_CreateIcon2(n%,XA%,gA%,uA%,DB%,o%,VI%,eI%,fI%,hB%):
  2873. EC%,ZA%,J$,q$,dB%,NB%:ZA%=
  2874. shell_HeapBlockFetch(60):!ZA%=n%:ZA%!20=o%:ZA%!24=VI%:ZA%!28=eI%:ZA%!32=fI%:J$="":q$="":
  2875. 256J$=$(ZA%!24)
  2876. J$=$(ZA%+24)
  2877. %(q$=
  2878. shell_IconGetCommand(ZA%!28,"S")
  2879. q$=$(ZA%+24)
  2880. shell_GetMinXY(o%,J$,q$):
  2881. uA%-XA%<dB%
  2882. uA%=XA%+dB%
  2883. DB%-gA%<NB%
  2884. DB%=gA%+NB%
  2885. ZA%!4=XA%:ZA%!8=gA%:ZA%!&C=uA%:ZA%!16=DB%:
  2886. &400C2,,ZA%
  2887. &400D1,!ZA%,ZA%!4-hB%,ZA%!8-hB%,ZA%!&C+hB%,ZA%!16+hB%:
  2888. &400D3,,ZA%:
  2889. !ZA%=n%:
  2890. ZA%!4=EC%:
  2891. &400D2,n%,EC%,0,0,-1,0
  2892. shell_HeapBlockReturn(ZA%):=EC%
  2893. shell_IconSlab(AE%,d%,t%):
  2894. e%:e%=
  2895. shell_HeapBlockFetch(50):e%!8=AE%:e%!&C=d%:e%!16=t%:
  2896. &81680,,e%:e%!8=0:
  2897. &81680,,e%:
  2898. shell_HeapBlockReturn(e%):
  2899. shell_IconSetButtonType(d%,t%,UC%):
  2900. UC%=&C
  2901. UC%=&D
  2902. shell_MessageOneArg("SHELLMSG23","PROCshell_IconSetButtonType")
  2903. UC%<0
  2904. UC%>&F
  2905. shell_MessageOneArg("SHELLMSG22","PROCshell_IconSetButtonType")
  2906. shell_IconSetState(d%,t%,UC%<<&C,&F000):
  2907. shell_IconSetESG(d%,t%,TC%):
  2908. TC%<0
  2909. TC%>31
  2910. shell_MessageOneArg("SHELLMSG25","PROCshell_IconSetESG")
  2911. shell_IconSetState(d%,t%,TC%<<16,&1F0000):
  2912. shell_IconSetText(d%,t%,CA%):
  2913. CA%<>0
  2914. CA%=1<<0
  2915. shell_IconSetState(d%,t%,CA%,1<<0):
  2916. shell_IconSetSprite(b%,g%,CA%):
  2917. CA%<>0
  2918. CA%=1<<1
  2919. shell_IconSetState(b%,g%,CA%,1<<1):
  2920. shell_IconSetBorder(b%,g%,CA%):
  2921. CA%<>0
  2922. CA%=1<<2
  2923. shell_IconSetState(b%,g%,CA%,1<<2):
  2924. shell_IconSetHCentred(d%,t%,CA%):
  2925. shell_IconSetState(d%,t%,0,1<<9):
  2926. CA%<>0
  2927. CA%=1<<3
  2928. shell_IconSetState(d%,t%,CA%,1<<3):
  2929. shell_IconSetVCentred(d%,t%,CA%):
  2930. CA%<>0
  2931. CA%=1<<4
  2932. shell_IconSetState(d%,t%,CA%,1<<4):
  2933. shell_IconSetFilled(d%,t%,CA%):
  2934. CA%<>0
  2935. CA%=1<<5
  2936. shell_IconSetState(d%,t%,CA%,1<<5):
  2937. shell_IconSetUsesOutlineFont(d%,t%,CA%):
  2938. CA%<>0
  2939. CA%=1<<6
  2940. shell_IconSetState(d%,t%,CA%,1<<6):
  2941. shell_IconSetRightJust(d%,t%,CA%):
  2942. shell_IconSetHCentred(d%,t%,0):
  2943. CA%<>0
  2944. CA%=1<<9
  2945. shell_IconSetState(d%,t%,CA%,1<<9):
  2946. shell_IconSetLeftJust(d%,t%):
  2947. shell_IconSetHCentred(d%,t%,0):
  2948. shell_IconSetRightJust(d%,t%,0):
  2949. shell_IconSetUnselectable(d%,t%,zA%):
  2950. zA%<>0
  2951. zA%=1<<22
  2952. shell_IconSetState(d%,t%,zA%,1<<22):
  2953. zA%<>0
  2954. shell_IconHasCaret(d%,t%)
  2955. &400D2,-1
  2956. shell_IconSelectAll(d%):
  2957. e%,I%:e%=
  2958. shell_HeapBlockFetch(&7D0):I%=e%+64:!e%=d%:e%!8=1<<21:e%!&C=1<<21:
  2959. &400D6,!e%,I%,5<<21,0<<21:
  2960. !I%>-1:e%!4=!I%:
  2961. &400CD,,e%:I%+=4:
  2962. shell_HeapBlockReturn(e%):
  2963. shell_IconDeselectAll(d%):
  2964. e%,I%:e%=
  2965. shell_HeapBlockFetch(&7D0):I%=e%+64:!e%=d%:e%!8=0:e%!&C=1<<21:
  2966. &400D6,!e%,I%,5<<21,1<<21:
  2967. !I%>-1:e%!4=!I%:
  2968. &400CD,,e%:I%+=4:
  2969. shell_HeapBlockReturn(e%):
  2970. shell_IconSetSpriteArea(o%,gD%,rI%):
  2971. 3)=2)
  2972. 256)<>0)
  2973. gD%!4=rI%
  2974. shell_IconGetSelectedIcons(d%,TC%,
  2975. KA%):
  2976. TG%:TG%=(TC%<<16)+(1<<21):
  2977. &400D6,d%,KA%,TG%,(TC%<<16)+(1<<21):
  2978. shell_IconIndirSize(WB%,o%,gD%,X%):
  2979. UB%,UG%,m%,aE%:
  2980. &800100)=256
  2981. "UB%=gD%!8:
  2982. (gD%!4<>-1)
  2983. AUG%=gD%!4:
  2984. #X%=WB%+UG%:m%=0:
  2985. :aE%=
  2986. #X%:m%+=1:
  2987. aE%<32:UB%+=+m%
  2988. UB%=0
  2989. :=UB%
  2990. shell_IconGetBoundingBox(b%,g%,
  2991. mA%):
  2992. Icons_GetState(b%,g%):eA%=_c_Icon_GetIconStateBlk%!8:fA%=_c_Icon_GetIconStateBlk%!&C:lA%=_c_Icon_GetIconStateBlk%!16:mA%=_c_Icon_GetIconStateBlk%!20:
  2993. shell_IconDragBox(b%,g%):
  2994. A$,a%,i%,JA%,w%,B$,k%:
  2995. VG%,l%,C,D,WG%,o%,SC%,XG%,hA%,PA$:l%=
  2996. shell_HeapBlockFetch(&64+(
  2997. shell_WindowCountIcons(b%)*32)):!l%=b%:
  2998. &400CC,,l%:C=l%!4-l%!20:D=l%!16-l%!24:WG%=l%!68:l%!4=g%:
  2999. &400CE,,l%:l%!0=b%
  3000. l%!4=_c_Icons_IconDragType%:o%=l%!24:SC%=l%!32:l%!8=l%!8+C:l%!&C=l%!&C+D:l%!16=l%!16+C:l%!20=l%!20+D:l%!24=_c_Icons_DragBBoxXMin%:l%!28=_c_Icons_DragBBoxYMin%:l%!32=_c_Icons_DragBBoxXMax%:l%!36=_c_Icons_DragBBoxYMax%:
  3001. 6,&A1,28
  3002. ,,hA%:XG%=((hA%
  3003. 2)=2)
  3004. M-UI%=
  3005. shell_DataSaveDragInProgress
  3006. hA%=o%:
  3007. R&PA$=
  3008. shell_IconGetCommand(SC%,"s")
  3009. shell_OK(
  3010. shell_MessageNoArgs(_c_Icons_NotASpriteIconMess$))
  3011. PA$<>""
  3012. &42400,_c_Icons_DragFlags%,WG%,PA$,l%+8:UI%=
  3013. &400D0,,l%
  3014. shell_HeapBlockReturn(l%):
  3015. shell_HandleSlider(b%,g%):
  3016. shell_IconDragBox2(b%,g%):
  3017. l%,C,D,o%,SC%:l%=
  3018. shell_HeapBlockFetch(&64+(
  3019. shell_WindowCountIcons(b%)*32)):!l%=b%:
  3020. &400CC,,l%:C=l%!4-l%!20:D=l%!16-l%!24:l%!4=g%:
  3021. &400CE,,l%:l%!0=b%:l%!4=_c_Icons_IconDragType%:o%=l%!24:SC%=l%!32:l%!8=l%!8+C
  3022. l%!&C=l%!&C+D:l%!16=l%!16+C:l%!20=l%!20+D:l%!24=_c_Icons_DragBBoxXMin%:l%!28=_c_Icons_DragBBoxYMin%:l%!32=_c_Icons_DragBBoxXMax%:l%!36=_c_Icons_DragBBoxYMax%:
  3023. &400D0,,l%:
  3024. shell_HeapBlockReturn(l%):
  3025. shell_IconGetBGColour(d%,t%):
  3026. hD%,l%:l%=
  3027. shell_HeapBlockFetch(40):l%!0=d%:l%!4=t%:
  3028. &400CE,,l%:hD%=(l%!24>>28)
  3029. shell_HeapBlockReturn(l%):=hD%
  3030. shell_IconGetFGColour(d%,t%):
  3031. hD%,l%:l%=
  3032. shell_HeapBlockFetch(40):l%!0=d%:l%!4=t%:
  3033. &400CE,,l%:hD%=(l%!24>>24)
  3034. shell_HeapBlockReturn(l%):=hD%
  3035. shell_IconGetButtonType(b%,g%):
  3036. UC%,l%:l%=
  3037. shell_HeapBlockFetch(40):l%!0=b%:l%!4=g%:
  3038. &400CE,,l%:UC%=(l%!24>>&C)
  3039. shell_HeapBlockReturn(l%):=UC%
  3040. shell_IconEnsureVisible(b%,g%):
  3041. nB%,zB%,aG%:
  3042. bG%,cG%,dG%:
  3043. LF%,MF%,NF%,OF%:
  3044. PF%,QF%:
  3045. fG%,gG%:
  3046. RF%,SF%:
  3047. TF%,UF%:
  3048. g%>=0
  3049. shell_HeapBlockFetch(36):zB%=
  3050. shell_HeapBlockFetch(40):!nB%=b%:
  3051. &400CB,,nB%:aG%=nB%!4:bG%=nB%!8:cG%=nB%!&C:dG%=nB%!16:PF%=nB%!20:QF%=nB%!24:gG%=cG%-aG%:fG%=dG%-bG%:zB%!0=b%:zB%!4=g%:
  3052. &400CE,,zB%:LF%=zB%!8:MF%=zB%!&C:NF%=zB%!16:OF%=zB%!20
  3053. RF%=PF%:UF%=QF%:TF%=PF%+gG%:SF%=QF%-fG%:mC%=
  3054. shell_Window_GetBottomPaneDepth(b%)+8:HD%=
  3055. shell_Window_GetTopPaneDepth(b%)+8:
  3056. MF%<(SF%+mC%)
  3057. shell_WindowScrollBy(b%,0,MF%-SF%-mC%)
  3058. OF%>(UF%-HD%-mC%)
  3059. shell_WindowScrollBy(b%,0,OF%-UF%+HD%+mC%+&C)
  3060. NF%>TF%
  3061. shell_WindowScrollBy(b%,NF%-TF%,0)
  3062. LF%<RF%
  3063. shell_WindowScrollBy(b%,LF%-RF%,0)
  3064. shell_HeapBlockReturn(nB%):
  3065. shell_HeapBlockReturn(zB%)
  3066. shell_Icon_SetFont(b%,g%,FI%):
  3067. shell_IconSetUsesOutlineFont(b%,g%,
  3068. shell_IconSetState(b%,g%,FI%<<24,-&1000000):
  3069. shell_IconClearAllWritables(b%):
  3070. shell_IconSetAllWritables(b%,""):
  3071. shell_IconSetAllWritables(b%,aB$):
  3072. l%,f%,sA%:sA%=
  3073. shell_WindowCountIcons(b%):l%=
  3074. shell_HeapBlockFetch((sA%+1)*4):
  3075. &400D6,b%,l%,&40E000,&E000:f%=0:
  3076. l%!f%<>-1:
  3077. shell_IconPutData(b%,l%!f%,"",
  3078. ):f%+=4:
  3079. shell_HeapBlockReturn(l%):
  3080. shell_IconDisallowWritableDrags:_m_Icons_AllowWritableDrags%=
  3081. shell_IconAllowWritableDrags:_m_Icons_AllowWritableDrags%=
  3082. shell_IconWritableDragStatus:=_m_Icons_AllowWritableDrags%:B
  3083. _shell_ProgEvnts_Init:_m_ProgEvnts_DeskFontHandle%=-1:_m_ProgEvnts_DeskFontChangeHandlerFN$="":_m_ProgEvnts_PaletteChangeHandlerFN$="":_m_ProgEvnts_ModeChangeHandlerFN$="":_m_ProgEvnts_SaveDesktopHandlerFN$=""
  3084. _m_ProgEvnts_TaskInitialiseHandlerFN$="":_m_ProgEvnts_TaskCloseDownHandlerFN$="":_m_ProgEvnts_ShutdownHandlerFN$="":_m_ProgEvnts_PreQuitHandlerFN$="":=0
  3085. shell_AttachDeskFontChangeHandler(F$):
  3086. shell_OSModuleCheckVersion("UtilityModule",3.5)
  3087. F$<>""
  3088. ,_m_ProgEvnts_DeskFontChangeHandlerFN$=F$
  3089. shell_ProgEvnts_DeskFontChanged(II%):
  3090. k%:_m_ProgEvnts_DeskFontHandle%=II%:
  3091. _m_ProgEvnts_DeskFontChangeHandlerFN$<>""
  3092. ("FN"+_m_ProgEvnts_DeskFontChangeHandlerFN$+"("+
  3093. _m_ProgEvnts_DeskFontHandle%+")")
  3094. shell_AttachPaletteChangeHandler(F$):
  3095. F$<>""
  3096. 9_m_ProgEvnts_PaletteChangeHandlerFN$=F$:k%=
  3097. ("FN"+F$)
  3098. shell_ProgEvnts_PaletteChanged:
  3099. _m_ProgEvnts_PaletteChangeHandlerFN$<>""
  3100. ("FN"+_m_ProgEvnts_PaletteChangeHandlerFN$)
  3101. shell_AttachModeChangeHandler(F$):
  3102. F$<>""
  3103. 6_m_ProgEvnts_ModeChangeHandlerFN$=F$:k%=
  3104. ("FN"+F$)
  3105. shell_ProgEvnts_ModeChanged:
  3106. _m_ProgEvnts_ModeChangeHandlerFN$<>""
  3107. ("FN"+_m_ProgEvnts_ModeChangeHandlerFN$)
  3108. shell_AttachSaveDesktopHandler(F$):
  3109. F$<>""
  3110. !))_m_ProgEvnts_SaveDesktopHandlerFN$=F$
  3111. shell_ProgEvnts_SaveDesktop(u%):
  3112. _m_ProgEvnts_SaveDesktopHandlerFN$<>""
  3113. !=?_$=
  3114. ("FN"+_m_ProgEvnts_SaveDesktopHandlerFN$)+
  3115. (&A):
  3116. _$=""
  3117. !C$_$="Run "+
  3118. shell_GetAppDir+
  3119. &C,2,u%,_$,
  3120. shell_AttachTaskInitialiseHandler(F$):
  3121. F$<>""
  3122. !`,_m_ProgEvnts_TaskInitialiseHandlerFN$=F$
  3123. shell_ProgEvnts_TaskInitialise(VF%,DB$):
  3124. _m_ProgEvnts_TaskInitialiseHandlerFN$<>""
  3125. !qUk%=
  3126. ("FN"+_m_ProgEvnts_TaskInitialiseHandlerFN$+"("+
  3127. VF%+","+
  3128. (34)+DB$+
  3129. (34)+")")
  3130. shell_AttachTaskCloseDownHandler(F$):
  3131. F$<>""
  3132. +_m_ProgEvnts_TaskCloseDownHandlerFN$=F$
  3133. shell_ProgEvnts_TaskCloseDown(VF%):
  3134. _m_ProgEvnts_TaskCloseDownHandlerFN$<>""
  3135. ("FN"+_m_ProgEvnts_TaskCloseDownHandlerFN$+"("+
  3136. VF%+")")
  3137. shell_AttachShutdownHandler(F$):
  3138. F$<>""
  3139. &_m_ProgEvnts_ShutdownHandlerFN$=F$
  3140. shell_ProgEvnts_Shutdown:
  3141. _m_ProgEvnts_ShutdownHandlerFN$<>""
  3142. ("FN"+_m_ProgEvnts_ShutdownHandlerFN$)
  3143. shell_AttachPreQuitHandler(F$):
  3144. F$<>""
  3145. %_m_ProgEvnts_PreQuitHandlerFN$=F$
  3146. shell_ProgEvnts_PreQuit(_A%):
  3147. k%,e%,WF%,XF%,s%:
  3148. _m_ProgEvnts_PreQuitHandlerFN$<>""
  3149. shell_HeapBlockFetch(256):WF%=_A%!0:
  3150. 4:e%!s%=_Q%!s%:
  3151. s%:XF%=e%!4:
  3152. WF%<24
  3153. YF%=0
  3154. YF%=e%!20
  3155. Me%!&C=e%!8:
  3156. &400E7,19,e%,XF%:
  3157. ("FN"+_m_ProgEvnts_PreQuitHandlerFN$)<>0
  3158. _closedown%=
  3159. !e%=24:e%!24=508:
  3160. &400E7,8,e%,XF%:_closedown%=
  3161. shell_HeapBlockReturn(e%)
  3162. _shell_Debug_Init:=0
  3163. shell_TraceOn:_U%!&64=_U%!&64
  3164. 1<<9:
  3165. shell_BroadcastMessage(&43B00,"ShellDBug:TraceOn"):
  3166. shell_TraceOff:
  3167. (_U%!&64
  3168. (1<<9))
  3169. _U%!&64=_U%!&64
  3170. (1<<9)
  3171. shell_BroadcastMessage(&43B00,"ShellDBug:TraceOff"):
  3172. shell_TraceInit(AA$):
  3173. hA%,G$,D$:
  3174. AA$<>""
  3175. (AA$):_U%!44=hA%
  3176. shell_OSVarGetVal("Obey$Dir",1):G$=
  3177. shell_Leaf(D$),2):
  3178. shell_BroadcastMessage(&43B00,"ShellDBug:Init Debug messages from "+G$):
  3179. _U%!&64
  3180. _U%!&64=(_U%!&64
  3181. 1<<4)
  3182. shell_TraceIsOn:
  3183. _U%!&64
  3184. (1<<9)
  3185. shell_Tracef0(gA$):
  3186. shell_TraceIsOn=
  3187. _U%!44<>-1
  3188. hA%=_U%!44:
  3189. #hA%,gA$
  3190. _U%!&94>0
  3191. shell_BroadcastMessage(&43B00,"ShellDBug:Trace "+gA$)
  3192. shell_Tracef2(XB%):
  3193. ("MEDIT "+
  3194. ~XB%):
  3195. shell_TraceExit:
  3196. _U%!44<>-1
  3197. #(_U%!44):_U%!44=-1
  3198. _shell_OS_Init:_m_OS_VAR_BUFFER_SIZE%=256:
  3199. _m_OS_VAR_BUFFER%_m_OS_VAR_BUFFER_SIZE%:_m_OS_RiscOS_3_Found%=
  3200. shell_OSModuleCheckVersion("UtilityModule",3.1):=0
  3201. shell_RO3_Available:=_m_OS_RiscOS_3_Found%
  3202. shell_OSCheckVersion(L):=
  3203. shell_OSModuleCheckVersion("UtilityModule",L)
  3204. shell_OSModuleCheckVersion(BB$,L):
  3205. aC%,R$,j%:
  3206. ("Set Module$Check Y"):
  3207. ("RMEnsure "+BB$+" "+
  3208. L+" Set Module$Check N"):
  3209. 35,"Module$Check",_m_OS_VAR_BUFFER%,256,0,0
  3210. ,,aC%:_m_OS_VAR_BUFFER%?aC%=&D:
  3211. ("Unset Module$Check"):R$=$_m_OS_VAR_BUFFER%:
  3212. R$="N"
  3213. shell_OSVarExists(RA$):
  3214. &20023,RA$,_m_OS_VAR_BUFFER%,-1,0,0
  3215. shell_OSVarGetVal(RA$,Y):
  3216. SA$,F,QI%,s%:
  3217. &20023,RA$,_m_OS_VAR_BUFFER%,_m_OS_VAR_BUFFER_SIZE%,0,-3*(Y=-1)
  3218. ,,F,QI%:
  3219. F-1:SA$=SA$+
  3220. (_m_OS_VAR_BUFFER%?s%):
  3221. s%:=SA$
  3222. shell_OSReadCommandArg(Z):
  3223. ZF%,g$,a%:g$="":a%=0:
  3224. ZF%?a%<>0:g$+=
  3225. (ZF%?a%):a%+=1:
  3226. 1:g$=
  3227. 34)+1):g$=
  3228. 34)+2)
  3229. :=g$:B
  3230. _shell_Menus_Init:_c_Menu_MinMenuItems%=&A:_m_Menu_HandleLastOpened%=-1:_m_Menu_SubLastOpened%=-1:iG%=0:jG%=0:_m_WimpColMen_Handle%=-1:=0
  3231. shell_OpenMenu(PA%,QA%,q%):
  3232. shell_ExReg_FontMenu_Loaded
  3233. shell_FontMenu_GetHandle
  3234. &400D4,,q%,PA%-64,QA%
  3235. _Q%!0=PA%:_Q%!4=QA%:
  3236. &65BC5,q%,_Q%
  3237. _Q%!0=PA%:_Q%!4=QA%:
  3238. &65BC5,q%,_Q%
  3239. :_m_Menu_HandleLastOpened%=q%:iG%=PA%:jG%=QA%:_U%!52=_U%!28:_U%!56=_U%!32:
  3240. shell_MenuLastXPos:=iG%
  3241. shell_MenuLastYPos:=jG%
  3242. shell_MenuLastHandle:=_m_Menu_HandleLastOpened%
  3243. shell_MenuSubLastHandle:=_m_Menu_SubLastOpened%
  3244. shell_MenuAttachDbox(x$):
  3245. "Menu_SetSubHandle",_U%!8,
  3246. shell_MenuString(x$),1:
  3247. shell_MenuWarning(_Q%):
  3248. pH%,PA%,QA%,k%,_temp%,rA%,K$,lC%,e%:
  3249. P$:PA%=_Q%!24:QA%=_Q%!28:_U%!264=0:
  3250. _U%!20<>0
  3251. shell_DeleteWindow(_U%!20)
  3252. _Q%!20
  3253. _U%!&E4:
  3254. shell_WindowRetitle(_U%!&E4,
  3255. shell_MessageNoArgs("warning")):
  3256. shell_IconPutData(_U%!&E4,1,
  3257. shell_MessageNoArgs("SHELLMSG07"),0):
  3258. &400E8,,_U%!&E4,PA%,QA%
  3259. shell_MenuGetItemAddress(_m_Menu_HandleLastOpened%,_Q%+32):
  3260. shell_HeapBlockExists(lC%!4)
  3261. shell_MenuWarnDBox(lC%,PA%,QA%)
  3262. shell_HeapBlockFetch(32):
  3263. &45BC4,_m_Menu_HandleLastOpened%,_Q%+32
  3264. ,,e%:
  3265. shell_FindMenuWarnEvent(e%!8,K$,P$):
  3266. shell_HeapBlockReturn(e%):
  3267. shell_MenuWarnSubMenu(_Q%!20,PA%,QA%,K$,P$)
  3268. shell_MenuWarnDBox(XB%,PA%,QA%):
  3269. h%,x%,k%:
  3270. 9h%=XB%!4:
  3271. shell_CreateWindow($h%!0,x%):
  3272. $h%!4<>""
  3273. ("FN"+$h%!4+"("+
  3274. x%+")")
  3275. $h%!8<>""
  3276. ("FN"+$h%!8+"("+
  3277. x%+")")
  3278. &400E8,,x%,PA%,QA%:_U%!20=x%:
  3279. shell_MenuWarnSubMenu(NE%,PA%,QA%,K$,P$):
  3280. k%,h%,jD%,m%:_shell_FontMenuSelFN$=P$:
  3281. shell_HeapBlockExists(_U%!&E0)
  3282. shell_HeapBlockReturn(_U%!&E0)
  3283. C_U%!&E0=
  3284. shell_HeapBlockFetch(
  3285. K$+1):h%=_U%!&E0:$h%=K$:
  3286. K$<>""
  3287. ("FN"+K$+"(_U%!52,_U%!56)")
  3288. NE%=_U%!&FC
  3289. shell_HeapBlockExists(_U%!256)
  3290. shell_HeapBlockReturn(_U%!256)
  3291. m%=0:
  3292. :m%+=4:
  3293. !(_Q%+32+m%)=-1:m%+=4:_U%!256=
  3294. shell_HeapBlockFetch(m%):h%=_U%!256:m%=0:
  3295. :h%!m%=!(_Q%+32+m%):m%+=4:
  3296. !(_Q%+32+m%)=-1:h%!m%=!(_Q%+32+m%):h%=_U%!256:
  3297. "FontMenu_Select",
  3298. shell_FontMenuGetLastSelectedFont,_U%!260
  3299. ,jD%:_U%!264=1
  3300. jD%<>_U%!&FC
  3301. shell_FontMenuUpdatePtr(jD%):_U%!&FC=jD%:NE%=jD%
  3302. _U%!264=0
  3303. &400E8,,NE%,PA%,QA%:_m_Menu_SubLastOpened%=NE%:
  3304. shell_AttachSubMenu(cC%,bC%,K$):
  3305. &45BCE,cC%,bC%:
  3306. K$<>""
  3307. &45BCC,,
  3308. shell_EventListMenuWarn(cC%,bC%,K$,"")
  3309. shell_MenuNew(JB$,V$,bF%):
  3310. bF%<_c_Menu_MinMenuItems%
  3311. bF%=_c_Menu_MinMenuItems%
  3312. &45BC1,,JB$,bF%
  3313. shell_MenuList_AddMenu(q%,V$):=q%
  3314. shell_MenuAdd(n%,kA$,P$):
  3315. P$<>""
  3316. &45BC2,n%,kA$,P$
  3317. &45BC2,n%,kA$
  3318. :=MA%
  3319. shell_MenuTick(MA%,zA%):
  3320. &45BC9,MA%,zA%:
  3321. shell_MenuTickItem(MA%):
  3322. shell_MenuTick(MA%,1):
  3323. shell_MenuUnTickItem(MA%):
  3324. shell_MenuTick(MA%,0):
  3325. shell_MenuTickOnly1(q%,LA%):
  3326. &45BD1,q%,LA%:
  3327. shell_MenuTickOnly2(MA%):
  3328. &45BD1,MA%:
  3329. shell_MenuTickAllItems(q%):
  3330. shell_MenuTick(q%,
  3331. shell_MenuUntickAllItems(q%):
  3332. shell_MenuTick(q%,
  3333. shell_MenuShade(n%,zA%):
  3334. &45BCB,n%,zA%:
  3335. shell_MenuShadeAllItems(q%):
  3336. shell_MenuShade(q%,
  3337. shell_MenuUnshadeAllItems(q%):
  3338. shell_MenuShade(q%,
  3339. shell_MenuDotted(MA%,zA%):
  3340. &45BCA,MA%,zA%:
  3341. shell_MenuColours(MA%,AF%,BF%):
  3342. &45BD0,MA%,AF%,BF%:
  3343. shell_MenuWritable(MA%,zA%,UB%,NA$):
  3344. &45BCD,MA%,zA%,UB%,NA$:
  3345. shell_MenuPutData(MA%,E$):
  3346. &45BC8,MA%,E$:
  3347. shell_MenuSortItems(AA%,TA$,ZI%,PD%,cF%):
  3348. pC%:pC%=
  3349. shell_MenuGetNrItems(AA%)-1:_shell_MS_handle%=AA%:
  3350. cF%>pC%
  3351. cF%=pC%
  3352. TA$=""
  3353. TA$="_shell_MS_comp"
  3354. &406C0:
  3355. shell_QuickSort(TA$,"_shell_MS_swap",ZI%,PD%,cF%):
  3356. &406C1:
  3357. shell_MenuGetNrItems(q%):
  3358. AA%,j%,oG%:
  3359. &45BC7,q%
  3360. AA%:AA%+=28:
  3361. :j%=(AA%?0
  3362. &80):oG%+=1:AA%+=24:
  3363. j%:=oG%
  3364. shell_MenuGetNrDotted(q%):
  3365. AA%,j%,OE%:
  3366. &45BC7,q%
  3367. AA%:AA%+=28:
  3368. :j%=(AA%?0
  3369. &80):
  3370. (AA%?0
  3371. OE%+=1
  3372. AA%+=24:
  3373. j%=-1:=OE%
  3374. shell_MenuGetItemHandler(q%,eF%):
  3375. iB%,f%,UA$:iB%=
  3376. shell_HeapBlockFetch(8):iB%!0=eF%:iB%!4=-1:
  3377. &45BC4,q%,iB%
  3378. UA$=""
  3379. UA$=$(f%)
  3380. shell_HeapBlockReturn(iB%):=UA$
  3381. shell_MenuGetItemText(q%,eF%):
  3382. iB%,f%,J$:iB%=
  3383. shell_HeapBlockFetch(8):iB%!0=eF%:iB%!4=-1:
  3384. &45BC4,q%,iB%
  3385. ,,f%:J$=$(f%!&C):
  3386. shell_HeapBlockReturn(iB%):=J$
  3387. shell_MenuGetItemHandle(q%,xB%):
  3388. f%,MA%,o%:f%=
  3389. shell_HeapBlockFetch(40):
  3390. &65BC4,q%,xB%
  3391. ,,f%;o%:
  3392. %@    MA%=0
  3393. MA%=f%!8
  3394. shell_HeapBlockReturn(f%):=MA%
  3395. shell_MenuGetItemHeight(q%):
  3396. &45BC7,q%
  3397. AA%:=AA%!20
  3398. shell_MenuCalculateHeight(q%):
  3399. UA%:UA%=
  3400. shell_MenuGetNrItems(q%)*
  3401. shell_MenuGetItemHeight(q%):=UA%+(
  3402. shell_MenuGetNrDotted(q%)*24)
  3403. shell_MenuDelete(q%,lI%):
  3404. f%,HA%,r%:
  3405. q%<>0
  3406. &65BC3,q%,lI%:
  3407. shell_MenuList_DeleteMenu(q%)
  3408. shell_MenuOpenLast:
  3409. &65BC5,_m_Menu_HandleLastOpened%:
  3410. shell_MenuCloseAll:
  3411. &400D4,,-1:
  3412. shell_MenuMakeFromFile(l$,V$,OB$,AA$):
  3413. q%,X%,C$,k%,pC%:
  3414. shell_FileExists(AA$)
  3415. (AA$):pC%=0:
  3416. C$<>""
  3417. C$,1)<>"#"
  3418. pC%+=1
  3419. #X%=0:q%=
  3420. shell_MenuNew(l$,V$,pC%):
  3421. C$<>""
  3422. C$,1)<>"#"
  3423. shell_MenuAdd(q%,C$,OB$)
  3424. shell_AttachColourSubMenu(MA%,q%,QB$):
  3425. shell_AttachSubMenu(MA%,q%,QB$):
  3426. _shell_MenuList_Init:_c_MenuList_HeaderSize%=4:_c_MenuList_ListTerm%=-1:_m_MenuList_DataBlk%=-1:_m_MenuList_NrMenus%=0:=0
  3427. shell_MenuList_GetSysHandle(V$):
  3428. f%,q%,oA%:
  3429. _m_MenuList_DataBlk%<>-1
  3430. yf%=0:
  3431. _m_MenuList_DataBlk%!f%<>_c_MenuList_ListTerm%:oA%=_m_MenuList_DataBlk%!f%:
  3432. $(oA%+_c_MenuList_HeaderSize%)=V$
  3433. q%=!oA%
  3434. :f%+=4:
  3435. shell_MenuList_GetIdentifier(q%):
  3436. f%,V$,oA%:
  3437. _m_MenuList_DataBlk%<>-1
  3438. `f%=0:
  3439. _m_MenuList_DataBlk%!f%<>_c_MenuList_ListTerm%:oA%=_m_MenuList_DataBlk%!f%:
  3440. oA%!0=q%
  3441. %V$=$(oA%+_c_MenuList_HeaderSize%)
  3442. :f%+=4:
  3443. shell_MenuList_AddMenu(q%,V$):
  3444. f%,oA%:
  3445. _m_MenuList_DataBlk%=-1
  3446. shell_MenuList_CreateNewList
  3447. _m_MenuList_DataBlk%=
  3448. shell_HeapBlockExtend(_m_MenuList_DataBlk%,4)
  3449. :f%=_m_MenuList_NrMenus%*4:_m_MenuList_DataBlk%!f%=
  3450. shell_HeapBlockFetch(_c_MenuList_HeaderSize%+
  3451. (V$)+1):oA%=_m_MenuList_DataBlk%!f%:oA%!0=q%:$(oA%+_c_MenuList_HeaderSize%)=V$:_m_MenuList_NrMenus%+=1
  3452. &:I_m_MenuList_DataBlk%!(_m_MenuList_NrMenus%*4)=_c_MenuList_ListTerm%:
  3453. shell_MenuList_DeleteMenu(q%):
  3454. f%,oA%:
  3455. _m_MenuList_NrMenus%>0
  3456. _m_MenuList_NrMenus%=1
  3457. shell_MenuList_DestroyList
  3458. f%=0:
  3459. _m_MenuList_DataBlk%!f%<>_c_MenuList_ListTerm%:oA%=_m_MenuList_DataBlk%!f%:
  3460. oA%!0=q%
  3461. &P-$(oA%+_c_MenuList_HeaderSize%)="":oA%!0=0
  3462. :f%+=4:
  3463. shell_MenuList_SaveList(c$):
  3464. f%,V$,oA%,u%:
  3465. _m_MenuList_DataBlk%<>-1
  3466. f%=0:u%=
  3467. (c$):
  3468. _m_MenuList_DataBlk%!f%<>_c_MenuList_ListTerm%:oA%=_m_MenuList_DataBlk%!f%:V$=$(oA%+_c_MenuList_HeaderSize%):
  3469. #u%,V$:f%+=4:
  3470. #u%,"":
  3471. ("SetType "+c$+" FFF")
  3472. shell_MenuList_CreateNewList:
  3473. shell_MenuList_DestroyList:_m_MenuList_DataBlk%=
  3474. shell_HeapBlockFetch(8):_m_MenuList_DataBlk%!4=_c_MenuList_ListTerm%:
  3475. shell_MenuList_DestroyList:
  3476. _m_MenuList_DataBlk%<>-1
  3477. shell_HeapBlockReturn(_m_MenuList_DataBlk%):_m_MenuList_DataBlk%=-1:_m_MenuList_NrMenus%=0
  3478. _shell_StaticList_Init:vA%=0:=0
  3479. shell_StaticWindowListAddHandle(n%):
  3480. a%,m%,h%:
  3481. vA%=0
  3482. 2vA%=
  3483. shell_HeapBlockFetch(8):vA%!0=n%:vA%!4=-1
  3484. shell_SearchStatic(n%):
  3485. a%=-1
  3486. shell_SearchStatic(0):
  3487. a%=-1
  3488. Ym%=0:
  3489. vA%!m%<>-1:m%+=4:
  3490. :vA%=
  3491. shell_HeapBlockExtend(vA%,4):h%=vA%+m%:h%!0=n%:h%!4=-1
  3492. h%=vA%+a%:h%!0=n%
  3493. shell_RemoveStaticWindowFromList(b%):
  3494. a%,m%,y%:y%=
  3495. :m%=0:
  3496. vA%>0
  3497. vA%!m%=b%
  3498. :vA%!m%=0
  3499. :m%+=4:
  3500. vA%!m%<>-1
  3501. shell_UpdateStaticWindowHandle(sB%,HB%):
  3502. a%:a%=
  3503. shell_SearchStatic(sB%):vA%!a%=HB%:
  3504. shell_SearchStatic(n%):
  3505. y%,m%:y%=-1:m%=0:
  3506. vA%<>0
  3507. vA%!m%<>-1:
  3508. vA%!m%=n%
  3509.     y%=m%
  3510. :m%+=4:
  3511. shell_IsWindowStatic(b%):
  3512. -1,-2:j%=
  3513. _U%!20:j%=
  3514. shell_SearchStatic(b%)>-1
  3515. _shell_DataLoad_Init:_c_DLoad_ICONBAR_ICON%=-1:_c_DLoad_RecSize%=24:_m_DLoad_FileType%=-1:_m_DLoad_FileName$="":_m_DLoad_DestIconHandle%=-1:_m_DLoad_DestWindowHandle%=-1:_m_DLoad_WindowName$="":_m_DLoad_CmdLineFileName$=
  3516. shell_OSReadCommandArg(1)
  3517. _m_DLoad_CmdLineFileName$<>""
  3518. 'Z`_m_DLoad_LoadPending%=
  3519. :_m_DLoad_CmdLineFileType%=
  3520. shell_FileType(_m_DLoad_CmdLineFileName$)
  3521. _m_DLoad_LoadPending%=
  3522. :_m_DLoad_CmdLineFileType%=-1
  3523. _m_DLoad_Anchor%4:
  3524. _m_DLoad_DataBlk%4:!_m_DLoad_Anchor%=0:!_m_DLoad_DataBlk%=0:_EVNTS_DATALOAD_DATAOFFSET%=0:
  3525. _m_DLoad_WORKBUFFER%4:=0
  3526. DataLoad_GetAnchor:=_m_DLoad_Anchor%
  3527. shell_AttachDataLoad(b%,g%,jA%,e$,sG%):
  3528. c%,a%,A$,p%,YA%:
  3529. SJ%,m%,UJ%,VJ%,QE%:
  3530. b%=_IBAR_RIGHT%
  3531. b%=_IBAR_LEFT%
  3532. _c_DLoad_ICONBAR_ICON%=g%
  3533. jA%=jA%
  3534. 1<<31
  3535. jA%=-1
  3536. shell_GetWindowIdentifier(b%):a%=
  3537. Evnts_GetEvntListOffset3(A$,g%,jA%,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
  3538. ):c%=!_m_DLoad_Anchor%:YA%=c%!4:c%+=a%:$c%=A$:c%!&C=g%:c%!16=jA%:
  3539. !_m_DLoad_DataBlk%=0
  3540. 5!_m_DLoad_DataBlk%=
  3541. shell_HeapBlockFetch(
  3542. (e$)+1)
  3543. :p%=c%+20:
  3544. Evnts_UpdateData(p%,_m_DLoad_DataBlk%,_m_DLoad_DataOffset%,e$):
  3545. _m_DLoad_CmdLineFileName$<>""
  3546. _m_DLoad_LoadPending%
  3547. 1<<31
  3548. QE%=jA%
  3549. 1<<31
  3550. QE%=jA%
  3551. _m_DLoad_CmdLineFileType%=QE%
  3552. shell_FileExists(_m_DLoad_CmdLineFileName$)
  3553. shell_MessageSendDataLoad(QE%,_m_DLoad_CmdLineFileName$):_m_DLoad_LoadPending%=
  3554. shell_EvntHandle_DataLoad(aB%,ND%):_m_DLoad_FileType%=aB%!40:_m_DLoad_DestWindowHandle%=aB%!20:_m_DLoad_DestIconHandle%=aB%!24:_m_DLoad_FileName$=
  3555. shell_GetString(aB%+44):
  3556. DataLoad_OKToLoad(ND%)
  3557. DataLoad_ProcessDClickLoad
  3558. _m_DLoad_WindowName$=
  3559. shell_GetWindowIdentifier(_m_DLoad_DestWindowHandle%):
  3560. DataLoad_ProcessDragLoad
  3561. DataLoad_ProcessDClickLoad:
  3562. a%:a%=
  3563. Evnts_GetEvntListOffset("iconbar",_c_DLoad_ICONBAR_ICON%,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
  3564. DataLoad_ProcessLoadRequest:
  3565. DataLoad_ProcessDragLoad:
  3566. a%,tI%,lB%,f%:c%=!_m_DLoad_Anchor%:tI%=c%!0:a%=
  3567. Evnts_GetEvntListOffset3(_m_DLoad_WindowName$,_m_DLoad_DestIconHandle%,-1,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
  3568. a%=-1
  3569. Evnts_GetEvntListOffset3(_m_DLoad_WindowName$,_m_DLoad_DestIconHandle%,-1
  3570. (1<<31),_m_DLoad_Anchor%,_c_DLoad_RecSize%,
  3571. a%=-1
  3572. Evnts_GetEvntListOffset3(_m_DLoad_WindowName$,_m_DLoad_DestIconHandle%,_m_DLoad_FileType%,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
  3573. Evnts_GetEvntListOffset3(_m_DLoad_WindowName$,-1,_m_DLoad_FileType%,_m_DLoad_Anchor%,_c_DLoad_RecSize%,
  3574. ):c%=!_m_DLoad_Anchor%
  3575. a%>-1
  3576. DataLoad_ProcessLoadRequest
  3577. DataLoad_ProcessLoadRequest:
  3578. jA%,lB%:
  3579. a%>-1
  3580. Zc%=!_m_DLoad_Anchor%:c%+=a%:jA%=c%!16:lB%=jA%
  3581. (1<<31):
  3582. lB%=_m_DLoad_FileType%
  3583. jA%=-1
  3584. IvI%=_Q%!&C:_Q%!&C=_Q%!8:_Q%!16=4:
  3585. &400E7,18,_Q%,_Q%!4:
  3586. _U%!&64
  3587. yB%=-1:_U%!&64=_U%!&64
  3588. shell_LoadFile(vI%=_U%!&6C)
  3589. DataLoad_CallUserFN(yB%,_m_DLoad_FileType%,_Q%!36,c%):
  3590. _U%!&9C<>0
  3591. shell_HeapBlockReturn(_U%!&9C):_U%!&9C=0
  3592. DataLoad_CheckType(SE%,ND%):
  3593. rJ%,m%,y%,h%,TE%,bA%:m%=0:y%=-1:TE%=
  3594. _U%!&64
  3595. _U%!&64=_U%!&64
  3596. SE%=-1
  3597. SE%!m%<>-1:h%=SE%!m%:
  3598. 1<<31
  3599. h%=h%
  3600. 1<<31:TE%=
  3601. h%=_m_DLoad_FileType%
  3602. y%=m%:
  3603. _U%!&64=_U%!&64
  3604. :m%+=4:
  3605. (_m_DLoad_FileType%>=4096)
  3606. y%=-1
  3607. y%<>-1
  3608. (S    bA%=
  3609. :=bA%
  3610. DataLoad_CallUserFN(yB%,jA%,_file_size%,c%):
  3611. k%,hF%,VA$,iA%:hF%=c%!20:
  3612. hF%>-1
  3613. (g3iA%=!_m_DLoad_DataBlk%:VA$=$(iA%+hF%):
  3614. VA$<>""
  3615. (mgk%=
  3616. ("FN"+VA$+"("+
  3617. yB%+","+
  3618. _m_DLoad_FileType%+","+
  3619. 34+_m_DLoad_FileName$+
  3620. 34+","+
  3621. _file_size%+")")
  3622. DataLoad_OKToLoad(ND%):
  3623. j%,nA$,oA$:
  3624. shell_OSVarGetVal("Alias$@RunType_"+
  3625. ~_m_DLoad_FileType%,1):oA$=
  3626. shell_Branch(nA$):
  3627. shell_Leaf(oA$)="!"+
  3628. shell_GetAppName
  3629. shell_ListDataLoad:
  3630. i%,f%,YA%,m%,SE%,RJ%:
  3631. g%,s%,h$,WB$:i%=!_m_DLoad_Anchor%:YA%=i%!4:
  3632. Evnts_DebugListHeader ("DataLoad ","Window       Icon  Filetype NL LoadFN"):
  3633. _shell_DataSave_Init:
  3634. _m_DSave_Anchor%4:
  3635. _m_DSave_DataBlk%4:!_m_DSave_Anchor%=0:!_m_DSave_DataBlk%=0:_m_DSave_DataOffset%=0:_m_DSave_WindowName$="":_m_DSave_EvntOffset%=-1:_m_DSave_EvntList%=-1:_m_DSave_FileName$="":_m_DSave_FullFileName$=""
  3636. _m_DSave_NameIcon%=-1:_m_DSave_FileType%=-1:_m_DSave_DataAddress%=-1:_m_DSave_UserFN$="":_m_DSave_DestTaskHandle%=-1:_m_DSave_DestWindowHandle%=-1:_m_DSave_DestIconHandle%=-1:_m_DSave_MouseXCoord%=-1:_m_DSave_MouseYCoord%=-1:_m_DSave_MessageMyRef%=-1
  3637. _m_DSave_DragASpriteInProgress%=
  3638. :_m_DSave_DragInProgress%=
  3639. :_c_DSave_NotSpriteMess$="SHELLMSG29":_c_DSave_NoFileNameMess$="SHELLMSG28":_c_DSave_NotASpriteIcon$="SHELLMSG19":_c_DSave_NotAHeapBlockMess$="SHELLMSG21":_c_DSave_RecDiedMess$="SHELLMSG39"
  3640. N_c_DSave_ButtonTypeClick%=6:_c_DSave_DataSize%=&64:_c_DSave_RecSize%=32:=0
  3641. shell_DataSaveResetDragFlags:_m_DSave_DragASpriteInProgress%=
  3642. :_m_DSave_DragInProgress%=
  3643. shell_AttachDataSave(b%,g%,iF%,jA%,VG%,B$):
  3644. A$,a%,c%,YA%,p%:
  3645. shell_IconIsSprite(b%,g%)
  3646. shell_OK(
  3647. shell_MessageNoArgs(_c_DSave_NotSpriteMess$))
  3648. shell_IconSetButtonType(b%,g%,_c_DSave_ButtonTypeClick%):
  3649. iF%=0
  3650. iF%=_c_DSave_DataSize%
  3651. shell_GetWindowIdentifier(b%):a%=
  3652. Evnts_GetEvntListOffset(A$,g%,_m_DSave_Anchor%,_c_DSave_RecSize%,
  3653. ):c%=!_m_DSave_Anchor%:YA%=c%!4:c%+=a%:$c%=A$:c%!&C=g%:c%!16=jA%:c%!20=VG%:c%!24=iF%:
  3654. !_m_DSave_DataBlk%=0
  3655. )D5!_m_DSave_DataBlk%=
  3656. shell_HeapBlockFetch(
  3657. (B$)+1)
  3658. :p%=c%+28:
  3659. Evnts_UpdateData(p%,_m_DSave_DataBlk%,_m_DSave_DataOffset%,B$):
  3660. shell_EvntHandle_DataSaveStartDrag(b%,g%):
  3661. JA%,w%:_m_DSave_DragInProgress%=
  3662. :_m_DSave_WindowName$=
  3663. shell_GetWindowIdentifier(b%):_m_DSave_EvntOffset%=
  3664. Evnts_GetEvntListOffset(_m_DSave_WindowName$,g%,_m_DSave_Anchor%,_c_DSave_RecSize%,
  3665. _m_DSave_EvntOffset%>=0
  3666. _m_DSave_EvntList%=!_m_DSave_Anchor%+_m_DSave_EvntOffset%:_m_DSave_FileType%=_m_DSave_EvntList%!16:_m_DSave_NameIcon%=_m_DSave_EvntList%!20:_m_DSave_DataAddress%=_m_DSave_EvntList%!24:w%=!_m_DSave_DataBlk%:JA%=_m_DSave_EvntList%!28
  3667. )_s_m_DSave_UserFN$=$(w%+JA%):_m_DSave_FileName$=
  3668. shell_IconGetData(b%,_m_DSave_NameIcon%):
  3669. _m_DSave_FileName$=""
  3670. shell_OK(
  3671. shell_MessageNoArgs(_c_DSave_NoFileNameMess$))
  3672. :_m_DSave_DragInProgress%=
  3673. shell_IconDragBox(b%,g%)
  3674. shell_EvntHandle_DataSaveEndDrag:
  3675. yA%,_A%,jF%:
  3676. _m_DSave_DragInProgress%
  3677. _m_DSave_DragASpriteInProgress%
  3678. &42401:_m_DSave_DragASpriteInProgress%=
  3679. :_m_DSave_DragInProgress%=
  3680. :yA%=
  3681. shell_HeapBlockFetch(30):
  3682. &400CF,,yA%:_m_DSave_DestTaskHandle%=yA%!4:_m_DSave_DestWindowHandle%=yA%!&C:_m_DSave_DestIconHandle%=yA%!16:_m_DSave_MouseXCoord%=yA%!0:_m_DSave_MouseYCoord%=yA%!4:
  3683. _m_DSave_DataAddress%>&8000
  3684. 5jF%=
  3685. shell_HeapBlockInfo(_m_DSave_DataAddress%)-4
  3686. jF%=_m_DSave_DataAddress%
  3687. :_A%=
  3688. shell_HeapBlockFetch(60):_A%!0=60:_A%!&C=0:_A%!16=1:_A%!20=_m_DSave_DestWindowHandle%:_A%!24=_m_DSave_DestIconHandle%:_A%!28=_m_DSave_MouseXCoord%:_A%!32=_m_DSave_MouseXCoord%:_A%!36=jF%:_A%!40=_m_DSave_FileType%
  3689. $(_A%+44)=
  3690. shell_Leaf(_m_DSave_FileName$):
  3691. &400E7,18,_A%,_m_DSave_DestWindowHandle%,_m_DSave_DestIconHandle%:_m_DSave_MessageMyRef%=_A%!8:
  3692. shell_HeapBlockReturn(yA%):
  3693. shell_HeapBlockReturn(_A%)
  3694. shell_DataSaveAck(FA%):
  3695. xG%,k%:xG%=FA%!&C:
  3696. xG%=_m_DSave_MessageMyRef%
  3697. J_m_DSave_FullFileName$=
  3698. shell_GetString(FA%+44):
  3699. _m_DSave_UserFN$<>""
  3700. ("FN"+_m_DSave_UserFN$+"( "+
  3701. 34+_m_DSave_FullFileName$+
  3702. 34+" )")
  3703. shell_HeapBlockExists(_m_DSave_DataAddress%)
  3704. 8,&A,_m_DSave_FullFileName$,_m_DSave_FileType%,,_m_DSave_DataAddress%,_m_DSave_DataAddress%+
  3705. shell_HeapBlockInfo(_m_DSave_DataAddress%)+1
  3706. shell_MessageNoArgs(_c_DSave_NotAHeapBlockMess$)
  3707. FA%!36>-1
  3708. FA%!16=3:FA%!0=256:FA%!20=_m_DSave_DestWindowHandle%:FA%!24=_m_DSave_DestIconHandle%:FA%!40=_m_DSave_FileType%:FA%!36=
  3709. shell_FileLength(_m_DSave_FullFileName$):FA%!&C=FA%!8:$(FA%+44)=_m_DSave_FullFileName$+
  3710. &600E7,18,FA%,_m_DSave_DestIconHandle%,_m_DSave_DestIconHandle%:_m_DSave_MessageMyRef%=FA%!8:
  3711. Evnts_GetLastWindowClicked<>
  3712. shell_GetDynamicWindowHandle
  3713. shell_MenuCloseAll
  3714. shell_PrintSave(_m_DSave_FullFileName$,_m_DSave_DestWindowHandle%,_m_DSave_DestIconHandle%,FA%!8,_m_DSave_FileType%):
  3715. _U%!336>0
  3716. +_U%!336-=1:
  3717. shell_DoSendPrintSave(&FFF)
  3718. shell_ListDataSave:
  3719. DataSave_SaveEvnts(u%):
  3720. shell_AckDataLoad(_Q%):
  3721. _Q%!&C<>_m_DSave_MessageMyRef%
  3722. shell_DataSaveDragInProgress:=_m_DSave_DragInProgress%
  3723. _shell_Sliders_Init:_m_Sliders_CurrentSliderHandle%=-1:_m_Sliders_DragInProgess%=
  3724. :_m_Sliders_LastXPos%=-1:_m_Sliders_LastYPos%=-1:_m_Sliders_SliderIcon%=-1:_m_Sliders_MaxLength%=-1:_m_Sliders_MaxHeight%=-1:_m_Slider_NotifyFN$=""
  3725. *?}_m_Slider_CurrentValue%=-1:
  3726. _m_Sliders_IconBlk%50:
  3727. _m_Sliders_DragBlk%50:
  3728. _m_Sliders_MPtrBlk%20:
  3729. _m_Sliders_WorkBlk%50:=0
  3730. shell_SliderSetValue(RB%,_value%):
  3731. c%,c%,yG%,zG%,RA%:
  3732. DA%,XA$,l%,eJ%,fJ%:
  3733. gJ%,hJ%,lJ%,k%,XA$:
  3734. T$,jB%,qC%,lF%:
  3735. RB%<0
  3736. c%=!_EVNTS_SLIDERS_ANCHOR%:c%+=RB%:yG%=c%!&C:zG%=c%!16:RA%=c%!20:qC%=c%!36:XA$=$c%:DA%=
  3737. shell_GetWindowHandleList(XA$):b%=!DA%:
  3738. b%<=0
  3739. b%=DA%!4
  3740. :_m_Sliders_IconBlk%!0=b%:_m_Sliders_IconBlk%!4=zG%:
  3741. &400CE,,_m_Sliders_IconBlk%:nF%=_m_Sliders_IconBlk%!16:UE%=_m_Sliders_IconBlk%!8:VE%=_m_Sliders_IconBlk%!&C:oF%=_m_Sliders_IconBlk%!20:lF%=
  3742. (VE%)-
  3743. (oF%):mF%=nF%-UE%:_m_Sliders_IconBlk%!4=yG%
  3744. &400CE,,_m_Sliders_IconBlk%:
  3745. &400C4,,_m_Sliders_IconBlk%:_m_Sliders_IconBlk%!4=b%:
  3746. _value%>&64
  3747. _value%=&64
  3748. _value%<=0
  3749. _value%=0:
  3750. mF%>lF%
  3751. 0_m_Sliders_IconBlk%!16=_m_Sliders_IconBlk%!8
  3752. _m_Sliders_IconBlk%!20=_m_Sliders_IconBlk%!&C
  3753. mF%>lF%
  3754. F_m_Sliders_IconBlk%!16=UE%+(nF%*(_value%/&64))-(UE%*(_value%/&64))
  3755. _m_Sliders_IconBlk%!20=VE%+(oF%*(_value%/&64))-(VE%*(_value%/&64))
  3756. :c%!36=_value%:
  3757. &400C2,,_m_Sliders_IconBlk%+4:
  3758. &400D1,b%,UE%,VE%,nF%,oF%:jB%=!_EVNTS_SLIDERS_DATA%:
  3759. jB%>0
  3760. T$=$(jB%+c%!32)
  3761. T$<>""
  3762. ("FN"+T$+"("+
  3763. _value%+")")
  3764. RA%>=0
  3765. shell_IconPutData(b%,RA%,
  3766. (_value%),
  3767. shell_SliderGetHandle(b%,g%):
  3768. A$,c%,a%,RB%:A$=
  3769. shell_GetWindowIdentifier(b%):c%=!_EVNTS_SLIDERS_ANCHOR%:a%=
  3770. Evnts_GetEvntListOffset(A$,g%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_REC_SIZE%,
  3771. RB%=-1
  3772. RB%=a%
  3773. :=RB%
  3774. shell_AttachSliderHandler(b%,CH%,kD%,tC%,qF%,EH%,a$):
  3775. YJ%,a%,A$,c%,p%:A$=
  3776. shell_GetWindowIdentifier(b%):a%=
  3777. Evnts_GetEvntListOffset(A$,kD%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_REC_SIZE%,
  3778. ):c%=!_EVNTS_SLIDERS_ANCHOR%:c%+=a%:$c%=A$:c%!&C=kD%
  3779. Nc%!16=CH%:c%!20=tC%:c%!24=qF%:c%!28=EH%:c%!36=-1:
  3780. !_EVNTS_SLIDERS_DATA%=0
  3781. 2!_EVNTS_SLIDERS_DATA%=
  3782. shell_HeapBlockFetch(1)
  3783. :p%=c%+32:
  3784. Evnts_UpdateData(p%,_EVNTS_SLIDERS_DATA%,_EVNTS_SLIDERS_DATAOFFSET%,a$):
  3785. shell_AttachClickSelect(b%,kD%,"_Sliders_BarClick"):
  3786. shell_AttachClickSelect(b%,CH%,"_Sliders_BackgroundClick"):
  3787. qF%>=0
  3788. shell_AttachBumpHandler(b%,tC%,qF%,EH%,0,&64,1,
  3789. ,"_Sliders_Bump","")
  3790. _Sliders_Bump(dD%,rC%):
  3791. b%,g%,c%,SB%,NA%,PB%:
  3792. y%,RB%,A$,lD%,mD%:b%=
  3793. shell_GetLastWindowClicked:g%=
  3794. shell_GetLastIconClicked:A$=
  3795. shell_GetWindowIdentifier(b%):c%=!_EVNTS_SLIDERS_ANCHOR%:PB%=c%!0:NA%=c%!4:SB%=_m_Evnts_HeaderSize%:y%=
  3796. 2lD%=c%!(SB%+24):mD%=c%!(SB%+28):
  3797. A$=$(c%+SB%)
  3798. lD%=g%
  3799. mD%=g%
  3800. :RB%=SB%
  3801. :SB%+=_EVNTS_SLIDERS_REC_SIZE%:
  3802. SB%>=PB%
  3803. shell_SliderSetValue(RB%,dD%)
  3804. (dD%)
  3805. shell_HandleSlider(b%,g%):
  3806. A$,c%,IH%,RA%:
  3807. SB%,T$,jB%,qC%,a%:A$=
  3808. shell_GetWindowIdentifier(b%):c%=!_EVNTS_SLIDERS_ANCHOR%:a%=
  3809. Evnts_GetEvntListOffset(A$,g%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_REC_SIZE%,
  3810. a%=-1
  3811. ^g%+=1:a%=
  3812. Evnts_GetEvntListOffset(A$,g%,_EVNTS_SLIDERS_ANCHOR%,_EVNTS_SLIDERS_REC_SIZE%,
  3813. :_m_Sliders_CurrentSliderHandle%=a%:
  3814. a%>-1
  3815. YSB%=c%+a%:IH%=!(SB%+16):RA%=!(SB%+20):qC%=!(SB%+36):jB%=!_EVNTS_SLIDERS_DATA%:
  3816. jB%>0
  3817. T$=$(jB%+SB%!32)
  3818. :_m_Sliders_DragBlk%!0=b%:_m_Sliders_DragBlk%!4=IH%:
  3819. &400CE,,_m_Sliders_DragBlk%:_m_Sliders_MaxLength%=_m_Sliders_DragBlk%!16-_m_Sliders_DragBlk%!8:_m_Sliders_MaxHeight%=_m_Sliders_DragBlk%!20-_m_Sliders_DragBlk%!&C:_m_Sliders_SliderIcon%=g%
  3820. _m_Sliders_DisplayIcon%=RA%:_m_Slider_NotifyFN$=T$:_m_Slider_CurrentValue%=qC%:_m_Sliders_DragBlk%!0=b%:
  3821. &400CB,,_m_Sliders_DragBlk%:PA%=_m_Sliders_DragBlk%!4-_m_Sliders_DragBlk%!20:QA%=_m_Sliders_DragBlk%!16-_m_Sliders_DragBlk%!24
  3822. _m_Sliders_DragBlk%!4=g%:
  3823. &400CE,,_m_Sliders_DragBlk%:_m_Sliders_DragBlk%!4=7:_m_Sliders_DragBlk%!8+=PA%:_m_Sliders_DragBlk%!&C+=QA%:_m_Sliders_DragBlk%!16+=PA%:_m_Sliders_DragBlk%!20+=QA%:_m_Sliders_DragBlk%!24=_m_Sliders_DragBlk%!8
  3824. +9__m_Sliders_DragBlk%!28=_m_Sliders_DragBlk%!&C:
  3825. _m_Sliders_MaxLength%>_m_Sliders_MaxHeight%
  3826. +<u_m_Sliders_DragBlk%!32=_m_Sliders_DragBlk%!24+_m_Sliders_MaxLength%:_m_Sliders_DragBlk%!36=_m_Sliders_DragBlk%!20
  3827. _m_Sliders_DragBlk%!32=_m_Sliders_DragBlk%!24+_m_Sliders_MaxLength%:_m_Sliders_DragBlk%!36=_m_Sliders_DragBlk%!28+_m_Sliders_MaxHeight%
  3828. &400D0,,_m_Sliders_DragBlk%:_m_Sliders_DragInProgess%=
  3829. shell_Slider:
  3830. b%,nD%,PA%,e%,k%,XE%,QA%:
  3831. &400CF,,_m_Sliders_MPtrBlk%:b%=_m_Sliders_MPtrBlk%!&C:nD%=!_m_Sliders_MPtrBlk%:XE%=_m_Sliders_MPtrBlk%!4:
  3832. nD%<>_m_Sliders_LastXPos%
  3833. XE%<>_m_Sliders_LastYPos%
  3834. _m_Sliders_LastXPos%=nD%:_m_Sliders_LastYPos%=XE%:e%=_m_Sliders_WorkBlk%:!e%=b%:
  3835. &400CB,,e%:PA%=nD%-e%!4:QA%=XE%-e%!16:e%!4=_m_Sliders_SliderIcon%:
  3836. &400CE,,e%:
  3837. &400C4,,e%:e%!4=b%:
  3838. _m_Sliders_MaxLength%>_m_Sliders_MaxHeight%
  3839. e%!16=PA%:
  3840. &400C2,,e%+4:
  3841. &400D1,b%,e%!8,e%!&C,e%!8+_m_Sliders_MaxLength%,e%!20:_value%=((PA%-e%!8)*&64)/_m_Sliders_MaxLength%:
  3842. shell_SliderSetValue(_m_Sliders_CurrentSliderHandle%,_value%)
  3843. e%!20=QA%:
  3844. &400C2,,e%+4:
  3845. &400D1,b%,e%!8,e%!&C,e%!8+_m_Sliders_MaxLength%,e%!20+_m_Sliders_MaxHeight%:_value%=((QA%-e%!&C)*&64)/_m_Sliders_MaxHeight%
  3846. _m_Slider_NotifyFN$<>""
  3847. +s3k%=
  3848. ("FN"+_m_Slider_NotifyFN$+"("+
  3849. _value%+")")
  3850. :_m_Sliders_LastXPos%=nD%
  3851. shell_SliderGetValue(RB%):
  3852. c%,qC%:c%=!_EVNTS_SLIDERS_ANCHOR%:c%+=RB%:qC%=c%!36:=qC%
  3853. _Sliders_BackgroundClick(b%,g%):
  3854. k%:k%=
  3855. _Sliders_Drag(b%,g%):=0
  3856. _Sliders_Drag(b%,g%):
  3857. c%,NA%,z%,f%,A$:
  3858. y%,PB%,RB%,RA%:c%=!_EVNTS_SLIDERS_ANCHOR%:z%=_EVNTS_SLIDERS_REC_SIZE%:PB%=c%!0:NA%=c%!4:f%=_m_Evnts_HeaderSize%:A$=
  3859. shell_GetWindowIdentifier(b%):y%=
  3860. $(c%+f%)=A$
  3861. c%!(f%+16)=g%
  3862. :kD%=c%!(f%+&C):RA%=c%!(f%+20):RB%=f%
  3863. :f%+=z%:
  3864. f%>=PB%
  3865. shell_IconDragBox(b%,kD%):
  3866. RA%<>-1
  3867. shell_Slider
  3868. shell_SliderDragInProgress:=_m_Sliders_DragInProgess%
  3869. shell_SliderDragEnd:_m_Sliders_DragInProgess%=
  3870. _Sliders_BarClick(d%,t%):
  3871. shell_IconDragBox(d%,t%):=0:B
  3872. _shell_Errors_Init:_ERRNR_NONFATAL=&D00:_ERRNR_CLAIMMEM=&903:
  3873. _ERRORS_ERR_BLK%256:=0
  3874. shell_Error:
  3875. LA%,FA$:
  3876. &606C2:
  3877. <>_ERRNR_NONFATAL
  3878. <>_ERRNR_CLAIMMEM
  3879. 1<<31)
  3880. shell_FatalError
  3881. shell_OSCheckVersion(3)
  3882. shell_FileExists("Resources:$.Resources.Edit.ThrowBack")
  3883. ("Set Basic$File <"+
  3884. shell_GetAppName+"$BasicFile>"):
  3885. "Edit:ThrowBack"
  3886. shell_ErrorBox("Unexpected error:- "+
  3887. $+" (Internal error code "+
  3888. +")")
  3889. $:LA%=
  3890. $,"in "+
  3891. 34+"EvntShell:ShellLib"):
  3892. LA%>0
  3893. $,LA%-1)
  3894. =FA$+=" (Internal error code "+
  3895. +")":
  3896. shell_ErrorBox(FA$)
  3897. shell_DataSaveResetDragFlags:
  3898. shell_OK(CB$):
  3899. _ERRNR_NONFATAL,CB$
  3900. shell_FatalError:
  3901. &606C2:
  3902. shell_OSCheckVersion(3)
  3903. shell_FileExists("Resources:$.Resources.Edit.ThrowBack")
  3904. 1<<31)
  3905. shell_Exit
  3906. ("Set Basic$File <"+
  3907. shell_GetAppName+"$BasicFile>"):
  3908. "Edit:ThrowBack"
  3909. shell_ErrorBox("Unexpected error:- "+
  3910. $+" Internal error code "+
  3911. shell_ErrorBox(EB$):
  3912. oB%:!_ERRORS_ERR_BLK%=
  3913. :$(_ERRORS_ERR_BLK%+4)=EB$+
  3914. =_ERRNR_NONFATAL
  3915. =_ERRNR_CLAIMMEM
  3916. &600DF,_ERRORS_ERR_BLK%,17,"Message from "+
  3917. shell_GetAppName
  3918. &600DF,_ERRORS_ERR_BLK%,1,
  3919. shell_GetAppName
  3920. _shell_WindowList_Init:=0
  3921. shell_TemplatesInit(w$,
  3922. PI%):
  3923. oD%,sF%,LH%,MB%:
  3924. MH%,LA%,ZE%,f$,IA%,NH%,j%:
  3925. OH%,pD%:ZE%=
  3926. shell_HeapBlockFetch(&C):LA%=0:IA%=0:MH%=
  3927. shell_FileLength(w$):WI%=
  3928. shell_HeapBlockFetch(MH%):oD%=WI%:
  3929. shell_TemplateFileInfo(w$,MB%,IA%,j%):
  3930. shell_HeapBlockFetch(4+(20*IA%)):_U%!4=qD%:QH%=
  3931. shell_HeapBlockFetch(MB%):sF%=QH%:LH%=QH%+MB%:IA%=0:pD%=4:
  3932. &600D9,,w$
  3933. ;NH%:
  3934. shell_MessageTwoArgs("SHELLMSG34","template",w$)
  3935. :$ZE%="*":
  3936. &400DB,,oD%,sF%,LH%,_U%!&E8,ZE%,LA%
  3937. ,,sF%,,,f$,LA%:
  3938. LA%<>0
  3939. \qD%!pD%=oD%:$(qD%+pD%+4)=f$:qD%!(pD%+16)=-1:pD%+=20:OH%=(oD%!84)*32:oD%+=(88+OH%):IA%+=1
  3940. LA%=0:
  3941. &400DA:_U%!0=IA%
  3942. shell_MessageTwoArgs("SHELLMSG35","template",w$)
  3943. shell_MessageTwoArgs("SHELLMSG36",w$,"template")
  3944. shell_HeapBlockReturn(ZE%):PI%=0:!qD%=IA%:
  3945. shell_WindowLoaded(I$):
  3946. a%,uF%:a%=
  3947. shell_GetWindowListOffset(I$):
  3948. a%>=0
  3949. shell_GetWindowListOffset(I$):
  3950. a%,IA%,TB%,m%:
  3951. (I$)>&B
  3952. shell_MessageOneArg("SHELLMSG02",I$)
  3953. iIA%=
  3954. shell_GetNrTemplatesLoaded:TB%=
  3955. shell_WindowListGetAddr+4:m%=0:a%=-1:
  3956. $(((TB%)+(20*m%))+4)=I$
  3957. a%=m%*20
  3958. :m%+=1:
  3959. a%<>-1
  3960. m%>(IA%-1):=a%
  3961. shell_GetWB(I$):
  3962. a%,QB%,TB%:a%=
  3963. shell_GetWindowListOffset(I$):
  3964. 99,I$+":"+
  3965. *TB%=
  3966. shell_WindowListGetAddr+4:
  3967. a%>=0
  3968. QB%=TB%!a%
  3969. shell_MessageOneArg("SHELLMSG03",I$)
  3970. :=QB%
  3971. shell_GetWindowHandleList(I$):
  3972. a%,DA%,TB%:a%=
  3973. shell_GetWindowListOffset(I$):TB%=
  3974. shell_WindowListGetAddr+4:
  3975. a%>=0
  3976. DA%=!(TB%+a%+16)
  3977. shell_MessageOneArg("SHELLMSG03",I$)
  3978. :=DA%
  3979. shell_CreateWindowStatic(I$,
  3980. nC%:nC%=
  3981. shell_GetWB(I$):nC%!64=_U%!16:
  3982. &400C1,,nC%
  3983. shell_StaticWindowListAddHandle(b%):
  3984. shell_WindowListAddHandle(I$,b%):
  3985. shell_WindowListAddHandle(I$,b%):
  3986. SH%,EA%,f%,xF%:
  3987. I$=""
  3988. 99,"Bad window name passed to WindowListAddHandle"
  3989. -1VSH%=
  3990. shell_GetWindowListOffset(I$)+16:EA%=
  3991. shell_WindowListGetAddr+4+SH%:
  3992. !EA%=-1
  3993. -99!EA%=
  3994. shell_HeapBlockFetch(8):f%=!EA%:f%!0=b%:f%!4=-1
  3995. EA%!16<>-1
  3996. -H/DA%=!EA%:f%=0:xF%=
  3997. DA%!f%<>-1:
  3998. DA%!f%=0
  3999. DA%!f%=b%:xF%=
  4000. :f%+=4:
  4001. -^f!EA%=
  4002. shell_HeapBlockExtend(!EA%,4):TB%=!EA%:f%=0:
  4003. TB%!f%<>-1:f%+=4:
  4004. :TB%!(f%+0)=b%:TB%!(f%+4)=-1
  4005. shell_GetWindowIdentifier(n%):
  4006. EA%,IA%,f%,m%,BA$:IA%=
  4007. shell_GetNrTemplatesLoaded:EA%=
  4008. shell_WindowListGetAddr+4:BA$="":
  4009. -1,-2:BA$="iconbar"
  4010. EA%!16<>-1
  4011. -|8DA%=EA%!16:f%=0:
  4012. DA%!f%<>-1:
  4013. DA%!f%=n%
  4014. BA$=$(EA%+4)
  4015. f%+=4:
  4016. :m%+=1:EA%+=20:
  4017. BA$<>""
  4018. m%=IA%
  4019. :=BA$
  4020. shell_RemoveHandleFromWindowList(n%):
  4021. EA%,IA%,I%,f%:IA%=
  4022. shell_GetNrTemplatesLoaded:EA%=
  4023. shell_WindowListGetAddr+4:
  4024. EA%!16<>-1
  4025. ,DA%=EA%!16:f%=0:
  4026. DA%!f%<>-1:
  4027. DA%!f%=n%
  4028. DA%!f%=0
  4029. :f%+=4:
  4030. :EA%+=20:
  4031. shell_UpdateWindowHandleList(sB%,HB%):
  4032. EA%,IA%,I%,f%:IA%=
  4033. shell_GetNrTemplatesLoaded:EA%=
  4034. shell_WindowListGetAddr+4:
  4035. EA%!16<>-1
  4036. 7DA%=EA%!16:f%=0:
  4037. DA%!f%<>-1:
  4038. DA%!f%=sB%
  4039. DA%!f%=HB%
  4040. f%+=4:
  4041. :EA%+=20:
  4042. shell_GetNrTemplatesLoaded:
  4043. EA%:EA%=
  4044. shell_WindowListGetAddr:=!EA%
  4045. shell_WindowListGetAddr:=_U%!4
  4046. shell_WindowHandleKnown(b%):
  4047. j%,EA%,y%,I%,IA%,n%:
  4048. shell_GetDynamicWindowHandle
  4049. YIA%=
  4050. shell_GetNrTemplatesLoaded:EA%=
  4051. shell_WindowListGetAddr+4:
  4052. EA%!16<>-1
  4053. 2DA%=EA%!16:f%=0:
  4054. DA%!f%<>-1:n%=DA%!f%:
  4055. n%=b%
  4056. :f%+=4:
  4057. :EA%+=20:
  4058. shell_WindowListPrint:
  4059. EA%,IA%,I%,f%:IA%=
  4060. shell_GetNrTemplatesLoaded:
  4061. shell_TraceOn:EA%=
  4062. shell_WindowListGetAddr+4:
  4063. EA%!16=-1
  4064. DA%=EA%!16:f%=0:
  4065. DA%!f%<>-1:f%+=4:
  4066. :EA%+=20:
  4067. _shell_Strings_Init:=0
  4068. shell_GetZeroTerminatedString(dI%):
  4069. "WriteN",dI%,0
  4070. C$:=C$
  4071. shell_GetString(TH%):
  4072. rA$,bE%:
  4073. ((TH%?bE%)>31
  4074. bE%<&FF):rA$+=
  4075. (TH%?bE%):bE%+=1:
  4076. :=rA$
  4077. shell_StringStripTrailing(C$,i$):
  4078. C$,1)=i$:C$=
  4079. (C$)-1):
  4080. shell_StringStripLeading(C$,i$):
  4081. C$,1)=i$:C$=
  4082. C$,2):
  4083. shell_StringStripAll(C$,i$):
  4084. H,I:H=
  4085. C$,i$):
  4086. C$,I-1)+
  4087. C$,I+1)
  4088. H:=C$
  4089. shell_StringPadTrailing(C$,i$,eB%):
  4090. (C$)<eB%:C$=C$+
  4091. (C$),i$):
  4092. shell_StringPadLeading(C$,i$,eB%):
  4093. (C$)<eB%:C$=
  4094. (C$),i$)+C$:
  4095. shell_StringUpperCase(C$):
  4096. (C$)>0
  4097. (C$):
  4098. C$,s%,1)>="a"
  4099. C$,s%,1)<="z"
  4100. C$,s%,1)=
  4101. C$,s%,1))
  4102. shell_StringExchange(C$,YA$,IB$):
  4103. C$,YA$)
  4104. 0VB%=
  4105. C$,YA$):C$=
  4106. C$,VB%-1)+IB$+
  4107. C$,VB%+
  4108. shell_StringArrayGetLongest(A$(),OE%):
  4109. s%,cE%:cE%=0:
  4110. (A$(s%))>cE%
  4111. (A$(s%))
  4112. s%:=cE%
  4113. mem_to_string(FA%,a%,hI%):
  4114. FA%?a%<>hI%:C$+=
  4115. (FA%?a%):a%+=1:
  4116. _shell_Messages_Init:
  4117. _MESSAGES_WORK_BLK%256:_MESSAGE_QUIT=0:_MESSAGE_DATASAVE=1:_MESSAGE_DATASAVEACK=2:_MESSAGE_DATALOAD=3:_MESSAGE_DATALOADACK=4:_MESSAGE_RAMFETCH=6:_MESSAGE_RAMTRANSMIT=7:_MESSAGE_PREQUIT=8:_MESSAGE_PALETTECHANGE=9
  4118. _MESSAGE_SAVEDESKTOP=&A:_MESSAGE_SHUTDOWN=&E:_MESSAGE_HELP=&502:_MESSAGE_MENUWARNING=&400C0:_MESSAGE_MODECHANGE=&400C1:_MESSAGE_TASKINIT=&400C2:_MESSAGE_TASKCLOSEDOWN=&400C3:_MESSAGE_TASKNAMEIS=&400C7:_MESSAGE_DESKFONT_CHANGED=&400CF
  4119. `_MESSAGE_COLOURPICKERCOLOURCHOICE=&47700:_MESSAGE_COLOURPICKERCLOSEDIALOGUEREQUEST=&47702:=0
  4120. shell_BroadcastMessage(iI%,GA$):
  4121. WH%:WH%=(
  4122. (GA$)+30)
  4123. 3:_MESSAGES_WORK_BLK%!&C=0:_MESSAGES_WORK_BLK%!16=iI%:$(_MESSAGES_WORK_BLK%+20)=GA$+
  4124. (0):_MESSAGES_WORK_BLK%!0=WH%:
  4125. &600E7,17,_MESSAGES_WORK_BLK%,0:
  4126. _shell_Memory_Init:=0
  4127. shell_HeapManagerInit(H$,kI%):
  4128. _heap_code%900:
  4129. ("LOAD "+H$+"heapcode "+
  4130. ~_heap_code%):
  4131. _heap_code%+0,kI%:
  4132. shell_HeapBlockExtend(XH%,zF%):
  4133. _heap_code%+&C,XH%,zF%:=XH%
  4134. shell_HeapBlockFetch(zF%):
  4135. _heap_code%+4,XB%,zF%:=XB%
  4136. shell_HeapBlockReturn(
  4137. rA%):
  4138. shell_HeapBlockExists(rA%)
  4139. _heap_code%+8,rA%
  4140. rA%=0:
  4141. shell_HeapBlockExists(XB%):
  4142. XB%<&8000
  4143. 99,"No heapblock defined at this address"
  4144. /O&k%=
  4145. shell_HeapBlockInfo(XB%):
  4146. shell_HeapBlockInfo(rA%):
  4147. 29,6,!(_heap_code%+28),rA%
  4148. ,,,P:=P
  4149. shell_HeapBlockExtendMid(rA%,mB%,ZH%):
  4150. aH%:aH%=
  4151. shell_HeapBlockInfo(rA%):
  4152. _heap_code%+&C,rA%,mB%:
  4153. &400F1,_U%!&94,rA%+ZH%,_U%!&94,rA%+ZH%+mB%,aH%-mB%:=rA%:B
  4154. _shell_Poll_Init:
  4155. bH%256:_POLL_EARLIEST_TIME%=0:_POLL_INTERVAL%=&64:_POLL_PREVINTERVAL%=0:
  4156. shell_PollSetInterval(_POLL_INTERVAL%):
  4157. shell_PollSetPrevInterval(_POLL_INTERVAL%):
  4158. _POLL_EARLIEST_TIME%:_POLL_EARLIEST_TIME%+=_POLL_INTERVAL%:=0
  4159. shell_PollIdle(CB%,MD%):
  4160. _U%!&64
  4161. "WimpExt_PrePoll"
  4162. &400E1,CB%,bH%,_POLL_EARLIEST_TIME%
  4163. _U%!&64
  4164. "WimpExt_Action",_U%!&94,bH%,VC%
  4165. shell_PollSetInterval(AG%):_POLL_INTERVAL%=AG%:
  4166. shell_PollSetPrevInterval(AG%):_POLL_PREVINTERVAL%=AG%:
  4167. shell_PollReadInterval:=_POLL_INTERVAL%
  4168. shell_PollReadPrevInterval:=_POLL_PREVINTERVAL%
  4169. shell_Poll_I(CB%,MD%):
  4170. _U%!&64
  4171. "WimpExt_PrePoll"
  4172. &400C7,CB%,_Q%
  4173. _U%!&64
  4174. "WimpExt_Action",_U%!&94,_Q%,VC%
  4175. &81686,VC%,,MD%:=VC%
  4176. poll(CB%,MD%):
  4177. _U%!&64
  4178. "WimpExt_PrePoll"
  4179. &400C7,CB%,_Q%
  4180. _U%!&64
  4181. "WimpExt_Action",_U%!&94,_Q%,rA%
  4182. =rA%:B
  4183. _shell_IntHelp_Init:
  4184. QJ%60:_IntHelp_IsOn%=
  4185. shell_InteractiveHelp(_Q%):
  4186. L$,Z$,O$,_B%,BG%,VB$,o%:
  4187. shell_EvntHandle_HelpTags(_Q%!32,_Q%!36,L$):O$=
  4188. shell_IconGetValidation(_Q%!32,_Q%!36):
  4189. O$<>""
  4190. shell_StringUpperCase(
  4191. O$,1))="I"
  4192. O$,";"):
  4193. _B%=0
  4194. O$,2)
  4195. O$,2,_B%-2)
  4196. shell_StringUpperCase(O$),
  4197. shell_StringUpperCase(";i")):BG%=
  4198. shell_StringUpperCase(O$),
  4199. shell_StringUpperCase(";"),_B%+1):
  4200. _B%>0
  4201. BG%>0
  4202. O$,_B%+2,BG%-_B%-2)
  4203. O$,_B%+2)
  4204. L$<>""
  4205. _Q%!16=&503:_Q%!&C=_Q%!8:Z$=
  4206. shell_MessageLookup(L$,"",""):Z$=
  4207. shell_MessageExpand(Z$):$(_Q%+20)=Z$:!_Q%=(
  4208. Z$+25)
  4209. &400E7,17,_Q%,_Q%!4
  4210. shell_InteractiveHelpOn:_IntHelp_IsOn%=
  4211. shell_InteractiveHelpOff:_IntHelp_IsOn%=
  4212. _shell_PopUps_Init:=0
  4213. _shell_Bumpers_Init:_c_Bumpers_ShiftKeyFactor%=2:_c_Bumpers_CtrlKeyFactor%=4:_c_Bumpers_ShiftCtrlKeyFactor%=8:=0
  4214. shell_AttachBumpHandler(b%,g%,dH%,eH%,pB%,qB%,qI%,fH%,tA$,uA$):
  4215. c%,a%,A$:A$=
  4216. shell_GetWindowIdentifier(b%):a%=
  4217. Evnts_GetEvntListOffset(A$,dH%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_REC_SIZE%,
  4218. ):c%=!_EVNTS_BUMP_ANCHOR%:c%+=a%:$c%=A$:c%!&C=dH%:c%!16=qI%
  4219. 8c%!20=g%:c%!24=pB%:c%!28=qB%:
  4220. fH%=-1
  4221. c%!40=1
  4222. c%!40=0
  4223. !_EVNTS_BUMP_DATA%=0
  4224. /!_EVNTS_BUMP_DATA%=
  4225. shell_HeapBlockFetch(1)
  4226. :p%=c%+32:
  4227. tA$<>""
  4228. Evnts_UpdateData(p%,_EVNTS_BUMP_DATA%,_EVNTS_BUMP_DATAOFFSET%,tA$)
  4229. !p%=-1
  4230. :p%=c%+36:
  4231. uA$<>""
  4232. Evnts_UpdateData(p%,_EVNTS_BUMP_DATA%,_EVNTS_BUMP_DATAOFFSET%,uA$)
  4233. !p%=-1
  4234. Evnts_GetEvntListOffset(A$,eH%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_REC_SIZE%,
  4235. ):c%=!_EVNTS_BUMP_ANCHOR%:c%+=a%:$c%=A$:c%!&C=eH%:
  4236. fH%=-1
  4237. c%!40=1
  4238. c%!40=0
  4239. c%!40=c%!40
  4240. (1<<2):
  4241. shell_EvntHandle_Bumpers(_window_handle%,_icon_handle%):
  4242. A$,a%,i%,eE%:
  4243. kB%,QD%,pB%,qB%,rC%,CG%,DG%:
  4244. RD%,FG%,_new_val$,_new_val%,p%,ZA$,aA$:
  4245. bA$:A$=
  4246. shell_GetWindowIdentifier(_window_handle%)
  4247. Evnts_GetEvntListOffset(A$,_icon_handle%,_EVNTS_BUMP_ANCHOR%,_EVNTS_BUMP_REC_SIZE%,
  4248. ):rC%=
  4249. shell_GetLastMouseButton:
  4250. a%>=0
  4251. 8i%=!_EVNTS_BUMP_ANCHOR%+a%:
  4252. i%!40
  4253. (1<<2)
  4254. i%!40
  4255. (1<<0)
  4256. i%-=_EVNTS_BUMP_REC_SIZE%
  4257. IkB%=i%!16:QD%=i%!20:pB%=i%!24:qB%=i%!28:CG%=
  4258. (-1):DG%=
  4259. (-2):
  4260. *kB%=kB%*_c_Bumpers_ShiftCtrlKeyFactor%
  4261. kB%=kB%*_c_Bumpers_ShiftKeyFactor%
  4262. kB%=kB%*_c_Bumpers_CtrlKeyFactor%
  4263. :jB%=!_EVNTS_BUMP_DATA%:
  4264. jB%>0
  4265. i%!32>=0
  4266. ZA$=$(jB%+i%!32)
  4267. i%!36>=0
  4268. aA$=$(jB%+i%!36)
  4269. :bA$=
  4270. shell_IconGetData(_window_handle%,QD%):
  4271. aA$<>""
  4272. )RD%=
  4273. ("FN"+aA$+"( "+
  4274. 34+bA$+
  4275. 34+" )")
  4276. (bA$)
  4277. rC%=_MSE_ADJUSTBUT
  4278. _new_val%=RD%+kB%
  4279. _new_val%=RD%-kB%
  4280. rC%=_MSE_ADJUSTBUT
  4281. _new_val%=RD%-kB%
  4282. _new_val%=RD%+kB%
  4283. _new_val%>qB%
  4284. _new_val%=qB%
  4285. _new_val%<pB%
  4286. _new_val%=pB%
  4287. _new_val%>qB%
  4288. _new_val%=pB%
  4289. _new_val%<pB%
  4290. _new_val%=qB%
  4291. ZA$<>""
  4292. 0_new_val$=
  4293. ("FN"+ZA$+"(_new_val%,"+
  4294. rC%+")")
  4295. _new_val$=
  4296. _new_val%
  4297. shell_IconPutData(_window_handle%,QD%,_new_val$,
  4298. shell_ListBumpers:
  4299. HA%,r%,z%,f%,NA%,JB%:
  4300. lD%,mD%,xA$,NB$,GA%,s%,h$:
  4301. jH%,QD%,pB%,qB%:r%=!_EVNTS_BUMP_ANCHOR%:z%=_EVNTS_BUMP_REC_SIZE%:NA%=(r%!4)/2:
  4302. Evnts_DebugListHeader ("Bump ","Window       Inc Dec Disp Step Lower Upper Value Change FN"):
  4303. f%=_m_Evnts_HeaderSize%:
  4304. NA%:A$=$(r%+f%):lD%=r%!(f%+&C):mD%=r%!(f%+&C+_EVNTS_BUMP_REC_SIZE%):jH%=r%!(f%+16):QD%=r%!(f%+20):pB%=r%!(f%+24):qB%=r%!(f%+28):GA%=!_EVNTS_BUMP_DATA%:
  4305. GA%>0
  4306. 1</xA$=$(GA%+r%!(f%+32)):NB$=$(GA%+r%!(f%+36))
  4307. shell_StringPadTrailing(A$,".",&C):h$+=" "+
  4308. shell_StringPadLeading(
  4309. lD%," ",3):h$+=" "+
  4310. shell_StringPadLeading(
  4311. mD%," ",3):h$+=" "+
  4312. shell_StringPadLeading(
  4313. QD%," ",4):h$+=" "+
  4314. shell_StringPadLeading(
  4315. jH%," ",4)
  4316. h$+=" "+
  4317. shell_StringPadLeading(
  4318. pB%," ",5):h$+=" "+
  4319. shell_StringPadLeading(
  4320. qB%," ",5):h$+="   "+xA$:f%+=_EVNTS_BUMP_REC_SIZE%*2:
  4321. _shell_Pointer_Init:_c_PointerIn_RecSize%=20:
  4322. _m_PointerIn_Anchor%4:
  4323. _m_PointerIn_DataBlk%4:!_m_PointerIn_Anchor%=0:!_m_PointerIn_DataBlk%=0:_m_PointerIn_DataOffset%=0:_c_PointerOut_RecSize%=20:
  4324. _m_PointerOut_Anchor%4:
  4325. _m_PointerOut_DataBlk%4
  4326. !_m_PointerOut_Anchor%=0:!_m_PointerOut_DataBlk%=0:_m_PointerOut_DataOffset%=0:_m_Pointer_SetShape_Reason%=36:_m_Pointer_SetShape_Ptr_Nr%=2:_m_Pointer_ShapeChanged%=
  4327. :_m_Pointer_CurrentShape$="":
  4328. _m_Pointer_WorkBuffer%4:
  4329. _m_Pointer_GetInfoBlk%20:=0
  4330. shell_AttachPointerEnteringWindowHandler(b%,B$):
  4331. c%,a%,A$,p%,YA%:
  4332. shell_GetWindowIdentifier(b%):a%=
  4333. Evnts_GetEvntListOffset(A$,-1,_m_PointerIn_Anchor%,_c_PointerIn_RecSize%,
  4334. ):c%=!_m_PointerIn_Anchor%:YA%=c%!4:c%+=a%:$c%=A$:c%!&C=-1:
  4335. !_m_PointerIn_DataBlk%=0
  4336. 9!_m_PointerIn_DataBlk%=
  4337. shell_HeapBlockFetch(
  4338. (B$)+1)
  4339. :p%=c%+16:
  4340. Evnts_UpdateData(p%,_m_PointerIn_DataBlk%,_m_PointerIn_DataOffset%,B$)
  4341. shell_EvntHandle_PointerEnteringWindow(_window_handle%):
  4342. A$,a%,i%,JA%,w%,B$:
  4343. k%:A$=
  4344. shell_GetWindowIdentifier(_window_handle%):
  4345. A$<>""
  4346. Evnts_GetEvntListOffset(A$,-1,_m_PointerIn_Anchor%,_c_PointerIn_RecSize%,
  4347. a%>=0
  4348. ti%=!_m_PointerIn_Anchor%+a%:JA%=i%!16:w%=!_m_PointerIn_DataBlk%:B$=$(w%+JA%):k%=
  4349. ("FN"+B$+"( _window_handle% )")
  4350. shell_AttachPointerLeavingWindowHandler(b%,B$):
  4351. c%,a%,A$,p%,YA%:
  4352. shell_GetWindowIdentifier(b%):a%=
  4353. Evnts_GetEvntListOffset(A$,-1,_m_PointerOut_Anchor%,_c_PointerOut_RecSize%,
  4354. ):c%=!_m_PointerOut_Anchor%:YA%=c%!4:c%+=a%:$c%=A$:c%!&C=-1:
  4355. !_m_PointerOut_DataBlk%=0
  4356. :!_m_PointerOut_DataBlk%=
  4357. shell_HeapBlockFetch(
  4358. (B$)+1)
  4359. :p%=c%+16:
  4360. Evnts_UpdateData(p%,_m_PointerOut_DataBlk%,_m_PointerOut_DataOffset%,B$)
  4361. shell_EvntHandle_PointerLeavingWindow(_window_handle%):
  4362. A$,a%,i%,JA%,w%,B$:
  4363. k%:A$=
  4364. shell_GetWindowIdentifier(_window_handle%):
  4365. A$<>""
  4366. Evnts_GetEvntListOffset(A$,-1,_m_PointerOut_Anchor%,_c_PointerOut_RecSize%,
  4367. a%>=0
  4368. vi%=!_m_PointerOut_Anchor%+a%:JA%=i%!16:w%=!_m_PointerOut_DataBlk%:B$=$(w%+JA%):k%=
  4369. ("FN"+B$+"( _window_handle% )")
  4370. shell_PointerResetShape:
  4371. shell_PointerChangeShape(yA$,kH%,tJ%):
  4372. &400E9,_m_Pointer_SetShape_Reason%,,yA$,_m_Pointer_SetShape_Ptr_Nr%,kH%,kH%:_m_Pointer_ShapeChanged%=
  4373. :_m_Pointer_CurrentShape$=yA$:
  4374. shell_PointerResetShape:
  4375. _m_Pointer_ShapeChanged%=
  4376. ("Pointer"):_m_Pointer_ShapeChanged%=
  4377. :_m_Pointer_CurrentShape$=""
  4378. shell_PointerGetCurrentShape:=_m_Pointer_CurrentShape$
  4379. shell_PointerIsChanged:=_m_Pointer_ShapeChanged%
  4380. shell_PointerGetPosition(
  4381. cA%):
  4382. &400CF,,_m_Pointer_GetInfoBlk%:dA%=_m_Pointer_GetInfoBlk%!0:cA%=_m_Pointer_GetInfoBlk%!4:
  4383. shell_PointerGetWindow(
  4384. &400CF,,_m_Pointer_GetInfoBlk%:b%=_m_Pointer_GetInfoBlk%!&C:
  4385. shell_PointerGetIcon(
  4386. &400CF,,_m_Pointer_GetInfoBlk%:g%=_m_Pointer_GetInfoBlk%!16:
  4387. shell_PointerGetMouseButton(
  4388. rC%):
  4389. &400CF,,_m_Pointer_GetInfoBlk%:rC%=_m_Pointer_GetInfoBlk%!8:
  4390. shell_PointerIsBelowWindowCentre(b%):
  4391. j%,eA%,fA%,lA%,mA%,dA%,cA%:
  4392. shell_WindowGetPosition(b%,eA%,fA%,lA%,mA%):
  4393. shell_PointerGetPosition(dA%,cA%):
  4394. cA%<(fA%+(mA%-fA%)/2)
  4395. shell_PointerIsAboveWindowCentre(b%):
  4396. j%,eA%,fA%,lA%,mA%,dA%,cA%:
  4397. shell_WindowGetPosition(b%,eA%,fA%,lA%,mA%):
  4398. shell_PointerGetPosition(dA%,cA%):
  4399. cA%>=(fA%+(mA%-fA%)/2)
  4400. shell_PointerIsRightOfWindowCentre(b%):
  4401. j%,eA%,fA%,lA%,mA%,dA%,cA%:
  4402. shell_WindowGetPosition(b%,eA%,fA%,lA%,mA%):
  4403. shell_PointerGetPosition(dA%,cA%):
  4404. dA%>=(eA%+(lA%-eA%)/2)
  4405. shell_PointerIsLeftOfWindowCentre(b%):
  4406. j%,eA%,fA%,lA%,mA%,dA%,cA%:
  4407. shell_WindowGetPosition(b%,eA%,fA%,lA%,mA%):
  4408. shell_PointerGetPosition(dA%,cA%):
  4409. dA%<(eA%+(lA%-eA%)/2)
  4410. shell_PointerSaveEvnts(u%):
  4411. Evnts_SaveEvnt(u%,_m_PointerIn_Anchor%,_m_PointerIn_DataBlk%,_m_PointerIn_DataOffset%):
  4412. Evnts_SaveEvnt(u%,_m_PointerOut_Anchor%,_m_PointerOut_DataBlk%,_m_PointerOut_DataOffset%):
  4413. shell_PointerLoadEvnts(u%):
  4414. Evnts_LoadEvnt(u%,_m_PointerIn_Anchor%,_m_PointerIn_DataBlk%,_m_PointerIn_DataOffset%):
  4415. Evnts_LoadEvnt(u%,_m_PointerOut_Anchor%,_m_PointerOut_DataBlk%,_m_PointerOut_DataOffset%):
  4416. shell_PointerGetMovementVector(lH%,mH%,dA%,cA%,
  4417. bB%):YB%=dA%-lH%:bB%=cA%-mH%:KC%=
  4418. :LC%=
  4419. :NC%=
  4420. :MC%=
  4421. (YB%)>
  4422. (bB%)
  4423. dA%>lH%
  4424.     NC%=
  4425. cA%<mH%
  4426.     LC%=
  4427. YB%<>0
  4428. bB%<>0
  4429. _m_evnts_DragIconLastScrollUp%=KC%:_m_evnts_DragIconLastScrollDown%=LC%:_m_evnts_DragIconLastScrollLeft%=MC%:_m_evnts_DragIconLastScrollRight%=NC%:_m_evnts_DragIconLastDX%=YB%:_m_evnts_DragIconLastDY%=bB%
  4430. shell_PointerGetLastMovementVector(
  4431. bB%):KC%=_m_evnts_DragIconLastScrollUp%:LC%=_m_evnts_DragIconLastScrollDown%:MC%=_m_evnts_DragIconLastScrollLeft%:NC%=_m_evnts_DragIconLastScrollRight%:YB%=_m_evnts_DragIconLastDX%
  4432. "bB%=_m_evnts_DragIconLastDY%:
  4433. shell_PointerLimit(b%):
  4434. shell_MouseLimit(b%):
  4435. shell_PointerRemoveLimits:
  4436. shell_MouseRemoveLimits:
  4437. _shell_CaretMove_Init:nH%=20:
  4438. sD%4:
  4439. tD%4:!sD%=0:!tD%=0:AJ%=0:qH%=20:
  4440. uD%4:
  4441. vD%4:!uD%=0:!vD%=0:EJ%=0:=0
  4442. shell_AttachCaretPreMoveHandler(b%,B$):
  4443. c%,a%,A$,p%,YA%:
  4444. shell_GetWindowIdentifier(b%):a%=
  4445. Evnts_GetEvntListOffset(A$,-1,sD%,nH%,
  4446. ):c%=!sD%:YA%=c%!4:c%+=a%:$c%=A$:c%!&C=-1:
  4447. !tD%=0
  4448. 3e'!tD%=
  4449. shell_HeapBlockFetch(
  4450. (B$)+1)
  4451. :p%=c%+16:
  4452. Evnts_UpdateData(p%,tD%,AJ%,B$)
  4453. shell_EvntHandle_CaretPreMove(_window_handle%,_icon_handle%):
  4454. A$,a%,i%,JA%,w%,B$:
  4455. k%:A$=
  4456. shell_GetWindowIdentifier(_window_handle%):
  4457. A$<>""
  4458. 3~8a%=
  4459. Evnts_GetEvntListOffset(A$,-1,sD%,nH%,
  4460. a%>=0
  4461. `i%=!sD%+a%:JA%=i%!16:w%=!tD%:B$=$(w%+JA%):k%=
  4462. ("FN"+B$+"( _window_handle%, _icon_handle% )")
  4463. shell_AttachCaretPostMoveHandler(b%,B$):
  4464. c%,a%,A$,p%,YA%:
  4465. shell_GetWindowIdentifier(b%):a%=
  4466. Evnts_GetEvntListOffset(A$,-1,uD%,qH%,
  4467. ):c%=!uD%:YA%=c%!4:c%+=a%:$c%=A$:c%!&C=-1:
  4468. !vD%=0
  4469. '!vD%=
  4470. shell_HeapBlockFetch(
  4471. (B$)+1)
  4472. :p%=c%+16:
  4473. Evnts_UpdateData(p%,vD%,EJ%,B$)
  4474. shell_EvntHandle_CaretPostMove(_window_handle%,_icon_handle%):
  4475. A$,a%,i%,JA%,w%,B$:
  4476. k%:A$=
  4477. shell_GetWindowIdentifier(_window_handle%):
  4478. A$<>""
  4479. Evnts_GetEvntListOffset(A$,-1,uD%,qH%,
  4480. a%>=0
  4481. `i%=!uD%+a%:JA%=i%!16:w%=!vD%:B$=$(w%+JA%):k%=
  4482. ("FN"+B$+"( _window_handle%, _icon_handle% )")
  4483. _shell_Caret_Init:=0
  4484. shell_CaretSetPosition(SA%,EB%,FJ%,GJ%,UA%,VB%):
  4485. &400D2,SA%,EB%,FJ%,GJ%,UA%,VB%:
  4486. shell_IconEnsureVisible(SA%,EB%):
  4487. shell_CaretReadPosition(
  4488. VB%):
  4489. BA%:BA%=
  4490. shell_HeapBlockFetch(24):
  4491. &400D3,,BA%:SA%=BA%!0:EB%=BA%!4:PC%=BA%!8:QC%=BA%!&C:VB%=BA%!20:
  4492. shell_HeapBlockReturn(BA%):
  4493. shell_CaretSetRight(d%,t%):
  4494. &400D2,d%,t%,-1,-1,-1,
  4495. shell_IconGetData(d%,t%)):
  4496. shell_CaretPutFirstIcon(d%):
  4497. BA%:BA%=
  4498. shell_HeapBlockFetch(&800):
  4499. &400D6,d%,BA%,&40E000,&E000:
  4500. !BA%<>-1
  4501. shell_CaretSetRight(d%,!BA%):
  4502. shell_IconEnsureVisible(d%,!BA%)
  4503. shell_HeapBlockReturn(BA%):
  4504. shell_CaretPutLastIcon(d%):
  4505. shell_CaretMoveCaret(d%,1):
  4506. shell_CaretPutNextIcon(d%):
  4507. shell_CaretMoveCaret(d%,2):
  4508. shell_CaretPutPrevIcon(d%):
  4509. shell_CaretMoveCaret(d%,3):
  4510. shell_CaretMoveCaret(d%,CA%):
  4511. BA%,sH%,m%,f%,AC%:m%=0:f%=0:BA%=
  4512. shell_HeapBlockFetch(&800):
  4513. &400D3,,BA%:
  4514. BA%!4<>-1
  4515. 4f?sH%=BA%!4:
  4516. &400D6,d%,BA%,&40E000,&E000:
  4517. BA%!m%=sH%
  4518. f%=m%
  4519. m%+=4:
  4520. BA%!m%=-1:
  4521. 0:AC%=!BA%
  4522. 1:AC%=BA%!(m%-4)
  4523. BA%!(f%+4)<>-1
  4524. AC%=BA%!(f%+4)
  4525. AC%=!BA%
  4526. AC%=BA%!(f%-4)
  4527. AC%=BA%!(m%-4)
  4528. &400D2,d%,AC%,-1,-1,-1,
  4529. shell_IconGetData(d%,AC%)):
  4530. shell_IconEnsureVisible(d%,AC%)
  4531. shell_HeapBlockReturn(BA%):
  4532. _shell_ExReg_Init:_m_ExReg_FontMenu_Loaded%=
  4533. :_m_ExReg_Fonts_Loaded%=
  4534. :_m_ExReg_DrawLib_Loaded%=
  4535. :_m_ExReg_OLELib_Loaded%=
  4536. :_m_ExReg_FontLib_Loaded%=
  4537. :_m_ExReg_FontPickLib_Loaded%=
  4538. :_m_ExReg_ShareBan_Loaded%=
  4539. :_m_ExReg_ColourMenu_Loaded%=
  4540. shell_ExReg_FontMenu_Loaded:=_m_ExReg_FontMenu_Loaded%
  4541. shell_ExReg_FontMenu_Loaded:_m_ExReg_FontMenu_Loaded%=
  4542. shell_ExReg_ShareBan_Loaded:=_m_ExReg_ShareBan_Loaded%
  4543. shell_ExReg_ShareBan_Loaded:_m_ExReg_ShareBan_Loaded%=
  4544. shell_ExReg_Fonts_Loaded:=_m_ExReg_Fonts_Loaded%
  4545. shell_ExReg_Fonts_Loaded:_m_ExReg_Fonts_Loaded%=
  4546. shell_ExReg_DrawLib_Loaded:=_m_ExReg_DrawLib_Loaded%
  4547. shell_ExReg_DrawLib_Loaded:_m_ExReg_DrawLib_Loaded%=
  4548. shell_ExReg_OLELib_Loaded:=_m_ExReg_OLELib_Loaded%
  4549. shell_ExReg_OLELib_Loaded:_m_ExReg_OLELib_Loaded%=
  4550. shell_ExReg_FontLib_Loaded:=_m_ExReg_FontLib_Loaded%
  4551. shell_ExReg_FontLib_Loaded:_m_ExReg_FontLib_Loaded%=
  4552. shell_ExReg_ColourMenu_Loaded:=_m_ExReg_ColourMenu_Loaded%
  4553. shell_ExReg_ColourMenu_Loaded:_m_ExReg_ColourMenu_Loaded%=
  4554. _shell_Sprites_Init:_c_Sprites_AreaHeaderSize%=16:_c_Sprites_ReasonInitArea%=9:_c_Sprites_ReasonLoad%=&A:_c_Sprites_ReasonGetSize%=40:_c_Sprites_ReasonRemoveLeftWastage%=54
  4555. ]_c_Sprites_BadNameOrPtr$="Either a sprite name or a pointer to a sprite must be given":=0
  4556. shell_SpritesGetHeaderSize:=_c_Sprites_AreaHeaderSize%
  4557. shell_SpriteAreaLoad(N$):
  4558. WC%,S%,T%:S%=
  4559. (N$):T%=
  4560. #S%+16:
  4561. #S%:WC%=
  4562. shell_HeapBlockFetch(T%):!WC%=T%:WC%!4=0:WC%!8=_c_Sprites_AreaHeaderSize%:WC%!&C=_c_Sprites_AreaHeaderSize%:
  4563. 46,521,WC%:
  4564. 46,522,WC%,N$:=WC%
  4565. shell_UserSpritesBase:=_U%!16
  4566. shell_SpriteGetPtr(TD%,f$):
  4567. jE%,f%:jE%=
  4568. shell_HeapBlockFetch(21):$jE%=f$:
  4569. 46,280,TD%,jE%
  4570. ,,f%:
  4571. shell_HeapBlockReturn(jE%):=f%
  4572. shell_NameOfFirstSprite(PB$):
  4573. X%,N%,cA$:X%=
  4574. (PB$):
  4575. #X%=4:N%=
  4576. #X%:N%+=
  4577. #X%*256:N%+=
  4578. #X%*65536:N%+=
  4579. #X%*&1000000:
  4580. #X%=N%:cA$="":
  4581. &B:cA$+=
  4582. #X%):
  4583. #X%:=cA$
  4584. shell_SpriteRename(TD%,RB$,SB$):
  4585. 46,512+26,TD%,
  4586. shell_SpriteGetPtr(TD%,RB$),SB$:
  4587. shell_SpriteAreaSave(TD%,N$):
  4588. 46,512+&C,TD%,N$:
  4589. shell_SpriteExists(TA%,M$):
  4590. TA%=1
  4591. IG%=40
  4592. IG%=256+40
  4593. 46,IG%,TA%,
  4594. shell_StringLowerCase(M$):=
  4595. shell_SpriteExistsInUserArea(M$):=
  4596. shell_SpriteExists(
  4597. shell_UserSpritesBase,M$)
  4598. shell_SpriteExistsInWimpPool(M$):=
  4599. shell_SpriteExists(1,M$)
  4600. shell_SpriteAreaInit(TA%,IJ%):TA%!0=IJ%:TA%!8=_c_Sprites_AreaHeaderSize%:
  4601. 46,_c_Sprites_ReasonInitArea%+256,TA%:
  4602. shell_SpriteLoad(TA%,c$):
  4603. 46,_c_Sprites_ReasonLoad%+256,TA%,c$:
  4604. shell_SpriteRemoveLeftWastage(TA%,M$,XC%):
  4605. M$=""
  4606. XC%<=0
  4607. 99,_c_Sprites_BadNameOrPtr$
  4608. 46,_c_Sprites_ReasonRemoveLeftWastage%+512,TA%,XC%
  4609. 46,_c_Sprites_ReasonRemoveLeftWastage%+256,TA%,M$
  4610. shell_SpriteGetSize(TA%,M$,XC%,
  4611. UA%):
  4612. M$=""
  4613. XC%<=0
  4614. 99,_c_Sprites_BadNameOrPtr$
  4615. 46,_c_Sprites_ReasonGetSize%+512,TA%,XC%
  4616. ,,,aA%,UA%
  4617. 46,_c_Sprites_ReasonGetSize%+256,TA%,M$
  4618. ,,,aA%,UA%
  4619. shell_SpriteGetMode(TA%,M$,XC%,
  4620. UD%):
  4621. M$=""
  4622. XC%<=0
  4623. 99,_c_Sprites_BadNameOrPtr$
  4624. 46,_c_Sprites_ReasonGetSize%+512,TA%,XC%
  4625. ,,,,,,UD%
  4626. 46,_c_Sprites_ReasonGetSize%+256,TA%,M$
  4627. ,,,,,,UD%
  4628. shell_SpriteLoadAsDraw(c$,yH%,PC%,QC%,
  4629. LJ%):
  4630. pA%,MJ%,TA%:
  4631. aA%,UA%,UD%,_H%,AI%:
  4632. shell_DrawCreateFile(xD%):
  4633. shell_DrawSpriteArea(xD%,yH%,TA%):LJ%=TA%-xD%:pA%=xD%+xD%!4:MJ%=48:
  4634. shell_SpriteLoad(TA%,c$)
  4635. shell_SpriteRemoveLeftWastage(TA%,"",TA%+_c_Sprites_AreaHeaderSize%):
  4636. shell_SpriteGetSize(TA%,"",TA%+_c_Sprites_AreaHeaderSize%,aA%,UA%):
  4637. shell_SpriteGetMode(TA%,"",TA%+_c_Sprites_AreaHeaderSize%,UD%):
  4638. 53,UD%,4
  4639. ,,_H%:
  4640. 53,UD%,5
  4641. ,,AI%:aA%=aA%<<_H%
  4642. UA%=UA%<<AI%:$pA%="Draw":pA%!4=&C9:pA%!8=0:$(pA%+&C)="SprToDraw":pA%!24=PC%*256:pA%!28=QC%*256:pA%!32=(pA%!24)+aA%*256:pA%!36=(pA%!28)+UA%*256:BI%=5:pA%!40=BI%:pA%!44=yH%+24:pA%!48=PC%*256:pA%!52=QC%*256:pA%!56=(pA%!48)+aA%*256:pA%!60=(pA%!52)+UA%*256
  4643.