DrWimp - desktop programming system.
 Andrew Ayre 1995-98
 Ray Favre 1st May 1999 - May 2010


                     HISTORY OF THE DrWimp SYSTEM.

------------------------------------------------------------------
5.04 (23 Jan 2018) Updated by Chris Johnson
    Bugfix submitted by Martin Avison
      PROCwimp_closedown modified to deal with multiple finding of the
      same font
   
    Mods by Chris Johnson
    Added two new functions:
      PROCwimp_getdfileWandH
      PROCwimp_getjpegWandH
    Modified two existing functions:
      FNwimp_getdfilesize
      PROCwint_receivedmess3or5
    Modified FNwimp_getwindowtitle to deal with window templates using
      old style window flags.


------------------------------------------------------------------
5.03 (10-Dec-2012) Updated by Chris Johnson
    PROCwint_help did not check the length of the help message being
    returned to the wimp, resulting in a crash if > 236 bytes. Fixed.


------------------------------------------------------------------
5.02 (1-Jan-2012) Updated by Chris Johnson

 - Corrected PROCwint_cleardynamicareas to treat the dynamic area
   address as an unsigned integer, rather than a signed integer.


------------------------------------------------------------------
5.01 (27-Nov-2011) Updated by Chris Johnson

 - Functions involving calls to OS_GBPB 9 and 12 corrected to follow
   the specification in the Programmer's Reference Manual. Now works
   correctly with filing systems such as Fat32FS which do not return
   an object offset simply incrementing by 1 for each object found.
   Changes are:

     Added two new functions:
       FNwimp_getdirectoryobjectnamebyoffset(dir$,RETURN offset%)
       FNwimp_getdirectoryobjecttypebyoffset(dir$,RETURN offset%)

     Modified three existing functions:
       FNwimp_countdirectoryobjects(dir$)
       FNwimp_getdirectoryobjectname(dir$,objectnumber%)
       FNwimp_getdirectoryobjecttype(dir$,objectnumber%)


REM --------------------------------------------------------------
5.00 (29-Nov-2008)

 - Added additional parameter to PROCwimp_print() to allow pages in a
   print run to be skipped.
         
 - Fixed bug which stopped FNwimp_renameobject() from working between
   different media.
    
 - Corrected extraction of any start-up options (and clarified usage in
   Manual).
    
 - Added extraction of any start-up file into new global variable (for
   added convenience only, no functional implication).
    
 - Minor tidying up.

  
REM --------------------------------------------------------------
4.91 (08-Jun-2008)

 - Added FNwimp_getfreeRAM
 
 - Fixed bug which was limiting some saved leafnames to 20 characters.
  
 
REM --------------------------------------------------------------
4.90 (05-Apr-2008)

 - Replaced PROCwimp_error() & FNwimp_errorchoice() with new versions
   in the (not so) 'new' style.

 - Extended PROCwimp_print() to allow print scaling, inverted printing
   & position-changing when 'pages-per-sheet' is 2 or 4.

 - Changed FNwimp_getjpegsize() & FNwimp_getjpegsizefile() to give
   option to return size for 90dpi image.

   (Replaced !TemplEd with !WinEd in package.)

   (Replaced !MakeApp2 with !MakeApp3 in package.)

REM --------------------------------------------------------------
4.80 (15-Dec-2007)
                         
 - Improved coding, but no functional changes, in:
     FNwimp_getwindowvisiblework()
     FNwimp_getwindowworksize()
     FNwimp_worktoscreen()
     FNwimp_getwindowvisiblesize()
     FNwimp_getwindowvisiblescreen()
     FNwimp_screentowork()
     PROCwimp_scrollto()
     FNwimp_geticonsize()
     FNwimp_getscroll()


REM --------------------------------------------------------------
4.70 (01-Mar-2007)

 - Added mouse x/y screen positions to 'DEF FNuser_menu()' parameters
 
 - Added window handle to 'DEF PROCuser_menuopen()' parameters
 
 - Added root menu handle, root menu item & next sub-menu number (i.e
   sub-menu tree position) to 'DEF PROCuser_overmenuarrow()' parameters

  (The above three changes give better and finer menu/sub-menu management)
 
 - Drawfile rendering wimp-functions now accept negative scales, which
   effectively render objects back-to-front and/or upside-down. (Will not
   work for JPEG objects in drawfiles.) 
 
 - minor internal changes not affecting functionalities.
             

REM --------------------------------------------------------------
4.60 (01-Oct-2006)

 - Renamed 'FNwimp_createblock' to 'FNwimp_createstringblock' and added
   dynamic area option.

 - Renamed 'PROCwimp_putinblock' to 'PROCwimp_putinstringblock' and
   added error reporting option.

 - Renamed 'FNwimp_getfromblock' to 'FNwimp_getfromstringblock' and
   added error reporting option.

 - Added 'PROCwimp_setstringblock' for setting all elements of string
   block to same straing-value.

 - Added 4-function suite complementary to above for integer numbers
   'FNwimp_createintegerblock', 'PROCwimp_putinintegerblock',
   'FNwimp_getfromintegerblock' & 'PROCwimp_setintegerblock'

 - Extended 'stack' options in 'PROCwimp_openwindow' &
   'PROCwimp_openwindowat' to enable window to be opened behind backdrop
   i.e. to be hidden.

 - Added comprehensive OLE facility, via new Elixir_08.
 
 - Increased options in Elixir_07.
 
 - Minor changes to default values on initialisation.
        

REM --------------------------------------------------------------
4.50 (01-Jun-2006)

 - Changed complete coding of 'FNwimp_decplacesstr' (and consequently
   removed use of 'FNwimp_roundfloat' from 'FNwimp_decplacesnum').

 - Made minor coding changes to make DrWimp library more 'compiler-friendly'.
  
 - Amalgamated 'PROCwimp_setforegroundcolour' and
   'PROCwimp_setbackgroundcolour' into new 'PROCwimp_setcolour'.

 - 'FNwimp_testobjectpresent','FNwimp_getdirectoryobjecttype',
   'FNwimp_getobjecttypenumber', 'FNwimp_getobjecttypehexstring' now
    respond correctly to 'image files' e.g. StrongHelp files.

 - Numerous minor coding improvements.
 
 - Improved error reporting when saving and printing.
 
 - Added new routine to Elixir_07.
 
 - Corrected description of 'PROCwimp_iconhide' in Manual etc.
 
 - Complete revision and re-ordering of Manual.  

REM --------------------------------------------------------------
4.40 (01-Dec-2005)

 - Eliminated all coding which specifically supported OS Versions earlier
   than 3.60. This change affects wimp-functions in the following areas:
     Dynamic Areas
     Drawfile rendering
     Plotting text in 'desktop font'
     (See Manual for details.)
 
 - Added new wimp-functions 'PROCwimp_resizeicon' and 'PROCwimp_moveicon'
   to change size/position/move an existing icon.
 
 - Added new wimp-functions 'PROCwimp_opendirectory' and
   'PROCwimp_closedirectory'.
 
 - Amalgamated three wimp-functions 'FNmesslook0', 'FNmesslook1' and
   'FNmesslook2' into single new wimp-function 'FNmesslookup'.

 - Added option to delete file after printing in 'PROCwimp_sendfiletoprinter'.
 
 - Added option to give non-fatal warning if source-file can't be found in
   'FNwimp_measurefile', 'FNwimp_loadfile', 'FNwimp_loadsprites',
   'FNwimp_loaddfile', 'FNwimp_loadjpegfile', 'FNwimp_getjpegsizefile',
   'PROCwimp_renderjpegfile' and 'PROCwimp_renderwindowjpegfile'.
 
 - Changed to give fatal warning if source-file can't be found in
   'FNwimp_initmessages' and 'FNwimp_reinitmessages'.
 
 - Minor improvements and minor bug fixes
 
 - Minor improvements to !Linker & !Fabricate and upgraded them to use
   Dr Wimp Version 4.40

 - Added new Elixir_07 to give wimp-functions to operate on several icons
   or several menu items in one call.
 
 - Minor change to Elixir_06.
 
 
REM --------------------------------------------------------------
4.30 (01-Jul-2005)

 - Added new wimp-functions to set and delete system variables.
 
 - Added new wimp-functions to set the filetype of a named
   file, both with a file-type number and string.
 
 - Added new wimp_functions to get the filetype of a named
   object, as a string and as a number.

 - Added new wimp-function to create a directory.
 
 - Added new wimp-function to rename a named object.
 
 - Added a new wimp-function to, effectively, 'double-click' on a file.
 
 - Added a set of new wimp-functions to format integer
   numbers as strings:
 
     FNwimp_numtodecstring() - to decimal format
     FNwimp_numtosigneddecstring() - to signed decimal format
     FNwimp_numtohexstring() - to hex format
     FNwimp_numtobinstring() - to binary format

 - Added a new wimp-function to get the current
   day/date/time, as a string
 
 - Added the option for 'font blending' to the four
   existing text-plotting wim-functions.
 
 - Replaced 'FNwimp_copyfile()' with enhanced 'FNwimp_copyobject()'
 
 - Replaced 'FNwimp_deletefile()' with enhanced 'FNwimp_deleteobject()'

 - Extended 'FNwimp_testobjectpresent()' to give the
   option of a warning if object not present.
 
 - Corrected LOCAL variables in 'PROCwimp_menuitemcolour()'
   & 'FNwimp_testobjectpresent()'

 - Corrected problem when window opened as menu/sub-menu
   with some ROs/machines
 
 - Added Elixir_06 to allow window position/size/scrolls
   to be saved and retrieved.
 
 - Improved coding for Elixir_02
 
 - Upgraded !Linker to enable user to alter maximum number
   of functions which can be handled.
 
 - Corrected !Run file in !Fabricate to ensure created applications
   have coding to open window on iconbar mouse click (if user chooses
   this option).
 
 - Updated !Linker and !Fabricate to Dr Wimp Version 4.30.
             
             


