home *** CD-ROM | disk | FTP | other *** search
/ RISC DISC 1 / RISC_DISC_1.iso / pd_share / utilities / treemenu / !TreeMenu / History < prev    next >
Encoding:
Text File  |  1994-02-26  |  14.1 KB  |  377 lines

  1.  
  2.     TreeMenu history:
  3.     =================
  4.  
  5. See later in this file for a detailed description of the changes.
  6. Meanwhile...
  7.  
  8.  
  9. A Potted History Of Released Versions Of TreeMenu.
  10. --------------------------------------------------
  11.  
  12. DirMenu        1.20    May 12 1993 
  13. Bog standard. One configurable iconbar icon.
  14.  
  15.  
  16. DirMenu        1.30
  17. Can open iconbar menu on left hand side of screen.
  18. Added 'Help', 'Edit Configs' and 'Update' to normal iconbar menu.
  19.  
  20.  
  21. DirMenu        2.21    18 July 1993
  22. A few small bug fixes and enhancements.
  23. Can have multiple iconbar icons.
  24. Displays directories as applications in accordance with Jens Ovesons'
  25. FilerPatch.
  26. Detects Alt-<Menu> inside Filer windows, and <Menu> clicks on titlebar of
  27. Filer windows.
  28.  
  29.  
  30. DirMenu        2.23    13 Aug 1993
  31. Fixed a major bug which could crash the system when used with !Memphis.
  32. Cleaned up the Filer-titlebar code. Included an option to turn off Filer
  33. window titlebar clicks.
  34.  
  35.  
  36. ************************************************************************
  37. ************************************************************************
  38.  
  39.  
  40. The latest version is:
  41.  
  42. TreeMenu    2.70    21 Feb 1994
  43. Detects <Menu> clicks on all windows, not just Filer windows.
  44. Copes with image filesystems now.
  45. Added 'Set CSD' option to window menus.
  46. Updated to cope with newer FilerPatch, plus a few enhancements.
  47. Can swap <Select> and <Menu> mouse buttons, and set CSD with <Alt>
  48. Made the menus auto-scrolling. I'm dead chuffed with this particular 
  49. improvement...
  50.  
  51.  
  52. ************************************************************************
  53. ************************************************************************
  54. ************************************************************************
  55.  
  56.  
  57. Detailed History
  58. ----------------
  59.  
  60. 0.00    July 1992
  61.  
  62. Stored the whole HD directory tree as a file and loaded it each time it was
  63. run. To update the tree, had to delete the file and run again. A bit crap,
  64. but I used it every day for months, and it saved a lot of time!
  65.  
  66.  
  67. 1.00    May 1993 
  68.  
  69. Having seen !QuickDir by Clive Jones, I decided to provide menu-making on the
  70. fly as well, so the menu tree was always up-to-date. Also converted to
  71. DeskLib, which is superb. Added the configuable root menu featue.
  72.  
  73.  
  74. 1.10    May 5 1993 
  75.  
  76. Now displays icons in the menus. Discovered that the Wimp sends a message
  77. with action code 0x400c9 when a menu is removed without a selection being
  78. made (e.g. a click off the menu). This is used to release all claims on
  79. further messages, which are detected when the menu is open in order to create
  80. new sub-menus when MENU_WARNING messages are sent by the WIMP.
  81.  
  82.  
  83. 1.20    May 12 1993 ** First release ** 
  84.  
  85. Added the Info/Quit menu. The Info box is my first ever dialogue box, and I
  86. don't know how to make it moveable like all other dialogue boxes I've seen.
  87.  
  88.  
  89. 1.21    May 24 1993 
  90.  
  91. Added the options to open the root menu on the left hand side of the screen,
  92. as suggested by Kai Schlichting. Fixed a minor bug which resulted in a
  93. garbled title bar of the submenu of a '@' root item. I've now read the
  94. comp.sys.acorn Application Writer's Guide, so there is now no !Boot file, and
  95. I've found out how to make the Info window movable (process event_OPEN
  96. events).
  97.  
  98.  
  99. 1.30    ** Second release ** 
  100.  
  101. Added Help to normal menu. Added 'Edit Configs' and 'Update' to normal menu.
  102. These do a poor-man's implementation of a proper dialogue-box configuration
  103. setter/saver. If I had more time... Actually, you shouldn't want to change
  104. the configs very often, so this method isn't too bad. Changed the template
  105. file so that the program fills in the version/date when it is run.
  106.  
  107.  
  108. 1.31    
  109.  
  110. Looks for File_0fb instead of File_fb, when searching for a file-type
  111. sprite when the file-type is < &100.
  112.  
  113.  
  114. 1.32    
  115.  
  116. Compiled without function names in code, to make it slightly smaller. 
  117.  
  118.  
  119. 1.40    20 June 1993 
  120.  
  121. Can have multiple icons on the icon-bar, with independent root menus. 
  122.  
  123.  
  124. 1.41
  125.  
  126. Can have text under the icons.
  127.  
  128.  
  129. 1.42    28 June 1993 
  130.  
  131. If a directory has bit 6 of its Access atributes set, !DirMenu now displays
  132. it as an application (i.e. looks for a wimp sprite with same name). This is
  133. for compatability with FilerPatch, by Jens Ovesen.
  134.  
  135.  
  136. 1.43    4 July 1993 
  137.  
  138. The WIMP doesn't seem to invert text+sprite icons in the same way as normal
  139. icons in menus, so I've padded all items with spaces, making highlighted
  140. icons in the menu easier to see.
  141.  
  142.  
  143. 2.00    11 July 1993 
  144.  
  145. Now creates a menu for Filer windows, like !QuickDir. This is done by
  146. attaching a filter to the Filer which sends !DirMenu an event_CLICK when
  147. Alt-Menu is clicked on a filer window. 
  148.  
  149.  
  150. 2.10    13 July 1993 
  151.  
  152. Opens a menu when there is a menu-click on the filer window title bar. I
  153. think this is a lot more convenient than going to the keyboard to press
  154. <Alt>. Couldn't use a filter for this because menu-clicks on title bars don't
  155. seem to be passed on to apps by the Wimp. Hence had to make a module which
  156. claims OS (not Wimp) mouse button events, and sends event_CLICK's to DirMenu. 
  157.  
  158.  
  159. 2.11    13 July 1993 
  160.  
  161. Opens a Filer-window menu for both cases - menu on title bar, and alt-menu on
  162. workarea. !MakeMod makes a single module which acts as a filter on the Filer,
  163. and also catches mouse events. 
  164. I Couldn't use mouse-event-detector for the Alt-Menu case because the filer
  165. would flash open its menu just before DirMenu opens its menu. 
  166. !RunImage runs the Basic prog '!MakeMod' after it has initialised as a task.
  167. !MakeMod then assembles the module, called DirMenuMouse, assembling in the
  168. Filer and DirMenu task_handles. When DirMenu is quit, it RMKill's the module.
  169. Assembling a module every time DirMenu is run is a bit clumsy, but I am a
  170. new-comer to ARM assembler, so a module that actively finds the relevant task
  171. handles (like in !QuickDir) is a bit too advanced for me. My method makes for
  172. a smaller module anyway, and anyway Acorn have gone to the trouble of
  173. including an assembler on every machine, so I might as well take advantage of
  174. it! 
  175. I don't know of any way of preventing the Wimp from seeing a mouse click.
  176. This caused a few problems when making DirMenu respond to non-Wimp events
  177. from the module. Any suggestions ?
  178.  
  179.  
  180. 2.20    14 July 1993 
  181.  
  182. Uses a simple Wimp_Poll loop instead of DeskLib's Event_ functions, which are
  183. a bit of a luxury in such a simple program. This makes !RunImage nearly 5k
  184. smaller. However, it still can't fit into a 32k wimpslot.
  185.  
  186.  
  187. 2.21    18 July 1993    *** third release *** 
  188.  
  189. Can set DirMenu to expand all system variables in file-paths prior to
  190. Filer_Run-ing them. This is for when iconbar icons are specified to use
  191. system variables such as <Wimp$ScrapDir> or @. It makes file/application
  192. windows contain the full path name of the files that are clicked on. This
  193. just uses SWI "OS_FSControl" with r0=37.
  194.  
  195.  
  196. 2.22    27 July 1993 
  197.  
  198. Oh dear! The click-on-Filer-titlebar thing seems to be a bit wobbly. Changes:
  199. 1.    Detects true menu button click i.e. buttons 000 -> 010, rather than
  200.     xxx -> y1y. 
  201. 2.    When opening a Filer-window menu, the main program now rechecks that
  202.     the pointer is over a titlebar, as a drag closely followed by a menu
  203.     click on a workarea seem to result in Wimp_GetPointerInfo returning
  204.     the poition of the start of the drag i.e. a titlebar. This resulted
  205.     in spurious menu opening sometimes. Unfortunately, if you now move
  206.     the pointer away from a titlebar very quickly after clicking menu,
  207.     this modification may mean that DirMenu won't open a menu. 
  208. 3.    In !MakeMod, changed SWI calls to have 'X' bit set, and return if the
  209.     SWI signals an error. The normal OS default error handling can give a
  210.     horrid crash when using MemFS's non-multitasking 'free' window. I
  211.     don't think this is my fault, as the OS error handling should cope
  212.     with errors, and the SWI was Wimp_GetPointerInfo - hardly a
  213.     complicated system-altering one. There was no problem with other
  214.     non-multitasking windows.
  215.  
  216. Thanks to Kai Schlichting for noticing these problems.
  217.  
  218.  
  219. 2.23    13 Aug 1993    *** fourth release *** 
  220.  
  221. Mr Schlichting still gets spurious menus, and I'm a bit stumped by them. I
  222. think part of the the problem is something to do with Wimp_GetPointerInfo
  223. returning an out-of-date old mouse position just after a drag has taken
  224. place, leading to DirMenu being told that a click occured on a title bar,
  225. when it didn't. You can now make DirMenu only respond to Alt-Menu clicks in a
  226. filer window, by altering 'Configs'. This removes the low-level code from
  227. DirMenu's module. The two tiny Obey files 'TBar' and 'NoTBar' are needed
  228. because Filer_Run doesn't allow you to send parameters to whatever it is
  229. you're Filer_Run-ing. 
  230.  
  231.  
  232. 2.24    16 Aug 1993 
  233.  
  234. Copes with different Access bit used by Filer+ 1.13. Doesn't search for
  235. #<spritename> etc yet.
  236.  
  237.  
  238. 2.25    5 Sep 1993 
  239.  
  240. A few small improvements: 
  241.  
  242. 1.    Treats image filesystems as directories, allowing you to look inside
  243.     them, assuming ArcFS (or similar) is running. The old read-only ArcFS
  244.     didn't support this, so I couldn't do it until now.
  245. 2.    Now shows correct Filer+ sprites in the top half of the Filer-window
  246.     menu. 
  247. 3.    Objects which are hidden by Filer+ ( because bit 6 of attributes is
  248.     set) are displayed with fainter text, but are still
  249.     selectable.
  250.  
  251.  
  252. 2.30    6 Sep 1993 
  253.  
  254. Displays sprites like #<name> etc. for directories, applications and images,
  255. according to the precedence rules used by Jens Ovesen's Filer+ 1.14.
  256.  
  257.  
  258. 2.40    20 Sep 1993 
  259.  
  260. Responds to Menu clicks on any window, such as an !Edit or !Paint window.
  261. DirMenu uses Wimp_TransferBlock to read the (indirected) title of the window,
  262. as it will typically be stored in another applications workspace. If the
  263. initial part of the window title is a filename (i.e. most of the time),
  264. DirMenu will display the contents of the directory belonging to the file,
  265. otherwise it will be a directory, so DirMenu will display the contents of
  266. this directory. If the window contains more than about 100 icons, DirMenu
  267. will crash. This is because the SWI which finds the title of a window
  268. (Wimp_GetWindowInfo) also returns all the icons in the window, and there is
  269. no way of telling how many of these there are so you can't garantee there
  270. will be enough space reserved... It seems crazy to me that there isn't an SWI
  271. which returns a window's info *without* its icons. Please let me know if
  272. there is (a RISC OS 3?) one that I haven't heard of.
  273.  
  274. Another problem occurs when Menu is clicked on the title of a Zap window. Zap
  275. seems to store only the visible part of the window title, in order to
  276. implement custom justification where the leaf of the path is always visible.
  277. This means that DirMenu will sometimes only get part of the path when Menu is
  278. clicked on a Zap window. 
  279.  
  280. As usual, you can alter Configs so that these clicks are ignored, if you find
  281. these bugs a  problem. On the other hand, if you know of any solutions to
  282. them, please tell me! 
  283.  
  284. I've got rid of the Obey files 'TBar' and 'NoTBar', because there are now
  285. too many options to send to the Module-maker !MakeMod. I now use the system
  286. variable 'DirMenu$Options' to pass the parameters to !MakeMod.
  287.  
  288.  
  289. 2.41    22 Sep 1993
  290.  
  291. OS_File (with r0 = 5) should return 0 in r0 if a file doesn't exist, but
  292. sometimes it just gives an SWI error, so DirMenu now looks at the SWI error
  293. flag before accepting a window title as a valid pathname. Previously,
  294. Menu-clicking on a Zap window could make DirMenu open stupid menus. Also
  295. explicitly closes any existing menu, using Wimp_CreateMenu with r1=-1, when a
  296. title-bar click is detected, instead of waiting for the Wimp to do it. I
  297. thought this might save a little time on slow machines.
  298.  
  299.  
  300. 2.42    29 Oct 1993
  301.  
  302. DirMenu quits with an error message if it finds it has tried to get title of
  303. a window with more than 100 icons. This is because some of DirMenu's memory
  304. will certainly have been overwritten, and this could have unpleasant
  305. consequences if ignored.
  306.  
  307.  
  308. 2.50    29 Oct 1993
  309.  
  310. Can have a 'Set CSD' item in a window menu
  311.  
  312.  
  313. 2.51    31 Oct 1993
  314.  
  315. Can force a 'Set CSD' item to appear by holding down <Shift> while Menu 
  316. clicking on the titlebar of a window.
  317.  
  318.  
  319. 2.52    11 Nov 1993
  320.  
  321. Uses modified RO3 version of Wimp_GetWindowInfo, which ignores any icons in
  322. the window. Hence DirMenu doesn't quit if you click on a window with > 100
  323. icons. Thanks to Clive Jones and Erik de Kort for telling me about this. (the
  324. trick is to set bit 0 of R1 when calling Wimp_GetWindowInfo. R1 points to the
  325. block of memory reserved for the window information, which is word aligned so
  326. the bottom 2 bits are unused). Also stopped the closing of existing menus
  327. (see v. 2.41) as I think this was giving strange 'Unknown OS_Module call'
  328. errors.
  329.  
  330.  
  331. 2.53    18 Jan 1994
  332.  
  333. Improved the error handling when an item in an icon-bar menu was incorrectly
  334. specified as (for e.g.) "DeskLib: *" instead of "DeskLib:*"
  335.  
  336.  
  337. 2.60    2 Feb 1994
  338.  
  339. Tidied up the code generaly. 
  340. Called 'TreeMenu' now. Albert Koelmans at the newcastle server stored it
  341. under this name, and it sounds better that 'Dir(e) menu'! 
  342. I tried to make the menus auto-scrolling, but failed miserably -Menus behave
  343. like normal windows, but don't seem to respond to wimp messages. Also, they
  344. don't seem to have a valid taskhandle
  345. Changed to the format of the 'Configs' file, so that the help comments don't
  346. take up so much space, and renamed it '!Configs'.
  347.  
  348.  
  349. 2.62    14 Feb 1994
  350.  
  351. I've just bought the PRM's  8) and found that when you have finished claiming
  352. an event, you should call OS_Byte 13, *then* OS_Release. (I used to do it the
  353. other way round.
  354. Added the 'reverse mouse button' option, and the 'Set CSD with <Alt>. These 
  355. were both requested by Dennis Howe ages ago, but I've only just got round to 
  356. them.
  357. !TreeMenu now tells you if an error occurred from the 'Filer_Run ...' or 
  358. 'Dir ...' command. This is useful if you try to set the CSD to a file.
  359.  
  360.  
  361. 2.70    21 Feb 1994
  362.  
  363. Finally managed to make the menus auto-scrolling.
  364. The WIMP seems to use OS_Mouse to read the pointer position/button state,
  365. so I tried intercepting this SWI, and returning a bogus click. This worked,
  366. but requires a separate module with a SWI, and would involve coding a
  367. buffer in order to fake button press + buton release. The solution I now
  368. use is to add mouse events into OS_Mouse's buffer, using OS_Byte 138. The
  369. PRM's say this isn't recommended, but if you must do this, you should
  370. disable events while you are writing to the buffer, in case a real mouse
  371. event (e.g. the user clicking) arrives when you are in the middle of adding
  372. bytes to the buffer. 
  373. I'm not quite sure why this is not reccomended, and I'm fairly certain
  374. there isn't a cleaner way. Anyway, it all seems to work OK.
  375. The scrolling isn't very smooth, and has only 2 speeds, but is still very 
  376. useful.
  377.