home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ARM Club 3
/
TheARMClub_PDCD3.iso
/
hensa
/
filemanager
/
director_1
/
!Director
/
!ChangeLog
next >
Wrap
Text File
|
1995-08-04
|
20KB
|
547 lines
0.00 - 05Aug94
--------------
First version that even vaguely works
Does TreeMenu functions but not BackMenu yet!
0.01 - 11Aug94
--------------
*DirectorMemory added to allow tracing of dynamic memory allocations and
malloc, free and realloc changed to keep the totals updated.
Filters initialised by task instead of module.
BMG parsing added for BackMenus
Static menus kept in sorted linked list
-path items added for BMG so can now attach TreeMenus to BackMenus!
"Main" menu attached to icon bar icon on select
Filter on pinboard to intercept the menu opening the menu called "Pinboard"
Sprites in the file menus
0.02 - 11Aug94
--------------
OS_GBPB uses a malloc-ed 4k block for much improved speed
-key made to work for hot keyed items
Hotkeys can now be added to "Menu" command via a -key, so a key can open a
menu
TreeMenu takes 64k
Pinboard+ uses 18k (module) + 42k (menu)
Total 124k
DirectorMemory
Program code 10704
Workspace 3408
Heap 21456 (143 blocks)
-----------------------
Total 35568 Bytes
Saving 90k
0.03 - 12Aug94
--------------
DirectorObey implemented. Cuts time to load 14k menu from 5.2 seconds to
0.75 seconds (with cached directories)
System variable MenuText set to the text of the menu whenever a command
option is chosen
-len implemented. Size of buffer allocated is the greater of the string
supplied and the length so 'Option FillMeIn -len 0' is acceptable. However
it doesn't set %0, use <MenuText> instead
These system variables are set whenever a sub menu is opened or an item is
chosen off a menu
Director$CurrentPath - full path of object
Director$CurrentDir - directory object lives in
Director$CurrentLeaf - leaf name of object
If the object is a root directory (eg ADFS::4.$ or Root:) then CurrentPath =
CurrentDir = CurrentLeaf
"MenuMenu" opened when menu clicked on a path menu, otherwise the command is
run as normal
Bug fix: menus always removed from displayed even when error occurs. Fixes
Menu not found after choosing an option that caused an error
Bug fix: module always removed on task shutdown (stops error after choosing
cancel on an error box, loading a script and then rmkilling the module).
Bug fix: number of paramters to Menu increased so can have aliased menus with
keys!
Dash command to add a dashed line underneath the last option
0.04 - 15Aug94
--------------
Put scaled large icon in menu if small sprite not available
Keys added to menus by name
Keys are case insensitive
Can be modified by ⇧ (shift) ^ (ctrl) or ~ (alt)
Keys are done by name, eg F1 or ⇧^Insert (case insensitive)
Home, Return, Ret, Enter, Backspace, BkSp, Space, Delete,
Del, Esc, Print, Pnt, F1, F2, F3, F4, F5, F6, F7, F8, F9,
Tab, Copy, Cpy, End, Left, Right, Down, Up, PageDown, PgDn,
PageUp, PgUp, F10, F11, F12, Insert, Ins
^Number keys don't work, ^KeyPad numbers should
Haven't found any keys that work with ALT!
⇧A = ⇧a and A = a (ie keys are independent of CapsLock state)
If an option or a menu has a key definition it is added to the text with a
space before it. If you want the items to line up then you will have to add
spaces after the menu text. RISCOS 3.5 will line them up for you (most of
the time!).
Bug fix: "Too Many Menus" error removed. If the Wimp ever allows more than 8
menus then Director will be able to cope just fine. (Director allows that
one error to pass un-reported afer making the sub-menu).
0.05 - 17Aug94
--------------
Commands and submenus are now parsed when run
"Text" for normal command or sub-menu
"Menu:Name" to bring up named menu
"Save:Path" for save box of the given path (*)
"Path:Path" for menu of that path (*)
"Command:Text" runs the text as if it were a command
"Quit:" Quits Director
"Info:" Brings up Director's info window
"OldMenu:" To open the last filtered menu (for getting pinboard menu)
(*) If the path is missing eg "Path:" or "Save:" then it will use
the path of the window that the pointer is over. If the path is
present it is GS_Trans-ed before use.
Director no longer has any native menus. Icon bar menus changed to
"IconMenu" and "IconClick".
If you click on an option which has no commands attached, but does have a
sub-menu, Director will open the sub-menu
Save: implemented. Brings up a box with an icon like a large info icon in a
filer window which you can drag to an application or pinboard. (The save box
was much more difficult than I thought. On reading of the PRMs I though I'll
just pretend to be the Filer (which is what I am doing really) and send a
Message_DataLoad. This works fine sending data to applications. However It
put the icons in really odd places on the pinboard so I worked out I had to
send out another message (FilerSelected or something like that). Then the
pinboard and applications worked but the filer didn't want to do anything
with my DataLoads, and even worse it Acknowledged them! So I had to write a
bit which discovered whether the task was the Filer and then do a DataSave,
DataSaveAck and then use FilerAction to copy the files, reading the default
state of the Verbose etc from the CMOS. Phew!)
DirectorDo Implemented
DirectorIcon implemented for defineable icons. Director no longer has any
inbuilt icons.
0.06 - 05Sep94
--------------
Changed the way mouse clicks are intercepted by intercepting MouseV rather
than EventV. This works because the Wimp uses SWI XOS_Mouse internally.
This means that the Wimp always gets the menu click on the title bar before
we open our menu so we can have the menus opening on the downward press of
menu rather than its release as before. We can also stop the wimp getting
the mouse button clicks at all. This seems to imply that the Wimp module is
re-entrant, at least with Wimp_PointerInfo and Wimp_SendMessage. Don't know
how far you could push it though!
Bug fix: When computer busy, menu click over title bar opens menu then
closes it! (See above)
Discovered how to cancel an open menu (with Wimp_CreateMenu with r1 = -1) and
this is used to cancel an open menu if menu is clicked twice over a title
bar. Why oh why can't I call a SWI to ask the Wimp whether a menu is open
and if so ask it for the address of the MenuBlock? This would make it all
much simpler!
Bug fix: SaveBox icon is no longer filled so it now looks like the filer with
textured window backgrounds in RISOCS 3.5.
Icons kept in sorted linked list (referred to by sprite name) and duplicates
deleted. -alias <name> added to DirectorIcon to allow reference to icons by
other than their sprite name.
Icons now created on a PollWord rather than a Null which makes them appear
much quicker.
-time implemented for DirectorIcon. The length of the string is the length
of the -text or the length of the -time string if no text is supplied
Eg DirectorIcon !Director -time "%24:%MI:%SE" -text "00:00:00"
The time string is updated with ForceRedraw on the icon text to avoid the
icon flickering in RISCOS 3.5. The text still flickers in a rather
unsatisfactory manner.
The first item above the divider (in the UpMenus) in an automatically
generated menu does not now have a sub-menu. There is no need for one since
the contents of the directory is visible below the divider.
Bug fix: updating a menu from itself didn't work. (If a menu is returned to
the stored list and a menu of that name already exists then the menu being
returned is deleted. This means that if you update a menu from a itself, the
new menu will appear as soon as you open it again (the old menu will persist
as long as you keep it open).)
Bug fix: can't open the MenuMenu from the MenuMenu. (Was firstly because the
displayed list was not being checked for opening a menu and second because
the adjust click code looked at the menu handle and decided it hadn't changed
so deleted the new menu.)
MenuMenu now opened when the File 'XXXX' item clicked on in filer menus (with
any button).
"MenuMenu:Path" menu command added. Takes path, adds .<leaf> to it, sets up
the Director system variables and opens the MenuMenu. A bit obscure maybe!
Method of discovering a window's taskhandle changed to use UserMessageAck as
per 3-198. Avoids disturbing the task with a null event.
A WimpMessage defined for opening a menu which is a Wimp_Pointer block with a
menu name on the end. This is used internally rather than the cumbersome way
it was done before. Could also be used externally.
Adjust click on disc drive icons produces a directory menu of the path that
would have been opened.
Wrote the !Help file. Changed file structure slightly.
BMGon and BMGoff changed to MenuProcessing <On|Off|1|0|Yes|No>
Memoriser added. A new extended menu type Memoriser: opens it. (NB I spell
Memoriser with an 's' (English) not with a 'z' (American) as doen Ben
Summers!).
MemoriserItems command added to control the growth of the Memoriser menu.
Argument to -sub is now GSTransed as originally intended. You may have to
change your MenuMenu changing -sub Path:<Director$CurrentDir> to
-sub Path:|<Director$CurrentDir>
-up added to Option. When used with -path will cause the sub-menu produced
to have upmenus. Used with Memoriser.
ProcessKeys implemented.
0.07 - 09Sep94
--------------
Name changed :-)
Sprites and Sprites22 made
Made a strlen1 for length of a string + terminator since this seems to be the
most common usage, and added it in.
Deleted some unused printing routines.
Memoriser files now have submenu pointers.
A Path: or -path can now be given of a file as well as a directory. It puts
the file above the dotted line as well as below.
Anywhere that used the directory that the pointer was over (eg Path: or
Save:) now is given the straight path (whether it is a file or directory)
instead of the path is it was a directory or the ^ path if it was a file.
Not sure what effect this will have on existing Menus.
Removed some unused message types
Where using SaveRegs and ROUTINE changed the saved registers to NONE
Added a -v or -verbose option to DirectorObey
Included &, @ and % in ParsePath (fixes problem with & when using the net).
Fixed root directories appearing as unknown files
0.08 - 04Oct94
--------------
Swi chunk (&4A100) and error chunk (&80D000) arrived from Acorn.
Error numbers rationalised (but not documented :-)
Installation of pinboard filter changed so it doesn't give an error if there
is no pinboard installed
0.09 - 10Oct94
--------------
Dynamic: made. Works like Command: except the command should set
Director$Menu to the name of the extended menu to open on its return.
-up makes the item have a submenu even if it is a file
SWI interface made. Pass r0 as a string with the parameters to the
equivalently named * command to speed up dynamic menus.
GSTrans: command made. It GSTranses the following command and then
reinterprets it.
Director$MenuMenu used to get name of MenuMenu to open (could/should do this
to the pinboard menu also)
-temp option added to Menu. A menu with -temp will be displayed once and
then destroyed. Useful for dynamic menus and used internally with directory
menus. Temporary menus show on ListMenus with a * appended.
MenuText system variable is set whenever a menu selection is decoded so it
can be used in dynamic menus attached as sub-menus, not just commands.
0.10 - 19Oct94
--------------
Menu over filer menu had stopped working.
DirectorPathParse implemented (an external interface to an existing routine).
0.11 - 21Oct94 *** Public Release #1
-------------------------------------
DirectorEdit changed so it works in a task window and at the F12 star prompt.
Should work from every possible situation now.
DirectorMouseDir implemented (an external interface to an existing routine).
0.12 - 15Mar95
--------------
MakeRelease corrected to include my menu, not two copies of the default menu.
OpenFiles and Tasks dynamic menus added.
Dynamic MenuMenu converted into BASIC for speed, and fiddled with
extensively.
Lots more small changes and bug fixes in the menus.
Fixed director and Filer Short Cuts interaction by making director stricter
about which menu entry in the filer it allows a click over.
0.13 - 17Mar95
--------------
Claimed UpCallV to intercept Media not present and Media not known. This is
done when generating path menus and when generating directory menus. For
some reason using OS_ChangeEnvironment didn't work, maybe it doesn't for
module tasks. Using OS_Claim on UpCallV worked fine.
Added 256 bytes space on the end of the OS_GBPB block when reading
directories. This is for badly behaved file systems (like CDFS) which write
off the end of the block. Fixes only getting partial directory menus on some
CD-ROMs with very large directories.
If a file (or directory) in the memoriser menu is not found when Memoriser:
is being opened (eg you've deleted it) then it will be removed from memorised
files and won't show on the menu.
An optional parameter has been added to Memoriser:. It is numeric in the
range 0 - 7. If it is omitted memoriser works as before.
Memoriser:1 - memoriser shows applications
Memoriser:2 - memoriser shows directories and images
Memoriser:4 - memoriser shows files
The parameters can be combined in a linear fashion, eg Memoriser:6 shows
directories, images and applications but not files.
Invented an error exit macro which save an instruction sometimes (when
exiting from a routine with a stack frame), and at least 4 cycles. Makes the
macros more logical and easier to use also.
0.14 - 21Mar95
--------------
Made director use Dynamic areas if the OS supports them. This has the
advantage of reducing RMA fragmentation. The module code and its main
workspace (3.5k) are still held in the RMA, but all other allocations will
come from the dynamic area. The area should shrink and grow as necessary.
DirectorMemory altered to return information about the dynamic area if it is
in operation.
Dynamic area 24576 - total size of dynamic area
Free in area 2168 - total free space in area
Largest block 1564 - largest block that could be allocated
- without extending the heap
Fixed MenuMenu over filers (again).
MemoriserSave and MemoriserLoad implemented.
0.15 - 07Apr95
--------------
Implemented DirectorShowMenu. This means that you can create obey files to
be pinned to the backdrop and clicked on to get menus appearing.
-nosprite added to the option command. This stops a sprite appearing in a
path menu. It also stops the menu entry being greyed out if it did not
exist.
-remove option added to Menu
-remove option added to DirectorIcon
If the menu or icon is not found then they don't return an error.
Added colours and icon numbers to Menu.Aliases
Added DirectorFilter to director and removed the built in filters on the
pinboard, and title bars. Now need to add the following to get the previous
default setup.
DirectorFilter "Title Bar Directory Menu" * Path: -icon TitleBar -menu
DirectorFilter "Alt Menu Directory Menu" * Path: -menu -alt
DirectorFilter "Pinboard Menu" Pinboard Pinboard -icon WorkArea -menu
Put auto detection of tasks starting and closing to keep the task handles up
to date. You can now filter on a task which isn't started, and director will
notice when it starts and change the task handle.
Enumerated lists of menus/icons/filter added using a SWI interface and
dynamic menus, using new SWI Director_Enumerate.
Added memory information SWI Director_Memory and a dynamic menu to show it.
Removed DirectorMemory and ListMenus as they are redundant along with the
number printing routines as they are no longer used. This saved 920 bytes.
0.16 - 11Apr95
--------------
Changed the source files into h and s directories and made the h files import
the correct labels. Shows up all the places where routines are in the wrong
place!
Started using Straylight's setdate program. It finally sorts out the
makefile problems of creating a bit of source program with the date in it.
0.17 - 02May95
--------------
Fixed: When the computer is busy the menus don't always work properly. When
we are using Wimp_GetPointerInfo from within the OS_Mouse routine, we are
etting old information. This includes the mouse position AND the window
handle / icon. Updating the mouse position in the window pointer block fixes
the problem.
Made dynamic menus (only) set Director$Window and Director$Icon to the window
handle and icon number that the request was over respectively.
Fixed: directorfilter "xxxx" xxxx pinboard -menu, where xxxx isn't a valid
task name, causes everything to be intercepted!
Fixed: Can't attach a filter to an iconbar icon.
Added a pretend icon type IconBar so it is possible to filter on icon bar
icons only. Eg
DirectorFilter "CDFS" "CDFS Filer" "CDFS" -icon IconBar -menu
0.18 - 05May95 *** Public Release #2
-------------------------------------
Fixed: a bug in the Ack routine. Would have crashed director if anyone had
sent it a recorded message.
You can now drag files from the filer or pinboard into the savebox. It
leaves bits of the old icon behind for some reason.
Added -dragto to DirectorIcon. This specifies a menu which is run when a
file is dragged to a director icon. The file path is is Director$CurrentPath
…Leaf and …Dir as usual.
Added -dragfrom to DirectorIcon. This either takes a path which then acts
exactly like the SaveBox or takes a menu preceeded by * which will be run
with Director$CurrentPath …Leaf and …Dir set up.
Added -file to DirectorMouseDir. This indicates that a file result is
acceptable. Changed MenuMenu to use it.
Fixed: untyped files don't disply an icon
0.19 - 16Jun95
--------------
Made menu entry icon validation strings fixed length so they can be changed
later. Interestingly padding with ; provokes the RISOS 3.5 menu width bug,
padding with space doesn't.
Before opening a menu, any path items have their sprites updated. At last
application and file sprites get updated properly as the applications are
seen! (Dom, this one is for you :-) However it only updates it once from
unknown app to sprite, so opening menus with path items doesn't take too
long.
Not found path items will now go from shaded to un-shaded if they are later
found.
Filter's system changed to use Wimp_Filter for all non -ve icons. This makes
it much better behaved when the machine is busy.
Made director use Service_FilterManagerInstalled and
Service_FilterManagerDying to restart its filters if the filter manager is
restarted (eg when running the toolbox on RISCOS 3.10)
We now restart the filer wimp filter if the filer is restarted.
Added -sprite to Option. This can be used to specify a sprite which must be
of the correct size, for a menu entry. If the sprite is not found then
small_xxx will be used.
0.20 - 22Jun95
--------------
Support interactive help in a basic form, prior to adding display of what
each menu entry does.
Made -key exit quietly if given an empty string to enable the passing of keys
in system variables, null variable meaning no key.
0.21 - 21Jul95 *** Public Release #3 via Acorn User October 1995 issue
-----------------------------------------------------------------------
Opened the keys window with a position of -3 so it never becomes visible.
*** took it out again as it stiffs the machine when you press ⇧F12 :-(
Only update time icons when the time string has changed. This stops the once
per second flicker if you have a HH:MM time display.
IfThereIs had another parameter -X to suppress errors added.
Fixed a bug in Utils.FilerAc which stopped delete working on RISCOS 3.10
Fixed a bug in System.Variables which stopped "text working.
Known bugs
==========
DirectorMouseDir x causes any BASIC program after it in a dynamic menu to
emit "not enough application memory to start BASIC". This is because it
starts up and shuts down a wimp task, which removes all the application
memory. Workaround: put the DirectorMouseDir into a separate file.
Dragging from the icon bar to pinboard does not quite put the icon in the
right place. Must be something to do with the fact that the icon bar isn't a
proper window.
Director menus with sprites in are sometimes the wrong width under
RISCOS 3.5. I think this is a bug in the OS. If you re-open the menu then
it may correct itself.