REM --------------------------------------------------------------
4.20 (01-Feb-2005)

 - Added extra parameters to 'PROCuser_draggingicon()' to give x/y mouse
   values at start of dragging.

 - Added new wimp-function 'FNwimp_geticonbit()'. This allows user to find
   current state (set/unset) of any bit in the 'icon flags' of an existing icon.

 - Added new wimp-function 'PROCwimp_iconhide()' to allow an existing icon to
   be hidden/displayed/toggled. (Consequentially, the use of Bit 23 in 
   'FNwimp_iconbit()' below is prevented.)

 - Extended existing wimp-function 'FNwimp_iconbit()' to also provide for
   toggling a bit between the two states. (Further, setting the parameter
   'bit%' to 23 will now result in 'do nothing' as hiding an existing icon
   is now provided for in the new wimp-function 'PROCwimp_iconhide()' - see
   above.)

 - Changed 'FNwimp_getjpegsize()' & 'FNwimp_getjpegsizefile()' so that they
   always return the JPEG size as displayed at 90dpi. This gives better
   consistency when sizing windows for JPEG display.

 - Reverted to pre-Version 4.00 word-alignment algorithm in interactive help
   routine and another minor coding change. The result is that the maximum
   length of a returned string is now increased to 235 characters. 

 - Better isolation given to printing routines in 'PROCwimp_print()' - and
   minor coding changes made.

 - Minor coding change made to 'FNwimp_changedynamic()' to correct error
   which added 4 bytes.
 
 - Minor coding change made to 'PROCwimp_resizewindowvisible()' to improve
   pane handling. 
 
 ------------------------------
 
 - Upgraded !Fabricate to add 'Help' facilities including incorporating
   Castle's suggested Help system variables.

 - Upgraded !Fnc'n'Prc to avoid windows being too big for 800600 modes.

 - Upgraded !Fabricate and !Fnc'n'Prc to DrWimp Version 4.20.
             

REM --------------------------------------------------------------
4.10 (01-Sep-2004)

 - Added new user-function 'FNuser_dragicon()'. This allows user to
   specify which draggable icon(s) are actually to be dragged - and
   therefore also stops 'marching ants' appearing around other draggable
   icons.

 - Added 'Elixir_04' to allow user-definable drag-boxes (independent of
   icon-dragging). Also enhanced Example '!Scroll' considerably, to
   demonstrate user-defined drag-boxes for selecting/moving scrolled list items.

 - The wimp-function 'PROCwimp_menuwrite()' has a new parameter allowing the
   user to specify a validation string when creating a writable menu item.

 - All wimp-functions requiring a font point-size value can now accept real
   numeric point-sizes.

 - All user-functions involved in icon-dragging now report 'dragbutton%'
   values as 4 for <select> & 1 for <adjust>, instead of the previous 64 & 16,
   respectively. Also, two bugs in this area corrected.

 - The wimp-functions:
 
      FNwimp_testobjectpresent()
      FNwimp_countdirectoryobjects()
      FNwimp_getdirectoryobjectname()
      FNwimp_getdirectoryobjecttype()
      
   no longer return an error message if the file etc, cannot be found.

 - Added wimp-functions:
           
   FNwimp_copyfile()
   FNwimp_deletefile()
         
   to copy/move/delete file/directory/application.
                 
 - Added wimp-function:
        
      PROCwimp_sendfiletoprinter()
      
   to have same effect as dragging a file to iconbar printer icon.
          
 - If a writable icon has the caret and it is disabled using
   'PROCwimp_iconenable()', the caret is now removed.
          
 - Occasional drawfile rendering clipping problem fixed.
 
 - Vertical position of some menus did not conform exactly
   with Style Guide. Now corrected.
          
 - Added 'Elixir_05' which gives optional wimp-functions
   for managing 'nudger'/'bump' icons.
  


REM --------------------------------------------------------------
4.00 (01-May-2004)

 - Added ability to choose horizontal and vertical point sizes
   independently in FNwimp_getfont()
     
 
 - Added scaling, choice of left/right/centre justification and - where
   relevant - ability to choose horizontal and vertical point sizes
   independently to:
 
     PROCwimp_plottext()
     PROCwimp_plottexth()
     PROCwimp_plotwindowtext()
     PROCwimp_plotwindowtexth()
     
 - Added extra justification option to:
 
     PROCwimp_deskplottext()
     PROCwimp_deskplotwindowtext()
                 
     (to make it consistent with justification changes made to
     outline-font text plotting above).
     
 - Added scaling options and - where relevant - ability to choose horizontal
   and vertical point sizes independently to:
 
     FNwimp_gettextsize()
     FNwimp_gettextsizeh()
     
   (to make them consistent with scaling changes to outline-font text
    plotting above).
     
     
 - Added extra parameter to FNwimp_createwindow() to allow outline font
   handle to be specified for window title text.

 - Also added warning and reversion to default state in FNwimp_createwindow()
   if specified font cannot be found.

 - Added warning and reversion to default state in FNwimp_createicon() if
   specified font cannot be found.
                 
 - Added font substitution to PROCwimp_plotwindowtext() and PROCwimp_plottext()
   if specified font cannot be found.

 - Corrected and rationalised coding in Drawfile rendering process to ensure
   correct parameters are passed.
 
 - Corrected coding for rgb foreground and background colour choices in:
 
     PROCwimp_deskplottext()
     PROCwimp_deskplotwindowtext()
     
 - Changed Dynamic Area management to allow 'negative' DA addresses used by
   Iyonix and similar machines. (Will overcome error 'Can't find Dynamic Area
   with that handle.' currently met on start-up of some Dr Wimp applications
   on Iyonix machines.)

 - Bug-fix in PROCwimp_puticonfont(), which was not working after changes
   made for Version 3.90.
              
 - Changed iconiser default text arrangements so that it now prefers to use
   the title of the window being iconised.
           
 - Made some variables LOCAL which had been missed previously.
           
 - Numerous internal coding changes mainly to improve protection of values
   during repeated use of 'wimp%' parameter block.
           
 - Elixir_03 v1.10 released. Improved sprite creation code.
           
 - !CodeTemps utility upgraded to reflect above changes to FNwimp_getfont()
   and FNwimp_createwindow() - and also upgraded to use Dr Wimp Version 4.00.

REM --------------------------------------------------------------
3.90 (01-Jan-2004)

           - Added capability to drag ordinary icons - resulting in
             three new user-functions for skeleton !RunImage:
           
                DEF PROCuser_seticondragbounds()
                DEF PROCuser_draggingicon()
                DEF PROCuser_endicondrag()
      
           - Added new wimp-function -  PROCwimp_ploticon() - to allow
             an icon to be defined and plotted on screen (in redraw
             process) without becoming part of a window definition.
           
           - Added extra parameter to PROCwimp_putcaret() to allow
             caret position ('index') in writable icon text string to
             be set. (Consequential changes needed in
             PROCwimp_puticontext() and PROCwimp_puticonfont() to
             preserve caret index across text/font changes.)
             
           - Changed PROCwimp_resizewindowvisible() to ensure that,
             if (and only if) a window is wholly on the screen prior
             to resizing, it remains wholly on the screen after
             resizing i.e. scrolling will now take place automatically
             in this case (if necessary) to stop the resized window
             going off the edge of the screen.
             
           - Changed PROCwimp_deleteicon() so that, if 'redraw' is
             chosen, the window is only updated in limited area of
             icon. Reduces flicker.
             
           - Changes made to allow the draggable icon of a 'Save box'
             to be a text-plus-sprite icon if required (instead of
             being limited to using a sprite-only icon).
             
           - Added two new 'Elixirs':
           
               Elixir_02 To copy a dragged icon into the end-of-drag
               position, with option to delete the original dragged
               icon.

               Elixer_03 To create a sprite and plot graphics and/or
               text into it. The sprite can then be displayed/printed
               using existing wimp-functions.
           
           - Added three new Example applications: !BuildSpr,
             !DragCopy and !IconPlot to demonstrate use of new
             facilities.
             
           - Changed names of all 'internal' wimp-functions to become
             'wint-functions' (for clarity). Should not affect users.    
               
           - Various structural changes to internal routines to
             improve coding consistency.
               
           - Some (hopefully invisible) changes to improve the
             'robustness' of the DrWimp library when re-using internal
             parameter blocks.
             
           - Numerous (hopefully invisible) changes to internal global
             variable names to make the names consistent and more
             easily readable.
             
For !TemplEd users with '32-bit' computers - the version of !TemplEd
issued with previous versions of Dr Wimp will not function on a
'32-bit' computer unless the module 'MenuUtils' is  upgraded. A
suitably upgraded module is now included in the folder 'TemplEdMod' in
!TemplEd's application directory accompanying Dr Wimp 3.90.

