home *** CD-ROM | disk | FTP | other *** search
-
- TreeMenu history:
- =================
-
- See later in this file for a detailed description of the changes.
- Meanwhile...
-
-
- A Potted History Of Released Versions Of TreeMenu.
- --------------------------------------------------
-
- DirMenu 1.20 May 12 1993
- Bog standard. One configurable iconbar icon.
-
-
- DirMenu 1.30
- Can open iconbar menu on left hand side of screen.
- Added 'Help', 'Edit Configs' and 'Update' to normal iconbar menu.
-
-
- DirMenu 2.21 18 July 1993
- A few small bug fixes and enhancements.
- Can have multiple iconbar icons.
- Displays directories as applications in accordance with Jens Ovesons'
- FilerPatch.
- Detects Alt-<Menu> inside Filer windows, and <Menu> clicks on titlebar of
- Filer windows.
-
-
- DirMenu 2.23 13 Aug 1993
- Fixed a major bug which could crash the system when used with !Memphis.
- Cleaned up the Filer-titlebar code. Included an option to turn off Filer
- window titlebar clicks.
-
-
- ************************************************************************
- ************************************************************************
-
-
- The latest version is:
-
- TreeMenu 2.70 21 Feb 1994
- Detects <Menu> clicks on all windows, not just Filer windows.
- Copes with image filesystems now.
- Added 'Set CSD' option to window menus.
- Updated to cope with newer FilerPatch, plus a few enhancements.
- Can swap <Select> and <Menu> mouse buttons, and set CSD with <Alt>
- Made the menus auto-scrolling. I'm dead chuffed with this particular
- improvement...
-
-
- ************************************************************************
- ************************************************************************
- ************************************************************************
-
-
- Detailed History
- ----------------
-
- 0.00 July 1992
-
- Stored the whole HD directory tree as a file and loaded it each time it was
- run. To update the tree, had to delete the file and run again. A bit crap,
- but I used it every day for months, and it saved a lot of time!
-
-
- 1.00 May 1993
-
- Having seen !QuickDir by Clive Jones, I decided to provide menu-making on the
- fly as well, so the menu tree was always up-to-date. Also converted to
- DeskLib, which is superb. Added the configuable root menu featue.
-
-
- 1.10 May 5 1993
-
- Now displays icons in the menus. Discovered that the Wimp sends a message
- with action code 0x400c9 when a menu is removed without a selection being
- made (e.g. a click off the menu). This is used to release all claims on
- further messages, which are detected when the menu is open in order to create
- new sub-menus when MENU_WARNING messages are sent by the WIMP.
-
-
- 1.20 May 12 1993 ** First release **
-
- Added the Info/Quit menu. The Info box is my first ever dialogue box, and I
- don't know how to make it moveable like all other dialogue boxes I've seen.
-
-
- 1.21 May 24 1993
-
- Added the options to open the root menu on the left hand side of the screen,
- as suggested by Kai Schlichting. Fixed a minor bug which resulted in a
- garbled title bar of the submenu of a '@' root item. I've now read the
- comp.sys.acorn Application Writer's Guide, so there is now no !Boot file, and
- I've found out how to make the Info window movable (process event_OPEN
- events).
-
-
- 1.30 ** Second release **
-
- Added Help to normal menu. Added 'Edit Configs' and 'Update' to normal menu.
- These do a poor-man's implementation of a proper dialogue-box configuration
- setter/saver. If I had more time... Actually, you shouldn't want to change
- the configs very often, so this method isn't too bad. Changed the template
- file so that the program fills in the version/date when it is run.
-
-
- 1.31
-
- Looks for File_0fb instead of File_fb, when searching for a file-type
- sprite when the file-type is < &100.
-
-
- 1.32
-
- Compiled without function names in code, to make it slightly smaller.
-
-
- 1.40 20 June 1993
-
- Can have multiple icons on the icon-bar, with independent root menus.
-
-
- 1.41
-
- Can have text under the icons.
-
-
- 1.42 28 June 1993
-
- If a directory has bit 6 of its Access atributes set, !DirMenu now displays
- it as an application (i.e. looks for a wimp sprite with same name). This is
- for compatability with FilerPatch, by Jens Ovesen.
-
-
- 1.43 4 July 1993
-
- The WIMP doesn't seem to invert text+sprite icons in the same way as normal
- icons in menus, so I've padded all items with spaces, making highlighted
- icons in the menu easier to see.
-
-
- 2.00 11 July 1993
-
- Now creates a menu for Filer windows, like !QuickDir. This is done by
- attaching a filter to the Filer which sends !DirMenu an event_CLICK when
- Alt-Menu is clicked on a filer window.
-
-
- 2.10 13 July 1993
-
- Opens a menu when there is a menu-click on the filer window title bar. I
- think this is a lot more convenient than going to the keyboard to press
- <Alt>. Couldn't use a filter for this because menu-clicks on title bars don't
- seem to be passed on to apps by the Wimp. Hence had to make a module which
- claims OS (not Wimp) mouse button events, and sends event_CLICK's to DirMenu.
-
-
- 2.11 13 July 1993
-
- Opens a Filer-window menu for both cases - menu on title bar, and alt-menu on
- workarea. !MakeMod makes a single module which acts as a filter on the Filer,
- and also catches mouse events.
- I Couldn't use mouse-event-detector for the Alt-Menu case because the filer
- would flash open its menu just before DirMenu opens its menu.
- !RunImage runs the Basic prog '!MakeMod' after it has initialised as a task.
- !MakeMod then assembles the module, called DirMenuMouse, assembling in the
- Filer and DirMenu task_handles. When DirMenu is quit, it RMKill's the module.
- Assembling a module every time DirMenu is run is a bit clumsy, but I am a
- new-comer to ARM assembler, so a module that actively finds the relevant task
- handles (like in !QuickDir) is a bit too advanced for me. My method makes for
- a smaller module anyway, and anyway Acorn have gone to the trouble of
- including an assembler on every machine, so I might as well take advantage of
- it!
- I don't know of any way of preventing the Wimp from seeing a mouse click.
- This caused a few problems when making DirMenu respond to non-Wimp events
- from the module. Any suggestions ?
-
-
- 2.20 14 July 1993
-
- Uses a simple Wimp_Poll loop instead of DeskLib's Event_ functions, which are
- a bit of a luxury in such a simple program. This makes !RunImage nearly 5k
- smaller. However, it still can't fit into a 32k wimpslot.
-
-
- 2.21 18 July 1993 *** third release ***
-
- Can set DirMenu to expand all system variables in file-paths prior to
- Filer_Run-ing them. This is for when iconbar icons are specified to use
- system variables such as <Wimp$ScrapDir> or @. It makes file/application
- windows contain the full path name of the files that are clicked on. This
- just uses SWI "OS_FSControl" with r0=37.
-
-
- 2.22 27 July 1993
-
- Oh dear! The click-on-Filer-titlebar thing seems to be a bit wobbly. Changes:
- 1. Detects true menu button click i.e. buttons 000 -> 010, rather than
- xxx -> y1y.
- 2. When opening a Filer-window menu, the main program now rechecks that
- the pointer is over a titlebar, as a drag closely followed by a menu
- click on a workarea seem to result in Wimp_GetPointerInfo returning
- the poition of the start of the drag i.e. a titlebar. This resulted
- in spurious menu opening sometimes. Unfortunately, if you now move
- the pointer away from a titlebar very quickly after clicking menu,
- this modification may mean that DirMenu won't open a menu.
- 3. In !MakeMod, changed SWI calls to have 'X' bit set, and return if the
- SWI signals an error. The normal OS default error handling can give a
- horrid crash when using MemFS's non-multitasking 'free' window. I
- don't think this is my fault, as the OS error handling should cope
- with errors, and the SWI was Wimp_GetPointerInfo - hardly a
- complicated system-altering one. There was no problem with other
- non-multitasking windows.
-
- Thanks to Kai Schlichting for noticing these problems.
-
-
- 2.23 13 Aug 1993 *** fourth release ***
-
- Mr Schlichting still gets spurious menus, and I'm a bit stumped by them. I
- think part of the the problem is something to do with Wimp_GetPointerInfo
- returning an out-of-date old mouse position just after a drag has taken
- place, leading to DirMenu being told that a click occured on a title bar,
- when it didn't. You can now make DirMenu only respond to Alt-Menu clicks in a
- filer window, by altering 'Configs'. This removes the low-level code from
- DirMenu's module. The two tiny Obey files 'TBar' and 'NoTBar' are needed
- because Filer_Run doesn't allow you to send parameters to whatever it is
- you're Filer_Run-ing.
-
-
- 2.24 16 Aug 1993
-
- Copes with different Access bit used by Filer+ 1.13. Doesn't search for
- #<spritename> etc yet.
-
-
- 2.25 5 Sep 1993
-
- A few small improvements:
-
- 1. Treats image filesystems as directories, allowing you to look inside
- them, assuming ArcFS (or similar) is running. The old read-only ArcFS
- didn't support this, so I couldn't do it until now.
- 2. Now shows correct Filer+ sprites in the top half of the Filer-window
- menu.
- 3. Objects which are hidden by Filer+ ( because bit 6 of attributes is
- set) are displayed with fainter text, but are still
- selectable.
-
-
- 2.30 6 Sep 1993
-
- Displays sprites like #<name> etc. for directories, applications and images,
- according to the precedence rules used by Jens Ovesen's Filer+ 1.14.
-
-
- 2.40 20 Sep 1993
-
- Responds to Menu clicks on any window, such as an !Edit or !Paint window.
- DirMenu uses Wimp_TransferBlock to read the (indirected) title of the window,
- as it will typically be stored in another applications workspace. If the
- initial part of the window title is a filename (i.e. most of the time),
- DirMenu will display the contents of the directory belonging to the file,
- otherwise it will be a directory, so DirMenu will display the contents of
- this directory. If the window contains more than about 100 icons, DirMenu
- will crash. This is because the SWI which finds the title of a window
- (Wimp_GetWindowInfo) also returns all the icons in the window, and there is
- no way of telling how many of these there are so you can't garantee there
- will be enough space reserved... It seems crazy to me that there isn't an SWI
- which returns a window's info *without* its icons. Please let me know if
- there is (a RISC OS 3?) one that I haven't heard of.
-
- Another problem occurs when Menu is clicked on the title of a Zap window. Zap
- seems to store only the visible part of the window title, in order to
- implement custom justification where the leaf of the path is always visible.
- This means that DirMenu will sometimes only get part of the path when Menu is
- clicked on a Zap window.
-
- As usual, you can alter Configs so that these clicks are ignored, if you find
- these bugs a problem. On the other hand, if you know of any solutions to
- them, please tell me!
-
- I've got rid of the Obey files 'TBar' and 'NoTBar', because there are now
- too many options to send to the Module-maker !MakeMod. I now use the system
- variable 'DirMenu$Options' to pass the parameters to !MakeMod.
-
-
- 2.41 22 Sep 1993
-
- OS_File (with r0 = 5) should return 0 in r0 if a file doesn't exist, but
- sometimes it just gives an SWI error, so DirMenu now looks at the SWI error
- flag before accepting a window title as a valid pathname. Previously,
- Menu-clicking on a Zap window could make DirMenu open stupid menus. Also
- explicitly closes any existing menu, using Wimp_CreateMenu with r1=-1, when a
- title-bar click is detected, instead of waiting for the Wimp to do it. I
- thought this might save a little time on slow machines.
-
-
- 2.42 29 Oct 1993
-
- DirMenu quits with an error message if it finds it has tried to get title of
- a window with more than 100 icons. This is because some of DirMenu's memory
- will certainly have been overwritten, and this could have unpleasant
- consequences if ignored.
-
-
- 2.50 29 Oct 1993
-
- Can have a 'Set CSD' item in a window menu
-
-
- 2.51 31 Oct 1993
-
- Can force a 'Set CSD' item to appear by holding down <Shift> while Menu
- clicking on the titlebar of a window.
-
-
- 2.52 11 Nov 1993
-
- Uses modified RO3 version of Wimp_GetWindowInfo, which ignores any icons in
- the window. Hence DirMenu doesn't quit if you click on a window with > 100
- icons. Thanks to Clive Jones and Erik de Kort for telling me about this. (the
- trick is to set bit 0 of R1 when calling Wimp_GetWindowInfo. R1 points to the
- block of memory reserved for the window information, which is word aligned so
- the bottom 2 bits are unused). Also stopped the closing of existing menus
- (see v. 2.41) as I think this was giving strange 'Unknown OS_Module call'
- errors.
-
-
- 2.53 18 Jan 1994
-
- Improved the error handling when an item in an icon-bar menu was incorrectly
- specified as (for e.g.) "DeskLib: *" instead of "DeskLib:*"
-
-
- 2.60 2 Feb 1994
-
- Tidied up the code generaly.
- Called 'TreeMenu' now. Albert Koelmans at the newcastle server stored it
- under this name, and it sounds better that 'Dir(e) menu'!
- I tried to make the menus auto-scrolling, but failed miserably -Menus behave
- like normal windows, but don't seem to respond to wimp messages. Also, they
- don't seem to have a valid taskhandle
- Changed to the format of the 'Configs' file, so that the help comments don't
- take up so much space, and renamed it '!Configs'.
-
-
- 2.62 14 Feb 1994
-
- I've just bought the PRM's 8) and found that when you have finished claiming
- an event, you should call OS_Byte 13, *then* OS_Release. (I used to do it the
- other way round.
- Added the 'reverse mouse button' option, and the 'Set CSD with <Alt>. These
- were both requested by Dennis Howe ages ago, but I've only just got round to
- them.
- !TreeMenu now tells you if an error occurred from the 'Filer_Run ...' or
- 'Dir ...' command. This is useful if you try to set the CSD to a file.
-
-
- 2.70 21 Feb 1994
-
- Finally managed to make the menus auto-scrolling.
- The WIMP seems to use OS_Mouse to read the pointer position/button state,
- so I tried intercepting this SWI, and returning a bogus click. This worked,
- but requires a separate module with a SWI, and would involve coding a
- buffer in order to fake button press + buton release. The solution I now
- use is to add mouse events into OS_Mouse's buffer, using OS_Byte 138. The
- PRM's say this isn't recommended, but if you must do this, you should
- disable events while you are writing to the buffer, in case a real mouse
- event (e.g. the user clicking) arrives when you are in the middle of adding
- bytes to the buffer.
- I'm not quite sure why this is not reccomended, and I'm fairly certain
- there isn't a cleaner way. Anyway, it all seems to work OK.
- The scrolling isn't very smooth, and has only 2 speeds, but is still very
- useful.
-