• Andrew Hodgkinson's avatar
    Created Protocols source file and moved a lot of message handling from... · f3e8124f
    Andrew Hodgkinson authored
    Created Protocols source file and moved a lot of message handling from handle_messages - the latter now serves as a high level distributor to lower level functions in Protocols. Incidentally, URL files (as used by the ANT suite) can be loaded by dragging to the browser in the same way as URI files - Not A Lot Of People Know That, etc.
    
    Merged new hotlist display type Res file to existing resources, added
    support for DataSave message so items can be dragged from the hotlist
    to a specific window (RAM transfer for URI and URL files; ScrapFile for
    HTML and Text but deleted afterwards and there are appropriate guards
    to stop Reload just saying 'not found'; images run through ScrapFile and
    there is no choice but to leave them there and do a conventional fetch).
    
    All !RunD files now give a WimpSlot of 2304K. Some small changes to
    the Argo and Ursula build Res files to make the menu trees more sensible.
    Controls files now take 'file:/' instead of 'file://' in Protocols
    section. Definitions at top of URLutils.c *not* altered, as then you
    end up with invalid URLs - so it will accept 'file:/', but always generate
    'file://'. This is because some browsers exports 'file:/'. Sigh.
    
    make_no_[..._]memory_error functions now return a _kernel_oserror * rather
    than void. It's always &erb returned, but it enables users to use a more
    elegant 'return make_no_memory_error(1);', say, rather than something
    like 'make_no_memory_error(1); return &erb;'. I obviously should've written
    it like that at the outset, but never mind. All callers have been
    appropriately updated.
    
    The urlutils_leafname_from_url function now replaces illegal characters
    (A7000 Welcome Guide p54...) in the leaf with legal alternatives.
    
    Internal URL scheme is now a bit cleaner, with everything properly defined
    in URLutils.h. All references to http:, file: and ftp:, with or without
    a following '//' use the definitions in here now.
    
    More tidying and some reorganising of Hotlist source. Auto-open delay is
    now a Choices item. Some dependencies on statics removed (e.g. the
    counting functions don't accumulate into the global item_number now).
    The redraw functions used Wimp_TextOp - oops, so this has been amended
    to use whatever is supported on your Wimp. This is now in a new function
    (utils_text_width()), which the History menu routines also use (there was
    a bug in the width routine there anyway, which is therefore fixed in
    passing). Several other routines used Wimp_TextOp directly too, and
    they have been altered to use the new function as well.
    
    In hotlist code, one of the larger changes is in the API to hotlist_draw_r()
    (formerly _hotlist_draw()) which now takes item widths and heights as
    parameters - discovering these is quite slow, so doing it every time the
    function calls itself recursively is a little less efficient than
    passing the values in from elsewhere. Note that underscore prefixed
    functions are being slowly renamed to _r suffixed functions, to match
    the convention established by Tony Cheal with is table routines. This
    makes it much more obvious when something is recursive, as the same
    naming convention is used in every browser source file.
    
    Finally, note that I intend to ditch SaveDBox and use an alternate window
    with manual control of the messaging in Protocols.c. This will allow
    various improvements which at present the SaveDBox operational methods
    preclude. I'm going to have to do at least an alternate Window object for
    the SaveDBox module to use soon in any case. Getting rid of SaveDBox will
    help reduce, if only slightly, demands on the RMA.
    f3e8124f
!RunD,feb 3.8 KB