REM --------------------------------------------------------------
3.81 (10 Aug 2003)

          - Deleted PROCwimp_renderpoolsprite() and
            PROCwimp_renderwindowpoolsprite() and incorporated them
            into PROCwimp_rendersprite() and PROCwimp_renderwindowsprite()
            respectively - by using 0 for 'spritearea%' parameter when
            rendering a Wimp pool sprite.
            
            (Also slightly changed SYS calls, but should be invisible.)
            
          - Added background (anti-alias) colour choice to
            PROCwimp_fontcolour().
            
          - Existing scroll values now preserved in
            PROCwimp_resizewindowvisible().
            
          - Control of Panes altered, but should be invisible to
            users with RO3.50 or higher.
            
          - Files loaded with <adjust-drag> now correctly close
            source directory.
            
          - FNwimp_decplacesstr() and FNwimp_decplacesnum() now
            correctly add trailing zeros when appropriate.
            
          - Coding improvements to several internal functions, which
            should be invisible.
            
          - PROCwimp_putmenutext() changed to carry through existing
            validation string pointer instead of forcing it to -1.
          
          - Elixir_01 changed to include extra 'redraw line' at top to
            avoid incomplete redraws. (Example application "!Scroll"
            changed correspondingly.)
            
          - Example application "!MenuTrick" template changed to
            ensure name changes to shorter names display correctly
            immediately. ('Need help' selected on the three
            text+sprite icons.)  
  
          

REM --------------------------------------------------------------
3.80 (31 Mar 2003)

   - Changed location of PROCuser_error (reverted to original location)


   - Added two new wimp-functions:

        FNwimp_testobjectpresent(path$)
        FNwimp_istaskrunning(taskname$)
        
        
   - Added extra parameter to the four colour-picker
     wimp-functions to give extra control over 'None' button:

        PROCwimp_opencolourpickerrgb()
        PROCwimp_opencolourpickermodel()
        PROCwimp_opensubmenucolourpickerrgb()
        PROCwimp_opensubmenucolourpickermodel()
        

   - Changed meaning of an existing parameter in:

        FNwimp_createwindow()
        
     to allow user-selection of colours for all window
                                            'furniture' items.
                                            
        (!CodeTemps also upgraded to reflect this change)
                                                 

   - Added new global string variable 'wstartupoption$' which, on
     application start-up, will automatically be used to hold any
     'options' (e.g. "-debug") included by the user with the call
     to run the !RunImage file e.g. in the !Run file or in a Command.


   - Improved coding of several internal functions in DrWimp library.      


REM --------------------------------------------------------------
3.71 (01 Feb 2003)

   Corrected bug in FNwimp_getscroll


REM --------------------------------------------------------------
3.70 (01 Jan 2003)

    Introduced new feature, called 'Dr Wimp's Elixirs'
                         (See Manual Section 2.37)
    
     Elixir_01 - for fast redraws of long scrolling text lists.


    Added new wimp-functions:
    
     FNwimp_getscroll() - to complement existing PROCwimp_scroll()
     PROCwimp_scrollto() - to complement existing PROCwimp_scroll()
     
     PROCwimp_savesprites() - to complete 'sprite' suite
     PROCwimp_savejpeg()) - to complete 'jpeg' suite
    
 
    Functional improvement to:
    
     PROCwimp_scroll, so that it will now scroll closed windows.
    
 
    Coding improvements (no functional changes) to:
    
     FNwimp_createwindow()
     FNwimp_loadsprites()
     PROCwimp_savefile()
     PROCwimp_datasave() - (internal function)
     PROCwimp_quicksave() - (internal function)
     FNwimp_measurefile()    
     FNwimp_getfilesize() - new internal function
     FNwimp_loadfile()
     PROCwimp_dataload() - (internal function)
     PROCwimp_dataloadack() - (internal function)
     FNwimp_string() - (internal function)
     PROCwimp_checkforload - (internal function)
  
  
    Bug fixes to:
    
     PROCwimp_startdrag() - (internal function) problem with
               identifying wimp-pool sprites when a
               user-sprite area is in use.
     
     FNwimp_getmenuenable() - incorrect line syntax.
     
     FNwimp_roundfloat() - incorrect handling of negative numbers.   
     FNwimp_decplacesstr() - (as above)
     
     FNwimp_OSversion - incorrect rounding of some version numbers.
     
     PROCwimp_prequitissued - (internal function) incorrect handling
                         of 'quit' from Task Display.


REM --------------------------------------------------------------
3.64a (8th Oct 2002)

    Bug fix in DEF PROCwimp_render(). Auto-selection of appropriate
drawfile rendering for OS version was reversed! Now corrected.
    
    Bug fix to prevent display of red-dotted bounding boxes when
rendering drawfiles, if using OS versions 3.60 or higher.


REM --------------------------------------------------------------
3.64 (1st Sept 2002)

    Added the 'JPEG suite' of wimp-functions:
    
        FNwimp_loadjpegfile()
        FNwimp_getjpegsize()
        FNwimp_getjpegsizefile()
        PROCwimp_renderwindowjpeg()
        PROCwimp_renderjpeg()
        PROCwimp_renderwindowjpegfile()
        PROCwimp_renderjpegfile()
        
    and enhanced the drawfile rendering wimp-functions to handle jpegs
    in drawfiles.
    
    Added automatic use of "DrawFile" SWIs (instead of "Draw" SWIs) if
    OS 3.60+ being used - in drawfile rendering and drawfile font
    declaration prior to printing.
    
    Enhanced 'FNwimp_getspritesize()' to include width/height of
    Wimp pool sprites.
    
    Improved utilisation of 'PROCuser_error'.
    
    Added hourglass to initialisation and file loading actions to show
    if/when long loads occur.
    
    (Many minor changes to Manual in addition to consequences of above)
    
    Added separate document on how to print Manual in pamphlet format.
    


REM --------------------------------------------------------------
3.63 (1st July 2002)

    Changed 'DEF PROCuser_preclosewindow()' to
    'DEFFNuser_preclosewindow()' (with default return value of 1)

    Changed font menu management to allow more than one font menu
    handle. Includes new wimp-function 'FNwimp_recreatefontmenu()'.
    Corresponding minor functionality change to FNuser_menuselection().
    Very minor consequential (and invisible) change to those
    wimp-functions altering menu details - and to colour-picker sub-menu
    arrangements.

    Added new wimp-functions:
    
    'FNwimp_getmenudottedline(menu%,item%)' - to find out if a menu
    item is followed by a 'dotted line'.
    
    'FNwimp_getmenuenable(menu%,item%)' - to find out if a menu item
    is enabled.
       
    
    Several minor coding improvements not affecting functionality.
    
    Improvement to 'getwindowtitle' to protect against no title or no text.
    
    Improvement to several wimp-functions to protect against
    processing when null string text and/or 0 font handle.
    
    Bring 'PROCwimp_menupopup' menu positioning (with 'pos%=1') in
    line with normal iconbar menu positioning, when dotted lines exist
    in menu.
      
    Bug-fix when rendering some 'fills' in drawfiles
    
    Bug-fix to remove internal over-use of 'lose-font'
    
    Bug-fix in 'PROCwimp_savedfile()'
    
    
    (Reversed 'Upgrading' and 'History' file to keep latest upgrade at
    top of file.)
    


REM --------------------------------------------------------------
3.62 (1st March 2002)

    Added new user-function 'PROCuser_error' to give user improved
error management capability.


    Enhanced and changed name of 'PROCwimp_colouricontext()' to
'PROCwimp_colouricon()'. Extra parameter added to allow
foreground/background colour to be changed. Function now also works
for icons using outline fonts (provided certain easy conditions met).
    
    'PROCwimp_menuitemcolour()' has been given an extra parameter to
allow foreground/background colour to be changed.
    
    'PROCwimp_recreatemessagemenu()' has been given an extra
parameter, to allow a title string to be specified in the same way as
'PROCwimp_createmessagemenu()'.
    
    A new wimp-function 'FNwimp_reinitmessages' has been added to
allow the substitution of a different messages file after one has been
initiated. (Also, internal changes to other functions to cater for
this new wimp-function.)


    Improvement to 'PROCwimp_putwindowtitle()' to prevent flicker if
changed window title bar is wholly/partially obscured.


    Minor improvements to hourglass action when printing.
    
    
    Bug fix in 'PROCwimp_createmessagemenu()' which nullified use of
'title$' parameter.


         

REM --------------------------------------------------------------
3.61 (1st November 2001)

    Improved quitting/shutdown management.
    
    Menu creation/recreation
    
        All wimp-functions restructured to use common coding.
        
        Creation of a menu now stores user-chosen maximum number of
        items, which can be read with new wimp-function
        'FNwimp_menumaxsize()'
        
        'FNwimp_createmessagemenu' restructured to eliminate
        restrictions on cumulative length of menu item text.
        
        New wimp-function 'FNwimp_recreatemessagemenu()'
        
        New wimp-function 'FNwimp_getnumberofmessages()'
        
        'PROCwimp_putmenuitem()' now warns if menu is already at
        max defined size.
        
    
        
    Extra calling parameter added to 'FNwimp_createdynamic()' to
    improve dynamic area management.
    
            
    Font handle management improved so that any fonts created using
    'FNwimp_getfont()' are automatically closed on quitting - if not
    already closed by user with 'FNwimp_losefont()'.
        
    When using a 'Save box', the form "DirPath:leafname" for the full
    file path in the writable icon will now also be accepted.
    
    Improvement in passing 'unused' wimp-messages.
        
     
    Minor improvements made to:
         
         PROCwimp_render()
         FNwimp_getwindowvisiblesize()
         FNwimp_measuredynamic()
         FNwimp_deletedynamic()
          
    
    For user-convenience, 'FNuser_dataload' now ensures string passed
    in parameter 'ftype$' is always of at least 3 characters
    i.e. file-types are given leading zeros if necessary.
    
    
    'FNwimp_getdirectoryobjecttype()' modified to return a string of
    at least 3 characters - and without a leading "&", to be consistent
    with above.
    
        
    Bug fixes to:
         
         Ensure iconbar menus are correctly located when they contain
         'dotted lines'.
         
         Give warning if 'drag-save' is started and
         'FNuser_savefiletype' returns a file-type string of more
         than 3 characters.
         
         Ensure font data in drawfiles is read properly, without
         overrun.
         


REM --------------------------------------------------------------
3.60 (01-Aug-2001)


    Introduced new facilities to provide font menus. (Required major
    changes to DrWimp library)
    
    Bug fix to avoid possible problem with deleting dynamic areas on
    shutdown.
    
    Bug fix to improve rection of FNwimp_createmessagemenu() to 'long
    strings'.
    
    Bug fix/improvement to PROCwimp_menuwrite() to take maximum
    defined writable length into account when calculating menu width.
    
    Bug fix/improvements to the small suite of 'geometric shapes'
    plotting wimp-functions e.g. PROCwimp_plotwindowrectangle(), to
    give correct positioning when printing.
    
    
    Upgrades to !Fabricate (now at Version 2.30):
        
        - to allow custom sprites to be included in created applications
        
        - to give option to load a standard 'Save' window.
        
        (Also various minor improvements plus modification to
        'Default' file to make it more consistent with Tutorial in
        main Dr Wimp Manual.)
        
        
    Upgrade to !Fnc'n'Prc (now at Version 1.80) to allow the displayed
    function names to be edited and exported to the caret position of
    another application e.g. exported directly to a Basic editor.
    
    
    In Examples folder:
        
        - added new example application !FontMenu to demonstrate using
          new font menu facilities.
        
        - changed position of two 'nudger' icons in !Slider to
          overcome problems caused by unannounced functional changes
          in RISCOS.
          
    
    In Utils folder, replaced !FlgConv with another copy. (For some
    reason the original downloaded version did not run but a different
    copy works OK!)
    
    
    Introduced new feature in main Manual - to show changes from
    previous version in different colour.  
    
    Revised tutorial sections of Manual to be clearer and added
    progressive tutorial listings in 'Tutorials' folder.
    
    

REM --------------------------------------------------------------
3.59 (01-Apr-2001)

    Minor change to DEF PROCuser_colourpickermodel(). Parameters
    'value1%', 'value2%', 'value3%' and 'value4%' changed to become
    real numeric variables.

    Added new wimp-functions to plot/print line (full or dotted),
    rectangle, circle, ellipse and triangle in a window - with fill
    option where relevant.
                        
                    PROCwimp_plotwindowline()
                    PROCwimp_plotwindowrectangle()
                    PROCwimp_plotwindowcircle()
                    PROCwimp_plotwindowellipse()
                    PROCwimp_plotwindowrtriangle()
    
    Added new wimp-function 'PROCwimp_pause()' to enable a pause of
    specified duration to be introduced.    
    
    Added new wimp-function 'PROCwimp_getmenutick()' to test if a
    menu item is already ticked or not.
                    


    Added extra option to 'PROCwimp_iconselect()' to toggle between
    states.
    
    Combined previous 'PROCwimp_menuenable' and 'PROCwimp_menudisable'
    into new 'PROCwimp_menuenable' - with added toggle option.
        
    Combined previous 'PROCwimp_iconenable' and 'PROCwimp_icondisable'
    into new 'PROCwimp_iconenable' - with added toggle option.

    Combined previous 'PROCwimp_menutickon', 'PROCwimp_menutickoff'
    and 'PROCwimp_togglemenutick' into new 'PROCwimp_menutick'.



    Changed name of 'FNwimp_getwindowsize()' to
    'FNwimp_getwindowvisiblesize()' for consistency and to better 
    reflect action.
    
    Changed name of 'FNwimp_getwindowvisibleOS' to
    'FNwimp_getwindowvisiblework'  for consistency and to better 
    reflect action.

    Changed name of 'FNwimp_geticonstate()' to 'FNwimp_geticonselect()'
    for consistency and to better reflect action.
    
    
    
    Changed functionality of 'FNwimp_iswindowopen()' to return TRUE/FALSE. 
    
    Changed functionality of 'FNwimp_pdriverpresent' to return TRUE/FALSE.
    (Also improved test for presence of printer driver.)

    Changed fuctionality of 'PROCwimp_resizewindow()' so that it does
    not change current visible size (unless smaller size needed).
    
    Changed how panes are managed. (Should be invisible apart from
    minor change when using multiple panes - see Upgrading and Manual.)
    
    Slight change to functionality of 'PROCwimp_pollidle()' and
    'PROCwimp_singlepollidle()' to allow real (floating point) values.


    
    Improved 'FNwimp_geticontext()' to read both indirected and
    non-indirected icon text.
    
    Improved 'FNwimp_lengthtoOS()' and 'FNwimp_OStolength()' so as to
    allow real  (floating point) values to be returned.
    
    Improved 'FNwimp_getmenuitem()' to make specified string parameter
    caseinsensitive.
    
    Improved 'FNwimp_createmessagemenu()' to trap item text which
    becomes too long.



    Added non-fatal warning to 'PROCwimp_colouricontext' to reflect
    that it is only for icons using 'desktop font' -  but
    functionality unaltered.
        
    Removed non-fatal error trap from 'FNwimp_getdirectorypath()' but
    functionality unaltered.
    
    
    Removed bug from colourpicker CMYK model calculations.
    
        
    Several other coding improvements (which should be invisible).
    


    DELETED 'Sig Fig' wimp-functions, as they proved to be inaccurate
    in some cases.
    
    
    
    Fairly large revision of Manual (again!) Consistency much improved.
    

    All Example applications upgraded to 3.59 (and !Slider de-bugged).
    
    
    New example added (!ColPick) to demonstrate colour-picker.
    




REM --------------------------------------------------------------
3.58 (01-Jan-2001)

    Added general file loader/saver (to enable any file to be loaded
    into memory block and vice versa).
    
    Multiple Messages files can now be handled.
    
    Changes made in some menu manipulation functions:
        
        'menudottedline' both on & off now provided, from one function
        
        'menuwrite' border can now be selected on or off

        (Functionality will not change if Updating instructions
        followed.)

    Fixed bugs in caret-handling in writable icons and operation of
    'menutickon/off'
    
    Corrected bugs in FNwimp_decplacesstr.
        
    Minor coding improvements to avoid some unnecessary
    change-of-state actions with icons.

    
    Corrected bug in !CodeTemps which gave wrong button type for
    windows and also bug which prevented icons with long text from
    being handled properly. (!CodeTemps now at Version 1.21)
    
    Revision of !Fabricate to allow use of data files and allow window
    settings to be saved. Many general improvements to increase
    user-friendliness. (!Fabricate now at Version 2.10)

    Minor change to !Fnc'n'Prc to show Dr Wimp Version number in title
    bar of main window. (!Fnc'n'Prc now at Version 1.71)



REM --------------------------------------------------------------
3.57a (08-Oct-2000)

    Fixed bug in 'createmenu' wimp-functions which stopped re-creation
    in some circumstances.   


REM --------------------------------------------------------------
3.57 (01-Oct-2000)

    FNwimp_createwindow and FNwimp_createicon now allow all wimp
    options and flags/button types have been brought into line with
    wimp values where reasonable. (!CodeTemps upgraded to correspond with
    above, and new utility !FlgConv provided if conversion from old calls
    to new required.)
    
    Additional 'menu tick' wimp-functions.
    
    Additional option for 'pop up' menus.
    
    'Pollidle' can now be specified in either seconds or
     centi-seconds.
    
    Various minor improvements. (error trapping, memory management, etc.)
    
    Correction of minor reported bugs.
    
    Major expansion of !Fabricate (to Version 2.00)
    

REM --------------------------------------------------------------
3.56 (01-August-2000)

    Drawfiles can now be scaled when rendered - and also option given
to render drawfiles with bottom left of objects bounding box at
specified location. (Plus new Example application to demonstrate these.)

    Minor bug fixes and minor improvements to DrWimp library.
    
    Minor modifications to !Fabricate
    
    Improvement to !Fnc'n'Prc
    
    Expansion and improvement of Manual.
    


REM --------------------------------------------------------------
3.55c (20-June-2000)

    Minor bug fixes and minor improvements to DrWimp library.


REM --------------------------------------------------------------
3.55b (19-April-2000)

    Minor bug fixes to DrWimp library.


REM --------------------------------------------------------------
3.55a (09-April-2000)

    Fixed bug in Iconiser routine so that it handles panes correctly.
    

REM --------------------------------------------------------------
3.55 (02-April-2000)

--Added:
    
    Applications will now respond to the Wimp's iconiser protocol in a customised way and both sprite and text used can be altered.
    
    Any 'wimp messages' received from the Wimp but not used by Dr Wimp
can, if required, be passed on via a new user-function
'PROCuser_wimpmessage'. Option exercised by setting new global
variable 'UNUSED%' to TRUE.
    
    New wimp-function to allow menu items to be coloured individually.
    
    New wimp-function to convert strings to upper/lower case.
    
    New wimp-function to return left-hand part of a pathname string
(i.e. the path string preceding the leafname). Trailing dot can be
left or removed.
    
    New wimp-function to return menu item number of specified menu
item text string (i.e. converse of existing 'FNwimp_getmenutext').


--Upgraded:
    
    Extra choice added to 'FNwimp_getcaret' to return position of
caret in writable icon text.


--Improved:
    
    'FNwimp_initialise' no longer needs to specify memory space needed
for indirected data in windows/icons to be loaded via Template files.
Memory needed is now allocated automatically when/if
'FNwimp_loadwindow' is called.
(This means a parameter has been removed from 'FNwimp_initialise'.)

    Fixed bug in !Fabricate which stopped main window from being
moved.
    
    Fixed bug in !CodeTemps which gave fatal error when trying to save
the Basic output code with some types of icon definitions.

    !Linker improved so that it no longer insists on using an empty
line with a colon in it as a separator between DEF PROC/FNs.

    Additions to !Fabricate to allow DrWimp library version number to
appear in first-line REM of generated !RunImage listing and a default
application version number to be added near start of program.

    Fixed bug in PROCwimp_increaseslot which stopped error trap from
trapping!


--Changed:
    
     Some returned parameter values to 'FNuser_dataload' have been
changed for consistency - see Manual Section 3.

     Scroll characteristic produced by 'FNwimp_createwindow' has been
changed to be more normal.
    
    All wimp-functions now have only one exit point - and various other
'sanitisation' changes. (Transparent change.)

    All menu item/title text is now indirected, irrespective of length.
(Transparent change.)

    !CodeTemps simplified to remove possibility of problems with very
large Template files.

    Later version of !TemplEd substituted.
           


REM --------------------------------------------------------------
3.54 (01-Jan-2000)

--Added:
    
    New wimp- and user-functions added to enable the wimp
Colour-Picker to be used. (Only usuable with RiscOS Versions from 3,50
and upwards but earlier RiscOS versions should work OK with Dr Wimp
3.54 provided the colour picker wimp-functions are not called.)

    New option (in FNwimp_initialise) to allow applications to respond
to 'desktop save' protocol.
     
    New wimp-function (FNwimp_geticonposition) to get position of an
icon.
       
    New wimp-functions to set foreground
(PROCwimp_setforegroundcolour) and background
(PROCwimp_setbackgroundcolour) graphics plotting colours.
(PROCwimp-setcolour is replaced by these.)    
    
    New wimp-function to get caret position (FNwimp_getcaretposition).

    New wimp-function to check existence of a system variable
(FNwimp_testsysvariable)
  
    Extra Freeware Basic program compressors added in 'Utils' (as
!BSquasher 1.18 does not load in RiscOS Version 3.70 upwards)

--Upgraded:
    
    PROCwimp_iconbar now allows max text length to be specified, even
if initially with no text.
    
    FNwimp_getscreenres altered to allow either vertical or horizontal
screen resolution to be returned.
    
    Extra parameters added to FNuser_overmenuarrow to show x/y
position of pointer - and RETURN added to first parameter to assist
complete sub-menu changes dynamically.
    
    !Fabricate now allows user to personalise skeleton applications.
    
    !Fabricate now allows max length of iconbar icon text to be set,
even if it is initially going to have no text. (To take advantage of
above change to PROCwimp_iconbar.)
    
    !MakeApp upgraded to load correctly for RiscOS versions 3.70/4.00
    
--Improved:
    
    Minor improvements to PROCwimp_puticontext, response to !Help
application, loading of window templates and initialisation routine.

--Changed:
    
    ALL numeric variables changed to integer variables wherever
possible in both DrWimp library and in skeleton !RunImage.
(This should be transparent to user - apart from NULL%, if used.)



REM --------------------------------------------------------------
3.53a (14-Sep-99)

--Fixed bugs in:
    
    PROCwimp_puticontext (which were inadvertently introduced in
Version 3.53)

--Added:
    
    'FuncProc', a StrongHelp version of !Fnc'n'Prc (to Utilities
directory)
    
--Also:
    
    Formatting of parts of this file corrected.
    
    Corrected two references to function information in Manual
(Section 3) and !Fnc'n'Prc.

    Widened window in !Fnc'n'Prc to ensure it displays properly for
those using 'system font'.

    Added DrWimp Version number to main window title of !Fnc'n'Prc
    

REM --------------------------------------------------------------
3.53 (01-Sep-99)

------------------------------------------
01-May-99  Ray Favre takes over support of package.
------------------------------------------


--Fixed bugs in:
    
    PROCwimp_pollidle, to correct timing routine (wrong in PRM!)
    
    PROCwimp_puticontext, to improve caret handling when text altered
    in writable icons.
    
    Various, to stop sliders/bars moving when <menu> button pressed
    over them.
    
    Various, to ensure <adjust> button can also be used for drags.
    
    Various, to improve handling of sliders/bars at and near
    zero-length.
    
    Various, to ensure PROCuser_menuopen is called in more
    circumstances, for consistency.
    
    Various, to ensure 'save window' icon numbers are picked up
    correctly when they are not default values.
    
    (Example applications !Slider and !Saver modified slightly.)
    
--Added:
    
    Extra feature in PROCwimp_menupopup to allow menu to be displayed
    at pointer position.
    
    Modification to FNwimp_sysvariable to check that named system
    variable actually exists before seeking to return its 'value'.
    
    Extra parameter added to PROCuser_slidervalue to notify whether
    slider is vertical or horizontal.
    
    PROCuser_overmenuarrow, new user-function called when pointer is
    passing over 'arrowhead' in menu item, prior to opening submenu
etc.
        
    FNwimp_sigfigsstr, FNwimp_sigfigsnum, FNwimp_decplacesstr and
    FNwimp_decplacesnum - a suite of new wimp-functions (by Guy
Bartle) to
    format numbers to required number of decimal places or significant
    figures.
        
    FNwimp_getdirectorysize, FNwimp_getdirectoryobjectname and
    FNwimp_getdirectoryobjecttype - a suite of new wimp-functions to
return
    how many objects in a named directory and type/name of any such
    object.
    
--Also added:
    
    A StrongHelp version of !Fnc'n'Prc (offered by Keith Wright)
    
--Altered:
    
    Manual (and TextManual) upgraded and revised and re-indexed.
(Section 3 now carries same material as !Fnc'n'Prc)
    
    !Fnc'n'Prc modified to enable more lines of data to be used and a
facility to save a new sorted version of the main Info file.


REM --------------------------------------------------------------
3.52 (01-Sep-98)

--Fixed bug which stopped drawfiles with thick lines from being printed. Now
  ignores winding rule stored in drawfile path objects.
--Added new version of UnCrunch 3rd-party utility, now called CrunchFix.



REM --------------------------------------------------------------
3.51 (21-Jun-98)


--Added:
            FNwimp_reinitmessages - re-initialises the messages file,
  allowing a new or altered messages file to be used.
--Altered:
            PROCwimp_poll - small tweak to improve performance of
  applications (reduces amount of cpu time used).
            FNwimp_gettextsize, FNwimp_gettextsizeh - the height returned
  should now be closer to the actual height, especially when changing font
  sizes in a string, however it is still an approximation and should always be
  an over-estimate.
            PROCwimp_plotwindowtext, PROCwimp_plotwindowtexth - when
  redrawing text in a window, the very top and bottom of the text should no
  longer be clipped off on occasions (due to new way of estimating text height
  detailed above).



REM --------------------------------------------------------------
3.50 (23-Jan-98)

--Added  :
            FNwimp_getwindowvisibleOS - returns edges of a window's visible
  area in OS coordinates.
            FNwimp_getwindowvisiblescreen - returns edges of a window's
  visible area in screen coordinates.
            FNuser_quit - place to put all the tidying up code and the
  oppotunity to stop a quit or shutdown if there is any unsaved data.
            PROCwimp_quit - quits the application or causes a desktop
  shutdown. Enables the finished% variable to now be hidden from the
  !RunImage.
            PROCwimp_bindpointer - traps the pointer in a given window.
            PROCwimp_releasepointer - reverses the effect of
  PROCwimp_bindpointer.
            PROCwimp_updatewindow - redraws only a given part of the screen.
            PROCwimp_scroll - allows the application to cause vertical and
  horizontal scrolls of a window.
            PROCuser_initialise - contains all jobs to be done between wimp
  initialisation and polling. Stops the application trying to load data into
  windows and variables that do not exist if a file is loaded by double
  clicking without its application running.
            PROCwimp_resizewindowvisible - resizes the visible area of a
  window without affecting the work area size.
            FNwimp_createdynamic - allows dynamic areas to be created to
  specified sizes and types.
            FNwimp_changedynamic - allows the size of a dynamic area to be
  changed by an amount or set to an absolute amount.
            FNwimp_measuredynamic - returns the current size of a dynamic
  area.
            PROCwimp_deletedynamic - deletes a dynamic area once it is
  finished with.
            FNwimp_geticonenable - returns a value depending on if the icon
  specified is greyed out/disabled or not.
            FNwimp_countsprites - returns the number of sprites in a loaded
  sprite file.
            FNwimp_getspritename - returns the name of a sprite in a loaded
  sprite file.
            PROCwimp_hourglasson - turns on the hourglass.
            PROCwimp_hourglassoff - turns off the hourglass.
            PROCwimp_hourglasspercentage - sets the percentage display on
  the hourglass.
            FNwimp_getpointerposition - returns the position of the pointer
  in screen coordinates.
            PROCwimp_setpointerposition - moves the pointer to a position on
  the screen.
--Altered:
            FNuser_loaddata - -1 is now passed as x and y drop coordinates
  if a file is loaded with a double click.
            FNuser_savedata - error trapping added for when saving a file to
  a write protected media.
            PROCwimp_singlepollidle - timing problem fixed. Now handles
  the application quitting on its own, like PROCwimp_singlepoll.
            PROCwimp_menupopup - can now open menus/windows in the centre of
  the screen. Changed the meaning of the second parameter.
            FNwimp_getpapersize - finally returns the correct values.
            FNwimp_getspritesize - now returns the correct height.
            PROCwimp_render - fixed redraw problem with sprites.
            PROCwimp_renderwindow - fixed redraw problem with sprites.
            FNwimp_getpdrivername - now returns an empty string if the
  printer driver isn't loaded or a name could not be found.
            FNwimp_createicon - now creates icons for all valid button
  types.
            ****PROCwimp_rendersprite - added two new arguments that allow
  sprites to be scaled to any size when they are plotted. Fixed redraw
  problem.
            ****PROCwimp_renderwindowsprite - added two new arguments that
  allow sprites to be scaled to any size when they are plotted in a window.
  Fixed redraw problem.
            ****FNwimp_screentopaper - added new argument for page
  orientation.
            ****FNwimp_papertoscreen - added new argument for page
  orientation.
            ****FNwimp_worktopaper - added new argument for page
  orientation.
            ****FNwimp_papertowork - added new argument for page
  orientation.
            ****PROCwimp_print - added new argument for page orientation.
  Now performs landscape printing.
--In !Toolbar example, comparison between main window and toolbar sizes
  altered to prevent flickering when dragging objects.
--Positioning problem when using the toggle size icon of a window with a
  pane fixed.
--Added !Dynamic example application to show use of dynamic areas.
--Added !Quit example application to demonstrate stopping an application
  quit or desktop shutdown to warn user about unsaved data.
--New version of !Linker that now uses dynamic areas. Has much smaller
  wimpslot as a result. Also tries to avoid running out of line numbers for
  very large BASIC programs. Better LIBRARY call handling.
--Upgraded !Fabricate to handle new arrangement of !RunImage.
--New version of !CodeTemps that can handle templates containing windows
  which use fonts. Generates FNwimp_getfont calls. Can now generate code to
  create icons of any button type. Fixed bug for icons without text or
  sprite.
--Expanded the index in the manual to include terms and key words.
--Added "StrongARM" text file to documents folder for help with running some
  of the utilities.
--Created a new function grouping for pointer related wimp functions.
--Added !Orientate example application to demonstrate printing out portrait
  and landscape pages.
--Added !Animate example application to demonstrate flicker free icon
  animation.



REM --------------------------------------------------------------
3.02 (21-Sep-97)

--Altered:
            FNwimp_getpapersize - fixed mistakes which caused types 2 and
  3 to return the wrong values.
--New version of !Linker to cope with large libraries and RunImages.



REM --------------------------------------------------------------
3.01 (08-Jun-97)

--Added  :
            FNwimp_createwindow - allows windows to be created to an exact
  specification, as an alternative to loading one in from a templates file.
            PROCwimp_deletewindow - removes a window, closing it if
  necessary. The window handle will then be invalid. Does not allow reuse of
  indirected data memory, but does allow reuse of the window data memory.
            FNwimp_createicon - allows icons to be created to an exact
  specification, as an alternative to loading one in from a templates file.
            PROCwimp_deleteicon - removes an icon, with the option to redraw
  the window to visually remove it as well.
            FNwimp_getscreenres - allows you to find out if the current
  screen is high res or low res.
--Altered:
            PROCwimp_resizewindow - now if resizing a window which is
  closed, FNwimp_iswindowclosed will indicated that it is actually closed, as
  window is closed after resizing (without calling PROCuser_closewindow).
            PROCwimp_recreatemenu - fixed bug which made the menu recreated
  have one too many items, and if this went over the dynamic limit then a
  nasty error was caused.
--Stopped caret being continually placed in save windows when they were
  dragged about.
--Added CodeTemps utility for converting window templates into
  FNwimp_createwindow and FNwimp_createicon calls, so DrWimp can recreate the
  windows. A shortcut to working it all out by hand.
--Added Create example application to show how to create windows with the
  new wimp functions.
--New version of Linker which can cope with bigger libraries.
--For save window error messages which appear when return is pressed or OK
  clicked on, and a pathname isn't present in the writeable icon, the title
  has been changed from "Error from DrWimp" to "Message", to remove the DrWimp
  name from the end user.
--Now loading in a template uses a global temporary font buffer, instead of
  wasting 256 bytes each time on a buffer for each template.
--New version of Func'n'Proc to handle long lists of parameters to functions
  better.



REM --------------------------------------------------------------
3.00 (31-May-97)

--Added  :
            PROCuser_declarefonts - decare fonts to be used in printing.
            PROCuser_print - can be called during printing to construct a
  page.
            FNuser_printing - called during printing to allow status to be
  displayed.
            PROCuser_printerchange - called when the current printer changes.
            FNwimp_screentopaper - converts screen coordinate to paper
  coordinate.
            FNwimp_papertoscreen - converts paper coordinate to screen
  coordinate.
            FNwimp_worktopaper - converts window work coordinate to paper
  coordinate.
            FNwimp_papertowork - converts paper coordinate to window work
  coordinate.
            PROCwimp_print - initiates printing. User speicifies number of
  copies, pages to print, etc.
            FNwimp_pdriverpresent - determines if a printer driver is
  loaded/selected.
            FNwimp_getpdrivername - gets the name of the current printer
  driver.
            FNwimp_getwindowworksize - gives the work size of a window.
            FNwimp_getpapersize - gives the size of the current paper size
  from the printer driver.
            PROCwimp_declaredfilefonts - if a drawfile is to be printed then
  this function will declare all the fonts used in it, ready for printing.
            PROCwimp_printerror - handles printing errors. DrWimp internal
  function. Not to be called.
            FNwimp_gettextsize - gives the size of a string of text in the
  specified font, given as a font name.
            FNwimp_gettextsizeh - gives the size of a string of text in the
  specified font, given as a font handle.
            FNwimp_OStolength - converts an OS unit length into inches or mm.
            FNwimp_lengthtoOS - converts a length in inches or mm into OS
  units.
            PROCwimp_rendersprite - draws a sprite on the screen at the
  specified coordinates.
            PROCwimp_renderwindowsprite - draws a sprite in a window at the
  specified window work area coordinates.
            FNwimp_getspritesize - gives the size of a sprite.
            PROCwimp_plotwindowtext - plots some text in a window in the
  specified font, given as a font name.
            PROCwimp_plotwindowtexth - plots some text in a window in the
  specified font, given as a font handle.
            PROCwimp_declarefont - declares a font specified with a font name,
  for use in printing.
            PROCwimp_declarefonth - declares a font specified with a font
  handle, for use in printing.
            FNwimp_getfont - gets a handle for a font.
            PROCwimp_losefont - forgets about a font.
            PROCwimp_plottexth - plots text on the screen using a font
  specified by a font handle.
            FNwimp_fontcolour - changes the font colour.
            FNwimp_fontunderline - turns underlining on and off.
            FNwimp_fontchangeh - changes the current font, given as a font
  handle.

            FNwimp_createmessagemenu - creates menus from tokens in message
  files.
            PROCwimp_singlepollidle - processes wimp events as normal, but
  doesn't return until it has received a null poll after the specified number
  of seconds.
            PROCwimp_deskplotwindowtext - same as PROCwimp_deskplottext but
  for plotting in windows with a clipping rectangle.
            FNwimp_iswindowopen - checks to see if a window is currently
  open.
--Altered:
            ****PROCwimp_renderwindow - now puts bottom left of drawfile at
  work area coordinates, instead of top left. Also much simplified.
            ****PROCwimp_loadsprites - changed to FNwimp_loadsprites. Now pass
  handle to load sprites at.
            ****PROCwimp_pointer - now works so if second argument is 0 then
  it uses a wimp sprite, otherwise the second argument is a sprite area
  handle.
            ****FNwimp_loadwindow - now works so if third argument is 0 then
  it uses wimp sprites, otherwise the third argument is a sprite area handle.
            PROCwimp_plottext - some variables were not localised. Now fixed.
            PROCwimp_initdfiles - moved some memory reservations to
  FNwimp_initialise.
            FNwimp_messlook0, FNwimp_messlook1, FNwimp_messlook2 - if token
  cannot be found in the messages file then they now return an empty string
  instead of raising an error in DrWimp.
            ****FNuser_saveicon - now PROCuser_saveicon and has extra
  parameters to set the icons numbers of the icon to drag, the writeable icon,
  and the default action (OK) icon of save windows.
            ****FNwimp_createmenu, PROCwimp_putmenuitem,
  PROCwimp_recreatemenu, FNwimp_createmenuarray, PROCwimp_recreatemenuarray -
  before version 2.00 it was normal to use '>' in the string passed to these
  functions to describe menu item or items as having submenus, providing the
  handle to the submenu. This was depriciated from version 2.00 onwards and
  now is removed, and will be ignored.
            ****PROCuser_redraw - added two extra arguments to facilitate
  printing and avoid having to use global variables.
            ****FNuser_loaddata - added two extra arguments to pass window
  work area coordinates that the object was dropped at.
            ****PROCuser_mouseclick - added two extra arguments to pass
  window work area coordinates that the mouse was clicked at.
            PROCwimp_error - fixed bug whereby specifying the title to be
  prefixed with 'Error from' resulted in the title being prefixed with
  'Message from'.
--New version of Fnc'n'Prc.
--Fixed bug with internal DrWimp function PROCwimp_decodemenuentry.
--Fixed template bug with Saver example application.
--Fixed bug whereby dragging any dragable icon in a save window resulted in
  the save icon being dragged.
--Finally removed the EVAL call. The recommended changes necessary to make
  the EVAL redundant were made in the upgrading details for version 2.00
  (02-Jul-96). I have now decided that the old method of allowing submenus to
  be attached at the same time as creating menus should no longer be used. It
  isn't much effort to change to the new (2.00+) method. See also the altered
  functions list above.
--Vastly reduced and simplified the "Security" file due to removal of EVALs.
--Made DrWimp more robust to calling wimp functions inside user functions.
--Removed UserDraw example application.
--Added Drawing example application to replace UserDraw.
--Added FastSlow and SlowFast example applications to show how to switch
  between different speeds of polling.
--Added Messages example application to demonstrate using messages files to
  obtain text, substitutes and automatic creation of menus.
--Added ViewPage example application to demonstrate checking is printer
  driver is loaded and reading paper sizes.
--Added PrintTest example applcation to demonstrate printing and how to use
  all the features of printing.
--Added Grid example application to demonstrate how to draw grids using the
  redraw box for speed.
--Bug fixed in Linker.



REM --------------------------------------------------------------
2.11 (08-Apr-97)

--Fixed problem which stopped DrWimp functions being called inside
  FNuser_savedata.
--Removed the StrongARM document as everything should now be
  StrongARM compatible.



REM --------------------------------------------------------------
2.10 (09-Mar-97)

--Fixed bug with window opening which left panes in same place when a
  windows resize button was clicked on.



REM --------------------------------------------------------------
2.09 (26-Dec-96)

--Made small change to PROCwimp_dataload - an internal function - to get
  around some sort of problem with !BSquasher not be able to cope in certain
  situations.
--Added new version of Linker (2.00) - now more robust and fixes some bugs
  in the first version. Progress bar added and speed of linking increased.
--When !Fnc'n'Prc changed from version 1.20 to 1.21 the version displayed in
  the info window was not updated by mistake. Now corrected. The !Help file
  has always shown the correct version.
--Increased indirected memory allocation sizes for the purpose and version
  icons in the info windows in the tutorial template files. Same was done of
  the templates file Fabricate produces.



REM --------------------------------------------------------------
2.08 (17-Dec-96) Limited release

--Added  :
            PROCwimp_iconbit - allows icon bits to be set and unset.
--Altered:
            PROCwimp_openwindow - specifying a stack position of -3 now
  opens the window in its current stack position.
            PROCwimp_openwindowat - specifying a stack position of -3 now
  opens the window in its current stack position.



REM --------------------------------------------------------------
2.07 (15-Dec-96) Limited release

--Added  :
            PROCwimp_redrawwindow - forces a window to be redrawn.
            PROCwimp_savedfile - saves a drawfile.
--Now allows files to be loaded in with double-clicks, including if the
  application was run from the double-click.
--Added new version (1.21) of !Crunch which produces StrongARM compatible code.
--Further compressed !Fabricate, !Linker and !Fnc'n'Prc RunImages.
--Replaced !TemplEd 1.31 with 1.32 which is StrongARM compatible.



REM --------------------------------------------------------------
2.06 (25-Nov-96)

--Added  :
            FNwimp_roundfloat - rounds up or down a floating point number to
  an integer.
--Altered:
            ****PROCwimp_bar - added new fourth parameter to specify whether
  the bar is horizontal or vertical.
--Implementented vertical sliders.
--Updated Slider example application to demonstrate vertical sliders and using
  bump icons with sliders.



REM --------------------------------------------------------------
2.05 (19-Nov-96)

--Whenever a save window is opened - either by a wimp request, user request or
  as a menu or part of a menu - the caret is placed in the writeable icon (1).
--Added note in manual to start of tutorials section, pointing out that its not
  a good idea to add lines before the PROCwimp_initialise.
--Removed some inconsistencies from the manual and !Fnc'n'Prc.



REM --------------------------------------------------------------
2.04 (20-Oct-96)

--Altered:
           PROCwimp_setcolour - localised variable to stop c% getting
  corrupted.
           FNwimp_initialise - 'w' added to start of non-localised variable.
  Now applications are started for RISC OS 3+ so DrWimp can take advantage of
  extra messages, etc.
           PROCwimp_help - internal DrWimp function altered to allow
  interactive help for menu items.
--Added  :
           PROCwimp_deskplottext - Plots some text on the screen at the
  given coordinates using the specified foreground and background colours. The
  function plots the text how the desktop text appears. ie. for machines using
  RISC 3.50+ the text will be in the current desktop font. For other machines
  it will be in the system font.
           ****FNuser_menuhelp - returns interactive help for menu items.
--Updated !UserDraw example application to use new function.
--Added !Toolbar example application.
--Renamed Manual to !Manual so it appears first in the Documents folder.
--Removed stray DrWimp file from !ESG example application.
--Added !UnCrunch utility for StrongARM users to enable them to run the
  utilities.
--Added StrongARM document to tell users about !UnCrunch. Also added a short
  note about StrongARM in the Security document.



REM --------------------------------------------------------------
2.03 (16-Oct-96) Limited release

--Altered:
           PROCwimp_resizewindow - now opens the resized window in its
  current stack position instead of moving it behind all the others.
--Added  :
           ****PROCuser_modechange - called upon mode changes.
           FNwimp_getscreensize - returns dimensions of current screen
  mode in OS coordinates.



REM --------------------------------------------------------------
2.02 (04-Sep-96)

--Added  :
           PROCwimp_closedown - new function to put all the close down code
  in. DrWimp internal only, not to be called.
--Global varaible tblk% did not start with a 'w'. Now fixed.
--Now looses font handles when application is quit instead of leaving them.
  New method of coping with fonts in windows also saves memory. Now just 256
  bytes are required instead of 256 bytes per window template.
--!Fabricate now makes !Boot files.



REM --------------------------------------------------------------
2.01 (24-Jul-96)

--I love it when that happens. I have rewritten PROCwimp_pollopenwindow (an
  internal function) so it is now smaller. Removed the now redundant
  PROCwimp_winandpaneback (internal), and hey presto! Multiple panes per
  window are now possible and DrWimp is a few 100 bytes shorter to boot!
  The original pane code which was mainly the two functions mentioned was a
  bit cranky, but after stuggling for several days trying to make it work with
  multiple panes I suddenly had this brainwave. I don't understand why I
  didn't do things this way before...
  PROCuser_openwindow is now called before the window in question is opened so
  the stack ordering of the panes is easily worked out.
--Added brief details of tutorial files to !!ReadMe!! file.
--Added !Multipane example application.
--Fixed bug in FNwimp_getwindowsize where it always returned a 0 for the
  window height.
--Added the Upgrading document which details exactly what needs to be
  changed to what if you are upgrading an application from a previous version.



REM --------------------------------------------------------------
2.00 (02-Jul-96) First major overhaul since 1.02.
                 Limited release.

--Added  :
           ****FNuser_saveicon - return the icon number of the icon to be
  dragged in the save window. Only use if not using the standard icon 0 as the
  save icon.
           ****FNuser_sliderback - return icon number of slider back icon.
           ****FNuser_slider - return icon number of slider icon.
           ****PROCuser_slidervalue - Percentage of slider being dragged or
  just finished being dragged is passed.
           PROCwimp_putsliderpcent - sets the percentage of a slider.
           FNwimp_getsliderpcent - gets the percentage of a slider.
           FNwimp_resizewindow - resizes work area and visible area to values
  specified.
           FNwimp_getdfilesize - returns width or height of a drawfile in OS
  co-ordinates.
           PROCwimp_renderwindow - renders a drawfile in a window.
           FNwimp_geticonsize - returns width or height of icon in OS
  co-ordinates.
           FNwimp_worktoscreen - converts a windows work coordinates into
  screen coordinates.
           FNwimp_screentowork - converts screen coordinates into a windows
  work coordinates.
           PROCwimp_setcolour - sets the current GCOL colour to the nearest
  possible for the mode when the red, green and blue values are supplied.
           PROCwimp_plottext - plot text in any font, size, foreground and
  background colours.
           FNwimp_createblock - creates a block of memory for string storage.
  Returns a handle for the block.
           PROCwimp_putinblock - puts a string in a block at the specified
  position.
           FNwimp_getfromblock - gets string from specified position in a
  block.
           FNwimp_geticonstate - returns 1 or 0 to denote whether icon is
  selected or not.
           PROCwimp_attachsubmenu - attaches a menu or a window as a submenu
  of a specified menu item.
--Altered:
           PROCwimp_openwindow - can now use 2 as the centre value to centre
  window on the pointer. Backwards compatable.
           ****Changed PROCuser_savedata to FNuser_savedata. Now return a 1 if
  some data was saved or a 0 if none was saved. Allows for validation checks
  in this function to see if any data should be saved or not.
           PROCwimp_iconselect - small change made so that if state is not
  changing then icon is not redrawn.
           PROCwimp_puticontext - small change made so if text is not actually
  changing then the icon is not redrawn.
           PROCwimp_pollsavemessage - removed EVAL.
           PROCwimp_loadwindow - now allows user sprites to be indirected, so
  they are now displayed, and can be changed.
--Made small change of occurances of size to size% in FNwimp_getwindowsize.
--Renamed wimp functions "process" to "wimp_process" and "checkbounds" to
  "wimp_checkbounds", which is what they should have been.
--Added search facility to !Fnc'n'Prc.
--!Fnc'n'Prc is no longer an example application. The addition of the search
  facility meant that large sections of code were non-trivial, and would be
  very hard to follow by anyone not familiar with manipulating blocks of
  memory etc.
--Added sliders. Eg: the ones usually found in colour picker windows where you
  can drag a slider for red, green and blue to set the amounts.
--Added !DrawDisp example application to show drawfiles in windows.
--Added !Slider example application to show sliders and slider ranges.
--Added !PanePain example application to replace !Fnc'n'Prc as a pane example.
--Added !UserDraw example application to show user graphics in windows.
--Added support for DragASprite module. All save boxes will now use it as
  default.
--!!ReadMe!! file tided up and made more verbose.
--Distribution conditions added to !!ReadMe!!.
--Replaced version 1.23 (11-Jul-93) of !TemplEd with version 1.31(25-May-95).
--Fixed bug in PROCwimp_errorchoice to stop it always returning 0 (ie Cancel).
--Added a BASIC linker called !Linker. Purpose written for DrWimp to get
  around the problem of not being able to distribute BlibII. See its own !Help
  file for more details and instructions.
--Moved the manuals and the history file into a "Documents" folder.
--Removed !FontRun example as I thought it had a non-standard way of running
  and would have taken too much effort to update the DrWimp in it and check it
  fully worked.
--Updated version of DrWimp inlcuded with example applications and updated
  comments accordingly.
--Fixed small bug in PROCwimp_menuwrite where the maximum length of text to be
  entered was always character short.
--Added !MenuTrick example application to show dynamic menus, context
  sensitive menus and writeable menu items.
--Added !SprAreas example application to show private sprite areas.
--Added !Blocks example application to show new string block handling.
--Seperated DrWimp from the examples and put in a seperate "system"
  application, so all examples use the same copy saving space.
--Removed BlibII start and stop bits as !Linker does not need them. This
  removed a staggering 7k off DrWimp!! If you want to use BlibII, then it
  includes a utility to add the start at stop bits automatically.
--Major new addition in the form of !Fabricate. Produces copies of the blank
  template application !MyApp, but with options to change the name and add
  some very common features automatically.
--Removed copies of address not in the manual and added seperate "Address"
  file.
--Added !BSquasher utility.
--Removed wimpver% line and moved FNwimp_libversion to top so no lines are
  outside functions any longer.
--Removed FNuser_minmenuwidth, as it seems to have no effect. Strange.
--Added !ESG example application.



REM --------------------------------------------------------------
1.14 (24-May-96)

--Fixed a bug in save windows where a line which was hardwired to icon 3.
  This must have happened sometime in the last few versions and should have
  been icon 0, which it is in earlier versions. Therfore save windows would
  appear not to work in that no icons could be dragged.



REM --------------------------------------------------------------
1.13 (26-Mar-96)

--General cleaning and tidying up.
--Fixed two mistakes with BlibII start and stop bits.



REM --------------------------------------------------------------
1.12 (11-Mar-96)

--Added  :
           PROCwimp_colouricontext - changes colour of text (not if using
  font).
--Fixed problem where pane didn't move if parent window was resized.
--Fixed problem with DrWimp forgetting where to open menu if wimp% block is
  fiddled about with in PROCuser_menuopen.



REM --------------------------------------------------------------
1.11 (10-Feb-96)

--Added start and stop bits so library can be used with BLibII.



REM --------------------------------------------------------------
1.10 (24-Dec-95)

--Added  :
           ****PROCuser_menuopen - called just before the menu is opened. Icon
  pointer was over is passed.
           ****PROCuser_minmenuwidth - return a number guarantees the menu to
  be at least that width in characters.
           PROCwimp_render - renders a drawfile.
           PROCwimp_initdfiles - sets up blocks of memory for use with
  drawfiles.
           FNwimp_measurefile - measures size of drawfile.
           FNwimp_loaddfile - loads drawfile into block of memory.
           PROCwimp_increaseslot - increase wimpslot.



REM --------------------------------------------------------------
1.08 (20-Aug-95)

--Fixed problem with bars (controlled with PROCwimp_bar), in that no bar now
  appears for a bar of zero length.



REM --------------------------------------------------------------
1.07 (23-Jul-95)

--Added  :
           PROCwimp_pollidle - if NULL=TRUE then it will call PROCuser_null
  only every so many seconds instead of every time control is passed to the
  app and no events have occured.



REM --------------------------------------------------------------
1.06 (15-Jun-95)

--Fixed bug so that when saving a file, it has the correct filetype specified
  in the data_save message, instead of it always being &FFD.
--Also, made sure that the leafname specified in the data_save message is zero
  terminated. I missed this off, but have only just noticed because !Paint is
  the first application that I have saved files from that has complained.
--Fixed bug in PROCwimp_bar that only let it work in windows with handle
  main%!!



REM --------------------------------------------------------------
1.05 (28-May-95)

--Added  :
           PROCwimp_bar - allows manipulation of bars very easy. Useful for
  showing percentage done of an operation.
--Fixed bug in PROCwimp_iconbar that crashed the application when you tried to
  put an icon on the iconbar with no text below it!!
--Added a contents page to the manual.
--Added !Bar example application.



REM --------------------------------------------------------------
1.04 (16-May-95)

--Fixed bug in PROCwimp_puticontext (introduced in 1.03 by accident) which
  stopped it from working.
--Applications can now be quitted inside PROCwimp_singlepoll, ie. from menu
  choices etc, while using this method of polling.



REM --------------------------------------------------------------
1.03 (26-Apr-95) 

--Altered:
           PROCwimp_puticontext - now redraws icon after text has been
  changed, so icons that are not filled don't muck up.
           ****FNwimp_initialise - fourth parameter added to give the minimum
  version number of the OS multiplied by 100, that the application is allowed
  to run on.
           FNwimp_iconbar - adjusted size of bounding box so that icons
  without text below cannot have their tops rubbed out.
           PROCwimp_iconbarsprite - fixed bug that stopped the sprite being
  changed when the icon had no text underneath. When icon changes, DrWimp now
  only updates the icon, and not the entire iconbar.  
--Fixed two bugs that stopped FNwimp_errorchoice from working.



REM --------------------------------------------------------------
1.02 (19-Apr-95)

--Vastly simplified and improved menu selection routines. Now doesn't use the
  rubbish menu decoding SWI. As a result, full stops can now be used in menu
  items. (I was converting item numbers into the item text, then back again!)
--Added !Saver as an example. !RunImage files of examples commented.
--Added text version of manual.
--Altered:
           ****FNwimp_initialise - last (fourth) parameter removed due to
  simplification of menu decoding.
           PROCwimp_iconenable - now works properly, instead of toggling the
  greying out of the icon.
--Refined manual to remove ambiguities.
--Bug fixed. When mode was changed or desktop left, when returning, the panes
  would move behind their 'parent' windows.



REM --------------------------------------------------------------
1.01 (04-Apr-95)

--Added  :
           PROCwimp_putmenuitem
           PROCwimp_removemenuitem
           PROCwimp_recreatemenu 
           FNwimp_createmenuarray
           PROCwimp_recreatemenuarray
           PROCwimp_putmenutitle
           PROCwimp_singlepoll
--Altered:
           ****FNwimp_createmenu - extra parameter to set the maximum number
  of items allowed.
           ****FNwimp_iconbar - now returns window handle instead of icon
  handle in the window. In other words, it returns -2.
--Improved all sections relating to indirected menu items. In particular, all
  items longer than 11 characters are now indirected. Used to be items longer
  than 12.
--If iconbar icon has text underneath, then the background is no longer
  filled, spoiling textures.
--The icon positioning vertically has been tweaked.
--Added !FontRun as an example.


     
REM --------------------------------------------------------------     
1.00 (29-Mar-95) Limited release for testing and evaluation.



REM --------------------------------------------------------------
REM --------------------------------------------------------------
REM --------------------------------------------------------------


EOF502
