Home » Archimedes archive » Acorn Computing » 1994 08 subscription disc.adf » 9408s » Shareware/Event/Documents/!EShellDoc/StrongHlp/EvntShell/HelpData

Shareware/Event/Documents/!EShellDoc/StrongHlp/EvntShell/HelpData

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » Archimedes archive » Acorn Computing » 1994 08 subscription disc.adf » 9408s
Filename: Shareware/Event/Documents/!EShellDoc/StrongHlp/EvntShell/HelpData
Read OK:
File size: 1A5E4 bytes
Load address: 0000
Exec address: 0000
File contents
User FN (PROCshell_AttachDataLoad)
Params =>
         int address file has been loaded at
         int filetype of file
         str full pathname of file

Note that if the event was attached with the
<no load flag=>noload> set to TRUE the address will
be -1 and the user application is expected to
actually load the file.User FN (PROCshell_AttachDataSave)
Params =>
         str full filename of file

This function is not called if the file is stored
in a heap block. In this case the whole contents of
the heap block are transferred.         OS
<OSCheckModuleVersion=>FNshell_OSCheckModuleVersion>
<OSCheckVersion      =>FNshell_OSCheckVersion>
<OSVarExists         =>FNshell_OSVarExists>
<OSVarGetVal         =>FNshell_OSVarGetVal>
<OSReadCommandArg    =>FNshell_OSReadCommandArg>Mouse
<MouseLimit    =>PROCshell_MouseLimit>Shell
<GetAppName     =>FNshell_GetAppName>
<GetAppDir      =>FNshell_GetAppDir>
<GetAppDataDir  =>FNshell_GetAppDataDir>
<Init           =>PROCshell_Init>
<LibraryVersion =>FNshell_LibraryVersion>
<ResourcesInit  =>PROCshell_ResourcesInit>
<WimpCloseDown  =>PROCshell_WimpCloseDown>
<WimpCloseDown_I=>PROCshell_WimpCloseDown_I>
<WimpInit       =>FNshell_WimpInit>
<WimpInit_I     =>FNshell_WimpInit_I>Windows
<CloseWindow               =>PROCshell_CloseWindow>
<CreateWindow              =>PROCshell_CreateWindow>
<CreateWindowStatic        =>PROCshell_CreateWindowStatic>
<MessageWindow             =>FNshell_MessageWindow>
<OpenWindow                =>PROCshell_OpenWindow>
<OpenWindowStatic          =>PROCshell_OpenWindowStatic>
<WindowBringToTop          =>PROCshell_WindowBringToTop>
<WindowGetTitle            =>FNshell_WindowGetTitle>
<WindowHasAdjustSizeIcon   =>FNshell_WindowHasAdjustSizeIcon>
<WindowHasBackIcon         =>FNshell_WindowHasBackIcon>
<WindowHasBeenToggled      =>FNshell_WindowHasBeenToggled>
<WindowHasCloseIcon        =>FNshell_WindowHasCloseIcon>
<WindowHasHScrollBar       =>FNshell_WindowHasHScrollBar>
<WindowHasInputFocus       =>FNshell_WindowHasInputFocus>
<WindowHasTitleBar         =>FNshell_WindowHasTitleBar>
<WindowHasToggleIcon       =>FNshell_WindowHasToggleIcon>
<WindowHasVScrollBar       =>FNshell_WindowHasVScrollBar>
<WindowIsAPane             =>FNshell_WindowIsAPane>
<WindowIsMoveable          =>FNshell_WindowIsMoveable>
<WindowIsNotBounded        =>FNshell_WindowIsNotBounded>
<WindowIsOnTop             =>FNshell_WindowIsOnTop>
<WindowIsOpen              =>FNshell_WindowIsOpen>
<WindowLoaded              =>FNshell_WindowLoaded>
<WindowMoveTo              =>PROCshell_WindowMoveTo>
<WindowMoveToIcon          =>PROCshell_WindowMoveToIcon>
<WindowResize              =>PROCshell_WindowResize>
<WindowRetitle             =>PROCshell_WindowRetitle>
<WindowSetSpriteArea       =>FNshell_WindowSetSpriteArea>
<WindowToggleAdjustSizeIcon=>PROCshell_WindowToggleAdjustSizeIcon>
<WindowToggleBackIcon      =>PROCshell_WindowToggleBackIcon>
<WindowToggleCloseIcon     =>PROCshell_WindowToggleCloseIcon>
<WindowToggleHScrollBar    =>PROCshell_WindowToggleHScrollBar>
<WindowToggleTitleBarIcon  =>PROCshell_WindowToggleTitleBarIcon>
<WindowToggleToggleIcon    =>PROCshell_WindowToggleToggleIcon>
<WindowToggleVScrollBar    =>PROCshell_WindowToggleVScrollBar>
<WindowTrapsHotKeys        =>FNshell_WindowTrapsHotKeys>Debug
<TraceExit=>PROCshell_TraceExit>
<Tracef0  =>PROCshell_Tracef0>
<TraceInit=>PROCshell_TraceInit>
<TraceIsOn=>FNshell_TraceIsOn>
<TraceOff =>PROCshell_TraceOff>
<TraceOn  =>PROCshell_TraceOn>Events
<AttachBumpHandler          =>PROCshell_AttachBumpHandler>
<AttachClickAdjust          =>PROCshell_AttachClickAdjust>
<AttachClickSelect          =>PROCshell_AttachClickSelect>
<AttachCloseWindowHandler   =>PROCshell_AttachCloseWindowHandler>
<AttachDataLoad             =>PROCshell_AttachDataLoad>
<AttachDataSave             =>PROCshell_AttachDataSave>
<AttachDrag                 =>PROCshell_AttachDrag>
<AttachHelpTag              =>PROCshell_AttachHelpTag>
<AttachHotKey               =>PROCshell_AttachHotKey>
<AttachModeChangeHandler    =>PROCshell_AttachModeChangeHandler>
<AttachMenu                 =>PROCshell_AttachMenu>
<AttachMenuDBox             =>PROCshell_AttachMenuDBox>
<AttachMenuMaker            =>PROCshell_AttachMenuMaker>
<AttachOpenWindowHandler    =>PROCshell_AttachOpenWindowHandler>
<AttachSubMenu              =>PROCshell_AttachSubMenu>
<AttachPaletteChangeHandler =>PROCshell_AttachPaletteChangeHandler>
<AttachPane                 =>PROCshell_AttachPane>
<AttachPreQuitHandler       =>PROCshell_AttachPreQuitHandler>
<AttachTaskInitialiseHandler=>PROCshell_AttachTaskInitialiseHandler>
<AttachTaskCloseDownHandler =>PROCshell_AttachTaskCloseDownHandler>
<AttachUserRedraw           =>PROCshell_AttachUserRedraw>
<DoBackgroundTask           =>PROCshell_DoBackgroundTask>
<HandleUnknownMessage       =>PROCshell_HandleUnknownMessage>Files
<FileExists=>FNshell_FileExists>
<FileLength=>FNshell_FileLength>
<FileType  =>FNshell_FileType>
<Branch    =>FNshell_Branch>
<Leaf      =>FNshell_Leaf>Strings
<StringArrayGetLongest=>FNshell_StringArrayGetLongest>
<StringExchange       =>FNshell_StringExchange>
<StringPadLeading     =>FNshell_StringPadLeading>
<StringPadTrailing    =>FNshell_StringPadTrailing>
<StringStripAll       =>FNshell_StringStripAll>
<StringStripLeading   =>FNshell_StringStripLeading>
<StringStripTrailing  =>FNshell_StringStripTrailing>
<StringUpperCase      =>FNshell_StringUpperCase>PROCshell_AttachPaletteChangeHandler()
Params =>
         str <function name=>UserFN03>

Registers a function name to be called when a PaletteChange
message is received. This occurs when the user has finished
dragging the sliders on the Palette application, or when a
new palette is loaded. It is also called when the handler is
set up so that the user application can note the current
parameters.

Note that this message is not issued when the screen mode
changes, so tasks interested in colour mapping changes should
call <PROCshell_AttachModeChangeHandler> as well.

Library Group => <Events=>LibGroupEvents>User FN (PROCshell_AttachPaletteChangeHandler)
Params =>
         None

This function is called when a PaletteChange message is
received and also when <PROCshell_AttachPaletteChangeHandler>
is called.PROCshell_AttachModeChangeHandler()
Params =>
         str <function name=>UserFN04>

Registers a function name to be called when a ModeChange
message is received. This allows the application to check
any mode-specific parameters such as screen width etc. It
is also called when the handler is set up so that the user
application can note the current parameters.

Library Group => <Events=>LibGroupEvents>User FN (PROCshell_AttachModeChangeHandler) 
Params => 
         None 
 
This function is called when a ModeChange message is
received and also when <PROCshell_AttachModeChangeHandler>
is calledPROCshell_AttachTaskInitialiseHandler()
Params =>
         str <function name=>UserFN05>

Registers a function name to be called when a TaskInitialise
message is received. This allows the application to keep
track of any new tasks started after it.

Library Group => <Events=>LibGroupEvents>User FN (PROCshell_AttachTaskInitialiseHandler) 
Params => 
         None 
 
This function is called when a TaskInitialise  message is
received.User FN (PROCshell_AttachTaskCloseDownHandler)
Params => 
         None 
 
This function is called when a TaskCloseDown message is
received.PROCshell_AttachTaskCloseDownHandler()
Params =>
         str <function name=>UserFN06>

Registers a function name to be called when a TaskCloseDown
message is received.This message is sent when a task (other
than the current one) is killed.

Library Group => <Events=>LibGroupEvents>PROCshell_HeapBlockReturn()
Params =>  
         int address of heap block

Releases the given heap block, returning memory to
the free pool.

Library Group => <Memory=>LibGroupMemory>PROCshell_HeapBlockInit()
Params =>
         None                

Library Group => <Memory=>LibGroupMemory>PROCshell_AttachPane()
Params =>
         int window handle
         int pane handle
         int <pane flags=>PaneFlags>
         int x offset of pane relative to parent window
         int y offset of pane relative to parent window

If necessary the window flags of the pane window are
changed so that the 'pane' bit is on and the 'moveable'
bit is off, so that editing the template file is not
required.

Library Group => <Events=>LibGroupEvents>Pane Flags (PROCshell_AttachPane)
0 = attached to parent window work area
1 = not used
2 = attached to left edge
3 = attached to bottom edge
4 = attached to right edge
5 = attached to top edgePROCshell_AttachDataLoad()
Attaches a dataload handler to a window/icon pair.

Params =>
         int  window handle
         int  icon handle
         int  filetype to recognise and optionally
              load (see no load flag)
         str  <function name=>UserFN01>
         bool <no load flag=>noload>

Note that it is possible to call this function for
the same window/icon pair more than once giving
different filetypes (and function names if required)
to allow the handling of multiple filetypes.

Library Group => <Events=>LibGroupEvents>PROCshell_AttachDataSave()
Attaches a datasave handler to a window/icon pair. A
typical use would be in a 'Save As' dialog box, the
icon handle being that of the 'File Type' icon.
 
Params =>
         int window handle
         int icon handle
         int address of heapblock holding data or
             the <estimated file size=>EstSize>
         int file type for saved file
         int icon nr of filename icon
         str <function name=>UserFN02> (optional if data
             is held in a heapblock)

If icon 0 in the window is clicked on then a check
is made that the filename icon contains a valid
path name, generating an error if it does not.

Note that the third parameter can point to a heap
block containing the data to save which means that
the data must exist in the block (or at least the
block must exist and be the correct size) before
this routine is called. If this parameter is >&8000
it is taken to be a pointer to the heap block, and
the name of the function to perform the save is
optional.

Alternatively this parameter can be an estimated
file size (i.e. \<&8000) in which case the user
function may write directly into the file whose
name is given as a parameter to the function. RAM
transfer is not possible if this is the case.


Library Group => <Events=>LibGroupEvents>PROCshell_AttachMenu()
Params =>  
         int  window handle
         int  icon handle
         int  menu handle
         bool shift flag (not implemented)
         bool ctrl  flag (not implemented)
         bool alt   flag (not implemented)

The shift, ctrl and alt flags are for future
enhancements to the library and should be set
to 0 on this release.

If the menu is attached to an icon (rather than
a window work area) a click with SELECT, MENU
or ADJUST will open the menu. Also the button
type of the icon is changed to 1 (click) to
ensure the menu pops up when SELECT or ADJUST
is used.

Library Group => <Menus=>LibGroupMenus>, <Events=>LibGroupEvents>PROCshell_AttachMenuMaker()
Params =>   
         int window handle   
         int icon handle
         str <function name=>UserFN16>

Registers a function to be called before the
menu is opened, allowing ticking, shading etc
of menu items.

Library Group => <Menus=>LibGroupMenus>,<Events=>LibGroupEvents>PROCshell_AttachClickSelect()
Params =>    
         int window handle       
         int icon handle 
         str <function name=>UserFN13>

Library Group => <Events=>LibGroupEvents>PROCshell_AttachClickAdjust()
Params =>     
         int window handle           
         int icon handle  
         str <function name=>UserFN15>

Library Group => <Events=>LibGroupEvents>PROCshell_AttachUserRedraw()
Params =>      
         int window handle      
         str <function name=>UserFN14>

A check is made to ensure that the
'Auto redraw' flag of the window is
off, and if necessary the bit is cleared
automatically (i.e. you don't have to set
the state of the flag using !FormEd or
similar).

Library Group => <Events=>LibGroupEvents>PROCshell_AttachDrag()
Params =>        
         int window handle        
         int icon handle     
         str <function name=>UserFN22>

Library Group => <Events=>LibGroupEvents>PROCshell_AttachHelpTag()
Params =>         
         int window handle         
         int icon handle      
         str <message tag=>MessageTag>

Note that any message tags found in icon
validation strings override tags set up by
this routine.

Library Group => <Events=>LibGroupEvents>PROCWimpCloseDown
Params =>
         None

Not used in EvntShell library - use <PROCshell_WimpCloseDown_I> instead.

Library Group => <Shell=>LibGroupShell>PROCshell_WimpCloseDown_I
Params => 
         None

Called when the application shuts down
(the library calls this automatically)

Library Group => <Shell=>LibGroupShell>PROCshell_Init
Params =>  
         None

Library Group => <Shell=>LibGroupShell>PROCshell_ResourcesInit
Params =>   
         None

Loads window templates, sprites and message files.
This PROC must be called early in the program, i.e
before the wimp poll loop starts.

Library Group => <Shell=>LibGroupShell>Still To Do List
 Handling of filetypes other than &FFF needed in DataSave (Multiple
 filetypes/user_FNs required - set up lists)
 Force evaluated function names to start with '_' (error otherwise)
 Write bump icon handler
 Write list icon handler
 For !AppBuild iconbar menu title must be changed to NewApp name
 ReDraw event must be implemented in library
 Check out MessageTrans_MenuMake for creating menus from message files
 Change names of !RunImage to AppName without !
 Pointer shape change event needed
 Implement StrongHlp system (shell_InstallStrongHlp)
 Check out possibility of INSTALLing EvntShell library
 Autoscroll handler when dragging within a window
Jan-Herman Buining
Jan-Herman Buining       Acorn BBS :    (020)6631849
Soendastraat 133          Huco BBS :    (01804)30785
9715 NP Groningen      La Luna BBS :    (02593)41891
(050)735228
The Netherlands              Eunet : jhb@neabbs.UUCP

Thanks are also due to the above for his WASP application
shell without which I would have never figured out how
to do RAM file transfers. An excellent piece of
programming, but a little limited for my taste.David Breakwell
David Breakwell
22 Cobs Way
New Haw,
Addlestone
Surrey
ENGLAND

Should be getting most
of the credit because as
far as I know he had the
idea in the first place.
He provided me with a copy
of an early version of his
application which  was much
better coded than mine but
incomplete, so I came up
with my own attempt.Guttorm 'Armstrong' Vik
Guttorm 'Armstrong' Vik
H�lbekken 208
5262 Arnatveit
NORWAY

Provider of StrongED2 which was
used for developing the library
code, and StrongHlp which allows
to read this so nicely.

Note that StrongED/StrongHlp are
now commercial products available
from Stallion Software.Credits
A special mention for all the contributors (however
unwittingly!) to the EvntShell library.

#Table 6 24
    <David Breakwell      =>Breakwell>
    <Jan-Herman Buining   =>Buining>
    <Simon Huntingdon     =>Huntingdon>
    <Alex Petrov          =>Petrov>
    <Robert Seago         =>Seago>
    <Risc User            =>RiscUser>
    <Joris R�ling         =>joris>
    <Cy Booker            =>Booker>
    <Guttorm Vik          =>Vik>
    <Olaf Krumnow         =>Krumnow>
    <Herbert zur Nedden   =>Nedden>
#EndTable  PROCshell_OpenWindow()
Params =>     
         int window handle
         int full flag
         int front flag

Any panes attached to the window with
<PROCshell_AttachPane> will be opened
automatically.

Library Group =\> <Windows=>LibGroupWindows>PROCshell_CloseWindow()
Params =>
         int window handle

Any panes attached to the window with
<PROCshell_AttachPane> will be closed
automatically.

Library Group => <Windows=>LibGroupWindows>PROCshell_IconbarSetText()
Params =>
         int window handle     
         int icon handle
         str text under icon

Library Group => <Icons=>LibGroupIcons>PROCshell_IconPutData()
Params => 
         int window handle 
         int icon handle
         str text to insert into icon
         int redraw flag

An error is generated if the text is too
long to fit in the icon.

If the redraw flag is TRUE wimp poll is
called immediately to update the icon
contents. Note that if the window is not
open (for example if you are calling this
routine in a pre-open function) then the
redraw flag should be FALSE as the whole
window will be redrawn when it is opened.

Library Group =\> <Icons=>LibGroupIcons>PROCshell_IconRedraw()
Params =>    
         int window handle    
         int icon handle

Force a redraw of the screen
area covered by the given icon
(including any 3D borders).

Library Group => <Icons=>LibGroupIcons>PROCshell_IconPutValidation()
Params =>      
         int window handle      
         int icon handle
         str new <validation string=>SWI.wimp_validationstring>

See also <FNshell_IconGetValidation>.

Library Group => <Icons=>LibGroupIcons>PROCshell_IconSelect()
Params =>        
         int window handle        
         int icon handle

Make the specified icon selected.

Library Group => <Icons=>LibGroupIcons>PROCshell_IconDeselect()
Params =>         
         int window handle         
         int icon handle

Library Group => <Icons=>LibGroupIcons>PROCshell_IconUnselectable()
Params =>          
         int window handle          
         int icon handle

Library Group => <Icons=>LibGroupIcons>PROCshell_IconSetBGColour()
Params =>           
         int window handle           
         int icon handle 
         int background colour

An error is generated if the colour
number is outside the range 0-15.

See also <PROCshell_IconSetFGColour>.

Library Group => <Icons=>LibGroupIcons>PROCshell_IconSetFGColour()
Params =>            
         int window handle            
         int icon handle  
         int foreground colour

An error is generated if the colour
number is outside the range 0-15.

See also <PROCshell_IconSetBGColour>.

Library Group => <Icons=>LibGroupIcons>PROCshell_CaretSetPosition()
Params =>             
         int window handle             
         int icon handle
         int x offset in icon (usually -1)
         int y offset in icon (usually -1)
         int height (usually -1)
         int index

Allows the caret to be positioned within
an icon. the index parameter is the
number of characters before the caret.

See also <PROCshell_CaretSetRight>.

Library Group => <Icons=>LibGroupIcons>PROCshell_CaretSetRight()
Params =>              
         int window handle              
         int icon handle

Positions the caret at the right hand
end of any text in the specified icon.

See also <PROCshell_CaretSetPosition>.

Library Group => <Icons=>LibGroupIcons>Icons
#Table 13 20
<Iconbar            =>FNshell_Iconbar>
<IconbarSetText     =>PROCshell_IconbarSetText>
<IconCreate         =>FNshell_IconCreate>
<IconDelete         =>PROCshell_IconDelete>
<IconDelete2        =>PROCshell_IconDelete2>
<IconDeselect       =>PROCshell_IconDeselect>
<IconDeselectAll    =>PROCshell_IconDeselectAll>
<IconGetData        =>FNshell_IconGetData>
<IconGetCommand     =>FNshell_IconGetCommand>
<IconGetValidation  =>FNshell_IconGetValidation>
<IconMove           =>FNshell_IconMove>
<IconMove2          =>FNshell_IconMove2>
<IconNewSprite      =>FNshell_IconNewSprite>
<IconPutData        =>PROCshell_IconPutData>
<IconPutValidation  =>PROCshell_IconPutValidation>
<IconRedraw         =>PROCshell_IconRedraw>
<IconResize         =>FNshell_IconResize>
<IconSelect         =>PROCshell_IconSelect>
<IconSelectAll      =>PROCshell_IconSelectAll>
<IconSet            =>PROCshell_IconSet>
<IconSetBorder      =>PROCshell_IconSetBorder>
<IconSetBGColour    =>PROCshell_IconSetBGColour>
<IconSetButtonType  =>PROCshell_IconSetButtonType>
<IconSetESG         =>PROCshell_IconSetESG>
<IconSetFilled      =>PROCshell_IconSetFilled>
<IconSetFGColour    =>PROCshell_IconSetFGColour>
<IconSetHCentred    =>PROCshell_IconSetHCentred>
<IconSetLeftJust    =>PROCshell_IconSetLeftJust>
<IconSetRightJust   =>PROCshell_IconSetRightJust>
<IconSetSelected    =>PROCshell_IconSetSelected>
<IconSetSprite      =>PROCshell_IconSetSprite>
<IconSetText        =>PROCshell_IconSetText>
<IconSetUnselectable=>PROCshell_IconSetUnselectable>
<IconUnselectable   =>PROCshell_IconUnselectable>
<IconSetVCentred    =>PROCshell_IconSetVCentred>
<IsIconSelected     =>FNshell_IsIconSelected>

<CaretSetPosition   =>PROCshell_CaretSetPosition>
<CaretSetRight      =>PROCshell_CaretSetRight>
#EndTableMemory
<HeapBlockExists=>FNshell_HeapBlockExists>
<HeapBlockExtend=>FNshell_HeapBlockExtend>
<HeapBlockFetch =>FNshell_HeapBlockFetch>
<HeapBlockInfo  =>FNshell_HeapBlockInfo>
<HeapBlockInit  =>PROCshell_HeapBlockInit>
<HeapBlockReturn=>PROCshell_HeapBlockReturn>
<HeapManagerInit=>PROCshell_HeapManagerInit>
<MemFill        =>PROCshell_MemFill>Menus
<AttachFontSubMenu =>PROCshell_AttachFontSubMenu>
<AttachMenu        =>PROCshell_AttachMenu>
<AttachMenuMaker   =>PROCshell_AttachMenuMaker>
<AttachSubMenu     =>PROCshell_AttachSubMenu>
<MenuAdd           =>FNshell_MenuAdd>
<MenuColours       =>PROCshell_MenuColours>
<MenuDotted        =>PROCshell_MenuDotted>
<MenuLastXPos      =>FNshell_MenuLastXPos>
<MenuLastYPos      =>FNshell_MenuLastYPos>
<MenuNew           =>FNshell_MenuNew>
<MenuPutData       =>PROCshell_MenuPutData>
<MenuTick          =>PROCshell_MenuTick>
<MenuTickOnly1     =>PROCshell_MenuTickOnly1>
<MenuTickOnly2     =>PROCshell_MenuTickOnly2>
<MenuShade         =>PROCshell_MenuShade>
<MenuWritable      =>PROCshell_MenuWritable>
<OpenMenu          =>PROCshell_OpenMenu>FNshell_MenuBase
Params  =\>
          None

        \<=
          int address of loaded menu file

Library Group =\> <Menus=>LibGroupMenus>FNshell_MenuString()
Params =\>
         str menu text

       \<=
         str menu text 0 terminated

Library Group =\> <Menus=>LibGroupMenus>FNshell_HeapBlockExtend()
Params =>
         int address of heap block
         int amount to increase or decrease block size by
             (-ve to decrease)

       \<=
         int address of heap block

Increases or decreases the size of the given heap block
which must have been allocated with <FNshell_HeapBlockFetch>.
Note that the heap block may be moved to make it fit so you
should always use the returned value for the heap block
address after this call.

Library Group => <Memory=>LibGroupMemory>FNshell_HeapBlockFetch()
Params =>
         int size of block to fetch from heap

       \<=
         int address of heapblock allocated

Returns address of heapblock or causes an "Out
of memory" error if the block cannot be
allocated.

Library Group => <Memory=>LibGroupMemory>FNshell_HeapBlockInfo()
Params =>
         int address of heap block

       \<=
         int size of heap block (Note that this
             is 4 bytes larger than the size
             requested with <FNshell_HeapBlockFetch>)

Library Group => <Memory=>LibGroupMemory>FNshell_IconGetData()
Params =>
         int window handle  
         int icon handle

       \<=
         str icon text

See also <PROCshell_IconPutData>.

Library Group => <Icons=>LibGroupIcons>FNshell_FileExists()
Params =>
         str  file name     
       \<=
         bool TRUE if file exists,
              FALSE otherwise

Library Group =\> <Files=>LibGroupFiles>FNshell_GetString()
Returns the string at the given address.
Terminators may be any character below
ASCII 32.
 
Params  =>
         int address

        \<=
         string found at addressFNshell_Iconbar()
Place a sprite on the icon bar and attach a
menu to it.

Params =>
         int  -1 for right side of bar, -2 for
              left side
         str  sprite name
         str  text under icon
         int  width of icon/text (whichever is
              larger)
         str  menu handle
         bool shift flag (not implemented)
         bool ctrl  flag (not implemented)
         bool alt   flag (not implemented)

The shift, ctrl and alt flags are for future
enhancements to the library and should be set
to 0 on this release.

<Example code...=>Ex_Iconbar>

Library Group => <Icons=>LibGroupIcons>FNshell_IconGetValidation()
Params =>
         int window handle     
         int icon handle
         
       \<=
         str <validation string=>SWI.wimp_validationstring>

See also <PROCshell_IconPutValidation>.

Library Group => <Icons=>LibGroupIcons>FNshell_IconNewSprite()
Params =>
         int window handle   
         int icon handle
         str new sprite name
         int redraw flag

       \<=
         int new icon handle

Library Group => <Icons=>LibGroupIcons>FNshell_IsIconSelected()
Params =>
         int  window handle       
         int  icon handle

       \<=
         bool TRUE if selected, FALSE otherwise

Library Group => <Icons=>LibGroupIcons>FNshell_MessageWindow()
Params =>
         str message text   
         int <cancel flag=>MsgWinCFlag>
         str <program name=>MsgWinProg>
         str <header=>MsgWinHead>

       \<=
         int result

This routine is useful for OK to quit type
windows. The returned result is 1 if OK
was clicked, 2 if Cancel was selected.

Library Group => <Windows=>LibGroupWindows>FNshell_WimpInit()
Params =\>
         int version number
         str task name

Not used in EvntShell library - use <FNshell_WimpInit_I> instead.

Library Group =\> <Shell=>LibGroupShell>FNshell_WimpInit_I()
Params =\>
         int version number 
         str task name

Also initialises Interface module.

Library Group =\> <Shell=>LibGroupShell>PROCshell_WindowMoveTo()
Params =\>
         int window handle to move
         int x coord to move to
         int y coord to move to

See also <PROCshell_WindowMoveToIcon>.

Library Group =\> <Windows=>LibGroupWindows>PROCshell_WindowMoveToIcon()
Params =>
         int window handle to move
         int window handle containing icon
         int icon handle
         int x offset of moved window from icon
         int y offset of moved window from icon

See also <PROCshell_WindowMoveTo>.

Library Group => <Windows=>LibGroupWindows>PROCshell_CreateWindow()
Params =\>
         str window identifier
         int (ignored on entry)

       \<=
         int window handle of newly created window

Library Group =\> <Windows=>LibGroupWindows>Simon Huntingdon
For the Interface module - even Acorn
have realised with RISC-OS 3 that this
is what the users want!

Contacts:
       Arcade BBS          (081 654 2212)

       All mail on the above Bulletin
       Boards should be mailed to JICKRobert Seago
For using my original shell program for
things I would even dream of attempting!Introduction
There are a lot of 'Shell' type applications already in
the Public Domain (this is the second one I have written!)
so why do we need another one?

The reason is that existing shell programs are either too
inflexible or too complicated. All of them I have seen
involve editing the shell code introducing the
possibility of making mistakes which usually result in a
crashed computer. This one is different because the user
application notifies the shell which 'events' it is
interested in and the shell then calls the user
application when the event occurs.

<PROCshell_AttachModeChangeHandler> is a very simple
example which calls a function in the user application
when the screen mode changes. A more complicated example
is <PROCshell_AttachPane> which allows the attachment of
pane windows to a parent window. All opening and closing
of windows and panes is handled totally by the shell
library.

The advantage is therefore that the shell code and the
user code is kept completely seperate resulting in a
(hopefully) much more understandable and robust user
application.The Author
OK I lied about not asking for money. If you send
me <�5.00p=>Cash> you will make <The Wife=>Wife> and me very
happy. You could even receive updated versions of
all my wonderful <Programs>. I know if you register
all of the 'ShareWare' (which is what the Evntshell
library is) you have it would cost a fair bit of
cash, but consider the time and effort I and the
other authors have put into all this!

Click <here=>Author2> for my address...The Wife
Her name is Hilke by the way. When Guttorm
improves StrongHlp to include sprite file
displays I'll be able to  show you a picture
of her. That is if she didn't think that new
curtains were more important than scanners
or a new ARC..........User Guide
<Change History   =>History>
<Common Questions =>questions>
<Compressing      >
<Copyright        >
<Debugging        >
<Dynamic Windows  =>DynamicWindows>
<Interactive Help =>InterHlp>
<Interface Module =>Interface>
<Loading Files    =>Loading>
<Memory Management=>MemMan>
<Menus            >
<Messages         >
<Outline Fonts    =>fonts>
<ResFind          =>ResFind>
<RISC-OS 3        =>RISCOS3>
<Static Windows   =>StaticWindows>
<StrongHlp        >
<Saving Files     =>Saving>
<Sprites          >
<Templates        >

<The Next Release=>NextRelease>The Next release
 No promises mind...

- Support for automatic handling of more
  complicated icon types, for example
  sliders, rotating knobs etc
  (steady now don't get carried away)
- Import and display of DrawFiles and
  Sprites
- Inclusion of more debugging aids
- More drag types
- Autoscroll handler when object is
  dragged within a window
- Colour pick dialogs
- Automatic handling of non-icon text
  within a window (like C txt objects)
- Playing of Maestro tunes (ArchWay does!)
- Extending message file useage to icons/
  windows/menus
- Replay Films (!!!)
- Better multiple file buffers
- Complete German message files
- Automatic attaching of 'hot key' events
  by examining menu textRISC-OS 3
All supplied apps have been tested under RISC-OS 3.1
running on a 4Meg A310 and on an A4, but at the moment
make little use of the new features.

Apart from supporting solid sprite dragging. (That's
one up on RISC_OSLib anyway..)

Oh yes, and the boot file message.Recompense
Or the equivalent
in chocolateDebugging
The EvntShell library outputs a commentary on
what it is doing into a tracefile, providing
that <PROCshell_TraceInit> and <PROCshell_TraceOn>
have been called. The user application can also
place output in this file using <PROCshell_Tracef0>.

Outputting trace information will slow the user
application noticeably, especially when starting up
as a lot of trace info is generated by the call to
<PROCshell_ResourcesInit>. Therefore it is best to
only turn on tracing when necessary, and of course
make sure that tracing is off on any applications
you distribute!

A seperate application, !ShellDBug allows the trace
messages to be viewed in a window as the user
application runs.Dynamic Dialog Windows
Dynamic windows are those created by moving the pointer 
over a submenu pointer arrow (i.e the normal 'About this 
program' window produced by the 'Info' entry on the 
iconbar menu) or optionally when a 'hot key' is pressed. 
They are opened with a call to <PROCshell_OpenWindowDynamic>.

When writeable icons exist in the dynamic window up/down 
cursor keypresses move the caret between the icons using 
the icon handles to determine where to move next. You 
should ensure therefore that the order of the icon handles
is a logical progression through the dialog box. Icons that
are unselectable (i.e. greyed out) will be ignored. Pressing 
the \<RETURN> key moves the caret to the next icon, unless 
the caret is already in the last writeable icon, in which 
case icon 0 (normally a 'default action' icon with an extra
border) is pressed and the menu/dialog box closed. Actually 
clicking \<SELECT> on icon 0 of a dynamic dialog box will 
cause the shell library to close the window as well.

When a 'hot key' is pressed you have the option of opening 
a dynamic dialog box which will disappear when a mouse click
is made outside it or the \<ESC> key is pressed, or as a 
'Static' dialog box which must be explicitly closed by the 
user application program.

Do not attempt to close a dynamic dialog box with a call to 
<PROCshell_CloseWindow> or <PROCshell_DeleteWindow> as this 
will cause an error when the shell library tries to close or
delete the window.Static Windows
These are opened with a call to <PROCshell_OpenWindowStatic> and
respond to cursor and \<RETURN> keypresses like dynamic 
dialog boxes except that pressing \<RETURN> in the last 
writeable icon will not close the window. Static windows
must be created with a call to <PROCshell_CreateWindowStatic>.

Closing these windows is the responsibility of the 
application program (use <PROCshell_CloseWindow>) except in
the case of a click on the 'Close' icon in the title bar
icon (if present).

You would use a static window for the main window of an 
application, or perhaps for a save box as in the case of the
!WinSave2 example. The advantage of using a static window in 
this case is that this allows the user to open directory 
viewers or start other applications while keeping the save 
box on the screen.Templates
All windows used by programs based on the shell library would normally 
be defined using a template editor as this is far simpler than 
creating the windows/icons in the user program. This is not as inflexible
as it may sound as windows can be resized, moved or otherwise altered by 
shell library routines.

The template file must be called 'Templates' and be either in the
application directory or in the appropriate language directory if ResFind
is in use. Note that if you are using different templates for different
languages you must use ResFind. In most cases, however, it is sufficient
to have only one template file in the application directory and to insert
the text taken from the message file in the language of choice into the
icons.

A call to <PROCshell_ResourcesInit> will find the template file and load
all the templates it contains allocating memory as required.Menus
Menus are now handled by MenuUtils which was written
by <Alex Petrov=>Petrov>. Versions of the library prior to 1.20
used a menu editor to create a seperate menu template
file, but I have now abandoned this as it was rather
inflexible.

The use of MenuUtils has enabled me to remove large
chunks of slow BASIC code and to provide many more
features, such as creation and modification of menus
under program control. The menus themselves appear
more quickly as well (OK Cy?).

The  support module is automatically loaded by the
!Run file to provide the new menu handling SWIs used
by the EvntShell library.Message Files
The message file is a normal ASCII file written using !Edit or similar 
that contains message strings preceeded by a message tag. The 
application program should find the messages as required by tag name 
which allows the production of foreign language versions (probably by 
someone else!). It is also far easier to edit the message file to 
change text displayed by the application than using !FormEd or similar.

The !Run file automatically loads a support module 'MsgTrans' if
required (it is built in to RISC-OS 3) to provide this facility.

The message file must be called 'Messages' and be in the application
directory or in the appropriate language directory if ResFind is in
use. A call to <PROCshell_ResourcesInit> will find the file if it exists
and load all the messages it contains allocating memory as required.

The messages issued by the library code are stored in a file called
'ShellMsgs' inside the !ShellSys.Resources.UK directory. If this file
is present in the user application directory then it is loaded from
there, if not it is loaded from !ShellSys. This is to aid the
construction of stand alone applications.Sprites
The sprite file must be called 'Sprites' and be either in the
application directory or in the appropriate language directory
if ResFind is in use. A call to <PROCshell_ResourcesInit> will
find the file if it exists and load all the sprites it contains
allocating memory as required.

The sprite area pointer for each loaded template will be set to
point to the user sprite area, which put simply this means that
all sprites displayed in windows must be present in the
'Sprites' file. This may, however, be changed after loading.Interface Module
The shell library makes the assumption that the interface module 
will always be used. The reason is that firstly that it is highly 
likely that some other PD program will have already loaded it, 
and secondly that the facilities it provides for changing pointer 
shapes over certain icons is extremely useful as a prompt for 
what the icon is for. Indeed RISC-OS 3 has this built in so even 
Acorn are supporting 3D buttons etc....

The module is loaded by the !Run file if not already loaded. Using
a template editor that is 'Interface Aware' makes incorporating 
these effects into a user program easy as once the icons have been
designed and placed the shell library handles all the redrawing 
automatically.

Note that windows containing 3d interface icons must have the 'Auto
Redraw' flag off, but if the template editor displays interface 
icons then the user application will as well.Panes
A pane window is a window attached to a parent window which has 
different properties to the parent. A well-known example is the 
'ToolBox' pane attached to a !Draw window which always appears 
at the top left of the parent window however the parent window 
is scrolled. Another example could be a parent window without 
scrollbars which has a scrolling pane attached to the work area 
which might be used in a 'FindFile' application to display a 
list of finds.

Panes are created using !FormEd or similar with the 'pane' flag 
set. A call to <PROCshell_AttachPane> specifies which pane is 
attached to which window and the position of the pane. Multiple 
panes may to attached to a parent window (see the example 
application !Panes).

The opening and closing of panes is handled totally by the shell
library - a call to <PROCshell_OpenWindow> after attaching the
panes will open the parent window and the panes together.Saving Data
This is achieved by a call to <PROCshell_AttachDataSave> which 
specifies which filetype the saved file should be given, the name 
of a function which will actually perform the save and the 
window/icon handles the drag save event is associated with. It is 
therefore possible to have different drag save events attached to 
different icons in the same window. This is useful where it is 
possible to save the file as more than one type - you can have 
multiple filetype icons in the save window. 

The EvntShell library supports RAM file transfer for speed when
saving data to consenting applications.

See the !WinSave and !VBase2 example applications for how to use 
this routine.Loading Data

This is achieved by a call to <PROCshell_AttachDataLoad> which 
tells the EvntShell library which filetypes the user application
is interested in and the name of a function to call when a load
event occurs. Multiple files may be loaded, but in the current
release of the library it is up to the user application to keep
track of where they are loaded and if they have been modified.
This will change in a future release.

If required the files can be loaded automatically into a reserved
block of memory, or the user application can have total control
over loading and processing the file.

The EvntShell library supports RAM file transfer for speed when
loading data from consenting applications.

It is also possible to arrange for the user application to respond 
to a range of filetypes by attaching more than one handler.Compressing The Application
I recommend !BasShrink or !Shrink_PD (the Public Domain version 
of !BasShrink) by <John Wallace=>Wallace>. It is possible for 
example to combine the !Panes application and the shell library 
to form a stand alone program and then use !BasShrink to reduce 
it from 51K to around 20K.

Future versions of !BasShrink should be able to remove unused
routines to save even more space, or alternatively BLibII can be
used to pre-process the application to link in only the routines that
are actually used. See the manual section 'Other Tools' for more
details.

There is one important point to bear in mind when using the shell 
library and !BasShrink together - function names that are EVALuated 
by the shell library should begin with a '_' character and the 
'Preserve names starting with' radio button in the !BasShrink 
window must be ON. In short if you are calling any shell library 
routine that has a function name as a parameter then that name must 
start with a '_'. Failure to observe this rule will result in a 
non-working compressed program!

Assuming you have !BasShrink 2.14 or later the EvntShell library
can be compressed with all switches on except 'Shorten FN names',
'Shorten PROC names' and 'Remove * comments'. If you are not going
to use !BLibII you can switch on 'Remove * comments' to strip out
the !BLibII commands.

If you append the EvntShell library to the user application
manually or by using BLibII you can compress the complete program
with all switches on.John Wallace (Architype SoftWare)
Supplier of !BasShrink which costs 5.00p. !BasShrink_PD is the 
Public Domain version and is available from various PD libraries.

John Wallace, Architype Software, 54 Parkes Hall Road, Woodsetton,
Dudley, West Midlands, DY1 3SR ENGLAND.Programs
!DataLoad   - EvntShell Demo of loading data files
!EvntShell  - EvntShell Demo which demonstrates an 'address book'
              type data editor, including loading a special file
              type
!ShellDBug  - Display trace messages from EvntShell applications
!Panes      - EvntShell Demo which demonstrates parent windows
              and panes
!VBase2     - EvntShell Demo which demonstrates hot keys, dynamic
              dialog boxes and saving data
!WinSave    - EvntShell Demo but useful as well. An example of a 
              real working application using the EvntShell library.
              This app saves desktop windows as a sprite file for
              inclusion in DTP etc.
!FormEd2    - Based on Risc Squad version 2.84b lightly modified
              to support interface style icons
!FormEd3    - EvntShell menu testing application
!AppBuild   - Produces a customised version of !EvntShell to use
              as a basis for new applications

!InlayPrnt  - Cassette inlay printer
!VBase      - Video Cassette DataBase (v1.51)
!Text-DTP   - Conversion of formatted text files for DTPMisc
No Routines here yet!Cancel Flag
FALSE = don't display a CANCEL icon
TRUE  = message window has a CANCEL iconProgram Name
Displayed in the title bar of the
message windowHeader
When null then the title bar will read
"Message from AppName". When non-null
the header is displayed insteadFNshell_IconCreate()
Params => 
         int window handle 
         int min x coord of icon
         int min y coord of icon
         int width of icon
         int height of icon
         int foreground colour
         int background colour
         int <icon flags=>SWI.Wimp_iconflags>
         str text to insert into icon
         int address of indirected data
             (ignored when not indirected)
         int length of indirected buffer
             (ignored when not indirected)
         str <validation string=>swi.wimp_validationstring>

       \<=
         int handle of new icon
         
This routine is only used when the application
needs to create icons itself rather than
loading them as part of a window definition in
a template.

It does not redraw the area of the window occupied
by the new icon. If the window is open it may be
necessary to call <PROCshell_IconRedraw> to update
the window area covered by the icon.

Library Group => <Icons=>LibGroupIcons>PROCshell_AttachMenuDBox()
Params =>  
         str <menu selection string=>menudboxselstr>
         str window identifier
         str <function name=>UserFN07>
         str <function name=>UserFN08>

Calling this routine will automatically setup the sub
menu arrow on the menu item, and also set the 'menu
warning' flag. It is not necessary to do this in the
menu editor.

Library Group => <Events=>LibGroupEvents>User FN (PROCshell_AttachMenuDBox)
Params => 
         int window handle
 
The function to call after creating the window
but before opening it. This can be used to fill
in icon fields etc. A function name of "" may
be used if you don't need to call a function.User FN (PROCshell_AttachMenuDBox)
Params => 
         int window handle
 
The function to call after opening the window.
A function name of "" may be used if you don't
need to call a function.PROCshell_AttachHotKey()
Params =>
         str  <key=>HotKeyKey>
         bool shift flag
         bool ctrl  flag
         bool alt   flag
         str  <window identifier=>HotKeyWin>
         int  <window handle=>HotKeyStatic>
         str  <function name=>UserFN09>
         str  <function name=>UserFN10>

Sets up a 'hotkey' event. Function keys F0-F11
(note NOT F12 as the task manager uses it under
RISC-OS 3) are supported.

Library Group => <Events=>LibGroupEvents>User FN (PROCshell_AttachHotKey)
Params => 
         int window handle
 
The function to call before opening the window.
A function name of "" may be used if you don't
need to call a function. This would normally be
used to fill in icon fields and set the state
of radio buttonsUser FN (PROCshell_AttachHotKey)
Params => 
         int window handle
 
The function to call after opening the window.
A function name of "" may be used if you don't
need to call a function.Key (PROCshell_AttachHotKey)
The key string normally consists of one ASCII
character i.e. "R". When the ctrl flag is set
this would cause the actions to be carried out
when CTRL-R is pressed.

The string may also contain "F1" to "F11" to
allow function keys to be used. No checking is
performed on the string.Window (PROCshell_AttachHotKey)
The window identifier specifies the name
of the window you want to appear when the
keypress is received. This parameter is
optional as you might not always want to
open a window.

The window is a 'dynamic' dialog box which
will disappear when \<ESC> is pressed and
is opened in such a position that the mouse
pointer is in the middle of the window
(where possible).Window Handle (shell_AttachHotKey)
When this is >0 then the window
created will be static i.e. it will not
be removed when the mouse is clicked
outside it, or when \<ESC> is pressed.User FN (PROCshell_AttachUserRedraw)
Params => 
         int address of <block=>SWI.wimp_getrectangle0> returned by redraw
             request
         int x origin of window (screen coords)
         int y origin of window (screen coords)
 
The function to call when a redraw request
is made.User FN (PROCshell_AttachClickSelect)
Params => 
         int window handle
         int icon handle                 User FN (PROCshell_AttachClickAdjust)
Params => 
         int window handle
         int icon handle                 PROCshell_OpenWindowStatic()
Params =>     
         int window handle

The window will be brought to the top
of the stack by this call. The window
must have been created with a call to
<PROCshell_CreateWindowStatic> - an error
will be generated if this is not the
case.

Any panes attached to the window with
<PROCshell_AttachPane> will be opened
automatically.

Library Group =\> <Windows=>LibGroupWindows>PROCshell_CreateWindowStatic()
Params =\>
         str window identifier
         int (ignored on entry)

       \<=
         int window handle of newly created window

Library Group =\> <Windows=>LibGroupWindows>Menu String (PROCshell_AttachMenuDBox)
Note that this string is treated as a list of
<message tags=>MessageTag>, and any tokens found in the
message file will be replaced. If the tag is
not found no substitution will occur.

This allows you to ignore the ability of the
EvntShell library to handle multi-lingual menus
if required.Interactive Help
The EvntShell libray supports Acorn's Interactive Help
application !Help by searching icon validation strings
for the 'I' command (as recommended by the author of
the Interface module) for a <message tag=>MessageTag>.

The message belonging to the tag will be looked up and
sent to !Help (if !Help is running). An example would
be a validation string of "iMessTag01", where the file
'Messages' contains the line 'MessTag01:This is a test'.
'This is a test' would be the message displayed.

It is also possible to attach a message tag to a window
or a window/icon using <PROCshell_AttachHelpTag>.Message Tags
A message tag is a string not more than 11
characters long and represents a message
string to be found in the 'Messages' file.FNshell_MenuLastXPos
Returns the X coordinate of the last menu
opened by <PROCshell_OpenMenu>.

Library Group => <Menus=>LibGroupMenus>FNshell_MenuLastYPos
Returns the Y coordinate of the last menu
opened by <PROCshell_OpenMenu>.

Library Group => <Menus=>LibGroupMenus>PROCshell_OpenMenu()
Params =>     
         int menu x coordinate
         int menu y coordinate
         int handle of menu to open

Normally this routine is called internally
by the library routines in response to menu
open events set up by <PROCshell_AttachMenu>.
In some circumstances it may be advantageous
to call it from the user applications.

Library Group => <Menus=>LibGroupMenus>PROCshell_TraceExit
Params =>
         none

Closes the trace file if it is open. Normally
only called by the EvntShell library when the
application closes down.

Library Group =\> <Debug=>LibGroupDebug>PROCshell_Tracef0()
Params =>
         str trace output

Writes the given string into the trace file if
it is open. If <PROCshell_TraceInit> was called
with a null filename ("") then the trace output
will be broadcast using Acorn's message system
to be picked up and displayed by !ShellDBug if
it is running.

Library Group =\> <Debug=>LibGroupDebug>PROCshell_TraceInit()
Params =>
         str file name for trace output
             (can be "" - see below)

Initialises the trace file (must be called
before any other trace functions). If the
file name is "" then no file is opened, trace
output is broadcast as a user message to be
displayed by !ShellDBug.

Library Group =\> <Debug=>LibGroupDebug>FNshell_TraceIsOn
Params  =>
          none

        \<=
          TRUE if trace is enabled, FALSE otherwise.

Library Group =\> <Debug=>LibGroupDebug>PROCshell_TraceOff
Params  =>
          none

Turns off trace output.

Library Group =\> <Debug=>LibGroupDebug>PROCshell_TraceOn
Params  =>
          none

Turns on trace output.

Library Group =\> <Debug=>LibGroupDebug>Draw
No Routines here yet!FNshell_FileLength()
Params =>
         str file name     

       \<=
         int length of the specified file

Library Group => <Files=>LibGroupFiles>PROCshell_MouseLimit()
Params =>
         int address of workspace parameter block
         int window handle

Limits mouse pointer movement to the area of the
specified window.

Library Group => <Mouse=>LibGroupMouse>FNshell_OSVarExists()
Params =>
         int  workspace buffer
         str  os variable name

       \<=
         bool TRUE or FALSE

Library Group => <OS=>LibGroupOS>FNshell_OSVarGetVal()
Params =>
         int  workspace buffer
         int  size of buffer
         str  os variable name
         bool expand flag

       \<=
         str  value of variable

Library Group => <OS=>LibGroupOS>FNshell_OSReadCommandArg()
Params =>
         int  option (must be 0 or 1)

       \<=
         str  command string

Library Group => <OS=>LibGroupOS>FNshell_StringArrayGetLongest()
Params =>
         array name of string array
         int   number of elements

       \<=
         int   length of longest element

Library Group => <Strings=>LibGroupStrings>FNshell_StringExchange()
Params =>
         str source string
         str target string
         str substitution string

       \<=
         str transformed string

Library Group => <Strings=>LibGroupStrings>FNshell_StringUpperCase()
Params =>
         str source string

       \<=
         str transformed string

Library Group => <Strings=>LibGroupStrings>FNshell_StringLowerCase()
Params =>
         str source string

       \<=
         str transformed string

Library Group => <Strings=>LibGroupStrings>FNshell_StringPadLeading()
Params =>
         str source string
         str pad character
         int length to pad to

       \<=
         str transformed string

Library Group => <Strings=>LibGroupStrings>FNshell_StringPadTrailing()
Params =>
         str source string
         str pad character
         int length to pad to

       \<=
         str transformed string

Library Group => <Strings=>LibGroupStrings>FNshell_StringStripAll()
Params =>
         str source string
         str character to strip

       \<=
         str transformed string

Library Group => <Strings=>LibGroupStrings>FNshell_StringStripLeading()
Params =>
         str source string
         str character to strip

       \<=
         str transformed string   

Library Group => <Strings=>LibGroupStrings>FNshell_StringStripTrailing()
Params =>
         str source string        
         str character to strip

       \<=
         str transformed string

Library Group => <Strings=>LibGroupStrings>FNshell_GetAppName
Params =>
         none

       \<=
         str name of application (actually the
             'leaf' name of the application
             directory minus the '!')

Library Group => <Shell=>LibGroupShell>FNshell_GetAppDir
Params =>
         none

       \<=
         str full path name of the application
             directory

Library Group => <Shell=>LibGroupShell>FNshell_GetAppDataDir
Params =>
         none

       \<=
         str full path name of the application
             data file directory

Library Group => <Shell=>LibGroupShell>PROCshell_InitHelpSystem()
Params =>
         str  path name of help files
         bool <DieWithTask> flag

Used to register a new help system with StrongHlp.
After making this call StrongHlp will add the help
system found in the given path to its icon bar menu.

StrongHlp will be started if it is not already
running and StrongHelp$Dir has been defined. If
StrongHlp cannot be found then the initialisation
command is stored and sent when StrongHlp is started.

Library Group => <StrongHlp=>LibGroupHelp>PROCshell_HelpWord()
Params =>
         str word for which help is to be displayed

Used to send a help request to StrongHlp. If the word
is found in the help system the appropriate help text
will be displayed.

StrongHlp will be started if it is not already
running and StrongHelp$Dir has been defined. If
StrongHlp cannot be found then the initialisation
command is stored and sent when StrongHlp is started.

Library Group => <StrongHlp=>LibGroupHelp>-DieWithTask Flag
When TRUE the help system will only be added to 
the StrongHlp icon bar menu while the user 
application is actually running. When FALSE it
remains available when the application quits.StrongHlp
<HelpWord            =>PROCshell_HelpWord>
<InitHelpSystem      =>PROCshell_InitHelpSystem>
<StrongHlpIsAvailable=>FNshell_StrongHlpIsAvailable>StrongHlp
This is a hypertext application written by <Guttorm Vik=>Vik> which
functions as an on-line manual. It comes with data file for BASIC,
SWI calls plus many others and I have adopted it to supply the
documentation for the EvntShell library. You only have to use it to
see the advantages, but the biggest advantage is that when you edit
program source code using <StrongED2=>StrongED2.$> help can be obtained
simply by pressing F1. More details can be found in the <StrongHlp=>StrongHelp.$>
help files.

The EvntShell library also has a few PROCs to interface with StrongHlp
to enable user applications to register help systems.

When a request is sent to StrongHlp the active applications on the icon
bar are checked to see if StrongHlp is running. If it is not and its
!Boot file has been 'seen' by the Filer then it will be started
automatically. If StrongHlp has not been 'seen' then an error will be
generated.

Note that for the above to work it is vital that the help system
directory has the same name as the application (minus the '!').PROCshell_IconSet()
Params =>         
         int  window handle
         int  icon handle
         bool state (0 for deselected, non 0
              for selected)

This call is used to select or deselect icons
depending on the value of the state flag

Library Group => <Icons=>LibGroupIcons>FNshell_LibraryVersion
Params =>
         none

       \<=
         int library version * 100 i.e version 1.02
             returns 102

Library Group =\> <Shell=>LibGroupShell>Library Versions
1.00 - Initial release

1.01 - Added support for StrongHlp help systems
     - Added user redraw events
     - Improved documentation
     - Added run time version of library
     - Changes to global variable names to allow
       compression with BasShrink
     - Released to APDL

1.02 - Bug fixes to \<Wimp$Scrap> file transfer routine
       (was not sending correct message resulting in the
       file not being loaded by the target application)
     - DataSave event handler does not now require that
       the file exist in a heap block. The data can be
       written directly to a disk file when the datasave
       user function is called

1.03 - Bug fix for windows without menus attached. The
       memory location holding the address of the menu
       was not being initialised leading to the library
       thinking a menu had been attached to a window when
       it hadn't!

1.04 - Help tags now work the way I originally intended,
       in that message tags in icon validation strings
       override tags set up by shell_AttachHelpTag.
     - <PROCshell_IconPutData> now updates icon contents
       immediately instead of waiting for the next wimp
       poll event. This allows messages to be displayed
       in icons during program sections that do not call
       the polling loop (see !AppBuild)
     - New Routine <FNshell_Leaf>
     - New Routine <FNshell_Branch>
     - New Routine <FNshell_FileType>
     - New Routine <PROCshell_MemFill>
     - New Routine <FNshell_IconResize>
     - Added support for ShellDBug to send trace messages
       to a window
     - Released to APDL

1.05 - <PROCshell_HelpWord> now working (see !VBase2)
     - Attempting to send a help request to !StrongHlp when
       StrongHlp is not running will now start !StrongHlp
       for you (Thanks Guttorm for sorting this one out!)
     - Non fatal errors do not now kill the trace output
     - Dragging an icon that does not have a drag event
       registered now displays a warning message instead of
       generating an error
     - More messages added to the message file
     - Problem with DataSave event not being deleted properly
       fixed. This led to the event being attached to the
       wrong window/icon sometimes
     - Minor bug fix to interactive help routine which
       sometimes prevented help messages being sent
     - Click on icon 0 of static window does not now close
       the window. (Also true of pressing RETURN when caret
       is in last writeable icon of a static window).
     - New Routine <PROCshell_WindowBringToTop>
     - New Routine <FNshell_WindowIsOnTop>
     - New Routine <PROCshell_MenuTick>
     - New Routine <PROCshell_MenuShade>
     - Routine Improved <PROCshell_WindowRetitle>
     - Routine Improved <PROCshell_WindowMoveToIcon>
     - Routine Improved <PROCshell_WindowMoveTo>
     - Clicking on 'interface' style icons without events
       attached now does not 'slab' the icon

1.06 - New Routine <FNshell_WindowHasTitleBar>
     - New Routine <FNshell_WindowIsMoveable>
     - New Routine <FNshell_WindowIsAPane>
     - New Routine <FNshell_WindowIsNotBounded>
     - New Routine <FNshell_WindowTrapsHotKeys>
     - New Routine <FNshell_WindowIsOpen>
     - New Routine <FNshell_WindowHasBeenToggled>
     - New Routine <FNshell_WindowHasInputFocus>
     - New Routine <FNshell_WindowHasBackIcon>
     - New Routine <FNshell_WindowHasCloseIcon>
     - New Routine <FNshell_WindowHasToggleIcon>
     - New Routine <FNshell_WindowHasVScrollBar>
     - New Routine <FNshell_WindowHasAdjustSizeIcon>
     - New Routine <FNshell_WindowHasHScrollBar>
     - New Routine <FNshell_WindowGetTitle>
     - New Routine <FNshell_WindowTitleBufferLength>
     - New Routine <FNshell_WindowLoaded>
     - New Routine <FNshell_IconMove>
     - New Routine <FNshell_IconMove2>
     - New Routine <FNshell_FontMenuGetLastSelectedFont>
     - New Routine <PROCshell_IconDelete>
     - New Routine <PROCshell_IconDelete2>
     - New Routine <PROCshell_DoBackgroundTask>
     - New Routine <PROCshell_HandleUnknownMessage>
     - New Routine <PROCshell_MenuPutData>
     - New Routine <PROCshell_AttachSubMenu>
     - New Routine <PROCshell_AttachFontSubMenu>
     - New Routine <PROCshell_AttachFontMenu>
     - New Routine <PROCshell_FontMenuSelectFont>
     - Added support for ShellDBug to turn tracing on/off
     - Revised parameters for user function called by
       <PROCshell_AttachMenuMaker>. Now passes handle of
       window and icon that was clicked over. This allows
       you to set up the menu depending on the window/icon 
       handles.
     - Revised parameters for <FNshell_IconCreate> (added
       validation string parameter)
     - Revised parameters for <FNshell_IconResize> (removed
       border width parameter as this is calculated by the
       routine now)
     - Minor bug fixed that resulted in files not being
       transferred correctly to !StrongEd2 (every other
       RISC-OS text handling program from !Impression down
       worked OK though!)
     - Added support for outline fonts. Templates using
       fonts can now be loaded, but missing fonts may still
       cause problems!

1.07 - New Routine <PROCshell_IconDeselectAll>
     - New Routine <PROCshell_IconSelectAll>
     - If a menu has been attached to an icon, SELECT, MENU
       or ADJUST will now open it (instead of just MENU as
       before)
1.08 - Bug fix to SELECT/ADJUST opening a menu (opened menus
       when it shouldn't have. Grrrrrr!)
     - Added 'no load' flag to <PROCshell_AttachDataLoad>
     - Fixed bug in attach dataload routine
     - Added support for RISC-OS 3 boot message
     - Shell messages held in seperate file (thanks for the
       suggestion and info Cy!)
     - Small 'FontMenu' bugette fixed (selected font was not
       being ticked in the menu if the menu was attached to
       a window instead of another menu)
1.09 - New routine <PROCshell_AttachBumpHandler>
     - New routine <FNshell_WindowSetSpriteArea>
     - Corrected documentation for PROCshell_AttachUserRedraw
1.10 - Corrected documentation for PROCshell_AttachHotKey
1.11 - Added support for !BLibII linker
     - <PROCshell_AttachUserRedraw> now changes auto redraw
       flag for the window if necessary
1.12 - DataSave routine now automatically saves data if data
       is in a heapblock and no FN is named to actually perform
       the save
     - <PROCshell_AttachPane> alters pane window flags if
       necessary
1.13 - Bug fixes for 'no load' loads from other applications
1.14 - More library routines now claim private workspace to
       avoid interactions
     - Added routine <PROCshell_IconSetButtonType>
     - Added routine <PROCshell_IconSetESG>
     - Added routine <PROCshell_IconSetText>
     - Added routine <PROCshell_IconSetSprite>
     - Added routine <PROCshell_IconSetBorder>
     - Added routine <PROCshell_IconSetHCentred>
     - Added routine <PROCshell_IconSetVCentred>
     - Added routine <PROCshell_IconSetFilled>
     - Added routine <PROCshell_IconSetRightJust>
1.20 - Now uses MenuUtils module for menu handling
     - Added routine <PROCshell_IconSetSelected>
     - Added routine <PROCshell_IconSetUnselectable>
     - Added routine <FNshell_MenuNew>
     - Added routine <FNshell_MenuAdd>
     - Added routine <FNshell_MenuDelete>
     - Added routine <FNshell_MenuColours>
     - Added routine <FNshell_MenuDotted>
     - Added routine <FNshell_MenuWritable>
     - Added routine <FNshell_MenuTickOnly1>
     - Added routine <FNshell_MenuTickOnly2>
     - Modified all other menu routines
     - Added routine <FNshell_StrongHlpIsAvailable>
     - Added routine <PROCshell_AttachPreQuitHandler>
     - Added routine <PROCshell_AttachOpenWindow>
     - Added routine <PROCshell_AttachCloseWindow>
     - Added routine <PROCshell_IconSetLeftJust>
     - Added routine <PROCshell_SpriteAreaSave>
     - Added routine <PROCshell_SpriteRename>
     - Added routine <FNshell_SpriteAreaLoad>
     - Added routine <FNshell_SpriteGetPtr>
     - Added routine <FNshell_OSCheckVersion>
     - Added routine <FNshell_OSCheckModuleVersion>
     - Fixed PROCshell_IconSetRightJust
     - Writable icon handler now ignores unselectable icons
       when moving caret
     - Added support for ResFind (internationalisation of
       messages etc)Estimated File Sizes
It should (if other applications are written to
the Acorn guidelines!) not matter if this estimate
is inaccurate. However, file transfer will be a
little faster if it is accurate and problems may
occur with badly written applications if it is not.FNshell_IconResize()
Params =>
         int window handle  
         int icon handle
         int min x coord
         int min y coord
         int max x coord
         int max y coord

       \<=
         int icon handle

Allows the redefinition of an icon's bounding
box. As the icon has to be deleted and then
recreated it returns the new icon handle (which
should be the same as the old handle). The icon
is redrawn after resizing, taking account of any
3D borders.

Library Group => <Icons=>LibGroupIcons>Messages
<BroadcastMessage    =>FNshell_BroadcastMessage>
<HandleUnknownMessage=>PROCshell_HandleUnknownMessage>PROCshell_BroadcastMessage()
Params =>
         int reason code         
         str message text

Library Group => <Messages=>LibGroupMessages>PROCshell_WindowRetitle()
Params =>
         int window handle         
         str new title

It is not necessary to make the window title
indirected, but titles longer than 11 characters
will be truncated without warning if it is not.

Attempting to use a title which is longer than
the allocated buffer will again cause truncation.

Library Group =\> <Windows=>LibGroupWindows>PROCshell_WindowResize()
Params =>
         int  window handle
         int  min x coord of workarea
         int  min y coord of workarea
         int  max x coord of workarea
         int  max y coord of workarea
         bool open flag

Library Group =\> <Windows=>LibGroupWindows>FNshell_FileType()
Params =>
         str file name

       \<=
         int file type

Returns the file type of the specified file
on disk. A full path name must be given
(especially under RISC-OS 3.1!)

Library Group => <Files=>LibGroupFiles>FNshell_Leaf()
Params =>
         str file name     

       \<=
         str 'leaf' of filename, i.e the name
             of the actual file, minus the path

Library Group => <Files=>LibGroupFiles>FNshell_Branch()
Params =>
         str file name     

       \<=
         str 'branch' of filename, i.e the path
             of the directory containing the file.
             Note that the returned string does not
             include the final '.' character.

Library Group => <Files=>LibGroupFiles>Copyright Notice
The EvntShell library code and any demo or support programs
supplied with it are NOT Public Domain software. They are
ShareWare which means that if you use them and like them
you should register with the <Author=>Author2>.

In particular you should note that no part of the EvntShell
code may appear on !Illusions magazine disks or in the
associated PD library 'Digital Illusions'. This therefore
applies to any application written using the EvntShell
library.

Other PD libraries may distribute this software freely. The
reason for excluding !Illusions is that I don't like people
who use (or threaten to use) viruses as a means of copy
protection.

You may distribute ShellLib, ShellLibRT or both with your own
applications. Library code may be appended to the user
application if required, and redundant routines may be
removed. You may not alter the library code, claim to have
written it or make money on it. A note in the application
!Help file acknowledging the source of the library code with
details of how to obtain the full package would be appreciated.

The heap manager routines are copyright Risc User and are
used with permission.The Author
Paul Hobbs
Rheinpfalzstrasse 2
85049 Ingolstadt
GermanyUser FN (PROCshell_AttachMenuMaker)
Params =>
         int window handle over which MENU
             was pressed 
         int icon handle over which MENU was
             pressed (-1 for no icon)
 
This function is called before the menu is
opened.Risc User Magazine
Special thanks to Risc User for permission to
use the heap manager code published in Risc User
Volume 4 issue 2, without which the EvntShell
library would not be possible.

Please note that any EvntShell based application
distributed for whatever reason should also
acknowledge Risc User's copyright of this code. PROCshell_WindowBringToTop()
Params =\>
         int window handle to bring to top

This routine causes a wimp message to be sent to
bring a window to the top. You cannot use this
routine on windows owned by your own task, but
you can use <PROCshell_OpenWindow> in this case.

It may take several wimp poll events before the
window is opened, however, so you cannot assume
it is actually open immediately after this call.

You can use <FNshell_WindowIsOnTop> to check the
status of the window after this call.

Library Group =\> <Windows=>LibGroupWindows>FNshell_WindowIsOnTop()
Params =>
         int  window handle

       \<=
         bool TRUE if window is on top, otherwise
              FALSE

This function can be used to discover if the given
window is on top of the stack (i.e. completely
uncovered). It is especially useful after a call
to <PROCshell_WindowBringToTop> as it may take
several calls to Wimp_Poll before the window is
brought to the top. The window may belong to another
task.

Library Group =\> <Windows=>LibGroupWindows>PROCshell_MenuTick()
Params =>
         int menu or item handle
         int <state=>menutickflags>

Adds or removes ticks for menu
items. If a menu handle is given
then all items in the menu are
ticked or not ticked.

See also <PROCshell_MenuTickOnly1>,
         <PROCshell_MenuTickOnly2>

Library Group => <Menus=>LibGroupMenus>PROCshell_MenuShade()
Params =>
         int menu or item handle
         int <state=>menushadeflags>

Shades menu items. If a menu handle is
given then all items in the menu are
shaded or deshaded.

Library Group => <Menus=>LibGroupMenus>Menu Tick States
The state is 0 for no  tick, non 0 for a tick.Menu Shade States
The state is 0 for no shading, non 0 for shading.Some Common Questions
Why doesn't a drag box appear around an icon even
though I have set the icon to be dragable using a
template editor?

  This is because you have not attached an event handler
  to define what happens when the button is released. If
  you attach a drag handler with <PROCshell_AttachDataLoad>
  for example then all will be well.

Why is icon 0 in a dynamic dialog box apparently clicked
over when the RETURN key is pressed in the last writeable
icon, resulting in the dialog box being closed?

  This is the Acorn defined RISC-OS standard behaviour.
  Note, however, that a bug in the EvntShell library
  code in versions prior to 1.05 caused this behaviour
  with 'Static' windows as well which was not what was
  intended!FNshell_WindowHasTitleBar()
Params =>
         int  window handle

       \<=
         bool TRUE if window has a title bar, otherwise
              FALSE

Library Group =\> <Windows=>LibGroupWindows>FNshell_WindowGetTitle()
Params =>
         int window handle

       \<=
         str window title (null if no title)

Library Group =\> <Windows=>LibGroupWindows>FNshell_WindowTitleBufferLength()
Params =>
         int window handle

       \<=
         int buffer length (12 if title is not
             indirected)

Library Group =\> <Windows=>LibGroupWindows>FNshell_WindowIsMoveable()
Params =>
         int  window handle

       \<=
         bool TRUE if window is moveable, otherwise
              FALSE

Library Group =\> <Windows=>LibGroupWindows>FNshell_WindowIsAPane()
Params =>
         int  window handle

       \<=
         bool TRUE if window is a pane, otherwise
              FALSE

Library Group =\> <Windows=>LibGroupWindows>FNshell_WindowIsNotBounded()
Params =>
         int  window handle

       \<=
         bool TRUE if window may move outside
              the screen area, otherwise FALSE

Library Group =\> <Windows=>LibGroupWindows>FNshell_WindowTrapsHotKeys()
Params =>
         int  window handle

       \<=
         bool TRUE if window traps hot keys,
              otherwise FALSE

Library Group =\> <Windows=>LibGroupWindows>FNshell_WindowHasBeenToggled()
Params =>
         int  window handle

       \<=
         bool TRUE if window has been toggled to
              full size, otherwise FALSE

Library Group =\> <Windows=>LibGroupWindows>FNshell_WindowHasInputFocus()
Params =>
         int  window handle

       \<=
         bool TRUE if window has the input focus,
              otherwise FALSE

Library Group =\> <Windows=>LibGroupWindows>FNshell_WindowHasBackIcon()
Params =>
         int  window handle

       \<=
         bool TRUE if window has a send to back icon,
              otherwise FALSE

Library Group =\> <Windows=>LibGroupWindows>FNshell_WindowHasCloseIcon()
Params =>
         int  window handle

       \<=
         bool TRUE if window has a close icon,
              otherwise FALSE

Library Group =\> <Windows=>LibGroupWindows>FNshell_WindowHasToggleIcon()
Params =>
         int  window handle

       \<=
         bool TRUE if window has a toggle icon,
              otherwise FALSE

Library Group =\> <Windows=>LibGroupWindows>FNshell_WindowHasVScrollBar()
Params =>
         int  window handle

       \<=
         bool TRUE if window has a vertical scroll bar,
              otherwise FALSE

Library Group =\> <Windows=>LibGroupWindows>FNshell_WindowHasHScrollBar()
Params =>
         int  window handle

       \<=
         bool TRUE if window has a horizontal scroll bar,
              otherwise FALSE

Library Group =\> <Windows=>LibGroupWindows>FNshell_WindowHasAdjustSizeIcon()
Params =>
         int  window handle

       \<=
         bool TRUE if window has an adjust size icon,
              otherwise FALSE

Library Group =\> <Windows=>LibGroupWindows>Main Index
#Table 9 10
<Debug    =>LibGroupDebug>
<Draw     =>LibGroupDraw>
<Events   =>LibGroupEvents>
<Files    =>LibGroupFiles>
<Fonts    =>LibGroupFonts>
<Icons    =>LibGroupIcons>
<Memory   =>LibGroupMemory>
<Menus    =>LibGroupMenus>
<Messages =>LibGroupMessages>
<Misc     =>LibGroupMisc>
<Mouse    =>LibGroupMouse>
<OS       =>LibGroupOS>
<Printer  =>LibGroupPrinter>
<Shell    =>LibGroupShell>
<Sprites  =>LibGroupSprites>
<Strings  =>LibGroupStrings>
<StrongHlp=>LibGroupHelp>
<Windows  =>LibGroupWindows>

#EndTablePROCshell_DoBackgroundTask
Params =>
         None

Called everytime a null reason code is received.

Library Group => <Events=>LibGroupEvents>PROCshell_HandleUnknownMessage()
Params =>
         int address of <message block=>swi.wimp_sendmessage2>

Called every time an unknown message is received.

Library Group => <Events=>LibGroupEvents>FNshell_WindowIsOpen()
Params =>
         int  window handle

       \<=
         bool TRUE if window is open, otherwise
              FALSE

Library Group =\> <Windows=>LibGroupWindows>PROCshell_WindowToggleBackIcon()
Params =>
         int  window handle

       \<=
         int <updated window handle=>updatewinh>

Adds a 'Back icon' to a window if it doesn't
have one, removes it if it does. Also redisplays
window in its new state if it is open.

Library Group =\> <Windows=>LibGroupWindows>PROCshell_WindowToggleCloseIcon()
Params =>
         int  window handle

       \<=
         int <updated window handle=>updatewinh>

Adds a 'Close icon' to a window if it doesn't
have one, removes it if it does. Also redisplays
window in its new state if it is open.

Library Group =\> <Windows=>LibGroupWindows>PROCshell_WindowToggleTitleBar()
Params =>
         int  window handle

       \<=
         int <updated window handle=>updatewinh>

Adds a Title bar to a window if it doesn't one,
removes it if it does. Also redisplays window
in its new state if it is open.

Library Group =\> <Windows=>LibGroupWindows>PROCshell_WindowToggleToggleIcon()
Params =>
         int  window handle

       \<=
         int <updated window handle=>updatewinh>

Adds a 'Toggle size icon'  to a window if it
doesn't one, removes it if it does. Also
redisplays window in its new state if it is
open.

Library Group =\> <Windows=>LibGroupWindows>PROCshell_WindowToggleVScrollBar()
Params =>
         int  window handle

       \<=
         int <updated window handle=>updatewinh>

Adds a vertical scroll bar to a window if
it doesn't one, removes it if it does. Also
redisplays window in its new state if it is
open.

Library Group =\> <Windows=>LibGroupWindows>PROCshell_WindowToggleAdjustSizeicon()
Params =>
         int  window handle

       \<=
         int <updated window handle=>updatewinh>

Adds a 'Adjust size icon' to a window if it
doesn't one, removes it if it does. Also
redisplays window in its new state if it is
open.

Library Group =\> <Windows=>LibGroupWindows>PROCshell_WindowToggleHScrollBar()
Params =>
         int  window handle

       \<=
         int <updated window handle=>updatewinh>

Adds a horizontal scroll bar to a window if
it doesn't one, removes it if it does. Also
redisplays window in its new state if it is
open.

Library Group =\> <Windows=>LibGroupWindows>PROCshell_HeapManagerInit
Params =>
         str path to directory containing the
             'heapcode' file
         int address of heap manager workspace

This routine must be called before PROCshell_Init.

Library Group => <Memory=>LibGroupMemory>PROCshell_MenuPutData()
Params =>
         int menu handle
         str data to write into menu item

This routine is used to alter the items of a
menu when the program runs. The width of the
menu is adjusted automatically.

Library Group => <Menus=>LibGroupMenus>Menu Strings for PROCshell_MenuPutData()
The menu string is the title of the menu to write
the data to. It does not have to be 0 terminated.Item Nr for PROCshell_MenuPutData()
The first item in a menu is numbered 0.FNshell_HeapBlockExists()
Params =>
         int  address to check

       \<=
         bool TRUE or FALSE

This routine returns TRUE if a heapblock is present
at the specified address, FALSE otherwise.

Library Group => <Memory=>LibGroupMemory>FNshell_WindowLoaded()
Params =>
         str  window name (max 11 characters)

       \<=
         bool TRUE if template is loaded, otherwise
              FALSE

Library Group => <Windows=>LibGroupWindows>PROCshell_MemFill()
Params =>
         int start address
         int number of bytes
         int byte value to fill with

Library Group => <Memory=>LibGroupMemory>PROCshell_AttachSubMenu()
Params =>
         int menu item handle
         int submenu menu handle
         str <function=>UserFN18> to call when menu_warning
             message is received (optional, may
             be "")

Library Group => <Menus=>LibGroupMenus>, <Events=>LibGroupEvents>PROCshell_AttachFontSubMenu()
Params =>
         int item handle
         str <function=>UserFN17> to call when menu_warning
             message is received (optional, may
             be "")

This routine will attempt to load the necessary
'FontMenu' support module if it is not already
loaded. It expects to find it in the
EvntShellSystem$Path (usually in !ShellSys).

Library Group => <Menus=>LibGroupMenus>,<Fonts=>LibGroupFonts>Joris R�ling
Joris R�ling
Oudestraat 186
8261 CW Kampen
The Netherlands

For the 'FontMenu' module
which allows the sensible
choosing of outline font
names.User FN (PROCshell_AttachFontSubMenu) 
Params => 
         int window handle
         int icon handle

       \<=
         int junk

This function can be used to set the currently
selected font in the menu about to be opened.
Use <PROCshell_FontMenuSelectFont> to do this. Outline Fonts
The EvntShell Library supports Outline Fonts in two ways at the
moment. Firstly <Joris Roling's=>joris> FontMenu module is used
to display a menu of all available fonts on the system, and
secondly the window template loading routine allows icons and
window titles to use fonts.

Routines are provided to attach a font menu to an existing menu
as a submenu (<PROCshell_AttachFontSubMenu>), or to open the font
menu as a menu in its own right (<PROCshell_AttachFontMenu>). If
the user makes a valid font selection the font name can be
retrieved (with <FNshell_FontMenuGetLastSelectedFont>) for use in
the user application. Changes to the Font$Path variable such as
adding or removing font directories are detected and the font menu
rebuilt as necessary.

It will not, however, detect fonts being added or removed from an
existing font directory while the EvntShell application is
running. It appears that a re-boot is required to sort things out
after the contents of the font directories have changed. Oh well,
it seems that a lot of other applications can't cope with this
either!

The FontMenu module creates a menu in the relocatable module area
which is shared between all applications wishing to use it. As a
font menu potentially takes up a lot of space this is a very
efficient way of handling it, especially as the menu is laid out
so that it is easier to use than a straight list of fonts.

A help system containing the full <FontMenu documention=>FontMenu.$> is
supplied with the EvntShell library as it is a requirement that
the the module and its documentation must be supplied together.
However, it is unlikely that the SWIs provided by the module will
need to be called by the user application as the library code
performs the necessary actions.

The example application !Redraw demonstrates the use of
these routines.Outline Fonts
<AttachFontSubMenu          =>PROCshell_AttachFontSubMenu>
<FontMenuGetLastSelectedFont=>FNshell_FontMenuGetLastSelectedFont>
<FontMenuSelectFont         =>PROCshell_FontMenuSelectFont>PROCshell_FontMenuSelectFont()
Params =>
         str name of font to select

The font name is used by the library routines
to decide which font name to select when the
font menu opens. As the same font menu can be
used by different applications it is important
to set this up just before the menu opens.

Library Group => <Fonts=>LibGroupFonts>FNshell_FontMenuGetLastSelectedFont
Params =>
         None

       \<=
         str font name (could be "")

This routine should be used in the function
called when a menu_select event has occurred to
discover if font menu selection has been made,
and if so the name of the font.

If no valid font menu selection has been made
the function will return "" and no action should
be taken.

Library Group => <Fonts=>LibGroupFonts>PROCshell_IconDelete()
Params =>
         int window handle
         int icon handle

This call frees any memory used for indirected data
and validation strings. The window area covered by
the icon (including any 3D borders) is not redrawn.
Use <PROCshell_IconDelete2> to delete the icon and
redraw the window area.

Library Group => <Icons=>LibGroupIcons>PROCshell_AttachFontMenu()
Params =>
         str menu string
         str <function=>UserFN19> to call when menu_select
             event occurs (optional, may be "")

Use this routine to attach the FontMenu to an icon or
a window. Attach the FontMenu to an existing menu
structure with <PROCshell_AttachFontSubMenu>.

This routine will attempt to load the necessary
'FontMenu' support module if it is not already
loaded. It expects to find it in the
EvntShellSystem$Path (usually in !ShellSys).

Library Group => <Menus=>LibGroupMenus>,<Fonts=>LibGroupFonts>User FN (PROCshell_AttachFontMenu) 
Params => 
         str selection string

       \<=
         int junk

This function can be used to discover the name
of the font (if any) that has been selected in
the FontMenu. Use <FNshell_FontMenuGetLastSelectedFont>
for this.Updated Window Handles
As this routine deletes and recreates the window
it is possible that the WIMP will allocate a new
window handle. The EvntShell library will detect
this and update the registered events as necessary.

The user application must note and use the new
handle itself, however!FNshell_IconMove()
Params =>
         int window handle  
         int icon handle
         int min x coord
         int min y coord
         int max x coord
         int may y coord

       \<=
         int icon handle

Allows the redefinition of an icon's bounding
box. As the icon has to be deleted and then
recreated it returns the new icon handle (which
should be the same as the old handle). The icon
is redrawn after resizing, taking account of any
3D borders.

Library Group => <Icons=>LibGroupIcons>FNshell_IconMove2()
Params =>
         int window handle  
         int icon handle
         int x displacement
         int y displacement

       \<=
         int icon handle

Allows an icon to be moved around the window.
As the icon has to be deleted and then
recreated it returns the new icon handle (which
should be the same as the old handle). The icon
is redrawn after moving, taking account of any
3D borders.

See also <FNshell_IconMove>

Library Group => <Icons=>LibGroupIcons>PROCshell_IconDelete2()
Params =>
         int window handle
         int icon handle

This call frees any memory used for indirected data
and validation strings. The window area covered by
the icon (including any 3D borders) is redrawn.

When a large number of icons are to be deleted it is
better to use <PROCshell_IconDelete> and then redraw
the window afterwards as this will be quicker.

Library Group => <Icons=>LibGroupIcons>PROCshell_IconDeselectAll()
Params =>         
         int window handle         

Deselects all of the icons contained
in the specified window.

Library Group => <Icons=>LibGroupIcons>PROCshell_IconSelectAll()
Params =>         
         int window handle         

Selects all of the icons contained
in the specified window.

Library Group => <Icons=>LibGroupIcons>FNshell_IconGetCommand()
Params =>
         int pointer to validation string
         str validation command
         
       \<=
         str command string

See also <FNshell_IconGetValidation>.

Library Group => <Icons=>LibGroupIcons>DataLoad 'No Load' flag
FALSE = data file is loaded in a heap block and
        the name and address is returned to the
        user application.

TRUE  = only the data file name and type is
        returned to the user application.

This flag is provided for maximum flexibility
when dealing with drag loads. When you are
converting an existing program to run under the
EvntShell system you may already have a working
load routine. In this case set the flag to TRUE
and when a drag load occurs your application will
be told the filename, which may then be loaded
and processed as required.

When this flag is FALSE the library routines will
reserve a memory block for the file and load it
automatically.

For the technical of you out there the library
stores the status of the no load flag in the top
bit of the filetype number. This will end in tears
when RISC-OS 4 comes out...Cy Booker
For various helpful suggestions and information that
allowed me to add seperate message files for library
messages, and support for DragASprite and the new
boot message under RISC-OS 3.Printer
<PrinterOnLine=>FNshell_PrinterOnLine>FNshell_PrinterOnLine
Params
      =>
        None

      \<=
        bool TRUE if printer is online, otherwise
             FALSE

This routine has been tested on RISC-OS 3.1 and
should also work on earlier versions. From Risc
User March 1993 page 43.

Library Group => <Printer=>LibGroupPrinter>PROCshell_AttachBumpHandler()
Params =>     
         int  window handle
         int  icon handle (display value)
         int  icon handle (increment value)
         int  icon handle (decrement value)
         int  lower limit
         int  upper limit
         int  step
         bool wrap flag
         str  <function name=>UserFN20> (can be "")
         str  <function name=>UserFN21> (can be "")

Bump icons are the arrows that allow you to alter the
value displayed in an icon (usually not not necessarily
a writable one)

Library Group => <Events=>LibGroupEvents>User FN (PROCshell_AttachBumpHandler)
Params => 
         int value

       \<=
         str converted value

This function is called before the new value
is placed in the display icon. 

An example would be converting an integer
value to the format 0h00 (i.e hours and mins).

DEF FN_dis_fn(val%)
=STR$(val%DIV60)+"h"+RIGHT$("00"+STR$(val%MOD60),2)

See the !VBase2 demo app.User FN (PROCshell_AttachBumpHandler)
Params => 
         str value to decode

       \<=
         int converted value

This function is called before the new value
is placed in the display icon.

An example would be converting a string "0h00"
back to an integer value.

DEF FN_decode_dis(val$)
=VAL(val$)*60+VAL(RIGHT$(val$,2))

See the !VBase2 demo appFNshell_WindowSetSpriteArea()
Params =>
         int window handle
         int address of sprite area

       \<=
         int window handle

Library Group =\> <Windows=>LibGroupWindows>User FN (PROCshell_AttachDrag) 
Params => 
         int window handle over which drag
             started
         int icon handle over which drag was
             started (-1 for no icon)PROCshell_IconSetButtonType()
Params =>           
         int window handle           
         int icon handle 
         int <button type=>SWI.Wimp_iconbutton>

An error is generated if the button
type is outside the range 0-11,14-15.

Library Group => <Icons=>LibGroupIcons>PROCshell_IconSetESG()
Params =>           
         int window handle           
         int icon handle 
         int Exclusive Selection Group
             number

An error is generated if the esg
number is outside the range 0-31.

Library Group => <Icons=>LibGroupIcons>PROCshell_IconSetText()
Params =>           
         int  window handle           
         int  icon handle 
         bool state (0 to clear text bit,
              non 0 to set it)

Library Group => <Icons=>LibGroupIcons>PROCshell_IconSetSprite()
Params =>           
         int  window handle           
         int  icon handle 
         bool state (0 to clear sprite bit,
              non 0 to set it)

Library Group => <Icons=>LibGroupIcons>PROCshell_IconSetBorder()
Params =>           
         int  window handle           
         int  icon handle 
         bool action (0 to clear border bit,
              non 0 to set it)

Library Group => <Icons=>LibGroupIcons>PROCshell_IconSetHCentred()
Params =>           
         int  window handle           
         int  icon handle 
         bool state (0 to clear horizontally
              centred bit, non 0 to set it)
              

Library Group => <Icons=>LibGroupIcons>PROCshell_IconSetVCentred()
Params =>           
         int  window handle           
         int  icon handle 
         bool state (0 to clear vertically
              centred bit, non 0 to set it)
              

Library Group => <Icons=>LibGroupIcons>PROCshell_IconSetFilled()
Params =>           
         int  window handle           
         int  icon handle 
         bool state (0 to clear filled
              bit, non 0 to set it)
              

Library Group => <Icons=>LibGroupIcons>PROCshell_IconSetRightJust()
Params =>           
         int  window handle           
         int  icon handle 
         bool action (0 to clear right
              justified bit, non 0 to
              set it)
              
Library Group => <Icons=>LibGroupIcons>FNshell_StrongHlpIsAvailable
Params =>
         None
       \<=
         bool TRUE if StrongHelp$Dir is defined,
              otherwise FALSE
              
Used to check that StrongHlp is installed
on the system. This call can be used to shade
a 'Help' menu item if StrongHlp has not been seen
by the Filer, or if it is not available.

<Example code...=>Ex_StrongHlpIsAvailable>

Library Group => <StrongHlp=>LibGroupHelp>Example code (StrongHlpIsAvailable)
Shade menu item with the handle HlpItem% if StrongHlp
is not available:

  <PROCshell_MenuShade>(HlpItem%,(<FNshell_StrongHlpIsAvailable>=0))Example Code (Iconbar)
Place a sprite called "!MyApp" on the right side of the iconbar with
the text "Fred" below it and attach the menu with the handle
'MenuHandle_IconBar%':

sicon=FNshell_Iconbar(-1,"!MyApp","Fred",120,MenuHandle_IconBar%,0,0,0)MenuWritable States
The state is 0 for non writable, non 0
for writable.PROCshell_MenuWritable()
Params =>
         int menu or menu item handle
         int <state=>menuwriteflags>
         int size of indirected buffer
         str <validation string=>SWI.Wimp_validationstring>

Makes the given menu item writable or non writable
depending on the state parameter. If a menu handle
is given then all items in the menu are made
writable or non writable.

Library Group => <Menus=>LibGroupMenus>PROCshell_MenuDotted()
Params =>
         int menu or menu item handle
         int <state=>menudotflags>

Adds or removes a dotted line from below
the given menu item. If a menu handle is
given instead all items in the menu are
effected.

Library Group => <Menus=>LibGroupMenus>MenuDotted States
The state is 0 for no dotted line, non 0
for a line.FNshell_MenuNew()
Params =>
         str menu title

       \<=
         int menu handle
         
Creates a new menu with the given title.

Library Group > <Menus=>LibGroupMenus>FNshell_MenuAdd()
Params =>
         int menu or menu item handle
         str text for menu item
         str <function name=>UserFN11>

       \<=
         int menu item handle
         
Adds a new item to an existing menu. If a menu
handle is given then the new item is added to
the end of the menu, if an item handle is given
the new item is added before the existing item.

Library Group > <Menus=>LibGroupMenus>User FN (FNshell_MenuAdd)
Params => 
         int menu <decode block=>menudecodeblk>Menu decode block
blk+00 position of selected menu item in menu (starting from 0)
blk+04 pointer to selected item data
blk+08 selected item handle or zero if item was created without MenuUtils
blk+12 pointer to text string of selected item
blk+16 position of parent menu item in menu (starting from 0)
blk+20 pointer to parent item data
blk+24 parent item handle or zero if item was created without MenuUtils
blk+28 pointer to text string of parent item PROCshell_MenuTickOnly1()
Params =>
         int menu handle
         int position of item in menu

Ticks only the item given by the menu handle
and the position of the item. This call is
provided for when you don't know the handle
of the menu item.

See also <PROCshell_MenuTickOnly2>

Library Group => <Menus=>LibGroupMenus>FNshell_MenuTickOnly2()
Params =>
         int menu item handle

Ticks only the item given by the menu item
handle.

See also <PROCshell_MenuTickOnly1>

Library Group => <Menus=>LibGroupMenus>PROCshell_MenuColours()
Params =>
         int menu item handle
         int foreground colour
         int background colour

Sets the foreground and background colours
of the item given.

Library Group > <Menus=>LibGroupMenus>Alex Petrov 
    RUSSIA
    115541
    Moscow
    Kavkazsky boulevard, 29
    Bld. 1, Flat 107
    Alex Petrov    

E-mail: APetrov@misis.msk.su
        APetrov@arm.msk.su
       
FIDO :  2:5020/104.13

 phone: +7 095 322 2098
 fax  : +7 095 236 8350

Author of the MenuUtils module
which provides the menu handling.PROCshell_IconSetUnselectable()
Params =>           
         int  window handle           
         int  icon handle 
         bool state (0 to make icon selectable,
              non 0 to make it unselectable)

This call is used to make icons unselectable
(i.e. greyed out) depending on the value of
the state flag. If the icon contains the caret
when it is made unselectable, the caret is lost.

Library Group => <Icons=>LibGroupIcons>PROCshell_IconSetSelected()
Params =>         
         int  window handle
         int  icon handle
         bool state (0 for deselected, non 0
              for selected)

This call is used to select or deselect icons
depending on the value of the state flag

Library Group => <Icons=>LibGroupIcons>Memory Management 
A crucial element of the EventShell library is the use of memory 
management routines originally published in Risc User magazine 
and used with permission. Many library routines require some 
memory workspace and they obtain this by calling 
FNshell_HeapBlockFetch(bytes_required) which returns the address 
of the allocated memory and release it when they are finished 
with PROCshell_HeapBlockReturn. 

This is vital for avoiding 'side effects' caused by using the 
same block of memory for different purposes as most WIMP programs 
tend to do. Equally important is the fact that as the routines 
are written in ARM code they are extremely fast. 

Another point to note is that this memory is claimed from the 
current wimp slot and not the RMA (Relocatable Module Area). This 
ensures that all of the memory claimed by the application is 
released back to the free pool when the application quits - this 
is not the case if memory is claimed from the RMA. It is only 
possible to reclaim RMA memory if the free space is at the top of 
the RMA which leads to the RMA allocation gradually growing as 
you run and quit applications. 

Unfortunately (in the authors view!) the MenuUtils module uses 
the RMA for storage of indirected data and menu structures. 
Hopefully this data gets put in any small available blocks so 
that the RMA allocation does not increase. 

You are strongly advised to use the supplied memory management 
routines in the user application should you require storage for 
data, or temporary blocks for use with SWI calls for example. The 
time penalty for doing this is very small and in any case results 
in a more reliable and easier to maintain application. ResFind 
The EvntShell library now supports ResFind which allows the 
selection of the desired language for message files etc much 
easier. Briefly explained it checks the currently configured 
language of the computer it is running on and sets up a path to 
the resource files. This would normally be \<App$Dir>.Resources.UK
for a UK configured computer, or \<App$Dir>.Resources.Germany for 
a German one. 

AppBuild now offers to place the resources in the appropriate 
directories for you when you create a new application, and to place 
a call to ResFind in the !Run file. 

Using ResFind is optional and EvntShell applications will 
function equally well if you don't use it. It does make the 
production of applications that can be easily used in any country 
much easier, however, and this should be encouraged. Most of the 
programming tools and modules used during the development of this 
library were written outside the UK. 

The author would appreciate help in translating the ShellMsgs 
file and the documentation into other languages. 

ResFind is copyright Olaf Krumnow and Herbert zur Nedden of the
German Archimedes Group (GAG).

The full ResFind documentation supplied with the library contains 
further details on how it works and the advantages to be gained 
by using it. As a taster, here is the part of the documentation 
intended to be distributed with applications using ResFind.

(Base for the application's documentation - please replace
\<ProgName> by the name of your application without the !)

!\<ProgName> adapts automatically to the configured language if
the corresponding messages etc. are available. For this purpose
a Resources directory is contained in the application in which
a subdirectory for each language supported resides. If the
language you need isn't in there, please feel free to duplicate
any of these language directories and translate the contents.

When you run the program a utility called ResFind is called
which reads the language your computer is configured to and then
looks for the corresponding language directory. If this fails
the program will run in English (UK). By setting several system
variables (best done in your system's !Boot file) you can change
the language looked for. With this you can make sure a program
runs in a certain language, e.g. to avoid a weird translation.
Furthermore it is possible to name several languages you prefer
to English.

This is controlled by three system variables:

\<ProgName>$Language, ResFind$LanguagesPref and
ResFind$Languages$Suff.

When running the application ResFind looks for the first language
supported along the following list of languages:

  1. Contents of the variable \<ProgName>$Language
  2. Contents of the variable ResFind$LanguagesPref
  3. The configured language
  4. Contents of the variable ResFind$LanguagesSuff
  5. UK

Take a Norwegian user for example (lots of great programs come
from there) whose computer is configured to 'Norway'. Since
this language isn't too common in Europe most programs won't
support it - except for Norwegian ones. But our user is pretty
good in German and French but not too fond of English. Therefore
he prefers these languages to UK and would thus put the following
line in his system's !Boot file:

*Set ResFind$LanguagesSuff Germany,France

Running an applications (such as this one) using ResFind the list
of languages looked for is 'Norway,Germany,France,UK'.

In case this user has an application called !Pete supporting the
language 'Humorous' the line:

*Set Pete$Language Humorous

in the !Boot file makes sure !Pete will run humorous.Olaf Krumnow
Olaf Krumnow
August-Bebel-Strasse 102c
D-21029 Hamburg 80
Germany

(+49 40) 7 21 92 87

Co-Author of ResFind,
a system for selecting
resource files in the
appropriate language.Herbert zur Nedden
Herbert zur Nedden
Alte Landstrasse 21
D-22962 Siek
Germany

(+49 41 07) 99 00

Co-Author of ResFind,
a system for selecting
resource files in the
appropriate language.PROCshell_AttachPreQuitHandler()
Params =>
         str <function name=>UserFN23>

Registers a function name to be called when a 
PreQuit message is received. This gives the
application a chance to save data or abort
the shutdown.

This message is issued when the task is quit
from the Task Manager, or when CTRL-SHIFT-F12
is pressed (under RISC OS 3).

Library Group => <Events=>LibGroupEvents>User FN (PROCshell_AttachPreQuitHandler)
Params => 
         None 

       \<=
         bool non 0 to allow quit, 0 to
              cancel quit

This function is called when a PreQuit
message is received.PROCshell_AttachCloseWindowHandler()
Params =>
         int window handle
         str <function name=>UserFN25>

Registers a function name to be called when an 
CloseWindow message is received. This is useful
to prevent the window closing if so doing
would involve loss of data.

This message is issued when the window close
icon is clicked on.

Library Group => <Events=>LibGroupEvents>PROCshell_AttachOpenWindowHandler()
Params =>
         int window handle
         str <function name=>UserFN24>

Registers a function name to be called when an 
OpenWindow message is received. This is useful
so that the application can set a flag to
avoid doing window redraws while the window is
closed for example.

This message is issued when the window is
dragged around the screen as well as when
the program opens the window. You should avoid
doing time consuming stuff in the function that
is called therefore.

Library Group => <Events=>LibGroupEvents>User FN (PROCshell_AttachOpenWindowHandler)
Params => 
         None 

       \<=
         bool 0 to disallow open, non 0 to
              openUser FN (PROCshell_AttachCloseWindowHandler)
Params => 
         None 

       \<=
         bool 0 to disallow close, non 0 to
              closeHelp on EvntShell
#Indent 5
#Sprite 0,0 !shellsys
  EvntShell
   v 1.20
#Indent 0
---------------------
  * <Licence      > *
  * <Introduction =>Intro> *
  * <User Guide   =>guide> *
  * <Credits      > *

  * <Library Docs =>mainpage> *Licence
This application is supplied free to everyone 'as is', I 
do not give any guarantee that it is free of bugs, or 
supply any warranty about its suitability for use. However 
if there are any problems with it and you notify me of 
them then I will do my best to rectify them given the time 
and the ability. 

You are may give this application to anyone, via any 
medium, so long as :- 

1) It is delivered with ALL the supplied files and 
   unaltered (except !Run and !Boot). 

2) It is not supplied on a disc you are charging for 
   (except for media and postage costs). 

You have permission to use any part or the whole 
application in a project you intend to place in the public 
domain, as long as I am fully credited. If you wish to use 
these routines in a program that is for sale (for however 
much and for whatever reasons) or released as copyright 
material then my express permission in writing must be 
obtained. I maintain copyright on all the material 
supplied and reserve the right to amend these conditions 
in cases where I deem misuse. 

Complaints, suggestions, vast sums of money etc to the 
author:- 

Paul Hobbs
Rheinpfalzstrasse 2
85049 Ingolstadt
GermanySprites
<SpriteAreaLoad=>FNshell_SpriteAreaLoad>
<SpriteAreaSave=>PROCshell_SpriteAreaSave>
<SpriteGetPtr  =>FNshell_SpriteGetPtr>
<SpriteRename  =>PROCshell_SpriteRename>FNshell_SpriteAreaLoad()
Params =>
         str file name of sprite file
       \<=
         int address of loaded file 

Library Group => <Sprites=>LibGroupSprites>PROCshell_SpriteAreaSave()
Params =>
         int address of spritearea (as returned
             by <FNshell_SpriteAreaLoad>)
         str file name

Library Group => <Sprites=>LibGroupSprites>FNshell_SpriteGetPtr()
Params =>
         int address of spritearea (as returned
             by <FNshell_SpriteAreaLoad>)
         str name of sprite
       \<=
         int pointer to sprite

This call is used to get a pointer to a sprite
that can be passed to other routines.

Library Group => <Sprites=>LibGroupSprites>PROCshell_SpriteRename()
Params =>
         int address of spritearea (as returned
             by <FNshell_SpriteAreaLoad>
         str old name of sprite
         str new name of sprite

Library Group => <Sprites=>LibGroupSprites>User FN (PROCshell_AttachSubMenu) 
Params => 
         int window handle
         int icon handle
       \<=
         int junkPROCshell_IconSetLeftJust()
Params =>           
         int  window handle           
         int  icon handle 

Library Group => <Icons=>LibGroupIcons>FNshell_OSCheckVersion()
Params =>
         real version nr required

       \<=
         bool TRUE or FALSE

Use this routine to check whether RISC
OS 3 is installed for example. The
routine returns FALSE if the OS version
requested (or a later version) is not
found.

Library Group => <OS=>LibGroupOS>FNshell_OSCheckModuleVersion()
Params =>
         str  module name
         real version nr required

       \<=
         bool TRUE or FALSE

Use this routine to check whether a
certain version (or later) of a specific
module is installed.

Library Group => <OS=>LibGroupOS>
00000000  55 73 65 72 20 46 4e 20  28 50 52 4f 43 73 68 65  |User FN (PROCshe|
00000010  6c 6c 5f 41 74 74 61 63  68 44 61 74 61 4c 6f 61  |ll_AttachDataLoa|
00000020  64 29 0a 50 61 72 61 6d  73 20 3d 3e 0a 20 20 20  |d).Params =>.   |
00000030  20 20 20 20 20 20 69 6e  74 20 61 64 64 72 65 73  |      int addres|
00000040  73 20 66 69 6c 65 20 68  61 73 20 62 65 65 6e 20  |s file has been |
00000050  6c 6f 61 64 65 64 20 61  74 0a 20 20 20 20 20 20  |loaded at.      |
00000060  20 20 20 69 6e 74 20 66  69 6c 65 74 79 70 65 20  |   int filetype |
00000070  6f 66 20 66 69 6c 65 0a  20 20 20 20 20 20 20 20  |of file.        |
00000080  20 73 74 72 20 66 75 6c  6c 20 70 61 74 68 6e 61  | str full pathna|
00000090  6d 65 20 6f 66 20 66 69  6c 65 0a 0a 4e 6f 74 65  |me of file..Note|
000000a0  20 74 68 61 74 20 69 66  20 74 68 65 20 65 76 65  | that if the eve|
000000b0  6e 74 20 77 61 73 20 61  74 74 61 63 68 65 64 20  |nt was attached |
000000c0  77 69 74 68 20 74 68 65  0a 3c 6e 6f 20 6c 6f 61  |with the.<no loa|
000000d0  64 20 66 6c 61 67 3d 3e  6e 6f 6c 6f 61 64 3e 20  |d flag=>noload> |
000000e0  73 65 74 20 74 6f 20 54  52 55 45 20 74 68 65 20  |set to TRUE the |
000000f0  61 64 64 72 65 73 73 20  77 69 6c 6c 0a 62 65 20  |address will.be |
00000100  2d 31 20 61 6e 64 20 74  68 65 20 75 73 65 72 20  |-1 and the user |
00000110  61 70 70 6c 69 63 61 74  69 6f 6e 20 69 73 20 65  |application is e|
00000120  78 70 65 63 74 65 64 20  74 6f 0a 61 63 74 75 61  |xpected to.actua|
00000130  6c 6c 79 20 6c 6f 61 64  20 74 68 65 20 66 69 6c  |lly load the fil|
00000140  65 2e 55 73 65 72 20 46  4e 20 28 50 52 4f 43 73  |e.User FN (PROCs|
00000150  68 65 6c 6c 5f 41 74 74  61 63 68 44 61 74 61 53  |hell_AttachDataS|
00000160  61 76 65 29 0a 50 61 72  61 6d 73 20 3d 3e 0a 20  |ave).Params =>. |
00000170  20 20 20 20 20 20 20 20  73 74 72 20 66 75 6c 6c  |        str full|
00000180  20 66 69 6c 65 6e 61 6d  65 20 6f 66 20 66 69 6c  | filename of fil|
00000190  65 0a 0a 54 68 69 73 20  66 75 6e 63 74 69 6f 6e  |e..This function|
000001a0  20 69 73 20 6e 6f 74 20  63 61 6c 6c 65 64 20 69  | is not called i|
000001b0  66 20 74 68 65 20 66 69  6c 65 20 69 73 20 73 74  |f the file is st|
000001c0  6f 72 65 64 0a 69 6e 20  61 20 68 65 61 70 20 62  |ored.in a heap b|
000001d0  6c 6f 63 6b 2e 20 49 6e  20 74 68 69 73 20 63 61  |lock. In this ca|
000001e0  73 65 20 74 68 65 20 77  68 6f 6c 65 20 63 6f 6e  |se the whole con|
000001f0  74 65 6e 74 73 20 6f 66  0a 74 68 65 20 68 65 61  |tents of.the hea|
00000200  70 20 62 6c 6f 63 6b 20  61 72 65 20 74 72 61 6e  |p block are tran|
00000210  73 66 65 72 72 65 64 2e  20 20 20 20 20 20 20 20  |sferred.        |
00000220  20 4f 53 0a 3c 4f 53 43  68 65 63 6b 4d 6f 64 75  | OS.<OSCheckModu|
00000230  6c 65 56 65 72 73 69 6f  6e 3d 3e 46 4e 73 68 65  |leVersion=>FNshe|
00000240  6c 6c 5f 4f 53 43 68 65  63 6b 4d 6f 64 75 6c 65  |ll_OSCheckModule|
00000250  56 65 72 73 69 6f 6e 3e  0a 3c 4f 53 43 68 65 63  |Version>.<OSChec|
00000260  6b 56 65 72 73 69 6f 6e  20 20 20 20 20 20 3d 3e  |kVersion      =>|
00000270  46 4e 73 68 65 6c 6c 5f  4f 53 43 68 65 63 6b 56  |FNshell_OSCheckV|
00000280  65 72 73 69 6f 6e 3e 0a  3c 4f 53 56 61 72 45 78  |ersion>.<OSVarEx|
00000290  69 73 74 73 20 20 20 20  20 20 20 20 20 3d 3e 46  |ists         =>F|
000002a0  4e 73 68 65 6c 6c 5f 4f  53 56 61 72 45 78 69 73  |Nshell_OSVarExis|
000002b0  74 73 3e 0a 3c 4f 53 56  61 72 47 65 74 56 61 6c  |ts>.<OSVarGetVal|
000002c0  20 20 20 20 20 20 20 20  20 3d 3e 46 4e 73 68 65  |         =>FNshe|
000002d0  6c 6c 5f 4f 53 56 61 72  47 65 74 56 61 6c 3e 0a  |ll_OSVarGetVal>.|
000002e0  3c 4f 53 52 65 61 64 43  6f 6d 6d 61 6e 64 41 72  |<OSReadCommandAr|
000002f0  67 20 20 20 20 3d 3e 46  4e 73 68 65 6c 6c 5f 4f  |g    =>FNshell_O|
00000300  53 52 65 61 64 43 6f 6d  6d 61 6e 64 41 72 67 3e  |SReadCommandArg>|
00000310  4d 6f 75 73 65 0a 3c 4d  6f 75 73 65 4c 69 6d 69  |Mouse.<MouseLimi|
00000320  74 20 20 20 20 3d 3e 50  52 4f 43 73 68 65 6c 6c  |t    =>PROCshell|
00000330  5f 4d 6f 75 73 65 4c 69  6d 69 74 3e 53 68 65 6c  |_MouseLimit>Shel|
00000340  6c 0a 3c 47 65 74 41 70  70 4e 61 6d 65 20 20 20  |l.<GetAppName   |
00000350  20 20 3d 3e 46 4e 73 68  65 6c 6c 5f 47 65 74 41  |  =>FNshell_GetA|
00000360  70 70 4e 61 6d 65 3e 0a  3c 47 65 74 41 70 70 44  |ppName>.<GetAppD|
00000370  69 72 20 20 20 20 20 20  3d 3e 46 4e 73 68 65 6c  |ir      =>FNshel|
00000380  6c 5f 47 65 74 41 70 70  44 69 72 3e 0a 3c 47 65  |l_GetAppDir>.<Ge|
00000390  74 41 70 70 44 61 74 61  44 69 72 20 20 3d 3e 46  |tAppDataDir  =>F|
000003a0  4e 73 68 65 6c 6c 5f 47  65 74 41 70 70 44 61 74  |Nshell_GetAppDat|
000003b0  61 44 69 72 3e 0a 3c 49  6e 69 74 20 20 20 20 20  |aDir>.<Init     |
000003c0  20 20 20 20 20 20 3d 3e  50 52 4f 43 73 68 65 6c  |      =>PROCshel|
000003d0  6c 5f 49 6e 69 74 3e 0a  3c 4c 69 62 72 61 72 79  |l_Init>.<Library|
000003e0  56 65 72 73 69 6f 6e 20  3d 3e 46 4e 73 68 65 6c  |Version =>FNshel|
000003f0  6c 5f 4c 69 62 72 61 72  79 56 65 72 73 69 6f 6e  |l_LibraryVersion|
00000400  3e 0a 3c 52 65 73 6f 75  72 63 65 73 49 6e 69 74  |>.<ResourcesInit|
00000410  20 20 3d 3e 50 52 4f 43  73 68 65 6c 6c 5f 52 65  |  =>PROCshell_Re|
00000420  73 6f 75 72 63 65 73 49  6e 69 74 3e 0a 3c 57 69  |sourcesInit>.<Wi|
00000430  6d 70 43 6c 6f 73 65 44  6f 77 6e 20 20 3d 3e 50  |mpCloseDown  =>P|
00000440  52 4f 43 73 68 65 6c 6c  5f 57 69 6d 70 43 6c 6f  |ROCshell_WimpClo|
00000450  73 65 44 6f 77 6e 3e 0a  3c 57 69 6d 70 43 6c 6f  |seDown>.<WimpClo|
00000460  73 65 44 6f 77 6e 5f 49  3d 3e 50 52 4f 43 73 68  |seDown_I=>PROCsh|
00000470  65 6c 6c 5f 57 69 6d 70  43 6c 6f 73 65 44 6f 77  |ell_WimpCloseDow|
00000480  6e 5f 49 3e 0a 3c 57 69  6d 70 49 6e 69 74 20 20  |n_I>.<WimpInit  |
00000490  20 20 20 20 20 3d 3e 46  4e 73 68 65 6c 6c 5f 57  |     =>FNshell_W|
000004a0  69 6d 70 49 6e 69 74 3e  0a 3c 57 69 6d 70 49 6e  |impInit>.<WimpIn|
000004b0  69 74 5f 49 20 20 20 20  20 3d 3e 46 4e 73 68 65  |it_I     =>FNshe|
000004c0  6c 6c 5f 57 69 6d 70 49  6e 69 74 5f 49 3e 57 69  |ll_WimpInit_I>Wi|
000004d0  6e 64 6f 77 73 0a 3c 43  6c 6f 73 65 57 69 6e 64  |ndows.<CloseWind|
000004e0  6f 77 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |ow              |
000004f0  20 3d 3e 50 52 4f 43 73  68 65 6c 6c 5f 43 6c 6f  | =>PROCshell_Clo|
00000500  73 65 57 69 6e 64 6f 77  3e 0a 3c 43 72 65 61 74  |seWindow>.<Creat|
00000510  65 57 69 6e 64 6f 77 20  20 20 20 20 20 20 20 20  |eWindow         |
00000520  20 20 20 20 20 3d 3e 50  52 4f 43 73 68 65 6c 6c  |     =>PROCshell|
00000530  5f 43 72 65 61 74 65 57  69 6e 64 6f 77 3e 0a 3c  |_CreateWindow>.<|
00000540  43 72 65 61 74 65 57 69  6e 64 6f 77 53 74 61 74  |CreateWindowStat|
00000550  69 63 20 20 20 20 20 20  20 20 3d 3e 50 52 4f 43  |ic        =>PROC|
00000560  73 68 65 6c 6c 5f 43 72  65 61 74 65 57 69 6e 64  |shell_CreateWind|
00000570  6f 77 53 74 61 74 69 63  3e 0a 3c 4d 65 73 73 61  |owStatic>.<Messa|
00000580  67 65 57 69 6e 64 6f 77  20 20 20 20 20 20 20 20  |geWindow        |
00000590  20 20 20 20 20 3d 3e 46  4e 73 68 65 6c 6c 5f 4d  |     =>FNshell_M|
000005a0  65 73 73 61 67 65 57 69  6e 64 6f 77 3e 0a 3c 4f  |essageWindow>.<O|
000005b0  70 65 6e 57 69 6e 64 6f  77 20 20 20 20 20 20 20  |penWindow       |
000005c0  20 20 20 20 20 20 20 20  20 3d 3e 50 52 4f 43 73  |         =>PROCs|
000005d0  68 65 6c 6c 5f 4f 70 65  6e 57 69 6e 64 6f 77 3e  |hell_OpenWindow>|
000005e0  0a 3c 4f 70 65 6e 57 69  6e 64 6f 77 53 74 61 74  |.<OpenWindowStat|
000005f0  69 63 20 20 20 20 20 20  20 20 20 20 3d 3e 50 52  |ic          =>PR|
00000600  4f 43 73 68 65 6c 6c 5f  4f 70 65 6e 57 69 6e 64  |OCshell_OpenWind|
00000610  6f 77 53 74 61 74 69 63  3e 0a 3c 57 69 6e 64 6f  |owStatic>.<Windo|
00000620  77 42 72 69 6e 67 54 6f  54 6f 70 20 20 20 20 20  |wBringToTop     |
00000630  20 20 20 20 20 3d 3e 50  52 4f 43 73 68 65 6c 6c  |     =>PROCshell|
00000640  5f 57 69 6e 64 6f 77 42  72 69 6e 67 54 6f 54 6f  |_WindowBringToTo|
00000650  70 3e 0a 3c 57 69 6e 64  6f 77 47 65 74 54 69 74  |p>.<WindowGetTit|
00000660  6c 65 20 20 20 20 20 20  20 20 20 20 20 20 3d 3e  |le            =>|
00000670  46 4e 73 68 65 6c 6c 5f  57 69 6e 64 6f 77 47 65  |FNshell_WindowGe|
00000680  74 54 69 74 6c 65 3e 0a  3c 57 69 6e 64 6f 77 48  |tTitle>.<WindowH|
00000690  61 73 41 64 6a 75 73 74  53 69 7a 65 49 63 6f 6e  |asAdjustSizeIcon|
000006a0  20 20 20 3d 3e 46 4e 73  68 65 6c 6c 5f 57 69 6e  |   =>FNshell_Win|
000006b0  64 6f 77 48 61 73 41 64  6a 75 73 74 53 69 7a 65  |dowHasAdjustSize|
000006c0  49 63 6f 6e 3e 0a 3c 57  69 6e 64 6f 77 48 61 73  |Icon>.<WindowHas|
000006d0  42 61 63 6b 49 63 6f 6e  20 20 20 20 20 20 20 20  |BackIcon        |
000006e0  20 3d 3e 46 4e 73 68 65  6c 6c 5f 57 69 6e 64 6f  | =>FNshell_Windo|
000006f0  77 48 61 73 42 61 63 6b  49 63 6f 6e 3e 0a 3c 57  |wHasBackIcon>.<W|
00000700  69 6e 64 6f 77 48 61 73  42 65 65 6e 54 6f 67 67  |indowHasBeenTogg|
00000710  6c 65 64 20 20 20 20 20  20 3d 3e 46 4e 73 68 65  |led      =>FNshe|
00000720  6c 6c 5f 57 69 6e 64 6f  77 48 61 73 42 65 65 6e  |ll_WindowHasBeen|
00000730  54 6f 67 67 6c 65 64 3e  0a 3c 57 69 6e 64 6f 77  |Toggled>.<Window|
00000740  48 61 73 43 6c 6f 73 65  49 63 6f 6e 20 20 20 20  |HasCloseIcon    |
00000750  20 20 20 20 3d 3e 46 4e  73 68 65 6c 6c 5f 57 69  |    =>FNshell_Wi|
00000760  6e 64 6f 77 48 61 73 43  6c 6f 73 65 49 63 6f 6e  |ndowHasCloseIcon|
00000770  3e 0a 3c 57 69 6e 64 6f  77 48 61 73 48 53 63 72  |>.<WindowHasHScr|
00000780  6f 6c 6c 42 61 72 20 20  20 20 20 20 20 3d 3e 46  |ollBar       =>F|
00000790  4e 73 68 65 6c 6c 5f 57  69 6e 64 6f 77 48 61 73  |Nshell_WindowHas|
000007a0  48 53 63 72 6f 6c 6c 42  61 72 3e 0a 3c 57 69 6e  |HScrollBar>.<Win|
000007b0  64 6f 77 48 61 73 49 6e  70 75 74 46 6f 63 75 73  |dowHasInputFocus|
000007c0  20 20 20 20 20 20 20 3d  3e 46 4e 73 68 65 6c 6c  |       =>FNshell|
000007d0  5f 57 69 6e 64 6f 77 48  61 73 49 6e 70 75 74 46  |_WindowHasInputF|
000007e0  6f 63 75 73 3e 0a 3c 57  69 6e 64 6f 77 48 61 73  |ocus>.<WindowHas|
000007f0  54 69 74 6c 65 42 61 72  20 20 20 20 20 20 20 20  |TitleBar        |
00000800  20 3d 3e 46 4e 73 68 65  6c 6c 5f 57 69 6e 64 6f  | =>FNshell_Windo|
00000810  77 48 61 73 54 69 74 6c  65 42 61 72 3e 0a 3c 57  |wHasTitleBar>.<W|
00000820  69 6e 64 6f 77 48 61 73  54 6f 67 67 6c 65 49 63  |indowHasToggleIc|
00000830  6f 6e 20 20 20 20 20 20  20 3d 3e 46 4e 73 68 65  |on       =>FNshe|
00000840  6c 6c 5f 57 69 6e 64 6f  77 48 61 73 54 6f 67 67  |ll_WindowHasTogg|
00000850  6c 65 49 63 6f 6e 3e 0a  3c 57 69 6e 64 6f 77 48  |leIcon>.<WindowH|
00000860  61 73 56 53 63 72 6f 6c  6c 42 61 72 20 20 20 20  |asVScrollBar    |
00000870  20 20 20 3d 3e 46 4e 73  68 65 6c 6c 5f 57 69 6e  |   =>FNshell_Win|
00000880  64 6f 77 48 61 73 56 53  63 72 6f 6c 6c 42 61 72  |dowHasVScrollBar|
00000890  3e 0a 3c 57 69 6e 64 6f  77 49 73 41 50 61 6e 65  |>.<WindowIsAPane|
000008a0  20 20 20 20 20 20 20 20  20 20 20 20 20 3d 3e 46  |             =>F|
000008b0  4e 73 68 65 6c 6c 5f 57  69 6e 64 6f 77 49 73 41  |Nshell_WindowIsA|
000008c0  50 61 6e 65 3e 0a 3c 57  69 6e 64 6f 77 49 73 4d  |Pane>.<WindowIsM|
000008d0  6f 76 65 61 62 6c 65 20  20 20 20 20 20 20 20 20  |oveable         |
000008e0  20 3d 3e 46 4e 73 68 65  6c 6c 5f 57 69 6e 64 6f  | =>FNshell_Windo|
000008f0  77 49 73 4d 6f 76 65 61  62 6c 65 3e 0a 3c 57 69  |wIsMoveable>.<Wi|
00000900  6e 64 6f 77 49 73 4e 6f  74 42 6f 75 6e 64 65 64  |ndowIsNotBounded|
00000910  20 20 20 20 20 20 20 20  3d 3e 46 4e 73 68 65 6c  |        =>FNshel|
00000920  6c 5f 57 69 6e 64 6f 77  49 73 4e 6f 74 42 6f 75  |l_WindowIsNotBou|
00000930  6e 64 65 64 3e 0a 3c 57  69 6e 64 6f 77 49 73 4f  |nded>.<WindowIsO|
00000940  6e 54 6f 70 20 20 20 20  20 20 20 20 20 20 20 20  |nTop            |
00000950  20 3d 3e 46 4e 73 68 65  6c 6c 5f 57 69 6e 64 6f  | =>FNshell_Windo|
00000960  77 49 73 4f 6e 54 6f 70  3e 0a 3c 57 69 6e 64 6f  |wIsOnTop>.<Windo|
00000970  77 49 73 4f 70 65 6e 20  20 20 20 20 20 20 20 20  |wIsOpen         |
00000980  20 20 20 20 20 3d 3e 46  4e 73 68 65 6c 6c 5f 57  |     =>FNshell_W|
00000990  69 6e 64 6f 77 49 73 4f  70 65 6e 3e 0a 3c 57 69  |indowIsOpen>.<Wi|
000009a0  6e 64 6f 77 4c 6f 61 64  65 64 20 20 20 20 20 20  |ndowLoaded      |
000009b0  20 20 20 20 20 20 20 20  3d 3e 46 4e 73 68 65 6c  |        =>FNshel|
000009c0  6c 5f 57 69 6e 64 6f 77  4c 6f 61 64 65 64 3e 0a  |l_WindowLoaded>.|
000009d0  3c 57 69 6e 64 6f 77 4d  6f 76 65 54 6f 20 20 20  |<WindowMoveTo   |
000009e0  20 20 20 20 20 20 20 20  20 20 20 3d 3e 50 52 4f  |           =>PRO|
000009f0  43 73 68 65 6c 6c 5f 57  69 6e 64 6f 77 4d 6f 76  |Cshell_WindowMov|
00000a00  65 54 6f 3e 0a 3c 57 69  6e 64 6f 77 4d 6f 76 65  |eTo>.<WindowMove|
00000a10  54 6f 49 63 6f 6e 20 20  20 20 20 20 20 20 20 20  |ToIcon          |
00000a20  3d 3e 50 52 4f 43 73 68  65 6c 6c 5f 57 69 6e 64  |=>PROCshell_Wind|
00000a30  6f 77 4d 6f 76 65 54 6f  49 63 6f 6e 3e 0a 3c 57  |owMoveToIcon>.<W|
00000a40  69 6e 64 6f 77 52 65 73  69 7a 65 20 20 20 20 20  |indowResize     |
00000a50  20 20 20 20 20 20 20 20  20 3d 3e 50 52 4f 43 73  |         =>PROCs|
00000a60  68 65 6c 6c 5f 57 69 6e  64 6f 77 52 65 73 69 7a  |hell_WindowResiz|
00000a70  65 3e 0a 3c 57 69 6e 64  6f 77 52 65 74 69 74 6c  |e>.<WindowRetitl|
00000a80  65 20 20 20 20 20 20 20  20 20 20 20 20 20 3d 3e  |e             =>|
00000a90  50 52 4f 43 73 68 65 6c  6c 5f 57 69 6e 64 6f 77  |PROCshell_Window|
00000aa0  52 65 74 69 74 6c 65 3e  0a 3c 57 69 6e 64 6f 77  |Retitle>.<Window|
00000ab0  53 65 74 53 70 72 69 74  65 41 72 65 61 20 20 20  |SetSpriteArea   |
00000ac0  20 20 20 20 3d 3e 46 4e  73 68 65 6c 6c 5f 57 69  |    =>FNshell_Wi|
00000ad0  6e 64 6f 77 53 65 74 53  70 72 69 74 65 41 72 65  |ndowSetSpriteAre|
00000ae0  61 3e 0a 3c 57 69 6e 64  6f 77 54 6f 67 67 6c 65  |a>.<WindowToggle|
00000af0  41 64 6a 75 73 74 53 69  7a 65 49 63 6f 6e 3d 3e  |AdjustSizeIcon=>|
00000b00  50 52 4f 43 73 68 65 6c  6c 5f 57 69 6e 64 6f 77  |PROCshell_Window|
00000b10  54 6f 67 67 6c 65 41 64  6a 75 73 74 53 69 7a 65  |ToggleAdjustSize|
00000b20  49 63 6f 6e 3e 0a 3c 57  69 6e 64 6f 77 54 6f 67  |Icon>.<WindowTog|
00000b30  67 6c 65 42 61 63 6b 49  63 6f 6e 20 20 20 20 20  |gleBackIcon     |
00000b40  20 3d 3e 50 52 4f 43 73  68 65 6c 6c 5f 57 69 6e  | =>PROCshell_Win|
00000b50  64 6f 77 54 6f 67 67 6c  65 42 61 63 6b 49 63 6f  |dowToggleBackIco|
00000b60  6e 3e 0a 3c 57 69 6e 64  6f 77 54 6f 67 67 6c 65  |n>.<WindowToggle|
00000b70  43 6c 6f 73 65 49 63 6f  6e 20 20 20 20 20 3d 3e  |CloseIcon     =>|
00000b80  50 52 4f 43 73 68 65 6c  6c 5f 57 69 6e 64 6f 77  |PROCshell_Window|
00000b90  54 6f 67 67 6c 65 43 6c  6f 73 65 49 63 6f 6e 3e  |ToggleCloseIcon>|
00000ba0  0a 3c 57 69 6e 64 6f 77  54 6f 67 67 6c 65 48 53  |.<WindowToggleHS|
00000bb0  63 72 6f 6c 6c 42 61 72  20 20 20 20 3d 3e 50 52  |crollBar    =>PR|
00000bc0  4f 43 73 68 65 6c 6c 5f  57 69 6e 64 6f 77 54 6f  |OCshell_WindowTo|
00000bd0  67 67 6c 65 48 53 63 72  6f 6c 6c 42 61 72 3e 0a  |ggleHScrollBar>.|
00000be0  3c 57 69 6e 64 6f 77 54  6f 67 67 6c 65 54 69 74  |<WindowToggleTit|
00000bf0  6c 65 42 61 72 49 63 6f  6e 20 20 3d 3e 50 52 4f  |leBarIcon  =>PRO|
00000c00  43 73 68 65 6c 6c 5f 57  69 6e 64 6f 77 54 6f 67  |Cshell_WindowTog|
00000c10  67 6c 65 54 69 74 6c 65  42 61 72 49 63 6f 6e 3e  |gleTitleBarIcon>|
00000c20  0a 3c 57 69 6e 64 6f 77  54 6f 67 67 6c 65 54 6f  |.<WindowToggleTo|
00000c30  67 67 6c 65 49 63 6f 6e  20 20 20 20 3d 3e 50 52  |ggleIcon    =>PR|
00000c40  4f 43 73 68 65 6c 6c 5f  57 69 6e 64 6f 77 54 6f  |OCshell_WindowTo|
00000c50  67 67 6c 65 54 6f 67 67  6c 65 49 63 6f 6e 3e 0a  |ggleToggleIcon>.|
00000c60  3c 57 69 6e 64 6f 77 54  6f 67 67 6c 65 56 53 63  |<WindowToggleVSc|
00000c70  72 6f 6c 6c 42 61 72 20  20 20 20 3d 3e 50 52 4f  |rollBar    =>PRO|
00000c80  43 73 68 65 6c 6c 5f 57  69 6e 64 6f 77 54 6f 67  |Cshell_WindowTog|
00000c90  67 6c 65 56 53 63 72 6f  6c 6c 42 61 72 3e 0a 3c  |gleVScrollBar>.<|
00000ca0  57 69 6e 64 6f 77 54 72  61 70 73 48 6f 74 4b 65  |WindowTrapsHotKe|
00000cb0  79 73 20 20 20 20 20 20  20 20 3d 3e 46 4e 73 68  |ys        =>FNsh|
00000cc0  65 6c 6c 5f 57 69 6e 64  6f 77 54 72 61 70 73 48  |ell_WindowTrapsH|
00000cd0  6f 74 4b 65 79 73 3e 44  65 62 75 67 0a 3c 54 72  |otKeys>Debug.<Tr|
00000ce0  61 63 65 45 78 69 74 3d  3e 50 52 4f 43 73 68 65  |aceExit=>PROCshe|
00000cf0  6c 6c 5f 54 72 61 63 65  45 78 69 74 3e 0a 3c 54  |ll_TraceExit>.<T|
00000d00  72 61 63 65 66 30 20 20  3d 3e 50 52 4f 43 73 68  |racef0  =>PROCsh|
00000d10  65 6c 6c 5f 54 72 61 63  65 66 30 3e 0a 3c 54 72  |ell_Tracef0>.<Tr|
00000d20  61 63 65 49 6e 69 74 3d  3e 50 52 4f 43 73 68 65  |aceInit=>PROCshe|
00000d30  6c 6c 5f 54 72 61 63 65  49 6e 69 74 3e 0a 3c 54  |ll_TraceInit>.<T|
00000d40  72 61 63 65 49 73 4f 6e  3d 3e 46 4e 73 68 65 6c  |raceIsOn=>FNshel|
00000d50  6c 5f 54 72 61 63 65 49  73 4f 6e 3e 0a 3c 54 72  |l_TraceIsOn>.<Tr|
00000d60  61 63 65 4f 66 66 20 3d  3e 50 52 4f 43 73 68 65  |aceOff =>PROCshe|
00000d70  6c 6c 5f 54 72 61 63 65  4f 66 66 3e 0a 3c 54 72  |ll_TraceOff>.<Tr|
00000d80  61 63 65 4f 6e 20 20 3d  3e 50 52 4f 43 73 68 65  |aceOn  =>PROCshe|
00000d90  6c 6c 5f 54 72 61 63 65  4f 6e 3e 45 76 65 6e 74  |ll_TraceOn>Event|
00000da0  73 0a 3c 41 74 74 61 63  68 42 75 6d 70 48 61 6e  |s.<AttachBumpHan|
00000db0  64 6c 65 72 20 20 20 20  20 20 20 20 20 20 3d 3e  |dler          =>|
00000dc0  50 52 4f 43 73 68 65 6c  6c 5f 41 74 74 61 63 68  |PROCshell_Attach|
00000dd0  42 75 6d 70 48 61 6e 64  6c 65 72 3e 0a 3c 41 74  |BumpHandler>.<At|
00000de0  74 61 63 68 43 6c 69 63  6b 41 64 6a 75 73 74 20  |tachClickAdjust |
00000df0  20 20 20 20 20 20 20 20  20 3d 3e 50 52 4f 43 73  |         =>PROCs|
00000e00  68 65 6c 6c 5f 41 74 74  61 63 68 43 6c 69 63 6b  |hell_AttachClick|
00000e10  41 64 6a 75 73 74 3e 0a  3c 41 74 74 61 63 68 43  |Adjust>.<AttachC|
00000e20  6c 69 63 6b 53 65 6c 65  63 74 20 20 20 20 20 20  |lickSelect      |
00000e30  20 20 20 20 3d 3e 50 52  4f 43 73 68 65 6c 6c 5f  |    =>PROCshell_|
00000e40  41 74 74 61 63 68 43 6c  69 63 6b 53 65 6c 65 63  |AttachClickSelec|
00000e50  74 3e 0a 3c 41 74 74 61  63 68 43 6c 6f 73 65 57  |t>.<AttachCloseW|
00000e60  69 6e 64 6f 77 48 61 6e  64 6c 65 72 20 20 20 3d  |indowHandler   =|
00000e70  3e 50 52 4f 43 73 68 65  6c 6c 5f 41 74 74 61 63  |>PROCshell_Attac|
00000e80  68 43 6c 6f 73 65 57 69  6e 64 6f 77 48 61 6e 64  |hCloseWindowHand|
00000e90  6c 65 72 3e 0a 3c 41 74  74 61 63 68 44 61 74 61  |ler>.<AttachData|
00000ea0  4c 6f 61 64 20 20 20 20  20 20 20 20 20 20 20 20  |Load            |
00000eb0  20 3d 3e 50 52 4f 43 73  68 65 6c 6c 5f 41 74 74  | =>PROCshell_Att|
00000ec0  61 63 68 44 61 74 61 4c  6f 61 64 3e 0a 3c 41 74  |achDataLoad>.<At|
00000ed0  74 61 63 68 44 61 74 61  53 61 76 65 20 20 20 20  |tachDataSave    |
00000ee0  20 20 20 20 20 20 20 20  20 3d 3e 50 52 4f 43 73  |         =>PROCs|
00000ef0  68 65 6c 6c 5f 41 74 74  61 63 68 44 61 74 61 53  |hell_AttachDataS|
00000f00  61 76 65 3e 0a 3c 41 74  74 61 63 68 44 72 61 67  |ave>.<AttachDrag|
00000f10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000f20  20 3d 3e 50 52 4f 43 73  68 65 6c 6c 5f 41 74 74  | =>PROCshell_Att|
00000f30  61 63 68 44 72 61 67 3e  0a 3c 41 74 74 61 63 68  |achDrag>.<Attach|
00000f40  48 65 6c 70 54 61 67 20  20 20 20 20 20 20 20 20  |HelpTag         |
00000f50  20 20 20 20 20 3d 3e 50  52 4f 43 73 68 65 6c 6c  |     =>PROCshell|
00000f60  5f 41 74 74 61 63 68 48  65 6c 70 54 61 67 3e 0a  |_AttachHelpTag>.|
00000f70  3c 41 74 74 61 63 68 48  6f 74 4b 65 79 20 20 20  |<AttachHotKey   |
00000f80  20 20 20 20 20 20 20 20  20 20 20 20 3d 3e 50 52  |            =>PR|
00000f90  4f 43 73 68 65 6c 6c 5f  41 74 74 61 63 68 48 6f  |OCshell_AttachHo|
00000fa0  74 4b 65 79 3e 0a 3c 41  74 74 61 63 68 4d 6f 64  |tKey>.<AttachMod|
00000fb0  65 43 68 61 6e 67 65 48  61 6e 64 6c 65 72 20 20  |eChangeHandler  |
00000fc0  20 20 3d 3e 50 52 4f 43  73 68 65 6c 6c 5f 41 74  |  =>PROCshell_At|
00000fd0  74 61 63 68 4d 6f 64 65  43 68 61 6e 67 65 48 61  |tachModeChangeHa|
00000fe0  6e 64 6c 65 72 3e 0a 3c  41 74 74 61 63 68 4d 65  |ndler>.<AttachMe|
00000ff0  6e 75 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |nu              |
00001000  20 20 20 3d 3e 50 52 4f  43 73 68 65 6c 6c 5f 41  |   =>PROCshell_A|
00001010  74 74 61 63 68 4d 65 6e  75 3e 0a 3c 41 74 74 61  |ttachMenu>.<Atta|
00001020  63 68 4d 65 6e 75 44 42  6f 78 20 20 20 20 20 20  |chMenuDBox      |
00001030  20 20 20 20 20 20 20 3d  3e 50 52 4f 43 73 68 65  |       =>PROCshe|
00001040  6c 6c 5f 41 74 74 61 63  68 4d 65 6e 75 44 42 6f  |ll_AttachMenuDBo|
00001050  78 3e 0a 3c 41 74 74 61  63 68 4d 65 6e 75 4d 61  |x>.<AttachMenuMa|
00001060  6b 65 72 20 20 20 20 20  20 20 20 20 20 20 20 3d  |ker            =|
00001070  3e 50 52 4f 43 73 68 65  6c 6c 5f 41 74 74 61 63  |>PROCshell_Attac|
00001080  68 4d 65 6e 75 4d 61 6b  65 72 3e 0a 3c 41 74 74  |hMenuMaker>.<Att|
00001090  61 63 68 4f 70 65 6e 57  69 6e 64 6f 77 48 61 6e  |achOpenWindowHan|
000010a0  64 6c 65 72 20 20 20 20  3d 3e 50 52 4f 43 73 68  |dler    =>PROCsh|
000010b0  65 6c 6c 5f 41 74 74 61  63 68 4f 70 65 6e 57 69  |ell_AttachOpenWi|
000010c0  6e 64 6f 77 48 61 6e 64  6c 65 72 3e 0a 3c 41 74  |ndowHandler>.<At|
000010d0  74 61 63 68 53 75 62 4d  65 6e 75 20 20 20 20 20  |tachSubMenu     |
000010e0  20 20 20 20 20 20 20 20  20 3d 3e 50 52 4f 43 73  |         =>PROCs|
000010f0  68 65 6c 6c 5f 41 74 74  61 63 68 53 75 62 4d 65  |hell_AttachSubMe|
00001100  6e 75 3e 0a 3c 41 74 74  61 63 68 50 61 6c 65 74  |nu>.<AttachPalet|
00001110  74 65 43 68 61 6e 67 65  48 61 6e 64 6c 65 72 20  |teChangeHandler |
00001120  3d 3e 50 52 4f 43 73 68  65 6c 6c 5f 41 74 74 61  |=>PROCshell_Atta|
00001130  63 68 50 61 6c 65 74 74  65 43 68 61 6e 67 65 48  |chPaletteChangeH|
00001140  61 6e 64 6c 65 72 3e 0a  3c 41 74 74 61 63 68 50  |andler>.<AttachP|
00001150  61 6e 65 20 20 20 20 20  20 20 20 20 20 20 20 20  |ane             |
00001160  20 20 20 20 3d 3e 50 52  4f 43 73 68 65 6c 6c 5f  |    =>PROCshell_|
00001170  41 74 74 61 63 68 50 61  6e 65 3e 0a 3c 41 74 74  |AttachPane>.<Att|
00001180  61 63 68 50 72 65 51 75  69 74 48 61 6e 64 6c 65  |achPreQuitHandle|
00001190  72 20 20 20 20 20 20 20  3d 3e 50 52 4f 43 73 68  |r       =>PROCsh|
000011a0  65 6c 6c 5f 41 74 74 61  63 68 50 72 65 51 75 69  |ell_AttachPreQui|
000011b0  74 48 61 6e 64 6c 65 72  3e 0a 3c 41 74 74 61 63  |tHandler>.<Attac|
000011c0  68 54 61 73 6b 49 6e 69  74 69 61 6c 69 73 65 48  |hTaskInitialiseH|
000011d0  61 6e 64 6c 65 72 3d 3e  50 52 4f 43 73 68 65 6c  |andler=>PROCshel|
000011e0  6c 5f 41 74 74 61 63 68  54 61 73 6b 49 6e 69 74  |l_AttachTaskInit|
000011f0  69 61 6c 69 73 65 48 61  6e 64 6c 65 72 3e 0a 3c  |ialiseHandler>.<|
00001200  41 74 74 61 63 68 54 61  73 6b 43 6c 6f 73 65 44  |AttachTaskCloseD|
00001210  6f 77 6e 48 61 6e 64 6c  65 72 20 3d 3e 50 52 4f  |ownHandler =>PRO|
00001220  43 73 68 65 6c 6c 5f 41  74 74 61 63 68 54 61 73  |Cshell_AttachTas|
00001230  6b 43 6c 6f 73 65 44 6f  77 6e 48 61 6e 64 6c 65  |kCloseDownHandle|
00001240  72 3e 0a 3c 41 74 74 61  63 68 55 73 65 72 52 65  |r>.<AttachUserRe|
00001250  64 72 61 77 20 20 20 20  20 20 20 20 20 20 20 3d  |draw           =|
00001260  3e 50 52 4f 43 73 68 65  6c 6c 5f 41 74 74 61 63  |>PROCshell_Attac|
00001270  68 55 73 65 72 52 65 64  72 61 77 3e 0a 3c 44 6f  |hUserRedraw>.<Do|
00001280  42 61 63 6b 67 72 6f 75  6e 64 54 61 73 6b 20 20  |BackgroundTask  |
00001290  20 20 20 20 20 20 20 20  20 3d 3e 50 52 4f 43 73  |         =>PROCs|
000012a0  68 65 6c 6c 5f 44 6f 42  61 63 6b 67 72 6f 75 6e  |hell_DoBackgroun|
000012b0  64 54 61 73 6b 3e 0a 3c  48 61 6e 64 6c 65 55 6e  |dTask>.<HandleUn|
000012c0  6b 6e 6f 77 6e 4d 65 73  73 61 67 65 20 20 20 20  |knownMessage    |
000012d0  20 20 20 3d 3e 50 52 4f  43 73 68 65 6c 6c 5f 48  |   =>PROCshell_H|
000012e0  61 6e 64 6c 65 55 6e 6b  6e 6f 77 6e 4d 65 73 73  |andleUnknownMess|
000012f0  61 67 65 3e 46 69 6c 65  73 0a 3c 46 69 6c 65 45  |age>Files.<FileE|
00001300  78 69 73 74 73 3d 3e 46  4e 73 68 65 6c 6c 5f 46  |xists=>FNshell_F|
00001310  69 6c 65 45 78 69 73 74  73 3e 0a 3c 46 69 6c 65  |ileExists>.<File|
00001320  4c 65 6e 67 74 68 3d 3e  46 4e 73 68 65 6c 6c 5f  |Length=>FNshell_|
00001330  46 69 6c 65 4c 65 6e 67  74 68 3e 0a 3c 46 69 6c  |FileLength>.<Fil|
00001340  65 54 79 70 65 20 20 3d  3e 46 4e 73 68 65 6c 6c  |eType  =>FNshell|
00001350  5f 46 69 6c 65 54 79 70  65 3e 0a 3c 42 72 61 6e  |_FileType>.<Bran|
00001360  63 68 20 20 20 20 3d 3e  46 4e 73 68 65 6c 6c 5f  |ch    =>FNshell_|
00001370  42 72 61 6e 63 68 3e 0a  3c 4c 65 61 66 20 20 20  |Branch>.<Leaf   |
00001380  20 20 20 3d 3e 46 4e 73  68 65 6c 6c 5f 4c 65 61  |   =>FNshell_Lea|
00001390  66 3e 53 74 72 69 6e 67  73 0a 3c 53 74 72 69 6e  |f>Strings.<Strin|
000013a0  67 41 72 72 61 79 47 65  74 4c 6f 6e 67 65 73 74  |gArrayGetLongest|
000013b0  3d 3e 46 4e 73 68 65 6c  6c 5f 53 74 72 69 6e 67  |=>FNshell_String|
000013c0  41 72 72 61 79 47 65 74  4c 6f 6e 67 65 73 74 3e  |ArrayGetLongest>|
000013d0  0a 3c 53 74 72 69 6e 67  45 78 63 68 61 6e 67 65  |.<StringExchange|
000013e0  20 20 20 20 20 20 20 3d  3e 46 4e 73 68 65 6c 6c  |       =>FNshell|
000013f0  5f 53 74 72 69 6e 67 45  78 63 68 61 6e 67 65 3e  |_StringExchange>|
00001400  0a 3c 53 74 72 69 6e 67  50 61 64 4c 65 61 64 69  |.<StringPadLeadi|
00001410  6e 67 20 20 20 20 20 3d  3e 46 4e 73 68 65 6c 6c  |ng     =>FNshell|
00001420  5f 53 74 72 69 6e 67 50  61 64 4c 65 61 64 69 6e  |_StringPadLeadin|
00001430  67 3e 0a 3c 53 74 72 69  6e 67 50 61 64 54 72 61  |g>.<StringPadTra|
00001440  69 6c 69 6e 67 20 20 20  20 3d 3e 46 4e 73 68 65  |iling    =>FNshe|
00001450  6c 6c 5f 53 74 72 69 6e  67 50 61 64 54 72 61 69  |ll_StringPadTrai|
00001460  6c 69 6e 67 3e 0a 3c 53  74 72 69 6e 67 53 74 72  |ling>.<StringStr|
00001470  69 70 41 6c 6c 20 20 20  20 20 20 20 3d 3e 46 4e  |ipAll       =>FN|
00001480  73 68 65 6c 6c 5f 53 74  72 69 6e 67 53 74 72 69  |shell_StringStri|
00001490  70 41 6c 6c 3e 0a 3c 53  74 72 69 6e 67 53 74 72  |pAll>.<StringStr|
000014a0  69 70 4c 65 61 64 69 6e  67 20 20 20 3d 3e 46 4e  |ipLeading   =>FN|
000014b0  73 68 65 6c 6c 5f 53 74  72 69 6e 67 53 74 72 69  |shell_StringStri|
000014c0  70 4c 65 61 64 69 6e 67  3e 0a 3c 53 74 72 69 6e  |pLeading>.<Strin|
000014d0  67 53 74 72 69 70 54 72  61 69 6c 69 6e 67 20 20  |gStripTrailing  |
000014e0  3d 3e 46 4e 73 68 65 6c  6c 5f 53 74 72 69 6e 67  |=>FNshell_String|
000014f0  53 74 72 69 70 54 72 61  69 6c 69 6e 67 3e 0a 3c  |StripTrailing>.<|
00001500  53 74 72 69 6e 67 55 70  70 65 72 43 61 73 65 20  |StringUpperCase |
00001510  20 20 20 20 20 3d 3e 46  4e 73 68 65 6c 6c 5f 53  |     =>FNshell_S|
00001520  74 72 69 6e 67 55 70 70  65 72 43 61 73 65 3e 50  |tringUpperCase>P|
00001530  52 4f 43 73 68 65 6c 6c  5f 41 74 74 61 63 68 50  |ROCshell_AttachP|
00001540  61 6c 65 74 74 65 43 68  61 6e 67 65 48 61 6e 64  |aletteChangeHand|
00001550  6c 65 72 28 29 0a 50 61  72 61 6d 73 20 3d 3e 0a  |ler().Params =>.|
00001560  20 20 20 20 20 20 20 20  20 73 74 72 20 3c 66 75  |         str <fu|
00001570  6e 63 74 69 6f 6e 20 6e  61 6d 65 3d 3e 55 73 65  |nction name=>Use|
00001580  72 46 4e 30 33 3e 0a 0a  52 65 67 69 73 74 65 72  |rFN03>..Register|
00001590  73 20 61 20 66 75 6e 63  74 69 6f 6e 20 6e 61 6d  |s a function nam|
000015a0  65 20 74 6f 20 62 65 20  63 61 6c 6c 65 64 20 77  |e to be called w|
000015b0  68 65 6e 20 61 20 50 61  6c 65 74 74 65 43 68 61  |hen a PaletteCha|
000015c0  6e 67 65 0a 6d 65 73 73  61 67 65 20 69 73 20 72  |nge.message is r|
000015d0  65 63 65 69 76 65 64 2e  20 54 68 69 73 20 6f 63  |eceived. This oc|
000015e0  63 75 72 73 20 77 68 65  6e 20 74 68 65 20 75 73  |curs when the us|
000015f0  65 72 20 68 61 73 20 66  69 6e 69 73 68 65 64 0a  |er has finished.|
00001600  64 72 61 67 67 69 6e 67  20 74 68 65 20 73 6c 69  |dragging the sli|
00001610  64 65 72 73 20 6f 6e 20  74 68 65 20 50 61 6c 65  |ders on the Pale|
00001620  74 74 65 20 61 70 70 6c  69 63 61 74 69 6f 6e 2c  |tte application,|
00001630  20 6f 72 20 77 68 65 6e  20 61 0a 6e 65 77 20 70  | or when a.new p|
00001640  61 6c 65 74 74 65 20 69  73 20 6c 6f 61 64 65 64  |alette is loaded|
00001650  2e 20 49 74 20 69 73 20  61 6c 73 6f 20 63 61 6c  |. It is also cal|
00001660  6c 65 64 20 77 68 65 6e  20 74 68 65 20 68 61 6e  |led when the han|
00001670  64 6c 65 72 20 69 73 0a  73 65 74 20 75 70 20 73  |dler is.set up s|
00001680  6f 20 74 68 61 74 20 74  68 65 20 75 73 65 72 20  |o that the user |
00001690  61 70 70 6c 69 63 61 74  69 6f 6e 20 63 61 6e 20  |application can |
000016a0  6e 6f 74 65 20 74 68 65  20 63 75 72 72 65 6e 74  |note the current|
000016b0  0a 70 61 72 61 6d 65 74  65 72 73 2e 0a 0a 4e 6f  |.parameters...No|
000016c0  74 65 20 74 68 61 74 20  74 68 69 73 20 6d 65 73  |te that this mes|
000016d0  73 61 67 65 20 69 73 20  6e 6f 74 20 69 73 73 75  |sage is not issu|
000016e0  65 64 20 77 68 65 6e 20  74 68 65 20 73 63 72 65  |ed when the scre|
000016f0  65 6e 20 6d 6f 64 65 0a  63 68 61 6e 67 65 73 2c  |en mode.changes,|
00001700  20 73 6f 20 74 61 73 6b  73 20 69 6e 74 65 72 65  | so tasks intere|
00001710  73 74 65 64 20 69 6e 20  63 6f 6c 6f 75 72 20 6d  |sted in colour m|
00001720  61 70 70 69 6e 67 20 63  68 61 6e 67 65 73 20 73  |apping changes s|
00001730  68 6f 75 6c 64 0a 63 61  6c 6c 20 3c 50 52 4f 43  |hould.call <PROC|
00001740  73 68 65 6c 6c 5f 41 74  74 61 63 68 4d 6f 64 65  |shell_AttachMode|
00001750  43 68 61 6e 67 65 48 61  6e 64 6c 65 72 3e 20 61  |ChangeHandler> a|
00001760  73 20 77 65 6c 6c 2e 0a  0a 4c 69 62 72 61 72 79  |s well...Library|
00001770  20 47 72 6f 75 70 20 3d  3e 20 3c 45 76 65 6e 74  | Group => <Event|
00001780  73 3d 3e 4c 69 62 47 72  6f 75 70 45 76 65 6e 74  |s=>LibGroupEvent|
00001790  73 3e 55 73 65 72 20 46  4e 20 28 50 52 4f 43 73  |s>User FN (PROCs|
000017a0  68 65 6c 6c 5f 41 74 74  61 63 68 50 61 6c 65 74  |hell_AttachPalet|
000017b0  74 65 43 68 61 6e 67 65  48 61 6e 64 6c 65 72 29  |teChangeHandler)|
000017c0  0a 50 61 72 61 6d 73 20  3d 3e 0a 20 20 20 20 20  |.Params =>.     |
000017d0  20 20 20 20 4e 6f 6e 65  0a 0a 54 68 69 73 20 66  |    None..This f|
000017e0  75 6e 63 74 69 6f 6e 20  69 73 20 63 61 6c 6c 65  |unction is calle|
000017f0  64 20 77 68 65 6e 20 61  20 50 61 6c 65 74 74 65  |d when a Palette|
00001800  43 68 61 6e 67 65 20 6d  65 73 73 61 67 65 20 69  |Change message i|
00001810  73 0a 72 65 63 65 69 76  65 64 20 61 6e 64 20 61  |s.received and a|
00001820  6c 73 6f 20 77 68 65 6e  20 3c 50 52 4f 43 73 68  |lso when <PROCsh|
00001830  65 6c 6c 5f 41 74 74 61  63 68 50 61 6c 65 74 74  |ell_AttachPalett|
00001840  65 43 68 61 6e 67 65 48  61 6e 64 6c 65 72 3e 0a  |eChangeHandler>.|
00001850  69 73 20 63 61 6c 6c 65  64 2e 50 52 4f 43 73 68  |is called.PROCsh|
00001860  65 6c 6c 5f 41 74 74 61  63 68 4d 6f 64 65 43 68  |ell_AttachModeCh|
00001870  61 6e 67 65 48 61 6e 64  6c 65 72 28 29 0a 50 61  |angeHandler().Pa|
00001880  72 61 6d 73 20 3d 3e 0a  20 20 20 20 20 20 20 20  |rams =>.        |
00001890  20 73 74 72 20 3c 66 75  6e 63 74 69 6f 6e 20 6e  | str <function n|
000018a0  61 6d 65 3d 3e 55 73 65  72 46 4e 30 34 3e 0a 0a  |ame=>UserFN04>..|
000018b0  52 65 67 69 73 74 65 72  73 20 61 20 66 75 6e 63  |Registers a func|
000018c0  74 69 6f 6e 20 6e 61 6d  65 20 74 6f 20 62 65 20  |tion name to be |
000018d0  63 61 6c 6c 65 64 20 77  68 65 6e 20 61 20 4d 6f  |called when a Mo|
000018e0  64 65 43 68 61 6e 67 65  0a 6d 65 73 73 61 67 65  |deChange.message|
000018f0  20 69 73 20 72 65 63 65  69 76 65 64 2e 20 54 68  | is received. Th|
00001900  69 73 20 61 6c 6c 6f 77  73 20 74 68 65 20 61 70  |is allows the ap|
00001910  70 6c 69 63 61 74 69 6f  6e 20 74 6f 20 63 68 65  |plication to che|
00001920  63 6b 0a 61 6e 79 20 6d  6f 64 65 2d 73 70 65 63  |ck.any mode-spec|
00001930  69 66 69 63 20 70 61 72  61 6d 65 74 65 72 73 20  |ific parameters |
00001940  73 75 63 68 20 61 73 20  73 63 72 65 65 6e 20 77  |such as screen w|
00001950  69 64 74 68 20 65 74 63  2e 20 49 74 0a 69 73 20  |idth etc. It.is |
00001960  61 6c 73 6f 20 63 61 6c  6c 65 64 20 77 68 65 6e  |also called when|
00001970  20 74 68 65 20 68 61 6e  64 6c 65 72 20 69 73 20  | the handler is |
00001980  73 65 74 20 75 70 20 73  6f 20 74 68 61 74 20 74  |set up so that t|
00001990  68 65 20 75 73 65 72 0a  61 70 70 6c 69 63 61 74  |he user.applicat|
000019a0  69 6f 6e 20 63 61 6e 20  6e 6f 74 65 20 74 68 65  |ion can note the|
000019b0  20 63 75 72 72 65 6e 74  20 70 61 72 61 6d 65 74  | current paramet|
000019c0  65 72 73 2e 0a 0a 4c 69  62 72 61 72 79 20 47 72  |ers...Library Gr|
000019d0  6f 75 70 20 3d 3e 20 3c  45 76 65 6e 74 73 3d 3e  |oup => <Events=>|
000019e0  4c 69 62 47 72 6f 75 70  45 76 65 6e 74 73 3e 55  |LibGroupEvents>U|
000019f0  73 65 72 20 46 4e 20 28  50 52 4f 43 73 68 65 6c  |ser FN (PROCshel|
00001a00  6c 5f 41 74 74 61 63 68  4d 6f 64 65 43 68 61 6e  |l_AttachModeChan|
00001a10  67 65 48 61 6e 64 6c 65  72 29 20 0a 50 61 72 61  |geHandler) .Para|
00001a20  6d 73 20 3d 3e 20 0a 20  20 20 20 20 20 20 20 20  |ms => .         |
00001a30  4e 6f 6e 65 20 0a 20 0a  54 68 69 73 20 66 75 6e  |None . .This fun|
00001a40  63 74 69 6f 6e 20 69 73  20 63 61 6c 6c 65 64 20  |ction is called |
00001a50  77 68 65 6e 20 61 20 4d  6f 64 65 43 68 61 6e 67  |when a ModeChang|
00001a60  65 20 6d 65 73 73 61 67  65 20 69 73 0a 72 65 63  |e message is.rec|
00001a70  65 69 76 65 64 20 61 6e  64 20 61 6c 73 6f 20 77  |eived and also w|
00001a80  68 65 6e 20 3c 50 52 4f  43 73 68 65 6c 6c 5f 41  |hen <PROCshell_A|
00001a90  74 74 61 63 68 4d 6f 64  65 43 68 61 6e 67 65 48  |ttachModeChangeH|
00001aa0  61 6e 64 6c 65 72 3e 0a  69 73 20 63 61 6c 6c 65  |andler>.is calle|
00001ab0  64 50 52 4f 43 73 68 65  6c 6c 5f 41 74 74 61 63  |dPROCshell_Attac|
00001ac0  68 54 61 73 6b 49 6e 69  74 69 61 6c 69 73 65 48  |hTaskInitialiseH|
00001ad0  61 6e 64 6c 65 72 28 29  0a 50 61 72 61 6d 73 20  |andler().Params |
00001ae0  3d 3e 0a 20 20 20 20 20  20 20 20 20 73 74 72 20  |=>.         str |
00001af0  3c 66 75 6e 63 74 69 6f  6e 20 6e 61 6d 65 3d 3e  |<function name=>|
00001b00  55 73 65 72 46 4e 30 35  3e 0a 0a 52 65 67 69 73  |UserFN05>..Regis|
00001b10  74 65 72 73 20 61 20 66  75 6e 63 74 69 6f 6e 20  |ters a function |
00001b20  6e 61 6d 65 20 74 6f 20  62 65 20 63 61 6c 6c 65  |name to be calle|
00001b30  64 20 77 68 65 6e 20 61  20 54 61 73 6b 49 6e 69  |d when a TaskIni|
00001b40  74 69 61 6c 69 73 65 0a  6d 65 73 73 61 67 65 20  |tialise.message |
00001b50  69 73 20 72 65 63 65 69  76 65 64 2e 20 54 68 69  |is received. Thi|
00001b60  73 20 61 6c 6c 6f 77 73  20 74 68 65 20 61 70 70  |s allows the app|
00001b70  6c 69 63 61 74 69 6f 6e  20 74 6f 20 6b 65 65 70  |lication to keep|
00001b80  0a 74 72 61 63 6b 20 6f  66 20 61 6e 79 20 6e 65  |.track of any ne|
00001b90  77 20 74 61 73 6b 73 20  73 74 61 72 74 65 64 20  |w tasks started |
00001ba0  61 66 74 65 72 20 69 74  2e 0a 0a 4c 69 62 72 61  |after it...Libra|
00001bb0  72 79 20 47 72 6f 75 70  20 3d 3e 20 3c 45 76 65  |ry Group => <Eve|
00001bc0  6e 74 73 3d 3e 4c 69 62  47 72 6f 75 70 45 76 65  |nts=>LibGroupEve|
00001bd0  6e 74 73 3e 55 73 65 72  20 46 4e 20 28 50 52 4f  |nts>User FN (PRO|
00001be0  43 73 68 65 6c 6c 5f 41  74 74 61 63 68 54 61 73  |Cshell_AttachTas|
00001bf0  6b 49 6e 69 74 69 61 6c  69 73 65 48 61 6e 64 6c  |kInitialiseHandl|
00001c00  65 72 29 20 0a 50 61 72  61 6d 73 20 3d 3e 20 0a  |er) .Params => .|
00001c10  20 20 20 20 20 20 20 20  20 4e 6f 6e 65 20 0a 20  |         None . |
00001c20  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 69  |.This function i|
00001c30  73 20 63 61 6c 6c 65 64  20 77 68 65 6e 20 61 20  |s called when a |
00001c40  54 61 73 6b 49 6e 69 74  69 61 6c 69 73 65 20 20  |TaskInitialise  |
00001c50  6d 65 73 73 61 67 65 20  69 73 0a 72 65 63 65 69  |message is.recei|
00001c60  76 65 64 2e 55 73 65 72  20 46 4e 20 28 50 52 4f  |ved.User FN (PRO|
00001c70  43 73 68 65 6c 6c 5f 41  74 74 61 63 68 54 61 73  |Cshell_AttachTas|
00001c80  6b 43 6c 6f 73 65 44 6f  77 6e 48 61 6e 64 6c 65  |kCloseDownHandle|
00001c90  72 29 0a 50 61 72 61 6d  73 20 3d 3e 20 0a 20 20  |r).Params => .  |
00001ca0  20 20 20 20 20 20 20 4e  6f 6e 65 20 0a 20 0a 54  |       None . .T|
00001cb0  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 69 73 20  |his function is |
00001cc0  63 61 6c 6c 65 64 20 77  68 65 6e 20 61 20 54 61  |called when a Ta|
00001cd0  73 6b 43 6c 6f 73 65 44  6f 77 6e 20 6d 65 73 73  |skCloseDown mess|
00001ce0  61 67 65 20 69 73 0a 72  65 63 65 69 76 65 64 2e  |age is.received.|
00001cf0  50 52 4f 43 73 68 65 6c  6c 5f 41 74 74 61 63 68  |PROCshell_Attach|
00001d00  54 61 73 6b 43 6c 6f 73  65 44 6f 77 6e 48 61 6e  |TaskCloseDownHan|
00001d10  64 6c 65 72 28 29 0a 50  61 72 61 6d 73 20 3d 3e  |dler().Params =>|
00001d20  0a 20 20 20 20 20 20 20  20 20 73 74 72 20 3c 66  |.         str <f|
00001d30  75 6e 63 74 69 6f 6e 20  6e 61 6d 65 3d 3e 55 73  |unction name=>Us|
00001d40  65 72 46 4e 30 36 3e 0a  0a 52 65 67 69 73 74 65  |erFN06>..Registe|
00001d50  72 73 20 61 20 66 75 6e  63 74 69 6f 6e 20 6e 61  |rs a function na|
00001d60  6d 65 20 74 6f 20 62 65  20 63 61 6c 6c 65 64 20  |me to be called |
00001d70  77 68 65 6e 20 61 20 54  61 73 6b 43 6c 6f 73 65  |when a TaskClose|
00001d80  44 6f 77 6e 0a 6d 65 73  73 61 67 65 20 69 73 20  |Down.message is |
00001d90  72 65 63 65 69 76 65 64  2e 54 68 69 73 20 6d 65  |received.This me|
00001da0  73 73 61 67 65 20 69 73  20 73 65 6e 74 20 77 68  |ssage is sent wh|
00001db0  65 6e 20 61 20 74 61 73  6b 20 28 6f 74 68 65 72  |en a task (other|
00001dc0  0a 74 68 61 6e 20 74 68  65 20 63 75 72 72 65 6e  |.than the curren|
00001dd0  74 20 6f 6e 65 29 20 69  73 20 6b 69 6c 6c 65 64  |t one) is killed|
00001de0  2e 0a 0a 4c 69 62 72 61  72 79 20 47 72 6f 75 70  |...Library Group|
00001df0  20 3d 3e 20 3c 45 76 65  6e 74 73 3d 3e 4c 69 62  | => <Events=>Lib|
00001e00  47 72 6f 75 70 45 76 65  6e 74 73 3e 50 52 4f 43  |GroupEvents>PROC|
00001e10  73 68 65 6c 6c 5f 48 65  61 70 42 6c 6f 63 6b 52  |shell_HeapBlockR|
00001e20  65 74 75 72 6e 28 29 0a  50 61 72 61 6d 73 20 3d  |eturn().Params =|
00001e30  3e 20 20 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |>  .         int|
00001e40  20 61 64 64 72 65 73 73  20 6f 66 20 68 65 61 70  | address of heap|
00001e50  20 62 6c 6f 63 6b 0a 0a  52 65 6c 65 61 73 65 73  | block..Releases|
00001e60  20 74 68 65 20 67 69 76  65 6e 20 68 65 61 70 20  | the given heap |
00001e70  62 6c 6f 63 6b 2c 20 72  65 74 75 72 6e 69 6e 67  |block, returning|
00001e80  20 6d 65 6d 6f 72 79 20  74 6f 0a 74 68 65 20 66  | memory to.the f|
00001e90  72 65 65 20 70 6f 6f 6c  2e 0a 0a 4c 69 62 72 61  |ree pool...Libra|
00001ea0  72 79 20 47 72 6f 75 70  20 3d 3e 20 3c 4d 65 6d  |ry Group => <Mem|
00001eb0  6f 72 79 3d 3e 4c 69 62  47 72 6f 75 70 4d 65 6d  |ory=>LibGroupMem|
00001ec0  6f 72 79 3e 50 52 4f 43  73 68 65 6c 6c 5f 48 65  |ory>PROCshell_He|
00001ed0  61 70 42 6c 6f 63 6b 49  6e 69 74 28 29 0a 50 61  |apBlockInit().Pa|
00001ee0  72 61 6d 73 20 3d 3e 0a  20 20 20 20 20 20 20 20  |rams =>.        |
00001ef0  20 4e 6f 6e 65 20 20 20  20 20 20 20 20 20 20 20  | None           |
00001f00  20 20 20 20 20 0a 0a 4c  69 62 72 61 72 79 20 47  |     ..Library G|
00001f10  72 6f 75 70 20 3d 3e 20  3c 4d 65 6d 6f 72 79 3d  |roup => <Memory=|
00001f20  3e 4c 69 62 47 72 6f 75  70 4d 65 6d 6f 72 79 3e  |>LibGroupMemory>|
00001f30  50 52 4f 43 73 68 65 6c  6c 5f 41 74 74 61 63 68  |PROCshell_Attach|
00001f40  50 61 6e 65 28 29 0a 50  61 72 61 6d 73 20 3d 3e  |Pane().Params =>|
00001f50  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 77 69  |.         int wi|
00001f60  6e 64 6f 77 20 68 61 6e  64 6c 65 0a 20 20 20 20  |ndow handle.    |
00001f70  20 20 20 20 20 69 6e 74  20 70 61 6e 65 20 68 61  |     int pane ha|
00001f80  6e 64 6c 65 0a 20 20 20  20 20 20 20 20 20 69 6e  |ndle.         in|
00001f90  74 20 3c 70 61 6e 65 20  66 6c 61 67 73 3d 3e 50  |t <pane flags=>P|
00001fa0  61 6e 65 46 6c 61 67 73  3e 0a 20 20 20 20 20 20  |aneFlags>.      |
00001fb0  20 20 20 69 6e 74 20 78  20 6f 66 66 73 65 74 20  |   int x offset |
00001fc0  6f 66 20 70 61 6e 65 20  72 65 6c 61 74 69 76 65  |of pane relative|
00001fd0  20 74 6f 20 70 61 72 65  6e 74 20 77 69 6e 64 6f  | to parent windo|
00001fe0  77 0a 20 20 20 20 20 20  20 20 20 69 6e 74 20 79  |w.         int y|
00001ff0  20 6f 66 66 73 65 74 20  6f 66 20 70 61 6e 65 20  | offset of pane |
00002000  72 65 6c 61 74 69 76 65  20 74 6f 20 70 61 72 65  |relative to pare|
00002010  6e 74 20 77 69 6e 64 6f  77 0a 0a 49 66 20 6e 65  |nt window..If ne|
00002020  63 65 73 73 61 72 79 20  74 68 65 20 77 69 6e 64  |cessary the wind|
00002030  6f 77 20 66 6c 61 67 73  20 6f 66 20 74 68 65 20  |ow flags of the |
00002040  70 61 6e 65 20 77 69 6e  64 6f 77 20 61 72 65 0a  |pane window are.|
00002050  63 68 61 6e 67 65 64 20  73 6f 20 74 68 61 74 20  |changed so that |
00002060  74 68 65 20 27 70 61 6e  65 27 20 62 69 74 20 69  |the 'pane' bit i|
00002070  73 20 6f 6e 20 61 6e 64  20 74 68 65 20 27 6d 6f  |s on and the 'mo|
00002080  76 65 61 62 6c 65 27 0a  62 69 74 20 69 73 20 6f  |veable'.bit is o|
00002090  66 66 2c 20 73 6f 20 74  68 61 74 20 65 64 69 74  |ff, so that edit|
000020a0  69 6e 67 20 74 68 65 20  74 65 6d 70 6c 61 74 65  |ing the template|
000020b0  20 66 69 6c 65 20 69 73  20 6e 6f 74 0a 72 65 71  | file is not.req|
000020c0  75 69 72 65 64 2e 0a 0a  4c 69 62 72 61 72 79 20  |uired...Library |
000020d0  47 72 6f 75 70 20 3d 3e  20 3c 45 76 65 6e 74 73  |Group => <Events|
000020e0  3d 3e 4c 69 62 47 72 6f  75 70 45 76 65 6e 74 73  |=>LibGroupEvents|
000020f0  3e 50 61 6e 65 20 46 6c  61 67 73 20 28 50 52 4f  |>Pane Flags (PRO|
00002100  43 73 68 65 6c 6c 5f 41  74 74 61 63 68 50 61 6e  |Cshell_AttachPan|
00002110  65 29 0a 30 20 3d 20 61  74 74 61 63 68 65 64 20  |e).0 = attached |
00002120  74 6f 20 70 61 72 65 6e  74 20 77 69 6e 64 6f 77  |to parent window|
00002130  20 77 6f 72 6b 20 61 72  65 61 0a 31 20 3d 20 6e  | work area.1 = n|
00002140  6f 74 20 75 73 65 64 0a  32 20 3d 20 61 74 74 61  |ot used.2 = atta|
00002150  63 68 65 64 20 74 6f 20  6c 65 66 74 20 65 64 67  |ched to left edg|
00002160  65 0a 33 20 3d 20 61 74  74 61 63 68 65 64 20 74  |e.3 = attached t|
00002170  6f 20 62 6f 74 74 6f 6d  20 65 64 67 65 0a 34 20  |o bottom edge.4 |
00002180  3d 20 61 74 74 61 63 68  65 64 20 74 6f 20 72 69  |= attached to ri|
00002190  67 68 74 20 65 64 67 65  0a 35 20 3d 20 61 74 74  |ght edge.5 = att|
000021a0  61 63 68 65 64 20 74 6f  20 74 6f 70 20 65 64 67  |ached to top edg|
000021b0  65 50 52 4f 43 73 68 65  6c 6c 5f 41 74 74 61 63  |ePROCshell_Attac|
000021c0  68 44 61 74 61 4c 6f 61  64 28 29 0a 41 74 74 61  |hDataLoad().Atta|
000021d0  63 68 65 73 20 61 20 64  61 74 61 6c 6f 61 64 20  |ches a dataload |
000021e0  68 61 6e 64 6c 65 72 20  74 6f 20 61 20 77 69 6e  |handler to a win|
000021f0  64 6f 77 2f 69 63 6f 6e  20 70 61 69 72 2e 0a 0a  |dow/icon pair...|
00002200  50 61 72 61 6d 73 20 3d  3e 0a 20 20 20 20 20 20  |Params =>.      |
00002210  20 20 20 69 6e 74 20 20  77 69 6e 64 6f 77 20 68  |   int  window h|
00002220  61 6e 64 6c 65 0a 20 20  20 20 20 20 20 20 20 69  |andle.         i|
00002230  6e 74 20 20 69 63 6f 6e  20 68 61 6e 64 6c 65 0a  |nt  icon handle.|
00002240  20 20 20 20 20 20 20 20  20 69 6e 74 20 20 66 69  |         int  fi|
00002250  6c 65 74 79 70 65 20 74  6f 20 72 65 63 6f 67 6e  |letype to recogn|
00002260  69 73 65 20 61 6e 64 20  6f 70 74 69 6f 6e 61 6c  |ise and optional|
00002270  6c 79 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |ly.             |
00002280  20 6c 6f 61 64 20 28 73  65 65 20 6e 6f 20 6c 6f  | load (see no lo|
00002290  61 64 20 66 6c 61 67 29  0a 20 20 20 20 20 20 20  |ad flag).       |
000022a0  20 20 73 74 72 20 20 3c  66 75 6e 63 74 69 6f 6e  |  str  <function|
000022b0  20 6e 61 6d 65 3d 3e 55  73 65 72 46 4e 30 31 3e  | name=>UserFN01>|
000022c0  0a 20 20 20 20 20 20 20  20 20 62 6f 6f 6c 20 3c  |.         bool <|
000022d0  6e 6f 20 6c 6f 61 64 20  66 6c 61 67 3d 3e 6e 6f  |no load flag=>no|
000022e0  6c 6f 61 64 3e 0a 0a 4e  6f 74 65 20 74 68 61 74  |load>..Note that|
000022f0  20 69 74 20 69 73 20 70  6f 73 73 69 62 6c 65 20  | it is possible |
00002300  74 6f 20 63 61 6c 6c 20  74 68 69 73 20 66 75 6e  |to call this fun|
00002310  63 74 69 6f 6e 20 66 6f  72 0a 74 68 65 20 73 61  |ction for.the sa|
00002320  6d 65 20 77 69 6e 64 6f  77 2f 69 63 6f 6e 20 70  |me window/icon p|
00002330  61 69 72 20 6d 6f 72 65  20 74 68 61 6e 20 6f 6e  |air more than on|
00002340  63 65 20 67 69 76 69 6e  67 0a 64 69 66 66 65 72  |ce giving.differ|
00002350  65 6e 74 20 66 69 6c 65  74 79 70 65 73 20 28 61  |ent filetypes (a|
00002360  6e 64 20 66 75 6e 63 74  69 6f 6e 20 6e 61 6d 65  |nd function name|
00002370  73 20 69 66 20 72 65 71  75 69 72 65 64 29 0a 74  |s if required).t|
00002380  6f 20 61 6c 6c 6f 77 20  74 68 65 20 68 61 6e 64  |o allow the hand|
00002390  6c 69 6e 67 20 6f 66 20  6d 75 6c 74 69 70 6c 65  |ling of multiple|
000023a0  20 66 69 6c 65 74 79 70  65 73 2e 0a 0a 4c 69 62  | filetypes...Lib|
000023b0  72 61 72 79 20 47 72 6f  75 70 20 3d 3e 20 3c 45  |rary Group => <E|
000023c0  76 65 6e 74 73 3d 3e 4c  69 62 47 72 6f 75 70 45  |vents=>LibGroupE|
000023d0  76 65 6e 74 73 3e 50 52  4f 43 73 68 65 6c 6c 5f  |vents>PROCshell_|
000023e0  41 74 74 61 63 68 44 61  74 61 53 61 76 65 28 29  |AttachDataSave()|
000023f0  0a 41 74 74 61 63 68 65  73 20 61 20 64 61 74 61  |.Attaches a data|
00002400  73 61 76 65 20 68 61 6e  64 6c 65 72 20 74 6f 20  |save handler to |
00002410  61 20 77 69 6e 64 6f 77  2f 69 63 6f 6e 20 70 61  |a window/icon pa|
00002420  69 72 2e 20 41 0a 74 79  70 69 63 61 6c 20 75 73  |ir. A.typical us|
00002430  65 20 77 6f 75 6c 64 20  62 65 20 69 6e 20 61 20  |e would be in a |
00002440  27 53 61 76 65 20 41 73  27 20 64 69 61 6c 6f 67  |'Save As' dialog|
00002450  20 62 6f 78 2c 20 74 68  65 0a 69 63 6f 6e 20 68  | box, the.icon h|
00002460  61 6e 64 6c 65 20 62 65  69 6e 67 20 74 68 61 74  |andle being that|
00002470  20 6f 66 20 74 68 65 20  27 46 69 6c 65 20 54 79  | of the 'File Ty|
00002480  70 65 27 20 69 63 6f 6e  2e 0a 20 0a 50 61 72 61  |pe' icon.. .Para|
00002490  6d 73 20 3d 3e 0a 20 20  20 20 20 20 20 20 20 69  |ms =>.         i|
000024a0  6e 74 20 77 69 6e 64 6f  77 20 68 61 6e 64 6c 65  |nt window handle|
000024b0  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 69 63  |.         int ic|
000024c0  6f 6e 20 68 61 6e 64 6c  65 0a 20 20 20 20 20 20  |on handle.      |
000024d0  20 20 20 69 6e 74 20 61  64 64 72 65 73 73 20 6f  |   int address o|
000024e0  66 20 68 65 61 70 62 6c  6f 63 6b 20 68 6f 6c 64  |f heapblock hold|
000024f0  69 6e 67 20 64 61 74 61  20 6f 72 0a 20 20 20 20  |ing data or.    |
00002500  20 20 20 20 20 20 20 20  20 74 68 65 20 3c 65 73  |         the <es|
00002510  74 69 6d 61 74 65 64 20  66 69 6c 65 20 73 69 7a  |timated file siz|
00002520  65 3d 3e 45 73 74 53 69  7a 65 3e 0a 20 20 20 20  |e=>EstSize>.    |
00002530  20 20 20 20 20 69 6e 74  20 66 69 6c 65 20 74 79  |     int file ty|
00002540  70 65 20 66 6f 72 20 73  61 76 65 64 20 66 69 6c  |pe for saved fil|
00002550  65 0a 20 20 20 20 20 20  20 20 20 69 6e 74 20 69  |e.         int i|
00002560  63 6f 6e 20 6e 72 20 6f  66 20 66 69 6c 65 6e 61  |con nr of filena|
00002570  6d 65 20 69 63 6f 6e 0a  20 20 20 20 20 20 20 20  |me icon.        |
00002580  20 73 74 72 20 3c 66 75  6e 63 74 69 6f 6e 20 6e  | str <function n|
00002590  61 6d 65 3d 3e 55 73 65  72 46 4e 30 32 3e 20 28  |ame=>UserFN02> (|
000025a0  6f 70 74 69 6f 6e 61 6c  20 69 66 20 64 61 74 61  |optional if data|
000025b0  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 69 73  |.             is|
000025c0  20 68 65 6c 64 20 69 6e  20 61 20 68 65 61 70 62  | held in a heapb|
000025d0  6c 6f 63 6b 29 0a 0a 49  66 20 69 63 6f 6e 20 30  |lock)..If icon 0|
000025e0  20 69 6e 20 74 68 65 20  77 69 6e 64 6f 77 20 69  | in the window i|
000025f0  73 20 63 6c 69 63 6b 65  64 20 6f 6e 20 74 68 65  |s clicked on the|
00002600  6e 20 61 20 63 68 65 63  6b 0a 69 73 20 6d 61 64  |n a check.is mad|
00002610  65 20 74 68 61 74 20 74  68 65 20 66 69 6c 65 6e  |e that the filen|
00002620  61 6d 65 20 69 63 6f 6e  20 63 6f 6e 74 61 69 6e  |ame icon contain|
00002630  73 20 61 20 76 61 6c 69  64 0a 70 61 74 68 20 6e  |s a valid.path n|
00002640  61 6d 65 2c 20 67 65 6e  65 72 61 74 69 6e 67 20  |ame, generating |
00002650  61 6e 20 65 72 72 6f 72  20 69 66 20 69 74 20 64  |an error if it d|
00002660  6f 65 73 20 6e 6f 74 2e  0a 0a 4e 6f 74 65 20 74  |oes not...Note t|
00002670  68 61 74 20 74 68 65 20  74 68 69 72 64 20 70 61  |hat the third pa|
00002680  72 61 6d 65 74 65 72 20  63 61 6e 20 70 6f 69 6e  |rameter can poin|
00002690  74 20 74 6f 20 61 20 68  65 61 70 0a 62 6c 6f 63  |t to a heap.bloc|
000026a0  6b 20 63 6f 6e 74 61 69  6e 69 6e 67 20 74 68 65  |k containing the|
000026b0  20 64 61 74 61 20 74 6f  20 73 61 76 65 20 77 68  | data to save wh|
000026c0  69 63 68 20 6d 65 61 6e  73 20 74 68 61 74 0a 74  |ich means that.t|
000026d0  68 65 20 64 61 74 61 20  6d 75 73 74 20 65 78 69  |he data must exi|
000026e0  73 74 20 69 6e 20 74 68  65 20 62 6c 6f 63 6b 20  |st in the block |
000026f0  28 6f 72 20 61 74 20 6c  65 61 73 74 20 74 68 65  |(or at least the|
00002700  0a 62 6c 6f 63 6b 20 6d  75 73 74 20 65 78 69 73  |.block must exis|
00002710  74 20 61 6e 64 20 62 65  20 74 68 65 20 63 6f 72  |t and be the cor|
00002720  72 65 63 74 20 73 69 7a  65 29 20 62 65 66 6f 72  |rect size) befor|
00002730  65 0a 74 68 69 73 20 72  6f 75 74 69 6e 65 20 69  |e.this routine i|
00002740  73 20 63 61 6c 6c 65 64  2e 20 49 66 20 74 68 69  |s called. If thi|
00002750  73 20 70 61 72 61 6d 65  74 65 72 20 69 73 20 3e  |s parameter is >|
00002760  26 38 30 30 30 0a 69 74  20 69 73 20 74 61 6b 65  |&8000.it is take|
00002770  6e 20 74 6f 20 62 65 20  61 20 70 6f 69 6e 74 65  |n to be a pointe|
00002780  72 20 74 6f 20 74 68 65  20 68 65 61 70 20 62 6c  |r to the heap bl|
00002790  6f 63 6b 2c 20 61 6e 64  0a 74 68 65 20 6e 61 6d  |ock, and.the nam|
000027a0  65 20 6f 66 20 74 68 65  20 66 75 6e 63 74 69 6f  |e of the functio|
000027b0  6e 20 74 6f 20 70 65 72  66 6f 72 6d 20 74 68 65  |n to perform the|
000027c0  20 73 61 76 65 20 69 73  0a 6f 70 74 69 6f 6e 61  | save is.optiona|
000027d0  6c 2e 0a 0a 41 6c 74 65  72 6e 61 74 69 76 65 6c  |l...Alternativel|
000027e0  79 20 74 68 69 73 20 70  61 72 61 6d 65 74 65 72  |y this parameter|
000027f0  20 63 61 6e 20 62 65 20  61 6e 20 65 73 74 69 6d  | can be an estim|
00002800  61 74 65 64 0a 66 69 6c  65 20 73 69 7a 65 20 28  |ated.file size (|
00002810  69 2e 65 2e 20 5c 3c 26  38 30 30 30 29 20 69 6e  |i.e. \<&8000) in|
00002820  20 77 68 69 63 68 20 63  61 73 65 20 74 68 65 20  | which case the |
00002830  75 73 65 72 0a 66 75 6e  63 74 69 6f 6e 20 6d 61  |user.function ma|
00002840  79 20 77 72 69 74 65 20  64 69 72 65 63 74 6c 79  |y write directly|
00002850  20 69 6e 74 6f 20 74 68  65 20 66 69 6c 65 20 77  | into the file w|
00002860  68 6f 73 65 0a 6e 61 6d  65 20 69 73 20 67 69 76  |hose.name is giv|
00002870  65 6e 20 61 73 20 61 20  70 61 72 61 6d 65 74 65  |en as a paramete|
00002880  72 20 74 6f 20 74 68 65  20 66 75 6e 63 74 69 6f  |r to the functio|
00002890  6e 2e 20 52 41 4d 0a 74  72 61 6e 73 66 65 72 20  |n. RAM.transfer |
000028a0  69 73 20 6e 6f 74 20 70  6f 73 73 69 62 6c 65 20  |is not possible |
000028b0  69 66 20 74 68 69 73 20  69 73 20 74 68 65 20 63  |if this is the c|
000028c0  61 73 65 2e 0a 0a 0a 4c  69 62 72 61 72 79 20 47  |ase....Library G|
000028d0  72 6f 75 70 20 3d 3e 20  3c 45 76 65 6e 74 73 3d  |roup => <Events=|
000028e0  3e 4c 69 62 47 72 6f 75  70 45 76 65 6e 74 73 3e  |>LibGroupEvents>|
000028f0  50 52 4f 43 73 68 65 6c  6c 5f 41 74 74 61 63 68  |PROCshell_Attach|
00002900  4d 65 6e 75 28 29 0a 50  61 72 61 6d 73 20 3d 3e  |Menu().Params =>|
00002910  20 20 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |  .         int |
00002920  20 77 69 6e 64 6f 77 20  68 61 6e 64 6c 65 0a 20  | window handle. |
00002930  20 20 20 20 20 20 20 20  69 6e 74 20 20 69 63 6f  |        int  ico|
00002940  6e 20 68 61 6e 64 6c 65  0a 20 20 20 20 20 20 20  |n handle.       |
00002950  20 20 69 6e 74 20 20 6d  65 6e 75 20 68 61 6e 64  |  int  menu hand|
00002960  6c 65 0a 20 20 20 20 20  20 20 20 20 62 6f 6f 6c  |le.         bool|
00002970  20 73 68 69 66 74 20 66  6c 61 67 20 28 6e 6f 74  | shift flag (not|
00002980  20 69 6d 70 6c 65 6d 65  6e 74 65 64 29 0a 20 20  | implemented).  |
00002990  20 20 20 20 20 20 20 62  6f 6f 6c 20 63 74 72 6c  |       bool ctrl|
000029a0  20 20 66 6c 61 67 20 28  6e 6f 74 20 69 6d 70 6c  |  flag (not impl|
000029b0  65 6d 65 6e 74 65 64 29  0a 20 20 20 20 20 20 20  |emented).       |
000029c0  20 20 62 6f 6f 6c 20 61  6c 74 20 20 20 66 6c 61  |  bool alt   fla|
000029d0  67 20 28 6e 6f 74 20 69  6d 70 6c 65 6d 65 6e 74  |g (not implement|
000029e0  65 64 29 0a 0a 54 68 65  20 73 68 69 66 74 2c 20  |ed)..The shift, |
000029f0  63 74 72 6c 20 61 6e 64  20 61 6c 74 20 66 6c 61  |ctrl and alt fla|
00002a00  67 73 20 61 72 65 20 66  6f 72 20 66 75 74 75 72  |gs are for futur|
00002a10  65 0a 65 6e 68 61 6e 63  65 6d 65 6e 74 73 20 74  |e.enhancements t|
00002a20  6f 20 74 68 65 20 6c 69  62 72 61 72 79 20 61 6e  |o the library an|
00002a30  64 20 73 68 6f 75 6c 64  20 62 65 20 73 65 74 0a  |d should be set.|
00002a40  74 6f 20 30 20 6f 6e 20  74 68 69 73 20 72 65 6c  |to 0 on this rel|
00002a50  65 61 73 65 2e 0a 0a 49  66 20 74 68 65 20 6d 65  |ease...If the me|
00002a60  6e 75 20 69 73 20 61 74  74 61 63 68 65 64 20 74  |nu is attached t|
00002a70  6f 20 61 6e 20 69 63 6f  6e 20 28 72 61 74 68 65  |o an icon (rathe|
00002a80  72 20 74 68 61 6e 0a 61  20 77 69 6e 64 6f 77 20  |r than.a window |
00002a90  77 6f 72 6b 20 61 72 65  61 29 20 61 20 63 6c 69  |work area) a cli|
00002aa0  63 6b 20 77 69 74 68 20  53 45 4c 45 43 54 2c 20  |ck with SELECT, |
00002ab0  4d 45 4e 55 0a 6f 72 20  41 44 4a 55 53 54 20 77  |MENU.or ADJUST w|
00002ac0  69 6c 6c 20 6f 70 65 6e  20 74 68 65 20 6d 65 6e  |ill open the men|
00002ad0  75 2e 20 41 6c 73 6f 20  74 68 65 20 62 75 74 74  |u. Also the butt|
00002ae0  6f 6e 0a 74 79 70 65 20  6f 66 20 74 68 65 20 69  |on.type of the i|
00002af0  63 6f 6e 20 69 73 20 63  68 61 6e 67 65 64 20 74  |con is changed t|
00002b00  6f 20 31 20 28 63 6c 69  63 6b 29 20 74 6f 0a 65  |o 1 (click) to.e|
00002b10  6e 73 75 72 65 20 74 68  65 20 6d 65 6e 75 20 70  |nsure the menu p|
00002b20  6f 70 73 20 75 70 20 77  68 65 6e 20 53 45 4c 45  |ops up when SELE|
00002b30  43 54 20 6f 72 20 41 44  4a 55 53 54 0a 69 73 20  |CT or ADJUST.is |
00002b40  75 73 65 64 2e 0a 0a 4c  69 62 72 61 72 79 20 47  |used...Library G|
00002b50  72 6f 75 70 20 3d 3e 20  3c 4d 65 6e 75 73 3d 3e  |roup => <Menus=>|
00002b60  4c 69 62 47 72 6f 75 70  4d 65 6e 75 73 3e 2c 20  |LibGroupMenus>, |
00002b70  3c 45 76 65 6e 74 73 3d  3e 4c 69 62 47 72 6f 75  |<Events=>LibGrou|
00002b80  70 45 76 65 6e 74 73 3e  50 52 4f 43 73 68 65 6c  |pEvents>PROCshel|
00002b90  6c 5f 41 74 74 61 63 68  4d 65 6e 75 4d 61 6b 65  |l_AttachMenuMake|
00002ba0  72 28 29 0a 50 61 72 61  6d 73 20 3d 3e 20 20 20  |r().Params =>   |
00002bb0  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 77 69  |.         int wi|
00002bc0  6e 64 6f 77 20 68 61 6e  64 6c 65 20 20 20 0a 20  |ndow handle   . |
00002bd0  20 20 20 20 20 20 20 20  69 6e 74 20 69 63 6f 6e  |        int icon|
00002be0  20 68 61 6e 64 6c 65 0a  20 20 20 20 20 20 20 20  | handle.        |
00002bf0  20 73 74 72 20 3c 66 75  6e 63 74 69 6f 6e 20 6e  | str <function n|
00002c00  61 6d 65 3d 3e 55 73 65  72 46 4e 31 36 3e 0a 0a  |ame=>UserFN16>..|
00002c10  52 65 67 69 73 74 65 72  73 20 61 20 66 75 6e 63  |Registers a func|
00002c20  74 69 6f 6e 20 74 6f 20  62 65 20 63 61 6c 6c 65  |tion to be calle|
00002c30  64 20 62 65 66 6f 72 65  20 74 68 65 0a 6d 65 6e  |d before the.men|
00002c40  75 20 69 73 20 6f 70 65  6e 65 64 2c 20 61 6c 6c  |u is opened, all|
00002c50  6f 77 69 6e 67 20 74 69  63 6b 69 6e 67 2c 20 73  |owing ticking, s|
00002c60  68 61 64 69 6e 67 20 65  74 63 0a 6f 66 20 6d 65  |hading etc.of me|
00002c70  6e 75 20 69 74 65 6d 73  2e 0a 0a 4c 69 62 72 61  |nu items...Libra|
00002c80  72 79 20 47 72 6f 75 70  20 3d 3e 20 3c 4d 65 6e  |ry Group => <Men|
00002c90  75 73 3d 3e 4c 69 62 47  72 6f 75 70 4d 65 6e 75  |us=>LibGroupMenu|
00002ca0  73 3e 2c 3c 45 76 65 6e  74 73 3d 3e 4c 69 62 47  |s>,<Events=>LibG|
00002cb0  72 6f 75 70 45 76 65 6e  74 73 3e 50 52 4f 43 73  |roupEvents>PROCs|
00002cc0  68 65 6c 6c 5f 41 74 74  61 63 68 43 6c 69 63 6b  |hell_AttachClick|
00002cd0  53 65 6c 65 63 74 28 29  0a 50 61 72 61 6d 73 20  |Select().Params |
00002ce0  3d 3e 20 20 20 20 0a 20  20 20 20 20 20 20 20 20  |=>    .         |
00002cf0  69 6e 74 20 77 69 6e 64  6f 77 20 68 61 6e 64 6c  |int window handl|
00002d00  65 20 20 20 20 20 20 20  0a 20 20 20 20 20 20 20  |e       .       |
00002d10  20 20 69 6e 74 20 69 63  6f 6e 20 68 61 6e 64 6c  |  int icon handl|
00002d20  65 20 0a 20 20 20 20 20  20 20 20 20 73 74 72 20  |e .         str |
00002d30  3c 66 75 6e 63 74 69 6f  6e 20 6e 61 6d 65 3d 3e  |<function name=>|
00002d40  55 73 65 72 46 4e 31 33  3e 0a 0a 4c 69 62 72 61  |UserFN13>..Libra|
00002d50  72 79 20 47 72 6f 75 70  20 3d 3e 20 3c 45 76 65  |ry Group => <Eve|
00002d60  6e 74 73 3d 3e 4c 69 62  47 72 6f 75 70 45 76 65  |nts=>LibGroupEve|
00002d70  6e 74 73 3e 50 52 4f 43  73 68 65 6c 6c 5f 41 74  |nts>PROCshell_At|
00002d80  74 61 63 68 43 6c 69 63  6b 41 64 6a 75 73 74 28  |tachClickAdjust(|
00002d90  29 0a 50 61 72 61 6d 73  20 3d 3e 20 20 20 20 20  |).Params =>     |
00002da0  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 77 69  |.         int wi|
00002db0  6e 64 6f 77 20 68 61 6e  64 6c 65 20 20 20 20 20  |ndow handle     |
00002dc0  20 20 20 20 20 20 0a 20  20 20 20 20 20 20 20 20  |      .         |
00002dd0  69 6e 74 20 69 63 6f 6e  20 68 61 6e 64 6c 65 20  |int icon handle |
00002de0  20 0a 20 20 20 20 20 20  20 20 20 73 74 72 20 3c  | .         str <|
00002df0  66 75 6e 63 74 69 6f 6e  20 6e 61 6d 65 3d 3e 55  |function name=>U|
00002e00  73 65 72 46 4e 31 35 3e  0a 0a 4c 69 62 72 61 72  |serFN15>..Librar|
00002e10  79 20 47 72 6f 75 70 20  3d 3e 20 3c 45 76 65 6e  |y Group => <Even|
00002e20  74 73 3d 3e 4c 69 62 47  72 6f 75 70 45 76 65 6e  |ts=>LibGroupEven|
00002e30  74 73 3e 50 52 4f 43 73  68 65 6c 6c 5f 41 74 74  |ts>PROCshell_Att|
00002e40  61 63 68 55 73 65 72 52  65 64 72 61 77 28 29 0a  |achUserRedraw().|
00002e50  50 61 72 61 6d 73 20 3d  3e 20 20 20 20 20 20 0a  |Params =>      .|
00002e60  20 20 20 20 20 20 20 20  20 69 6e 74 20 77 69 6e  |         int win|
00002e70  64 6f 77 20 68 61 6e 64  6c 65 20 20 20 20 20 20  |dow handle      |
00002e80  0a 20 20 20 20 20 20 20  20 20 73 74 72 20 3c 66  |.         str <f|
00002e90  75 6e 63 74 69 6f 6e 20  6e 61 6d 65 3d 3e 55 73  |unction name=>Us|
00002ea0  65 72 46 4e 31 34 3e 0a  0a 41 20 63 68 65 63 6b  |erFN14>..A check|
00002eb0  20 69 73 20 6d 61 64 65  20 74 6f 20 65 6e 73 75  | is made to ensu|
00002ec0  72 65 20 74 68 61 74 20  74 68 65 0a 27 41 75 74  |re that the.'Aut|
00002ed0  6f 20 72 65 64 72 61 77  27 20 66 6c 61 67 20 6f  |o redraw' flag o|
00002ee0  66 20 74 68 65 20 77 69  6e 64 6f 77 20 69 73 0a  |f the window is.|
00002ef0  6f 66 66 2c 20 61 6e 64  20 69 66 20 6e 65 63 65  |off, and if nece|
00002f00  73 73 61 72 79 20 74 68  65 20 62 69 74 20 69 73  |ssary the bit is|
00002f10  20 63 6c 65 61 72 65 64  0a 61 75 74 6f 6d 61 74  | cleared.automat|
00002f20  69 63 61 6c 6c 79 20 28  69 2e 65 2e 20 79 6f 75  |ically (i.e. you|
00002f30  20 64 6f 6e 27 74 20 68  61 76 65 20 74 6f 20 73  | don't have to s|
00002f40  65 74 0a 74 68 65 20 73  74 61 74 65 20 6f 66 20  |et.the state of |
00002f50  74 68 65 20 66 6c 61 67  20 75 73 69 6e 67 20 21  |the flag using !|
00002f60  46 6f 72 6d 45 64 20 6f  72 0a 73 69 6d 69 6c 61  |FormEd or.simila|
00002f70  72 29 2e 0a 0a 4c 69 62  72 61 72 79 20 47 72 6f  |r)...Library Gro|
00002f80  75 70 20 3d 3e 20 3c 45  76 65 6e 74 73 3d 3e 4c  |up => <Events=>L|
00002f90  69 62 47 72 6f 75 70 45  76 65 6e 74 73 3e 50 52  |ibGroupEvents>PR|
00002fa0  4f 43 73 68 65 6c 6c 5f  41 74 74 61 63 68 44 72  |OCshell_AttachDr|
00002fb0  61 67 28 29 0a 50 61 72  61 6d 73 20 3d 3e 20 20  |ag().Params =>  |
00002fc0  20 20 20 20 20 20 0a 20  20 20 20 20 20 20 20 20  |      .         |
00002fd0  69 6e 74 20 77 69 6e 64  6f 77 20 68 61 6e 64 6c  |int window handl|
00002fe0  65 20 20 20 20 20 20 20  20 0a 20 20 20 20 20 20  |e        .      |
00002ff0  20 20 20 69 6e 74 20 69  63 6f 6e 20 68 61 6e 64  |   int icon hand|
00003000  6c 65 20 20 20 20 20 0a  20 20 20 20 20 20 20 20  |le     .        |
00003010  20 73 74 72 20 3c 66 75  6e 63 74 69 6f 6e 20 6e  | str <function n|
00003020  61 6d 65 3d 3e 55 73 65  72 46 4e 32 32 3e 0a 0a  |ame=>UserFN22>..|
00003030  4c 69 62 72 61 72 79 20  47 72 6f 75 70 20 3d 3e  |Library Group =>|
00003040  20 3c 45 76 65 6e 74 73  3d 3e 4c 69 62 47 72 6f  | <Events=>LibGro|
00003050  75 70 45 76 65 6e 74 73  3e 50 52 4f 43 73 68 65  |upEvents>PROCshe|
00003060  6c 6c 5f 41 74 74 61 63  68 48 65 6c 70 54 61 67  |ll_AttachHelpTag|
00003070  28 29 0a 50 61 72 61 6d  73 20 3d 3e 20 20 20 20  |().Params =>    |
00003080  20 20 20 20 20 0a 20 20  20 20 20 20 20 20 20 69  |     .         i|
00003090  6e 74 20 77 69 6e 64 6f  77 20 68 61 6e 64 6c 65  |nt window handle|
000030a0  20 20 20 20 20 20 20 20  20 0a 20 20 20 20 20 20  |         .      |
000030b0  20 20 20 69 6e 74 20 69  63 6f 6e 20 68 61 6e 64  |   int icon hand|
000030c0  6c 65 20 20 20 20 20 20  0a 20 20 20 20 20 20 20  |le      .       |
000030d0  20 20 73 74 72 20 3c 6d  65 73 73 61 67 65 20 74  |  str <message t|
000030e0  61 67 3d 3e 4d 65 73 73  61 67 65 54 61 67 3e 0a  |ag=>MessageTag>.|
000030f0  0a 4e 6f 74 65 20 74 68  61 74 20 61 6e 79 20 6d  |.Note that any m|
00003100  65 73 73 61 67 65 20 74  61 67 73 20 66 6f 75 6e  |essage tags foun|
00003110  64 20 69 6e 20 69 63 6f  6e 0a 76 61 6c 69 64 61  |d in icon.valida|
00003120  74 69 6f 6e 20 73 74 72  69 6e 67 73 20 6f 76 65  |tion strings ove|
00003130  72 72 69 64 65 20 74 61  67 73 20 73 65 74 20 75  |rride tags set u|
00003140  70 20 62 79 0a 74 68 69  73 20 72 6f 75 74 69 6e  |p by.this routin|
00003150  65 2e 0a 0a 4c 69 62 72  61 72 79 20 47 72 6f 75  |e...Library Grou|
00003160  70 20 3d 3e 20 3c 45 76  65 6e 74 73 3d 3e 4c 69  |p => <Events=>Li|
00003170  62 47 72 6f 75 70 45 76  65 6e 74 73 3e 50 52 4f  |bGroupEvents>PRO|
00003180  43 57 69 6d 70 43 6c 6f  73 65 44 6f 77 6e 0a 50  |CWimpCloseDown.P|
00003190  61 72 61 6d 73 20 3d 3e  0a 20 20 20 20 20 20 20  |arams =>.       |
000031a0  20 20 4e 6f 6e 65 0a 0a  4e 6f 74 20 75 73 65 64  |  None..Not used|
000031b0  20 69 6e 20 45 76 6e 74  53 68 65 6c 6c 20 6c 69  | in EvntShell li|
000031c0  62 72 61 72 79 20 2d 20  75 73 65 20 3c 50 52 4f  |brary - use <PRO|
000031d0  43 73 68 65 6c 6c 5f 57  69 6d 70 43 6c 6f 73 65  |Cshell_WimpClose|
000031e0  44 6f 77 6e 5f 49 3e 20  69 6e 73 74 65 61 64 2e  |Down_I> instead.|
000031f0  0a 0a 4c 69 62 72 61 72  79 20 47 72 6f 75 70 20  |..Library Group |
00003200  3d 3e 20 3c 53 68 65 6c  6c 3d 3e 4c 69 62 47 72  |=> <Shell=>LibGr|
00003210  6f 75 70 53 68 65 6c 6c  3e 50 52 4f 43 73 68 65  |oupShell>PROCshe|
00003220  6c 6c 5f 57 69 6d 70 43  6c 6f 73 65 44 6f 77 6e  |ll_WimpCloseDown|
00003230  5f 49 0a 50 61 72 61 6d  73 20 3d 3e 20 0a 20 20  |_I.Params => .  |
00003240  20 20 20 20 20 20 20 4e  6f 6e 65 0a 0a 43 61 6c  |       None..Cal|
00003250  6c 65 64 20 77 68 65 6e  20 74 68 65 20 61 70 70  |led when the app|
00003260  6c 69 63 61 74 69 6f 6e  20 73 68 75 74 73 20 64  |lication shuts d|
00003270  6f 77 6e 0a 28 74 68 65  20 6c 69 62 72 61 72 79  |own.(the library|
00003280  20 63 61 6c 6c 73 20 74  68 69 73 20 61 75 74 6f  | calls this auto|
00003290  6d 61 74 69 63 61 6c 6c  79 29 0a 0a 4c 69 62 72  |matically)..Libr|
000032a0  61 72 79 20 47 72 6f 75  70 20 3d 3e 20 3c 53 68  |ary Group => <Sh|
000032b0  65 6c 6c 3d 3e 4c 69 62  47 72 6f 75 70 53 68 65  |ell=>LibGroupShe|
000032c0  6c 6c 3e 50 52 4f 43 73  68 65 6c 6c 5f 49 6e 69  |ll>PROCshell_Ini|
000032d0  74 0a 50 61 72 61 6d 73  20 3d 3e 20 20 0a 20 20  |t.Params =>  .  |
000032e0  20 20 20 20 20 20 20 4e  6f 6e 65 0a 0a 4c 69 62  |       None..Lib|
000032f0  72 61 72 79 20 47 72 6f  75 70 20 3d 3e 20 3c 53  |rary Group => <S|
00003300  68 65 6c 6c 3d 3e 4c 69  62 47 72 6f 75 70 53 68  |hell=>LibGroupSh|
00003310  65 6c 6c 3e 50 52 4f 43  73 68 65 6c 6c 5f 52 65  |ell>PROCshell_Re|
00003320  73 6f 75 72 63 65 73 49  6e 69 74 0a 50 61 72 61  |sourcesInit.Para|
00003330  6d 73 20 3d 3e 20 20 20  0a 20 20 20 20 20 20 20  |ms =>   .       |
00003340  20 20 4e 6f 6e 65 0a 0a  4c 6f 61 64 73 20 77 69  |  None..Loads wi|
00003350  6e 64 6f 77 20 74 65 6d  70 6c 61 74 65 73 2c 20  |ndow templates, |
00003360  73 70 72 69 74 65 73 20  61 6e 64 20 6d 65 73 73  |sprites and mess|
00003370  61 67 65 20 66 69 6c 65  73 2e 0a 54 68 69 73 20  |age files..This |
00003380  50 52 4f 43 20 6d 75 73  74 20 62 65 20 63 61 6c  |PROC must be cal|
00003390  6c 65 64 20 65 61 72 6c  79 20 69 6e 20 74 68 65  |led early in the|
000033a0  20 70 72 6f 67 72 61 6d  2c 20 69 2e 65 0a 62 65  | program, i.e.be|
000033b0  66 6f 72 65 20 74 68 65  20 77 69 6d 70 20 70 6f  |fore the wimp po|
000033c0  6c 6c 20 6c 6f 6f 70 20  73 74 61 72 74 73 2e 0a  |ll loop starts..|
000033d0  0a 4c 69 62 72 61 72 79  20 47 72 6f 75 70 20 3d  |.Library Group =|
000033e0  3e 20 3c 53 68 65 6c 6c  3d 3e 4c 69 62 47 72 6f  |> <Shell=>LibGro|
000033f0  75 70 53 68 65 6c 6c 3e  53 74 69 6c 6c 20 54 6f  |upShell>Still To|
00003400  20 44 6f 20 4c 69 73 74  0a 20 48 61 6e 64 6c 69  | Do List. Handli|
00003410  6e 67 20 6f 66 20 66 69  6c 65 74 79 70 65 73 20  |ng of filetypes |
00003420  6f 74 68 65 72 20 74 68  61 6e 20 26 46 46 46 20  |other than &FFF |
00003430  6e 65 65 64 65 64 20 69  6e 20 44 61 74 61 53 61  |needed in DataSa|
00003440  76 65 20 28 4d 75 6c 74  69 70 6c 65 0a 20 66 69  |ve (Multiple. fi|
00003450  6c 65 74 79 70 65 73 2f  75 73 65 72 5f 46 4e 73  |letypes/user_FNs|
00003460  20 72 65 71 75 69 72 65  64 20 2d 20 73 65 74 20  | required - set |
00003470  75 70 20 6c 69 73 74 73  29 0a 20 46 6f 72 63 65  |up lists). Force|
00003480  20 65 76 61 6c 75 61 74  65 64 20 66 75 6e 63 74  | evaluated funct|
00003490  69 6f 6e 20 6e 61 6d 65  73 20 74 6f 20 73 74 61  |ion names to sta|
000034a0  72 74 20 77 69 74 68 20  27 5f 27 20 28 65 72 72  |rt with '_' (err|
000034b0  6f 72 20 6f 74 68 65 72  77 69 73 65 29 0a 20 57  |or otherwise). W|
000034c0  72 69 74 65 20 62 75 6d  70 20 69 63 6f 6e 20 68  |rite bump icon h|
000034d0  61 6e 64 6c 65 72 0a 20  57 72 69 74 65 20 6c 69  |andler. Write li|
000034e0  73 74 20 69 63 6f 6e 20  68 61 6e 64 6c 65 72 0a  |st icon handler.|
000034f0  20 46 6f 72 20 21 41 70  70 42 75 69 6c 64 20 69  | For !AppBuild i|
00003500  63 6f 6e 62 61 72 20 6d  65 6e 75 20 74 69 74 6c  |conbar menu titl|
00003510  65 20 6d 75 73 74 20 62  65 20 63 68 61 6e 67 65  |e must be change|
00003520  64 20 74 6f 20 4e 65 77  41 70 70 20 6e 61 6d 65  |d to NewApp name|
00003530  0a 20 52 65 44 72 61 77  20 65 76 65 6e 74 20 6d  |. ReDraw event m|
00003540  75 73 74 20 62 65 20 69  6d 70 6c 65 6d 65 6e 74  |ust be implement|
00003550  65 64 20 69 6e 20 6c 69  62 72 61 72 79 0a 20 43  |ed in library. C|
00003560  68 65 63 6b 20 6f 75 74  20 4d 65 73 73 61 67 65  |heck out Message|
00003570  54 72 61 6e 73 5f 4d 65  6e 75 4d 61 6b 65 20 66  |Trans_MenuMake f|
00003580  6f 72 20 63 72 65 61 74  69 6e 67 20 6d 65 6e 75  |or creating menu|
00003590  73 20 66 72 6f 6d 20 6d  65 73 73 61 67 65 20 66  |s from message f|
000035a0  69 6c 65 73 0a 20 43 68  61 6e 67 65 20 6e 61 6d  |iles. Change nam|
000035b0  65 73 20 6f 66 20 21 52  75 6e 49 6d 61 67 65 20  |es of !RunImage |
000035c0  74 6f 20 41 70 70 4e 61  6d 65 20 77 69 74 68 6f  |to AppName witho|
000035d0  75 74 20 21 0a 20 50 6f  69 6e 74 65 72 20 73 68  |ut !. Pointer sh|
000035e0  61 70 65 20 63 68 61 6e  67 65 20 65 76 65 6e 74  |ape change event|
000035f0  20 6e 65 65 64 65 64 0a  20 49 6d 70 6c 65 6d 65  | needed. Impleme|
00003600  6e 74 20 53 74 72 6f 6e  67 48 6c 70 20 73 79 73  |nt StrongHlp sys|
00003610  74 65 6d 20 28 73 68 65  6c 6c 5f 49 6e 73 74 61  |tem (shell_Insta|
00003620  6c 6c 53 74 72 6f 6e 67  48 6c 70 29 0a 20 43 68  |llStrongHlp). Ch|
00003630  65 63 6b 20 6f 75 74 20  70 6f 73 73 69 62 69 6c  |eck out possibil|
00003640  69 74 79 20 6f 66 20 49  4e 53 54 41 4c 4c 69 6e  |ity of INSTALLin|
00003650  67 20 45 76 6e 74 53 68  65 6c 6c 20 6c 69 62 72  |g EvntShell libr|
00003660  61 72 79 0a 20 41 75 74  6f 73 63 72 6f 6c 6c 20  |ary. Autoscroll |
00003670  68 61 6e 64 6c 65 72 20  77 68 65 6e 20 64 72 61  |handler when dra|
00003680  67 67 69 6e 67 20 77 69  74 68 69 6e 20 61 20 77  |gging within a w|
00003690  69 6e 64 6f 77 0a 4a 61  6e 2d 48 65 72 6d 61 6e  |indow.Jan-Herman|
000036a0  20 42 75 69 6e 69 6e 67  0a 4a 61 6e 2d 48 65 72  | Buining.Jan-Her|
000036b0  6d 61 6e 20 42 75 69 6e  69 6e 67 20 20 20 20 20  |man Buining     |
000036c0  20 20 41 63 6f 72 6e 20  42 42 53 20 3a 20 20 20  |  Acorn BBS :   |
000036d0  20 28 30 32 30 29 36 36  33 31 38 34 39 0a 53 6f  | (020)6631849.So|
000036e0  65 6e 64 61 73 74 72 61  61 74 20 31 33 33 20 20  |endastraat 133  |
000036f0  20 20 20 20 20 20 20 20  48 75 63 6f 20 42 42 53  |        Huco BBS|
00003700  20 3a 20 20 20 20 28 30  31 38 30 34 29 33 30 37  | :    (01804)307|
00003710  38 35 0a 39 37 31 35 20  4e 50 20 47 72 6f 6e 69  |85.9715 NP Groni|
00003720  6e 67 65 6e 20 20 20 20  20 20 4c 61 20 4c 75 6e  |ngen      La Lun|
00003730  61 20 42 42 53 20 3a 20  20 20 20 28 30 32 35 39  |a BBS :    (0259|
00003740  33 29 34 31 38 39 31 0a  28 30 35 30 29 37 33 35  |3)41891.(050)735|
00003750  32 32 38 0a 54 68 65 20  4e 65 74 68 65 72 6c 61  |228.The Netherla|
00003760  6e 64 73 20 20 20 20 20  20 20 20 20 20 20 20 20  |nds             |
00003770  20 45 75 6e 65 74 20 3a  20 6a 68 62 40 6e 65 61  | Eunet : jhb@nea|
00003780  62 62 73 2e 55 55 43 50  0a 0a 54 68 61 6e 6b 73  |bbs.UUCP..Thanks|
00003790  20 61 72 65 20 61 6c 73  6f 20 64 75 65 20 74 6f  | are also due to|
000037a0  20 74 68 65 20 61 62 6f  76 65 20 66 6f 72 20 68  | the above for h|
000037b0  69 73 20 57 41 53 50 20  61 70 70 6c 69 63 61 74  |is WASP applicat|
000037c0  69 6f 6e 0a 73 68 65 6c  6c 20 77 69 74 68 6f 75  |ion.shell withou|
000037d0  74 20 77 68 69 63 68 20  49 20 77 6f 75 6c 64 20  |t which I would |
000037e0  68 61 76 65 20 6e 65 76  65 72 20 66 69 67 75 72  |have never figur|
000037f0  65 64 20 6f 75 74 20 68  6f 77 0a 74 6f 20 64 6f  |ed out how.to do|
00003800  20 52 41 4d 20 66 69 6c  65 20 74 72 61 6e 73 66  | RAM file transf|
00003810  65 72 73 2e 20 41 6e 20  65 78 63 65 6c 6c 65 6e  |ers. An excellen|
00003820  74 20 70 69 65 63 65 20  6f 66 0a 70 72 6f 67 72  |t piece of.progr|
00003830  61 6d 6d 69 6e 67 2c 20  62 75 74 20 61 20 6c 69  |amming, but a li|
00003840  74 74 6c 65 20 6c 69 6d  69 74 65 64 20 66 6f 72  |ttle limited for|
00003850  20 6d 79 20 74 61 73 74  65 2e 44 61 76 69 64 20  | my taste.David |
00003860  42 72 65 61 6b 77 65 6c  6c 0a 44 61 76 69 64 20  |Breakwell.David |
00003870  42 72 65 61 6b 77 65 6c  6c 0a 32 32 20 43 6f 62  |Breakwell.22 Cob|
00003880  73 20 57 61 79 0a 4e 65  77 20 48 61 77 2c 0a 41  |s Way.New Haw,.A|
00003890  64 64 6c 65 73 74 6f 6e  65 0a 53 75 72 72 65 79  |ddlestone.Surrey|
000038a0  0a 45 4e 47 4c 41 4e 44  0a 0a 53 68 6f 75 6c 64  |.ENGLAND..Should|
000038b0  20 62 65 20 67 65 74 74  69 6e 67 20 6d 6f 73 74  | be getting most|
000038c0  0a 6f 66 20 74 68 65 20  63 72 65 64 69 74 20 62  |.of the credit b|
000038d0  65 63 61 75 73 65 20 61  73 0a 66 61 72 20 61 73  |ecause as.far as|
000038e0  20 49 20 6b 6e 6f 77 20  68 65 20 68 61 64 20 74  | I know he had t|
000038f0  68 65 0a 69 64 65 61 20  69 6e 20 74 68 65 20 66  |he.idea in the f|
00003900  69 72 73 74 20 70 6c 61  63 65 2e 0a 48 65 20 70  |irst place..He p|
00003910  72 6f 76 69 64 65 64 20  6d 65 20 77 69 74 68 20  |rovided me with |
00003920  61 20 63 6f 70 79 0a 6f  66 20 61 6e 20 65 61 72  |a copy.of an ear|
00003930  6c 79 20 76 65 72 73 69  6f 6e 20 6f 66 20 68 69  |ly version of hi|
00003940  73 0a 61 70 70 6c 69 63  61 74 69 6f 6e 20 77 68  |s.application wh|
00003950  69 63 68 20 20 77 61 73  20 6d 75 63 68 0a 62 65  |ich  was much.be|
00003960  74 74 65 72 20 63 6f 64  65 64 20 74 68 61 6e 20  |tter coded than |
00003970  6d 69 6e 65 20 62 75 74  0a 69 6e 63 6f 6d 70 6c  |mine but.incompl|
00003980  65 74 65 2c 20 73 6f 20  49 20 63 61 6d 65 20 75  |ete, so I came u|
00003990  70 0a 77 69 74 68 20 6d  79 20 6f 77 6e 20 61 74  |p.with my own at|
000039a0  74 65 6d 70 74 2e 47 75  74 74 6f 72 6d 20 27 41  |tempt.Guttorm 'A|
000039b0  72 6d 73 74 72 6f 6e 67  27 20 56 69 6b 0a 47 75  |rmstrong' Vik.Gu|
000039c0  74 74 6f 72 6d 20 27 41  72 6d 73 74 72 6f 6e 67  |ttorm 'Armstrong|
000039d0  27 20 56 69 6b 0a 48 f8  6c 62 65 6b 6b 65 6e 20  |' Vik.H.lbekken |
000039e0  32 30 38 0a 35 32 36 32  20 41 72 6e 61 74 76 65  |208.5262 Arnatve|
000039f0  69 74 0a 4e 4f 52 57 41  59 0a 0a 50 72 6f 76 69  |it.NORWAY..Provi|
00003a00  64 65 72 20 6f 66 20 53  74 72 6f 6e 67 45 44 32  |der of StrongED2|
00003a10  20 77 68 69 63 68 20 77  61 73 0a 75 73 65 64 20  | which was.used |
00003a20  66 6f 72 20 64 65 76 65  6c 6f 70 69 6e 67 20 74  |for developing t|
00003a30  68 65 20 6c 69 62 72 61  72 79 0a 63 6f 64 65 2c  |he library.code,|
00003a40  20 61 6e 64 20 53 74 72  6f 6e 67 48 6c 70 20 77  | and StrongHlp w|
00003a50  68 69 63 68 20 61 6c 6c  6f 77 73 0a 74 6f 20 72  |hich allows.to r|
00003a60  65 61 64 20 74 68 69 73  20 73 6f 20 6e 69 63 65  |ead this so nice|
00003a70  6c 79 2e 0a 0a 4e 6f 74  65 20 74 68 61 74 20 53  |ly...Note that S|
00003a80  74 72 6f 6e 67 45 44 2f  53 74 72 6f 6e 67 48 6c  |trongED/StrongHl|
00003a90  70 20 61 72 65 0a 6e 6f  77 20 63 6f 6d 6d 65 72  |p are.now commer|
00003aa0  63 69 61 6c 20 70 72 6f  64 75 63 74 73 20 61 76  |cial products av|
00003ab0  61 69 6c 61 62 6c 65 0a  66 72 6f 6d 20 53 74 61  |ailable.from Sta|
00003ac0  6c 6c 69 6f 6e 20 53 6f  66 74 77 61 72 65 2e 43  |llion Software.C|
00003ad0  72 65 64 69 74 73 0a 41  20 73 70 65 63 69 61 6c  |redits.A special|
00003ae0  20 6d 65 6e 74 69 6f 6e  20 66 6f 72 20 61 6c 6c  | mention for all|
00003af0  20 74 68 65 20 63 6f 6e  74 72 69 62 75 74 6f 72  | the contributor|
00003b00  73 20 28 68 6f 77 65 76  65 72 0a 75 6e 77 69 74  |s (however.unwit|
00003b10  74 69 6e 67 6c 79 21 29  20 74 6f 20 74 68 65 20  |tingly!) to the |
00003b20  45 76 6e 74 53 68 65 6c  6c 20 6c 69 62 72 61 72  |EvntShell librar|
00003b30  79 2e 0a 0a 23 54 61 62  6c 65 20 36 20 32 34 0a  |y...#Table 6 24.|
00003b40  20 20 20 20 3c 44 61 76  69 64 20 42 72 65 61 6b  |    <David Break|
00003b50  77 65 6c 6c 20 20 20 20  20 20 3d 3e 42 72 65 61  |well      =>Brea|
00003b60  6b 77 65 6c 6c 3e 0a 20  20 20 20 3c 4a 61 6e 2d  |kwell>.    <Jan-|
00003b70  48 65 72 6d 61 6e 20 42  75 69 6e 69 6e 67 20 20  |Herman Buining  |
00003b80  20 3d 3e 42 75 69 6e 69  6e 67 3e 0a 20 20 20 20  | =>Buining>.    |
00003b90  3c 53 69 6d 6f 6e 20 48  75 6e 74 69 6e 67 64 6f  |<Simon Huntingdo|
00003ba0  6e 20 20 20 20 20 3d 3e  48 75 6e 74 69 6e 67 64  |n     =>Huntingd|
00003bb0  6f 6e 3e 0a 20 20 20 20  3c 41 6c 65 78 20 50 65  |on>.    <Alex Pe|
00003bc0  74 72 6f 76 20 20 20 20  20 20 20 20 20 20 3d 3e  |trov          =>|
00003bd0  50 65 74 72 6f 76 3e 0a  20 20 20 20 3c 52 6f 62  |Petrov>.    <Rob|
00003be0  65 72 74 20 53 65 61 67  6f 20 20 20 20 20 20 20  |ert Seago       |
00003bf0  20 20 3d 3e 53 65 61 67  6f 3e 0a 20 20 20 20 3c  |  =>Seago>.    <|
00003c00  52 69 73 63 20 55 73 65  72 20 20 20 20 20 20 20  |Risc User       |
00003c10  20 20 20 20 20 3d 3e 52  69 73 63 55 73 65 72 3e  |     =>RiscUser>|
00003c20  0a 20 20 20 20 3c 4a 6f  72 69 73 20 52 d6 6c 69  |.    <Joris R.li|
00003c30  6e 67 20 20 20 20 20 20  20 20 20 3d 3e 6a 6f 72  |ng         =>jor|
00003c40  69 73 3e 0a 20 20 20 20  3c 43 79 20 42 6f 6f 6b  |is>.    <Cy Book|
00003c50  65 72 20 20 20 20 20 20  20 20 20 20 20 20 3d 3e  |er            =>|
00003c60  42 6f 6f 6b 65 72 3e 0a  20 20 20 20 3c 47 75 74  |Booker>.    <Gut|
00003c70  74 6f 72 6d 20 56 69 6b  20 20 20 20 20 20 20 20  |torm Vik        |
00003c80  20 20 3d 3e 56 69 6b 3e  0a 20 20 20 20 3c 4f 6c  |  =>Vik>.    <Ol|
00003c90  61 66 20 4b 72 75 6d 6e  6f 77 20 20 20 20 20 20  |af Krumnow      |
00003ca0  20 20 20 3d 3e 4b 72 75  6d 6e 6f 77 3e 0a 20 20  |   =>Krumnow>.  |
00003cb0  20 20 3c 48 65 72 62 65  72 74 20 7a 75 72 20 4e  |  <Herbert zur N|
00003cc0  65 64 64 65 6e 20 20 20  3d 3e 4e 65 64 64 65 6e  |edden   =>Nedden|
00003cd0  3e 0a 23 45 6e 64 54 61  62 6c 65 20 20 50 52 4f  |>.#EndTable  PRO|
00003ce0  43 73 68 65 6c 6c 5f 4f  70 65 6e 57 69 6e 64 6f  |Cshell_OpenWindo|
00003cf0  77 28 29 0a 50 61 72 61  6d 73 20 3d 3e 20 20 20  |w().Params =>   |
00003d00  20 20 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |  .         int |
00003d10  77 69 6e 64 6f 77 20 68  61 6e 64 6c 65 0a 20 20  |window handle.  |
00003d20  20 20 20 20 20 20 20 69  6e 74 20 66 75 6c 6c 20  |       int full |
00003d30  66 6c 61 67 0a 20 20 20  20 20 20 20 20 20 69 6e  |flag.         in|
00003d40  74 20 66 72 6f 6e 74 20  66 6c 61 67 0a 0a 41 6e  |t front flag..An|
00003d50  79 20 70 61 6e 65 73 20  61 74 74 61 63 68 65 64  |y panes attached|
00003d60  20 74 6f 20 74 68 65 20  77 69 6e 64 6f 77 20 77  | to the window w|
00003d70  69 74 68 0a 3c 50 52 4f  43 73 68 65 6c 6c 5f 41  |ith.<PROCshell_A|
00003d80  74 74 61 63 68 50 61 6e  65 3e 20 77 69 6c 6c 20  |ttachPane> will |
00003d90  62 65 20 6f 70 65 6e 65  64 0a 61 75 74 6f 6d 61  |be opened.automa|
00003da0  74 69 63 61 6c 6c 79 2e  0a 0a 4c 69 62 72 61 72  |tically...Librar|
00003db0  79 20 47 72 6f 75 70 20  3d 5c 3e 20 3c 57 69 6e  |y Group =\> <Win|
00003dc0  64 6f 77 73 3d 3e 4c 69  62 47 72 6f 75 70 57 69  |dows=>LibGroupWi|
00003dd0  6e 64 6f 77 73 3e 50 52  4f 43 73 68 65 6c 6c 5f  |ndows>PROCshell_|
00003de0  43 6c 6f 73 65 57 69 6e  64 6f 77 28 29 0a 50 61  |CloseWindow().Pa|
00003df0  72 61 6d 73 20 3d 3e 0a  20 20 20 20 20 20 20 20  |rams =>.        |
00003e00  20 69 6e 74 20 77 69 6e  64 6f 77 20 68 61 6e 64  | int window hand|
00003e10  6c 65 0a 0a 41 6e 79 20  70 61 6e 65 73 20 61 74  |le..Any panes at|
00003e20  74 61 63 68 65 64 20 74  6f 20 74 68 65 20 77 69  |tached to the wi|
00003e30  6e 64 6f 77 20 77 69 74  68 0a 3c 50 52 4f 43 73  |ndow with.<PROCs|
00003e40  68 65 6c 6c 5f 41 74 74  61 63 68 50 61 6e 65 3e  |hell_AttachPane>|
00003e50  20 77 69 6c 6c 20 62 65  20 63 6c 6f 73 65 64 0a  | will be closed.|
00003e60  61 75 74 6f 6d 61 74 69  63 61 6c 6c 79 2e 0a 0a  |automatically...|
00003e70  4c 69 62 72 61 72 79 20  47 72 6f 75 70 20 3d 3e  |Library Group =>|
00003e80  20 3c 57 69 6e 64 6f 77  73 3d 3e 4c 69 62 47 72  | <Windows=>LibGr|
00003e90  6f 75 70 57 69 6e 64 6f  77 73 3e 50 52 4f 43 73  |oupWindows>PROCs|
00003ea0  68 65 6c 6c 5f 49 63 6f  6e 62 61 72 53 65 74 54  |hell_IconbarSetT|
00003eb0  65 78 74 28 29 0a 50 61  72 61 6d 73 20 3d 3e 0a  |ext().Params =>.|
00003ec0  20 20 20 20 20 20 20 20  20 69 6e 74 20 77 69 6e  |         int win|
00003ed0  64 6f 77 20 68 61 6e 64  6c 65 20 20 20 20 20 0a  |dow handle     .|
00003ee0  20 20 20 20 20 20 20 20  20 69 6e 74 20 69 63 6f  |         int ico|
00003ef0  6e 20 68 61 6e 64 6c 65  0a 20 20 20 20 20 20 20  |n handle.       |
00003f00  20 20 73 74 72 20 74 65  78 74 20 75 6e 64 65 72  |  str text under|
00003f10  20 69 63 6f 6e 0a 0a 4c  69 62 72 61 72 79 20 47  | icon..Library G|
00003f20  72 6f 75 70 20 3d 3e 20  3c 49 63 6f 6e 73 3d 3e  |roup => <Icons=>|
00003f30  4c 69 62 47 72 6f 75 70  49 63 6f 6e 73 3e 50 52  |LibGroupIcons>PR|
00003f40  4f 43 73 68 65 6c 6c 5f  49 63 6f 6e 50 75 74 44  |OCshell_IconPutD|
00003f50  61 74 61 28 29 0a 50 61  72 61 6d 73 20 3d 3e 20  |ata().Params => |
00003f60  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 77 69  |.         int wi|
00003f70  6e 64 6f 77 20 68 61 6e  64 6c 65 20 0a 20 20 20  |ndow handle .   |
00003f80  20 20 20 20 20 20 69 6e  74 20 69 63 6f 6e 20 68  |      int icon h|
00003f90  61 6e 64 6c 65 0a 20 20  20 20 20 20 20 20 20 73  |andle.         s|
00003fa0  74 72 20 74 65 78 74 20  74 6f 20 69 6e 73 65 72  |tr text to inser|
00003fb0  74 20 69 6e 74 6f 20 69  63 6f 6e 0a 20 20 20 20  |t into icon.    |
00003fc0  20 20 20 20 20 69 6e 74  20 72 65 64 72 61 77 20  |     int redraw |
00003fd0  66 6c 61 67 0a 0a 41 6e  20 65 72 72 6f 72 20 69  |flag..An error i|
00003fe0  73 20 67 65 6e 65 72 61  74 65 64 20 69 66 20 74  |s generated if t|
00003ff0  68 65 20 74 65 78 74 20  69 73 20 74 6f 6f 0a 6c  |he text is too.l|
00004000  6f 6e 67 20 74 6f 20 66  69 74 20 69 6e 20 74 68  |ong to fit in th|
00004010  65 20 69 63 6f 6e 2e 0a  0a 49 66 20 74 68 65 20  |e icon...If the |
00004020  72 65 64 72 61 77 20 66  6c 61 67 20 69 73 20 54  |redraw flag is T|
00004030  52 55 45 20 77 69 6d 70  20 70 6f 6c 6c 20 69 73  |RUE wimp poll is|
00004040  0a 63 61 6c 6c 65 64 20  69 6d 6d 65 64 69 61 74  |.called immediat|
00004050  65 6c 79 20 74 6f 20 75  70 64 61 74 65 20 74 68  |ely to update th|
00004060  65 20 69 63 6f 6e 0a 63  6f 6e 74 65 6e 74 73 2e  |e icon.contents.|
00004070  20 4e 6f 74 65 20 74 68  61 74 20 69 66 20 74 68  | Note that if th|
00004080  65 20 77 69 6e 64 6f 77  20 69 73 20 6e 6f 74 0a  |e window is not.|
00004090  6f 70 65 6e 20 28 66 6f  72 20 65 78 61 6d 70 6c  |open (for exampl|
000040a0  65 20 69 66 20 79 6f 75  20 61 72 65 20 63 61 6c  |e if you are cal|
000040b0  6c 69 6e 67 20 74 68 69  73 0a 72 6f 75 74 69 6e  |ling this.routin|
000040c0  65 20 69 6e 20 61 20 70  72 65 2d 6f 70 65 6e 20  |e in a pre-open |
000040d0  66 75 6e 63 74 69 6f 6e  29 20 74 68 65 6e 20 74  |function) then t|
000040e0  68 65 0a 72 65 64 72 61  77 20 66 6c 61 67 20 73  |he.redraw flag s|
000040f0  68 6f 75 6c 64 20 62 65  20 46 41 4c 53 45 20 61  |hould be FALSE a|
00004100  73 20 74 68 65 20 77 68  6f 6c 65 0a 77 69 6e 64  |s the whole.wind|
00004110  6f 77 20 77 69 6c 6c 20  62 65 20 72 65 64 72 61  |ow will be redra|
00004120  77 6e 20 77 68 65 6e 20  69 74 20 69 73 20 6f 70  |wn when it is op|
00004130  65 6e 65 64 2e 0a 0a 4c  69 62 72 61 72 79 20 47  |ened...Library G|
00004140  72 6f 75 70 20 3d 5c 3e  20 3c 49 63 6f 6e 73 3d  |roup =\> <Icons=|
00004150  3e 4c 69 62 47 72 6f 75  70 49 63 6f 6e 73 3e 50  |>LibGroupIcons>P|
00004160  52 4f 43 73 68 65 6c 6c  5f 49 63 6f 6e 52 65 64  |ROCshell_IconRed|
00004170  72 61 77 28 29 0a 50 61  72 61 6d 73 20 3d 3e 20  |raw().Params => |
00004180  20 20 20 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |   .         int|
00004190  20 77 69 6e 64 6f 77 20  68 61 6e 64 6c 65 20 20  | window handle  |
000041a0  20 20 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |  .         int |
000041b0  69 63 6f 6e 20 68 61 6e  64 6c 65 0a 0a 46 6f 72  |icon handle..For|
000041c0  63 65 20 61 20 72 65 64  72 61 77 20 6f 66 20 74  |ce a redraw of t|
000041d0  68 65 20 73 63 72 65 65  6e 0a 61 72 65 61 20 63  |he screen.area c|
000041e0  6f 76 65 72 65 64 20 62  79 20 74 68 65 20 67 69  |overed by the gi|
000041f0  76 65 6e 20 69 63 6f 6e  0a 28 69 6e 63 6c 75 64  |ven icon.(includ|
00004200  69 6e 67 20 61 6e 79 20  33 44 20 62 6f 72 64 65  |ing any 3D borde|
00004210  72 73 29 2e 0a 0a 4c 69  62 72 61 72 79 20 47 72  |rs)...Library Gr|
00004220  6f 75 70 20 3d 3e 20 3c  49 63 6f 6e 73 3d 3e 4c  |oup => <Icons=>L|
00004230  69 62 47 72 6f 75 70 49  63 6f 6e 73 3e 50 52 4f  |ibGroupIcons>PRO|
00004240  43 73 68 65 6c 6c 5f 49  63 6f 6e 50 75 74 56 61  |Cshell_IconPutVa|
00004250  6c 69 64 61 74 69 6f 6e  28 29 0a 50 61 72 61 6d  |lidation().Param|
00004260  73 20 3d 3e 20 20 20 20  20 20 0a 20 20 20 20 20  |s =>      .     |
00004270  20 20 20 20 69 6e 74 20  77 69 6e 64 6f 77 20 68  |    int window h|
00004280  61 6e 64 6c 65 20 20 20  20 20 20 0a 20 20 20 20  |andle      .    |
00004290  20 20 20 20 20 69 6e 74  20 69 63 6f 6e 20 68 61  |     int icon ha|
000042a0  6e 64 6c 65 0a 20 20 20  20 20 20 20 20 20 73 74  |ndle.         st|
000042b0  72 20 6e 65 77 20 3c 76  61 6c 69 64 61 74 69 6f  |r new <validatio|
000042c0  6e 20 73 74 72 69 6e 67  3d 3e 53 57 49 2e 77 69  |n string=>SWI.wi|
000042d0  6d 70 5f 76 61 6c 69 64  61 74 69 6f 6e 73 74 72  |mp_validationstr|
000042e0  69 6e 67 3e 0a 0a 53 65  65 20 61 6c 73 6f 20 3c  |ing>..See also <|
000042f0  46 4e 73 68 65 6c 6c 5f  49 63 6f 6e 47 65 74 56  |FNshell_IconGetV|
00004300  61 6c 69 64 61 74 69 6f  6e 3e 2e 0a 0a 4c 69 62  |alidation>...Lib|
00004310  72 61 72 79 20 47 72 6f  75 70 20 3d 3e 20 3c 49  |rary Group => <I|
00004320  63 6f 6e 73 3d 3e 4c 69  62 47 72 6f 75 70 49 63  |cons=>LibGroupIc|
00004330  6f 6e 73 3e 50 52 4f 43  73 68 65 6c 6c 5f 49 63  |ons>PROCshell_Ic|
00004340  6f 6e 53 65 6c 65 63 74  28 29 0a 50 61 72 61 6d  |onSelect().Param|
00004350  73 20 3d 3e 20 20 20 20  20 20 20 20 0a 20 20 20  |s =>        .   |
00004360  20 20 20 20 20 20 69 6e  74 20 77 69 6e 64 6f 77  |      int window|
00004370  20 68 61 6e 64 6c 65 20  20 20 20 20 20 20 20 0a  | handle        .|
00004380  20 20 20 20 20 20 20 20  20 69 6e 74 20 69 63 6f  |         int ico|
00004390  6e 20 68 61 6e 64 6c 65  0a 0a 4d 61 6b 65 20 74  |n handle..Make t|
000043a0  68 65 20 73 70 65 63 69  66 69 65 64 20 69 63 6f  |he specified ico|
000043b0  6e 20 73 65 6c 65 63 74  65 64 2e 0a 0a 4c 69 62  |n selected...Lib|
000043c0  72 61 72 79 20 47 72 6f  75 70 20 3d 3e 20 3c 49  |rary Group => <I|
000043d0  63 6f 6e 73 3d 3e 4c 69  62 47 72 6f 75 70 49 63  |cons=>LibGroupIc|
000043e0  6f 6e 73 3e 50 52 4f 43  73 68 65 6c 6c 5f 49 63  |ons>PROCshell_Ic|
000043f0  6f 6e 44 65 73 65 6c 65  63 74 28 29 0a 50 61 72  |onDeselect().Par|
00004400  61 6d 73 20 3d 3e 20 20  20 20 20 20 20 20 20 0a  |ams =>         .|
00004410  20 20 20 20 20 20 20 20  20 69 6e 74 20 77 69 6e  |         int win|
00004420  64 6f 77 20 68 61 6e 64  6c 65 20 20 20 20 20 20  |dow handle      |
00004430  20 20 20 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |   .         int|
00004440  20 69 63 6f 6e 20 68 61  6e 64 6c 65 0a 0a 4c 69  | icon handle..Li|
00004450  62 72 61 72 79 20 47 72  6f 75 70 20 3d 3e 20 3c  |brary Group => <|
00004460  49 63 6f 6e 73 3d 3e 4c  69 62 47 72 6f 75 70 49  |Icons=>LibGroupI|
00004470  63 6f 6e 73 3e 50 52 4f  43 73 68 65 6c 6c 5f 49  |cons>PROCshell_I|
00004480  63 6f 6e 55 6e 73 65 6c  65 63 74 61 62 6c 65 28  |conUnselectable(|
00004490  29 0a 50 61 72 61 6d 73  20 3d 3e 20 20 20 20 20  |).Params =>     |
000044a0  20 20 20 20 20 0a 20 20  20 20 20 20 20 20 20 69  |     .         i|
000044b0  6e 74 20 77 69 6e 64 6f  77 20 68 61 6e 64 6c 65  |nt window handle|
000044c0  20 20 20 20 20 20 20 20  20 20 0a 20 20 20 20 20  |          .     |
000044d0  20 20 20 20 69 6e 74 20  69 63 6f 6e 20 68 61 6e  |    int icon han|
000044e0  64 6c 65 0a 0a 4c 69 62  72 61 72 79 20 47 72 6f  |dle..Library Gro|
000044f0  75 70 20 3d 3e 20 3c 49  63 6f 6e 73 3d 3e 4c 69  |up => <Icons=>Li|
00004500  62 47 72 6f 75 70 49 63  6f 6e 73 3e 50 52 4f 43  |bGroupIcons>PROC|
00004510  73 68 65 6c 6c 5f 49 63  6f 6e 53 65 74 42 47 43  |shell_IconSetBGC|
00004520  6f 6c 6f 75 72 28 29 0a  50 61 72 61 6d 73 20 3d  |olour().Params =|
00004530  3e 20 20 20 20 20 20 20  20 20 20 20 0a 20 20 20  |>           .   |
00004540  20 20 20 20 20 20 69 6e  74 20 77 69 6e 64 6f 77  |      int window|
00004550  20 68 61 6e 64 6c 65 20  20 20 20 20 20 20 20 20  | handle         |
00004560  20 20 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |  .         int |
00004570  69 63 6f 6e 20 68 61 6e  64 6c 65 20 0a 20 20 20  |icon handle .   |
00004580  20 20 20 20 20 20 69 6e  74 20 62 61 63 6b 67 72  |      int backgr|
00004590  6f 75 6e 64 20 63 6f 6c  6f 75 72 0a 0a 41 6e 20  |ound colour..An |
000045a0  65 72 72 6f 72 20 69 73  20 67 65 6e 65 72 61 74  |error is generat|
000045b0  65 64 20 69 66 20 74 68  65 20 63 6f 6c 6f 75 72  |ed if the colour|
000045c0  0a 6e 75 6d 62 65 72 20  69 73 20 6f 75 74 73 69  |.number is outsi|
000045d0  64 65 20 74 68 65 20 72  61 6e 67 65 20 30 2d 31  |de the range 0-1|
000045e0  35 2e 0a 0a 53 65 65 20  61 6c 73 6f 20 3c 50 52  |5...See also <PR|
000045f0  4f 43 73 68 65 6c 6c 5f  49 63 6f 6e 53 65 74 46  |OCshell_IconSetF|
00004600  47 43 6f 6c 6f 75 72 3e  2e 0a 0a 4c 69 62 72 61  |GColour>...Libra|
00004610  72 79 20 47 72 6f 75 70  20 3d 3e 20 3c 49 63 6f  |ry Group => <Ico|
00004620  6e 73 3d 3e 4c 69 62 47  72 6f 75 70 49 63 6f 6e  |ns=>LibGroupIcon|
00004630  73 3e 50 52 4f 43 73 68  65 6c 6c 5f 49 63 6f 6e  |s>PROCshell_Icon|
00004640  53 65 74 46 47 43 6f 6c  6f 75 72 28 29 0a 50 61  |SetFGColour().Pa|
00004650  72 61 6d 73 20 3d 3e 20  20 20 20 20 20 20 20 20  |rams =>         |
00004660  20 20 20 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |   .         int|
00004670  20 77 69 6e 64 6f 77 20  68 61 6e 64 6c 65 20 20  | window handle  |
00004680  20 20 20 20 20 20 20 20  20 20 0a 20 20 20 20 20  |          .     |
00004690  20 20 20 20 69 6e 74 20  69 63 6f 6e 20 68 61 6e  |    int icon han|
000046a0  64 6c 65 20 20 0a 20 20  20 20 20 20 20 20 20 69  |dle  .         i|
000046b0  6e 74 20 66 6f 72 65 67  72 6f 75 6e 64 20 63 6f  |nt foreground co|
000046c0  6c 6f 75 72 0a 0a 41 6e  20 65 72 72 6f 72 20 69  |lour..An error i|
000046d0  73 20 67 65 6e 65 72 61  74 65 64 20 69 66 20 74  |s generated if t|
000046e0  68 65 20 63 6f 6c 6f 75  72 0a 6e 75 6d 62 65 72  |he colour.number|
000046f0  20 69 73 20 6f 75 74 73  69 64 65 20 74 68 65 20  | is outside the |
00004700  72 61 6e 67 65 20 30 2d  31 35 2e 0a 0a 53 65 65  |range 0-15...See|
00004710  20 61 6c 73 6f 20 3c 50  52 4f 43 73 68 65 6c 6c  | also <PROCshell|
00004720  5f 49 63 6f 6e 53 65 74  42 47 43 6f 6c 6f 75 72  |_IconSetBGColour|
00004730  3e 2e 0a 0a 4c 69 62 72  61 72 79 20 47 72 6f 75  |>...Library Grou|
00004740  70 20 3d 3e 20 3c 49 63  6f 6e 73 3d 3e 4c 69 62  |p => <Icons=>Lib|
00004750  47 72 6f 75 70 49 63 6f  6e 73 3e 50 52 4f 43 73  |GroupIcons>PROCs|
00004760  68 65 6c 6c 5f 43 61 72  65 74 53 65 74 50 6f 73  |hell_CaretSetPos|
00004770  69 74 69 6f 6e 28 29 0a  50 61 72 61 6d 73 20 3d  |ition().Params =|
00004780  3e 20 20 20 20 20 20 20  20 20 20 20 20 20 0a 20  |>             . |
00004790  20 20 20 20 20 20 20 20  69 6e 74 20 77 69 6e 64  |        int wind|
000047a0  6f 77 20 68 61 6e 64 6c  65 20 20 20 20 20 20 20  |ow handle       |
000047b0  20 20 20 20 20 20 0a 20  20 20 20 20 20 20 20 20  |      .         |
000047c0  69 6e 74 20 69 63 6f 6e  20 68 61 6e 64 6c 65 0a  |int icon handle.|
000047d0  20 20 20 20 20 20 20 20  20 69 6e 74 20 78 20 6f  |         int x o|
000047e0  66 66 73 65 74 20 69 6e  20 69 63 6f 6e 20 28 75  |ffset in icon (u|
000047f0  73 75 61 6c 6c 79 20 2d  31 29 0a 20 20 20 20 20  |sually -1).     |
00004800  20 20 20 20 69 6e 74 20  79 20 6f 66 66 73 65 74  |    int y offset|
00004810  20 69 6e 20 69 63 6f 6e  20 28 75 73 75 61 6c 6c  | in icon (usuall|
00004820  79 20 2d 31 29 0a 20 20  20 20 20 20 20 20 20 69  |y -1).         i|
00004830  6e 74 20 68 65 69 67 68  74 20 28 75 73 75 61 6c  |nt height (usual|
00004840  6c 79 20 2d 31 29 0a 20  20 20 20 20 20 20 20 20  |ly -1).         |
00004850  69 6e 74 20 69 6e 64 65  78 0a 0a 41 6c 6c 6f 77  |int index..Allow|
00004860  73 20 74 68 65 20 63 61  72 65 74 20 74 6f 20 62  |s the caret to b|
00004870  65 20 70 6f 73 69 74 69  6f 6e 65 64 20 77 69 74  |e positioned wit|
00004880  68 69 6e 0a 61 6e 20 69  63 6f 6e 2e 20 74 68 65  |hin.an icon. the|
00004890  20 69 6e 64 65 78 20 70  61 72 61 6d 65 74 65 72  | index parameter|
000048a0  20 69 73 20 74 68 65 0a  6e 75 6d 62 65 72 20 6f  | is the.number o|
000048b0  66 20 63 68 61 72 61 63  74 65 72 73 20 62 65 66  |f characters bef|
000048c0  6f 72 65 20 74 68 65 20  63 61 72 65 74 2e 0a 0a  |ore the caret...|
000048d0  53 65 65 20 61 6c 73 6f  20 3c 50 52 4f 43 73 68  |See also <PROCsh|
000048e0  65 6c 6c 5f 43 61 72 65  74 53 65 74 52 69 67 68  |ell_CaretSetRigh|
000048f0  74 3e 2e 0a 0a 4c 69 62  72 61 72 79 20 47 72 6f  |t>...Library Gro|
00004900  75 70 20 3d 3e 20 3c 49  63 6f 6e 73 3d 3e 4c 69  |up => <Icons=>Li|
00004910  62 47 72 6f 75 70 49 63  6f 6e 73 3e 50 52 4f 43  |bGroupIcons>PROC|
00004920  73 68 65 6c 6c 5f 43 61  72 65 74 53 65 74 52 69  |shell_CaretSetRi|
00004930  67 68 74 28 29 0a 50 61  72 61 6d 73 20 3d 3e 20  |ght().Params => |
00004940  20 20 20 20 20 20 20 20  20 20 20 20 20 0a 20 20  |             .  |
00004950  20 20 20 20 20 20 20 69  6e 74 20 77 69 6e 64 6f  |       int windo|
00004960  77 20 68 61 6e 64 6c 65  20 20 20 20 20 20 20 20  |w handle        |
00004970  20 20 20 20 20 20 0a 20  20 20 20 20 20 20 20 20  |      .         |
00004980  69 6e 74 20 69 63 6f 6e  20 68 61 6e 64 6c 65 0a  |int icon handle.|
00004990  0a 50 6f 73 69 74 69 6f  6e 73 20 74 68 65 20 63  |.Positions the c|
000049a0  61 72 65 74 20 61 74 20  74 68 65 20 72 69 67 68  |aret at the righ|
000049b0  74 20 68 61 6e 64 0a 65  6e 64 20 6f 66 20 61 6e  |t hand.end of an|
000049c0  79 20 74 65 78 74 20 69  6e 20 74 68 65 20 73 70  |y text in the sp|
000049d0  65 63 69 66 69 65 64 20  69 63 6f 6e 2e 0a 0a 53  |ecified icon...S|
000049e0  65 65 20 61 6c 73 6f 20  3c 50 52 4f 43 73 68 65  |ee also <PROCshe|
000049f0  6c 6c 5f 43 61 72 65 74  53 65 74 50 6f 73 69 74  |ll_CaretSetPosit|
00004a00  69 6f 6e 3e 2e 0a 0a 4c  69 62 72 61 72 79 20 47  |ion>...Library G|
00004a10  72 6f 75 70 20 3d 3e 20  3c 49 63 6f 6e 73 3d 3e  |roup => <Icons=>|
00004a20  4c 69 62 47 72 6f 75 70  49 63 6f 6e 73 3e 49 63  |LibGroupIcons>Ic|
00004a30  6f 6e 73 0a 23 54 61 62  6c 65 20 31 33 20 32 30  |ons.#Table 13 20|
00004a40  0a 3c 49 63 6f 6e 62 61  72 20 20 20 20 20 20 20  |.<Iconbar       |
00004a50  20 20 20 20 20 3d 3e 46  4e 73 68 65 6c 6c 5f 49  |     =>FNshell_I|
00004a60  63 6f 6e 62 61 72 3e 0a  3c 49 63 6f 6e 62 61 72  |conbar>.<Iconbar|
00004a70  53 65 74 54 65 78 74 20  20 20 20 20 3d 3e 50 52  |SetText     =>PR|
00004a80  4f 43 73 68 65 6c 6c 5f  49 63 6f 6e 62 61 72 53  |OCshell_IconbarS|
00004a90  65 74 54 65 78 74 3e 0a  3c 49 63 6f 6e 43 72 65  |etText>.<IconCre|
00004aa0  61 74 65 20 20 20 20 20  20 20 20 20 3d 3e 46 4e  |ate         =>FN|
00004ab0  73 68 65 6c 6c 5f 49 63  6f 6e 43 72 65 61 74 65  |shell_IconCreate|
00004ac0  3e 0a 3c 49 63 6f 6e 44  65 6c 65 74 65 20 20 20  |>.<IconDelete   |
00004ad0  20 20 20 20 20 20 3d 3e  50 52 4f 43 73 68 65 6c  |      =>PROCshel|
00004ae0  6c 5f 49 63 6f 6e 44 65  6c 65 74 65 3e 0a 3c 49  |l_IconDelete>.<I|
00004af0  63 6f 6e 44 65 6c 65 74  65 32 20 20 20 20 20 20  |conDelete2      |
00004b00  20 20 3d 3e 50 52 4f 43  73 68 65 6c 6c 5f 49 63  |  =>PROCshell_Ic|
00004b10  6f 6e 44 65 6c 65 74 65  32 3e 0a 3c 49 63 6f 6e  |onDelete2>.<Icon|
00004b20  44 65 73 65 6c 65 63 74  20 20 20 20 20 20 20 3d  |Deselect       =|
00004b30  3e 50 52 4f 43 73 68 65  6c 6c 5f 49 63 6f 6e 44  |>PROCshell_IconD|
00004b40  65 73 65 6c 65 63 74 3e  0a 3c 49 63 6f 6e 44 65  |eselect>.<IconDe|
00004b50  73 65 6c 65 63 74 41 6c  6c 20 20 20 20 3d 3e 50  |selectAll    =>P|
00004b60  52 4f 43 73 68 65 6c 6c  5f 49 63 6f 6e 44 65 73  |ROCshell_IconDes|
00004b70  65 6c 65 63 74 41 6c 6c  3e 0a 3c 49 63 6f 6e 47  |electAll>.<IconG|
00004b80  65 74 44 61 74 61 20 20  20 20 20 20 20 20 3d 3e  |etData        =>|
00004b90  46 4e 73 68 65 6c 6c 5f  49 63 6f 6e 47 65 74 44  |FNshell_IconGetD|
00004ba0  61 74 61 3e 0a 3c 49 63  6f 6e 47 65 74 43 6f 6d  |ata>.<IconGetCom|
00004bb0  6d 61 6e 64 20 20 20 20  20 3d 3e 46 4e 73 68 65  |mand     =>FNshe|
00004bc0  6c 6c 5f 49 63 6f 6e 47  65 74 43 6f 6d 6d 61 6e  |ll_IconGetComman|
00004bd0  64 3e 0a 3c 49 63 6f 6e  47 65 74 56 61 6c 69 64  |d>.<IconGetValid|
00004be0  61 74 69 6f 6e 20 20 3d  3e 46 4e 73 68 65 6c 6c  |ation  =>FNshell|
00004bf0  5f 49 63 6f 6e 47 65 74  56 61 6c 69 64 61 74 69  |_IconGetValidati|
00004c00  6f 6e 3e 0a 3c 49 63 6f  6e 4d 6f 76 65 20 20 20  |on>.<IconMove   |
00004c10  20 20 20 20 20 20 20 20  3d 3e 46 4e 73 68 65 6c  |        =>FNshel|
00004c20  6c 5f 49 63 6f 6e 4d 6f  76 65 3e 0a 3c 49 63 6f  |l_IconMove>.<Ico|
00004c30  6e 4d 6f 76 65 32 20 20  20 20 20 20 20 20 20 20  |nMove2          |
00004c40  3d 3e 46 4e 73 68 65 6c  6c 5f 49 63 6f 6e 4d 6f  |=>FNshell_IconMo|
00004c50  76 65 32 3e 0a 3c 49 63  6f 6e 4e 65 77 53 70 72  |ve2>.<IconNewSpr|
00004c60  69 74 65 20 20 20 20 20  20 3d 3e 46 4e 73 68 65  |ite      =>FNshe|
00004c70  6c 6c 5f 49 63 6f 6e 4e  65 77 53 70 72 69 74 65  |ll_IconNewSprite|
00004c80  3e 0a 3c 49 63 6f 6e 50  75 74 44 61 74 61 20 20  |>.<IconPutData  |
00004c90  20 20 20 20 20 20 3d 3e  50 52 4f 43 73 68 65 6c  |      =>PROCshel|
00004ca0  6c 5f 49 63 6f 6e 50 75  74 44 61 74 61 3e 0a 3c  |l_IconPutData>.<|
00004cb0  49 63 6f 6e 50 75 74 56  61 6c 69 64 61 74 69 6f  |IconPutValidatio|
00004cc0  6e 20 20 3d 3e 50 52 4f  43 73 68 65 6c 6c 5f 49  |n  =>PROCshell_I|
00004cd0  63 6f 6e 50 75 74 56 61  6c 69 64 61 74 69 6f 6e  |conPutValidation|
00004ce0  3e 0a 3c 49 63 6f 6e 52  65 64 72 61 77 20 20 20  |>.<IconRedraw   |
00004cf0  20 20 20 20 20 20 3d 3e  50 52 4f 43 73 68 65 6c  |      =>PROCshel|
00004d00  6c 5f 49 63 6f 6e 52 65  64 72 61 77 3e 0a 3c 49  |l_IconRedraw>.<I|
00004d10  63 6f 6e 52 65 73 69 7a  65 20 20 20 20 20 20 20  |conResize       |
00004d20  20 20 3d 3e 46 4e 73 68  65 6c 6c 5f 49 63 6f 6e  |  =>FNshell_Icon|
00004d30  52 65 73 69 7a 65 3e 0a  3c 49 63 6f 6e 53 65 6c  |Resize>.<IconSel|
00004d40  65 63 74 20 20 20 20 20  20 20 20 20 3d 3e 50 52  |ect         =>PR|
00004d50  4f 43 73 68 65 6c 6c 5f  49 63 6f 6e 53 65 6c 65  |OCshell_IconSele|
00004d60  63 74 3e 0a 3c 49 63 6f  6e 53 65 6c 65 63 74 41  |ct>.<IconSelectA|
00004d70  6c 6c 20 20 20 20 20 20  3d 3e 50 52 4f 43 73 68  |ll      =>PROCsh|
00004d80  65 6c 6c 5f 49 63 6f 6e  53 65 6c 65 63 74 41 6c  |ell_IconSelectAl|
00004d90  6c 3e 0a 3c 49 63 6f 6e  53 65 74 20 20 20 20 20  |l>.<IconSet     |
00004da0  20 20 20 20 20 20 20 3d  3e 50 52 4f 43 73 68 65  |       =>PROCshe|
00004db0  6c 6c 5f 49 63 6f 6e 53  65 74 3e 0a 3c 49 63 6f  |ll_IconSet>.<Ico|
00004dc0  6e 53 65 74 42 6f 72 64  65 72 20 20 20 20 20 20  |nSetBorder      |
00004dd0  3d 3e 50 52 4f 43 73 68  65 6c 6c 5f 49 63 6f 6e  |=>PROCshell_Icon|
00004de0  53 65 74 42 6f 72 64 65  72 3e 0a 3c 49 63 6f 6e  |SetBorder>.<Icon|
00004df0  53 65 74 42 47 43 6f 6c  6f 75 72 20 20 20 20 3d  |SetBGColour    =|
00004e00  3e 50 52 4f 43 73 68 65  6c 6c 5f 49 63 6f 6e 53  |>PROCshell_IconS|
00004e10  65 74 42 47 43 6f 6c 6f  75 72 3e 0a 3c 49 63 6f  |etBGColour>.<Ico|
00004e20  6e 53 65 74 42 75 74 74  6f 6e 54 79 70 65 20 20  |nSetButtonType  |
00004e30  3d 3e 50 52 4f 43 73 68  65 6c 6c 5f 49 63 6f 6e  |=>PROCshell_Icon|
00004e40  53 65 74 42 75 74 74 6f  6e 54 79 70 65 3e 0a 3c  |SetButtonType>.<|
00004e50  49 63 6f 6e 53 65 74 45  53 47 20 20 20 20 20 20  |IconSetESG      |
00004e60  20 20 20 3d 3e 50 52 4f  43 73 68 65 6c 6c 5f 49  |   =>PROCshell_I|
00004e70  63 6f 6e 53 65 74 45 53  47 3e 0a 3c 49 63 6f 6e  |conSetESG>.<Icon|
00004e80  53 65 74 46 69 6c 6c 65  64 20 20 20 20 20 20 3d  |SetFilled      =|
00004e90  3e 50 52 4f 43 73 68 65  6c 6c 5f 49 63 6f 6e 53  |>PROCshell_IconS|
00004ea0  65 74 46 69 6c 6c 65 64  3e 0a 3c 49 63 6f 6e 53  |etFilled>.<IconS|
00004eb0  65 74 46 47 43 6f 6c 6f  75 72 20 20 20 20 3d 3e  |etFGColour    =>|
00004ec0  50 52 4f 43 73 68 65 6c  6c 5f 49 63 6f 6e 53 65  |PROCshell_IconSe|
00004ed0  74 46 47 43 6f 6c 6f 75  72 3e 0a 3c 49 63 6f 6e  |tFGColour>.<Icon|
00004ee0  53 65 74 48 43 65 6e 74  72 65 64 20 20 20 20 3d  |SetHCentred    =|
00004ef0  3e 50 52 4f 43 73 68 65  6c 6c 5f 49 63 6f 6e 53  |>PROCshell_IconS|
00004f00  65 74 48 43 65 6e 74 72  65 64 3e 0a 3c 49 63 6f  |etHCentred>.<Ico|
00004f10  6e 53 65 74 4c 65 66 74  4a 75 73 74 20 20 20 20  |nSetLeftJust    |
00004f20  3d 3e 50 52 4f 43 73 68  65 6c 6c 5f 49 63 6f 6e  |=>PROCshell_Icon|
00004f30  53 65 74 4c 65 66 74 4a  75 73 74 3e 0a 3c 49 63  |SetLeftJust>.<Ic|
00004f40  6f 6e 53 65 74 52 69 67  68 74 4a 75 73 74 20 20  |onSetRightJust  |
00004f50  20 3d 3e 50 52 4f 43 73  68 65 6c 6c 5f 49 63 6f  | =>PROCshell_Ico|
00004f60  6e 53 65 74 52 69 67 68  74 4a 75 73 74 3e 0a 3c  |nSetRightJust>.<|
00004f70  49 63 6f 6e 53 65 74 53  65 6c 65 63 74 65 64 20  |IconSetSelected |
00004f80  20 20 20 3d 3e 50 52 4f  43 73 68 65 6c 6c 5f 49  |   =>PROCshell_I|
00004f90  63 6f 6e 53 65 74 53 65  6c 65 63 74 65 64 3e 0a  |conSetSelected>.|
00004fa0  3c 49 63 6f 6e 53 65 74  53 70 72 69 74 65 20 20  |<IconSetSprite  |
00004fb0  20 20 20 20 3d 3e 50 52  4f 43 73 68 65 6c 6c 5f  |    =>PROCshell_|
00004fc0  49 63 6f 6e 53 65 74 53  70 72 69 74 65 3e 0a 3c  |IconSetSprite>.<|
00004fd0  49 63 6f 6e 53 65 74 54  65 78 74 20 20 20 20 20  |IconSetText     |
00004fe0  20 20 20 3d 3e 50 52 4f  43 73 68 65 6c 6c 5f 49  |   =>PROCshell_I|
00004ff0  63 6f 6e 53 65 74 54 65  78 74 3e 0a 3c 49 63 6f  |conSetText>.<Ico|
00005000  6e 53 65 74 55 6e 73 65  6c 65 63 74 61 62 6c 65  |nSetUnselectable|
00005010  3d 3e 50 52 4f 43 73 68  65 6c 6c 5f 49 63 6f 6e  |=>PROCshell_Icon|
00005020  53 65 74 55 6e 73 65 6c  65 63 74 61 62 6c 65 3e  |SetUnselectable>|
00005030  0a 3c 49 63 6f 6e 55 6e  73 65 6c 65 63 74 61 62  |.<IconUnselectab|
00005040  6c 65 20 20 20 3d 3e 50  52 4f 43 73 68 65 6c 6c  |le   =>PROCshell|
00005050  5f 49 63 6f 6e 55 6e 73  65 6c 65 63 74 61 62 6c  |_IconUnselectabl|
00005060  65 3e 0a 3c 49 63 6f 6e  53 65 74 56 43 65 6e 74  |e>.<IconSetVCent|
00005070  72 65 64 20 20 20 20 3d  3e 50 52 4f 43 73 68 65  |red    =>PROCshe|
00005080  6c 6c 5f 49 63 6f 6e 53  65 74 56 43 65 6e 74 72  |ll_IconSetVCentr|
00005090  65 64 3e 0a 3c 49 73 49  63 6f 6e 53 65 6c 65 63  |ed>.<IsIconSelec|
000050a0  74 65 64 20 20 20 20 20  3d 3e 46 4e 73 68 65 6c  |ted     =>FNshel|
000050b0  6c 5f 49 73 49 63 6f 6e  53 65 6c 65 63 74 65 64  |l_IsIconSelected|
000050c0  3e 0a 0a 3c 43 61 72 65  74 53 65 74 50 6f 73 69  |>..<CaretSetPosi|
000050d0  74 69 6f 6e 20 20 20 3d  3e 50 52 4f 43 73 68 65  |tion   =>PROCshe|
000050e0  6c 6c 5f 43 61 72 65 74  53 65 74 50 6f 73 69 74  |ll_CaretSetPosit|
000050f0  69 6f 6e 3e 0a 3c 43 61  72 65 74 53 65 74 52 69  |ion>.<CaretSetRi|
00005100  67 68 74 20 20 20 20 20  20 3d 3e 50 52 4f 43 73  |ght      =>PROCs|
00005110  68 65 6c 6c 5f 43 61 72  65 74 53 65 74 52 69 67  |hell_CaretSetRig|
00005120  68 74 3e 0a 23 45 6e 64  54 61 62 6c 65 4d 65 6d  |ht>.#EndTableMem|
00005130  6f 72 79 0a 3c 48 65 61  70 42 6c 6f 63 6b 45 78  |ory.<HeapBlockEx|
00005140  69 73 74 73 3d 3e 46 4e  73 68 65 6c 6c 5f 48 65  |ists=>FNshell_He|
00005150  61 70 42 6c 6f 63 6b 45  78 69 73 74 73 3e 0a 3c  |apBlockExists>.<|
00005160  48 65 61 70 42 6c 6f 63  6b 45 78 74 65 6e 64 3d  |HeapBlockExtend=|
00005170  3e 46 4e 73 68 65 6c 6c  5f 48 65 61 70 42 6c 6f  |>FNshell_HeapBlo|
00005180  63 6b 45 78 74 65 6e 64  3e 0a 3c 48 65 61 70 42  |ckExtend>.<HeapB|
00005190  6c 6f 63 6b 46 65 74 63  68 20 3d 3e 46 4e 73 68  |lockFetch =>FNsh|
000051a0  65 6c 6c 5f 48 65 61 70  42 6c 6f 63 6b 46 65 74  |ell_HeapBlockFet|
000051b0  63 68 3e 0a 3c 48 65 61  70 42 6c 6f 63 6b 49 6e  |ch>.<HeapBlockIn|
000051c0  66 6f 20 20 3d 3e 46 4e  73 68 65 6c 6c 5f 48 65  |fo  =>FNshell_He|
000051d0  61 70 42 6c 6f 63 6b 49  6e 66 6f 3e 0a 3c 48 65  |apBlockInfo>.<He|
000051e0  61 70 42 6c 6f 63 6b 49  6e 69 74 20 20 3d 3e 50  |apBlockInit  =>P|
000051f0  52 4f 43 73 68 65 6c 6c  5f 48 65 61 70 42 6c 6f  |ROCshell_HeapBlo|
00005200  63 6b 49 6e 69 74 3e 0a  3c 48 65 61 70 42 6c 6f  |ckInit>.<HeapBlo|
00005210  63 6b 52 65 74 75 72 6e  3d 3e 50 52 4f 43 73 68  |ckReturn=>PROCsh|
00005220  65 6c 6c 5f 48 65 61 70  42 6c 6f 63 6b 52 65 74  |ell_HeapBlockRet|
00005230  75 72 6e 3e 0a 3c 48 65  61 70 4d 61 6e 61 67 65  |urn>.<HeapManage|
00005240  72 49 6e 69 74 3d 3e 50  52 4f 43 73 68 65 6c 6c  |rInit=>PROCshell|
00005250  5f 48 65 61 70 4d 61 6e  61 67 65 72 49 6e 69 74  |_HeapManagerInit|
00005260  3e 0a 3c 4d 65 6d 46 69  6c 6c 20 20 20 20 20 20  |>.<MemFill      |
00005270  20 20 3d 3e 50 52 4f 43  73 68 65 6c 6c 5f 4d 65  |  =>PROCshell_Me|
00005280  6d 46 69 6c 6c 3e 4d 65  6e 75 73 0a 3c 41 74 74  |mFill>Menus.<Att|
00005290  61 63 68 46 6f 6e 74 53  75 62 4d 65 6e 75 20 3d  |achFontSubMenu =|
000052a0  3e 50 52 4f 43 73 68 65  6c 6c 5f 41 74 74 61 63  |>PROCshell_Attac|
000052b0  68 46 6f 6e 74 53 75 62  4d 65 6e 75 3e 0a 3c 41  |hFontSubMenu>.<A|
000052c0  74 74 61 63 68 4d 65 6e  75 20 20 20 20 20 20 20  |ttachMenu       |
000052d0  20 3d 3e 50 52 4f 43 73  68 65 6c 6c 5f 41 74 74  | =>PROCshell_Att|
000052e0  61 63 68 4d 65 6e 75 3e  0a 3c 41 74 74 61 63 68  |achMenu>.<Attach|
000052f0  4d 65 6e 75 4d 61 6b 65  72 20 20 20 3d 3e 50 52  |MenuMaker   =>PR|
00005300  4f 43 73 68 65 6c 6c 5f  41 74 74 61 63 68 4d 65  |OCshell_AttachMe|
00005310  6e 75 4d 61 6b 65 72 3e  0a 3c 41 74 74 61 63 68  |nuMaker>.<Attach|
00005320  53 75 62 4d 65 6e 75 20  20 20 20 20 3d 3e 50 52  |SubMenu     =>PR|
00005330  4f 43 73 68 65 6c 6c 5f  41 74 74 61 63 68 53 75  |OCshell_AttachSu|
00005340  62 4d 65 6e 75 3e 0a 3c  4d 65 6e 75 41 64 64 20  |bMenu>.<MenuAdd |
00005350  20 20 20 20 20 20 20 20  20 20 3d 3e 46 4e 73 68  |          =>FNsh|
00005360  65 6c 6c 5f 4d 65 6e 75  41 64 64 3e 0a 3c 4d 65  |ell_MenuAdd>.<Me|
00005370  6e 75 43 6f 6c 6f 75 72  73 20 20 20 20 20 20 20  |nuColours       |
00005380  3d 3e 50 52 4f 43 73 68  65 6c 6c 5f 4d 65 6e 75  |=>PROCshell_Menu|
00005390  43 6f 6c 6f 75 72 73 3e  0a 3c 4d 65 6e 75 44 6f  |Colours>.<MenuDo|
000053a0  74 74 65 64 20 20 20 20  20 20 20 20 3d 3e 50 52  |tted        =>PR|
000053b0  4f 43 73 68 65 6c 6c 5f  4d 65 6e 75 44 6f 74 74  |OCshell_MenuDott|
000053c0  65 64 3e 0a 3c 4d 65 6e  75 4c 61 73 74 58 50 6f  |ed>.<MenuLastXPo|
000053d0  73 20 20 20 20 20 20 3d  3e 46 4e 73 68 65 6c 6c  |s      =>FNshell|
000053e0  5f 4d 65 6e 75 4c 61 73  74 58 50 6f 73 3e 0a 3c  |_MenuLastXPos>.<|
000053f0  4d 65 6e 75 4c 61 73 74  59 50 6f 73 20 20 20 20  |MenuLastYPos    |
00005400  20 20 3d 3e 46 4e 73 68  65 6c 6c 5f 4d 65 6e 75  |  =>FNshell_Menu|
00005410  4c 61 73 74 59 50 6f 73  3e 0a 3c 4d 65 6e 75 4e  |LastYPos>.<MenuN|
00005420  65 77 20 20 20 20 20 20  20 20 20 20 20 3d 3e 46  |ew           =>F|
00005430  4e 73 68 65 6c 6c 5f 4d  65 6e 75 4e 65 77 3e 0a  |Nshell_MenuNew>.|
00005440  3c 4d 65 6e 75 50 75 74  44 61 74 61 20 20 20 20  |<MenuPutData    |
00005450  20 20 20 3d 3e 50 52 4f  43 73 68 65 6c 6c 5f 4d  |   =>PROCshell_M|
00005460  65 6e 75 50 75 74 44 61  74 61 3e 0a 3c 4d 65 6e  |enuPutData>.<Men|
00005470  75 54 69 63 6b 20 20 20  20 20 20 20 20 20 20 3d  |uTick          =|
00005480  3e 50 52 4f 43 73 68 65  6c 6c 5f 4d 65 6e 75 54  |>PROCshell_MenuT|
00005490  69 63 6b 3e 0a 3c 4d 65  6e 75 54 69 63 6b 4f 6e  |ick>.<MenuTickOn|
000054a0  6c 79 31 20 20 20 20 20  3d 3e 50 52 4f 43 73 68  |ly1     =>PROCsh|
000054b0  65 6c 6c 5f 4d 65 6e 75  54 69 63 6b 4f 6e 6c 79  |ell_MenuTickOnly|
000054c0  31 3e 0a 3c 4d 65 6e 75  54 69 63 6b 4f 6e 6c 79  |1>.<MenuTickOnly|
000054d0  32 20 20 20 20 20 3d 3e  50 52 4f 43 73 68 65 6c  |2     =>PROCshel|
000054e0  6c 5f 4d 65 6e 75 54 69  63 6b 4f 6e 6c 79 32 3e  |l_MenuTickOnly2>|
000054f0  0a 3c 4d 65 6e 75 53 68  61 64 65 20 20 20 20 20  |.<MenuShade     |
00005500  20 20 20 20 3d 3e 50 52  4f 43 73 68 65 6c 6c 5f  |    =>PROCshell_|
00005510  4d 65 6e 75 53 68 61 64  65 3e 0a 3c 4d 65 6e 75  |MenuShade>.<Menu|
00005520  57 72 69 74 61 62 6c 65  20 20 20 20 20 20 3d 3e  |Writable      =>|
00005530  50 52 4f 43 73 68 65 6c  6c 5f 4d 65 6e 75 57 72  |PROCshell_MenuWr|
00005540  69 74 61 62 6c 65 3e 0a  3c 4f 70 65 6e 4d 65 6e  |itable>.<OpenMen|
00005550  75 20 20 20 20 20 20 20  20 20 20 3d 3e 50 52 4f  |u          =>PRO|
00005560  43 73 68 65 6c 6c 5f 4f  70 65 6e 4d 65 6e 75 3e  |Cshell_OpenMenu>|
00005570  46 4e 73 68 65 6c 6c 5f  4d 65 6e 75 42 61 73 65  |FNshell_MenuBase|
00005580  0a 50 61 72 61 6d 73 20  20 3d 5c 3e 0a 20 20 20  |.Params  =\>.   |
00005590  20 20 20 20 20 20 20 4e  6f 6e 65 0a 0a 20 20 20  |       None..   |
000055a0  20 20 20 20 20 5c 3c 3d  0a 20 20 20 20 20 20 20  |     \<=.       |
000055b0  20 20 20 69 6e 74 20 61  64 64 72 65 73 73 20 6f  |   int address o|
000055c0  66 20 6c 6f 61 64 65 64  20 6d 65 6e 75 20 66 69  |f loaded menu fi|
000055d0  6c 65 0a 0a 4c 69 62 72  61 72 79 20 47 72 6f 75  |le..Library Grou|
000055e0  70 20 3d 5c 3e 20 3c 4d  65 6e 75 73 3d 3e 4c 69  |p =\> <Menus=>Li|
000055f0  62 47 72 6f 75 70 4d 65  6e 75 73 3e 46 4e 73 68  |bGroupMenus>FNsh|
00005600  65 6c 6c 5f 4d 65 6e 75  53 74 72 69 6e 67 28 29  |ell_MenuString()|
00005610  0a 50 61 72 61 6d 73 20  3d 5c 3e 0a 20 20 20 20  |.Params =\>.    |
00005620  20 20 20 20 20 73 74 72  20 6d 65 6e 75 20 74 65  |     str menu te|
00005630  78 74 0a 0a 20 20 20 20  20 20 20 5c 3c 3d 0a 20  |xt..       \<=. |
00005640  20 20 20 20 20 20 20 20  73 74 72 20 6d 65 6e 75  |        str menu|
00005650  20 74 65 78 74 20 30 20  74 65 72 6d 69 6e 61 74  | text 0 terminat|
00005660  65 64 0a 0a 4c 69 62 72  61 72 79 20 47 72 6f 75  |ed..Library Grou|
00005670  70 20 3d 5c 3e 20 3c 4d  65 6e 75 73 3d 3e 4c 69  |p =\> <Menus=>Li|
00005680  62 47 72 6f 75 70 4d 65  6e 75 73 3e 46 4e 73 68  |bGroupMenus>FNsh|
00005690  65 6c 6c 5f 48 65 61 70  42 6c 6f 63 6b 45 78 74  |ell_HeapBlockExt|
000056a0  65 6e 64 28 29 0a 50 61  72 61 6d 73 20 3d 3e 0a  |end().Params =>.|
000056b0  20 20 20 20 20 20 20 20  20 69 6e 74 20 61 64 64  |         int add|
000056c0  72 65 73 73 20 6f 66 20  68 65 61 70 20 62 6c 6f  |ress of heap blo|
000056d0  63 6b 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |ck.         int |
000056e0  61 6d 6f 75 6e 74 20 74  6f 20 69 6e 63 72 65 61  |amount to increa|
000056f0  73 65 20 6f 72 20 64 65  63 72 65 61 73 65 20 62  |se or decrease b|
00005700  6c 6f 63 6b 20 73 69 7a  65 20 62 79 0a 20 20 20  |lock size by.   |
00005710  20 20 20 20 20 20 20 20  20 20 28 2d 76 65 20 74  |          (-ve t|
00005720  6f 20 64 65 63 72 65 61  73 65 29 0a 0a 20 20 20  |o decrease)..   |
00005730  20 20 20 20 5c 3c 3d 0a  20 20 20 20 20 20 20 20  |    \<=.        |
00005740  20 69 6e 74 20 61 64 64  72 65 73 73 20 6f 66 20  | int address of |
00005750  68 65 61 70 20 62 6c 6f  63 6b 0a 0a 49 6e 63 72  |heap block..Incr|
00005760  65 61 73 65 73 20 6f 72  20 64 65 63 72 65 61 73  |eases or decreas|
00005770  65 73 20 74 68 65 20 73  69 7a 65 20 6f 66 20 74  |es the size of t|
00005780  68 65 20 67 69 76 65 6e  20 68 65 61 70 20 62 6c  |he given heap bl|
00005790  6f 63 6b 0a 77 68 69 63  68 20 6d 75 73 74 20 68  |ock.which must h|
000057a0  61 76 65 20 62 65 65 6e  20 61 6c 6c 6f 63 61 74  |ave been allocat|
000057b0  65 64 20 77 69 74 68 20  3c 46 4e 73 68 65 6c 6c  |ed with <FNshell|
000057c0  5f 48 65 61 70 42 6c 6f  63 6b 46 65 74 63 68 3e  |_HeapBlockFetch>|
000057d0  2e 0a 4e 6f 74 65 20 74  68 61 74 20 74 68 65 20  |..Note that the |
000057e0  68 65 61 70 20 62 6c 6f  63 6b 20 6d 61 79 20 62  |heap block may b|
000057f0  65 20 6d 6f 76 65 64 20  74 6f 20 6d 61 6b 65 20  |e moved to make |
00005800  69 74 20 66 69 74 20 73  6f 20 79 6f 75 0a 73 68  |it fit so you.sh|
00005810  6f 75 6c 64 20 61 6c 77  61 79 73 20 75 73 65 20  |ould always use |
00005820  74 68 65 20 72 65 74 75  72 6e 65 64 20 76 61 6c  |the returned val|
00005830  75 65 20 66 6f 72 20 74  68 65 20 68 65 61 70 20  |ue for the heap |
00005840  62 6c 6f 63 6b 0a 61 64  64 72 65 73 73 20 61 66  |block.address af|
00005850  74 65 72 20 74 68 69 73  20 63 61 6c 6c 2e 0a 0a  |ter this call...|
00005860  4c 69 62 72 61 72 79 20  47 72 6f 75 70 20 3d 3e  |Library Group =>|
00005870  20 3c 4d 65 6d 6f 72 79  3d 3e 4c 69 62 47 72 6f  | <Memory=>LibGro|
00005880  75 70 4d 65 6d 6f 72 79  3e 46 4e 73 68 65 6c 6c  |upMemory>FNshell|
00005890  5f 48 65 61 70 42 6c 6f  63 6b 46 65 74 63 68 28  |_HeapBlockFetch(|
000058a0  29 0a 50 61 72 61 6d 73  20 3d 3e 0a 20 20 20 20  |).Params =>.    |
000058b0  20 20 20 20 20 69 6e 74  20 73 69 7a 65 20 6f 66  |     int size of|
000058c0  20 62 6c 6f 63 6b 20 74  6f 20 66 65 74 63 68 20  | block to fetch |
000058d0  66 72 6f 6d 20 68 65 61  70 0a 0a 20 20 20 20 20  |from heap..     |
000058e0  20 20 5c 3c 3d 0a 20 20  20 20 20 20 20 20 20 69  |  \<=.         i|
000058f0  6e 74 20 61 64 64 72 65  73 73 20 6f 66 20 68 65  |nt address of he|
00005900  61 70 62 6c 6f 63 6b 20  61 6c 6c 6f 63 61 74 65  |apblock allocate|
00005910  64 0a 0a 52 65 74 75 72  6e 73 20 61 64 64 72 65  |d..Returns addre|
00005920  73 73 20 6f 66 20 68 65  61 70 62 6c 6f 63 6b 20  |ss of heapblock |
00005930  6f 72 20 63 61 75 73 65  73 20 61 6e 20 22 4f 75  |or causes an "Ou|
00005940  74 0a 6f 66 20 6d 65 6d  6f 72 79 22 20 65 72 72  |t.of memory" err|
00005950  6f 72 20 69 66 20 74 68  65 20 62 6c 6f 63 6b 20  |or if the block |
00005960  63 61 6e 6e 6f 74 20 62  65 0a 61 6c 6c 6f 63 61  |cannot be.alloca|
00005970  74 65 64 2e 0a 0a 4c 69  62 72 61 72 79 20 47 72  |ted...Library Gr|
00005980  6f 75 70 20 3d 3e 20 3c  4d 65 6d 6f 72 79 3d 3e  |oup => <Memory=>|
00005990  4c 69 62 47 72 6f 75 70  4d 65 6d 6f 72 79 3e 46  |LibGroupMemory>F|
000059a0  4e 73 68 65 6c 6c 5f 48  65 61 70 42 6c 6f 63 6b  |Nshell_HeapBlock|
000059b0  49 6e 66 6f 28 29 0a 50  61 72 61 6d 73 20 3d 3e  |Info().Params =>|
000059c0  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 61 64  |.         int ad|
000059d0  64 72 65 73 73 20 6f 66  20 68 65 61 70 20 62 6c  |dress of heap bl|
000059e0  6f 63 6b 0a 0a 20 20 20  20 20 20 20 5c 3c 3d 0a  |ock..       \<=.|
000059f0  20 20 20 20 20 20 20 20  20 69 6e 74 20 73 69 7a  |         int siz|
00005a00  65 20 6f 66 20 68 65 61  70 20 62 6c 6f 63 6b 20  |e of heap block |
00005a10  28 4e 6f 74 65 20 74 68  61 74 20 74 68 69 73 0a  |(Note that this.|
00005a20  20 20 20 20 20 20 20 20  20 20 20 20 20 69 73 20  |             is |
00005a30  34 20 62 79 74 65 73 20  6c 61 72 67 65 72 20 74  |4 bytes larger t|
00005a40  68 61 6e 20 74 68 65 20  73 69 7a 65 0a 20 20 20  |han the size.   |
00005a50  20 20 20 20 20 20 20 20  20 20 72 65 71 75 65 73  |          reques|
00005a60  74 65 64 20 77 69 74 68  20 3c 46 4e 73 68 65 6c  |ted with <FNshel|
00005a70  6c 5f 48 65 61 70 42 6c  6f 63 6b 46 65 74 63 68  |l_HeapBlockFetch|
00005a80  3e 29 0a 0a 4c 69 62 72  61 72 79 20 47 72 6f 75  |>)..Library Grou|
00005a90  70 20 3d 3e 20 3c 4d 65  6d 6f 72 79 3d 3e 4c 69  |p => <Memory=>Li|
00005aa0  62 47 72 6f 75 70 4d 65  6d 6f 72 79 3e 46 4e 73  |bGroupMemory>FNs|
00005ab0  68 65 6c 6c 5f 49 63 6f  6e 47 65 74 44 61 74 61  |hell_IconGetData|
00005ac0  28 29 0a 50 61 72 61 6d  73 20 3d 3e 0a 20 20 20  |().Params =>.   |
00005ad0  20 20 20 20 20 20 69 6e  74 20 77 69 6e 64 6f 77  |      int window|
00005ae0  20 68 61 6e 64 6c 65 20  20 0a 20 20 20 20 20 20  | handle  .      |
00005af0  20 20 20 69 6e 74 20 69  63 6f 6e 20 68 61 6e 64  |   int icon hand|
00005b00  6c 65 0a 0a 20 20 20 20  20 20 20 5c 3c 3d 0a 20  |le..       \<=. |
00005b10  20 20 20 20 20 20 20 20  73 74 72 20 69 63 6f 6e  |        str icon|
00005b20  20 74 65 78 74 0a 0a 53  65 65 20 61 6c 73 6f 20  | text..See also |
00005b30  3c 50 52 4f 43 73 68 65  6c 6c 5f 49 63 6f 6e 50  |<PROCshell_IconP|
00005b40  75 74 44 61 74 61 3e 2e  0a 0a 4c 69 62 72 61 72  |utData>...Librar|
00005b50  79 20 47 72 6f 75 70 20  3d 3e 20 3c 49 63 6f 6e  |y Group => <Icon|
00005b60  73 3d 3e 4c 69 62 47 72  6f 75 70 49 63 6f 6e 73  |s=>LibGroupIcons|
00005b70  3e 46 4e 73 68 65 6c 6c  5f 46 69 6c 65 45 78 69  |>FNshell_FileExi|
00005b80  73 74 73 28 29 0a 50 61  72 61 6d 73 20 3d 3e 0a  |sts().Params =>.|
00005b90  20 20 20 20 20 20 20 20  20 73 74 72 20 20 66 69  |         str  fi|
00005ba0  6c 65 20 6e 61 6d 65 20  20 20 20 20 0a 20 20 20  |le name     .   |
00005bb0  20 20 20 20 5c 3c 3d 0a  20 20 20 20 20 20 20 20  |    \<=.        |
00005bc0  20 62 6f 6f 6c 20 54 52  55 45 20 69 66 20 66 69  | bool TRUE if fi|
00005bd0  6c 65 20 65 78 69 73 74  73 2c 0a 20 20 20 20 20  |le exists,.     |
00005be0  20 20 20 20 20 20 20 20  20 46 41 4c 53 45 20 6f  |         FALSE o|
00005bf0  74 68 65 72 77 69 73 65  0a 0a 4c 69 62 72 61 72  |therwise..Librar|
00005c00  79 20 47 72 6f 75 70 20  3d 5c 3e 20 3c 46 69 6c  |y Group =\> <Fil|
00005c10  65 73 3d 3e 4c 69 62 47  72 6f 75 70 46 69 6c 65  |es=>LibGroupFile|
00005c20  73 3e 46 4e 73 68 65 6c  6c 5f 47 65 74 53 74 72  |s>FNshell_GetStr|
00005c30  69 6e 67 28 29 0a 52 65  74 75 72 6e 73 20 74 68  |ing().Returns th|
00005c40  65 20 73 74 72 69 6e 67  20 61 74 20 74 68 65 20  |e string at the |
00005c50  67 69 76 65 6e 20 61 64  64 72 65 73 73 2e 0a 54  |given address..T|
00005c60  65 72 6d 69 6e 61 74 6f  72 73 20 6d 61 79 20 62  |erminators may b|
00005c70  65 20 61 6e 79 20 63 68  61 72 61 63 74 65 72 20  |e any character |
00005c80  62 65 6c 6f 77 0a 41 53  43 49 49 20 33 32 2e 0a  |below.ASCII 32..|
00005c90  20 0a 50 61 72 61 6d 73  20 20 3d 3e 0a 20 20 20  | .Params  =>.   |
00005ca0  20 20 20 20 20 20 69 6e  74 20 61 64 64 72 65 73  |      int addres|
00005cb0  73 0a 0a 20 20 20 20 20  20 20 20 5c 3c 3d 0a 20  |s..        \<=. |
00005cc0  20 20 20 20 20 20 20 20  73 74 72 69 6e 67 20 66  |        string f|
00005cd0  6f 75 6e 64 20 61 74 20  61 64 64 72 65 73 73 46  |ound at addressF|
00005ce0  4e 73 68 65 6c 6c 5f 49  63 6f 6e 62 61 72 28 29  |Nshell_Iconbar()|
00005cf0  0a 50 6c 61 63 65 20 61  20 73 70 72 69 74 65 20  |.Place a sprite |
00005d00  6f 6e 20 74 68 65 20 69  63 6f 6e 20 62 61 72 20  |on the icon bar |
00005d10  61 6e 64 20 61 74 74 61  63 68 20 61 0a 6d 65 6e  |and attach a.men|
00005d20  75 20 74 6f 20 69 74 2e  0a 0a 50 61 72 61 6d 73  |u to it...Params|
00005d30  20 3d 3e 0a 20 20 20 20  20 20 20 20 20 69 6e 74  | =>.         int|
00005d40  20 20 2d 31 20 66 6f 72  20 72 69 67 68 74 20 73  |  -1 for right s|
00005d50  69 64 65 20 6f 66 20 62  61 72 2c 20 2d 32 20 66  |ide of bar, -2 f|
00005d60  6f 72 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |or.             |
00005d70  20 6c 65 66 74 20 73 69  64 65 0a 20 20 20 20 20  | left side.     |
00005d80  20 20 20 20 73 74 72 20  20 73 70 72 69 74 65 20  |    str  sprite |
00005d90  6e 61 6d 65 0a 20 20 20  20 20 20 20 20 20 73 74  |name.         st|
00005da0  72 20 20 74 65 78 74 20  75 6e 64 65 72 20 69 63  |r  text under ic|
00005db0  6f 6e 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |on.         int |
00005dc0  20 77 69 64 74 68 20 6f  66 20 69 63 6f 6e 2f 74  | width of icon/t|
00005dd0  65 78 74 20 28 77 68 69  63 68 65 76 65 72 20 69  |ext (whichever i|
00005de0  73 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |s.              |
00005df0  6c 61 72 67 65 72 29 0a  20 20 20 20 20 20 20 20  |larger).        |
00005e00  20 73 74 72 20 20 6d 65  6e 75 20 68 61 6e 64 6c  | str  menu handl|
00005e10  65 0a 20 20 20 20 20 20  20 20 20 62 6f 6f 6c 20  |e.         bool |
00005e20  73 68 69 66 74 20 66 6c  61 67 20 28 6e 6f 74 20  |shift flag (not |
00005e30  69 6d 70 6c 65 6d 65 6e  74 65 64 29 0a 20 20 20  |implemented).   |
00005e40  20 20 20 20 20 20 62 6f  6f 6c 20 63 74 72 6c 20  |      bool ctrl |
00005e50  20 66 6c 61 67 20 28 6e  6f 74 20 69 6d 70 6c 65  | flag (not imple|
00005e60  6d 65 6e 74 65 64 29 0a  20 20 20 20 20 20 20 20  |mented).        |
00005e70  20 62 6f 6f 6c 20 61 6c  74 20 20 20 66 6c 61 67  | bool alt   flag|
00005e80  20 28 6e 6f 74 20 69 6d  70 6c 65 6d 65 6e 74 65  | (not implemente|
00005e90  64 29 0a 0a 54 68 65 20  73 68 69 66 74 2c 20 63  |d)..The shift, c|
00005ea0  74 72 6c 20 61 6e 64 20  61 6c 74 20 66 6c 61 67  |trl and alt flag|
00005eb0  73 20 61 72 65 20 66 6f  72 20 66 75 74 75 72 65  |s are for future|
00005ec0  0a 65 6e 68 61 6e 63 65  6d 65 6e 74 73 20 74 6f  |.enhancements to|
00005ed0  20 74 68 65 20 6c 69 62  72 61 72 79 20 61 6e 64  | the library and|
00005ee0  20 73 68 6f 75 6c 64 20  62 65 20 73 65 74 0a 74  | should be set.t|
00005ef0  6f 20 30 20 6f 6e 20 74  68 69 73 20 72 65 6c 65  |o 0 on this rele|
00005f00  61 73 65 2e 0a 0a 3c 45  78 61 6d 70 6c 65 20 63  |ase...<Example c|
00005f10  6f 64 65 2e 2e 2e 3d 3e  45 78 5f 49 63 6f 6e 62  |ode...=>Ex_Iconb|
00005f20  61 72 3e 0a 0a 4c 69 62  72 61 72 79 20 47 72 6f  |ar>..Library Gro|
00005f30  75 70 20 3d 3e 20 3c 49  63 6f 6e 73 3d 3e 4c 69  |up => <Icons=>Li|
00005f40  62 47 72 6f 75 70 49 63  6f 6e 73 3e 46 4e 73 68  |bGroupIcons>FNsh|
00005f50  65 6c 6c 5f 49 63 6f 6e  47 65 74 56 61 6c 69 64  |ell_IconGetValid|
00005f60  61 74 69 6f 6e 28 29 0a  50 61 72 61 6d 73 20 3d  |ation().Params =|
00005f70  3e 0a 20 20 20 20 20 20  20 20 20 69 6e 74 20 77  |>.         int w|
00005f80  69 6e 64 6f 77 20 68 61  6e 64 6c 65 20 20 20 20  |indow handle    |
00005f90  20 0a 20 20 20 20 20 20  20 20 20 69 6e 74 20 69  | .         int i|
00005fa0  63 6f 6e 20 68 61 6e 64  6c 65 0a 20 20 20 20 20  |con handle.     |
00005fb0  20 20 20 20 0a 20 20 20  20 20 20 20 5c 3c 3d 0a  |    .       \<=.|
00005fc0  20 20 20 20 20 20 20 20  20 73 74 72 20 3c 76 61  |         str <va|
00005fd0  6c 69 64 61 74 69 6f 6e  20 73 74 72 69 6e 67 3d  |lidation string=|
00005fe0  3e 53 57 49 2e 77 69 6d  70 5f 76 61 6c 69 64 61  |>SWI.wimp_valida|
00005ff0  74 69 6f 6e 73 74 72 69  6e 67 3e 0a 0a 53 65 65  |tionstring>..See|
00006000  20 61 6c 73 6f 20 3c 50  52 4f 43 73 68 65 6c 6c  | also <PROCshell|
00006010  5f 49 63 6f 6e 50 75 74  56 61 6c 69 64 61 74 69  |_IconPutValidati|
00006020  6f 6e 3e 2e 0a 0a 4c 69  62 72 61 72 79 20 47 72  |on>...Library Gr|
00006030  6f 75 70 20 3d 3e 20 3c  49 63 6f 6e 73 3d 3e 4c  |oup => <Icons=>L|
00006040  69 62 47 72 6f 75 70 49  63 6f 6e 73 3e 46 4e 73  |ibGroupIcons>FNs|
00006050  68 65 6c 6c 5f 49 63 6f  6e 4e 65 77 53 70 72 69  |hell_IconNewSpri|
00006060  74 65 28 29 0a 50 61 72  61 6d 73 20 3d 3e 0a 20  |te().Params =>. |
00006070  20 20 20 20 20 20 20 20  69 6e 74 20 77 69 6e 64  |        int wind|
00006080  6f 77 20 68 61 6e 64 6c  65 20 20 20 0a 20 20 20  |ow handle   .   |
00006090  20 20 20 20 20 20 69 6e  74 20 69 63 6f 6e 20 68  |      int icon h|
000060a0  61 6e 64 6c 65 0a 20 20  20 20 20 20 20 20 20 73  |andle.         s|
000060b0  74 72 20 6e 65 77 20 73  70 72 69 74 65 20 6e 61  |tr new sprite na|
000060c0  6d 65 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |me.         int |
000060d0  72 65 64 72 61 77 20 66  6c 61 67 0a 0a 20 20 20  |redraw flag..   |
000060e0  20 20 20 20 5c 3c 3d 0a  20 20 20 20 20 20 20 20  |    \<=.        |
000060f0  20 69 6e 74 20 6e 65 77  20 69 63 6f 6e 20 68 61  | int new icon ha|
00006100  6e 64 6c 65 0a 0a 4c 69  62 72 61 72 79 20 47 72  |ndle..Library Gr|
00006110  6f 75 70 20 3d 3e 20 3c  49 63 6f 6e 73 3d 3e 4c  |oup => <Icons=>L|
00006120  69 62 47 72 6f 75 70 49  63 6f 6e 73 3e 46 4e 73  |ibGroupIcons>FNs|
00006130  68 65 6c 6c 5f 49 73 49  63 6f 6e 53 65 6c 65 63  |hell_IsIconSelec|
00006140  74 65 64 28 29 0a 50 61  72 61 6d 73 20 3d 3e 0a  |ted().Params =>.|
00006150  20 20 20 20 20 20 20 20  20 69 6e 74 20 20 77 69  |         int  wi|
00006160  6e 64 6f 77 20 68 61 6e  64 6c 65 20 20 20 20 20  |ndow handle     |
00006170  20 20 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |  .         int |
00006180  20 69 63 6f 6e 20 68 61  6e 64 6c 65 0a 0a 20 20  | icon handle..  |
00006190  20 20 20 20 20 5c 3c 3d  0a 20 20 20 20 20 20 20  |     \<=.       |
000061a0  20 20 62 6f 6f 6c 20 54  52 55 45 20 69 66 20 73  |  bool TRUE if s|
000061b0  65 6c 65 63 74 65 64 2c  20 46 41 4c 53 45 20 6f  |elected, FALSE o|
000061c0  74 68 65 72 77 69 73 65  0a 0a 4c 69 62 72 61 72  |therwise..Librar|
000061d0  79 20 47 72 6f 75 70 20  3d 3e 20 3c 49 63 6f 6e  |y Group => <Icon|
000061e0  73 3d 3e 4c 69 62 47 72  6f 75 70 49 63 6f 6e 73  |s=>LibGroupIcons|
000061f0  3e 46 4e 73 68 65 6c 6c  5f 4d 65 73 73 61 67 65  |>FNshell_Message|
00006200  57 69 6e 64 6f 77 28 29  0a 50 61 72 61 6d 73 20  |Window().Params |
00006210  3d 3e 0a 20 20 20 20 20  20 20 20 20 73 74 72 20  |=>.         str |
00006220  6d 65 73 73 61 67 65 20  74 65 78 74 20 20 20 0a  |message text   .|
00006230  20 20 20 20 20 20 20 20  20 69 6e 74 20 3c 63 61  |         int <ca|
00006240  6e 63 65 6c 20 66 6c 61  67 3d 3e 4d 73 67 57 69  |ncel flag=>MsgWi|
00006250  6e 43 46 6c 61 67 3e 0a  20 20 20 20 20 20 20 20  |nCFlag>.        |
00006260  20 73 74 72 20 3c 70 72  6f 67 72 61 6d 20 6e 61  | str <program na|
00006270  6d 65 3d 3e 4d 73 67 57  69 6e 50 72 6f 67 3e 0a  |me=>MsgWinProg>.|
00006280  20 20 20 20 20 20 20 20  20 73 74 72 20 3c 68 65  |         str <he|
00006290  61 64 65 72 3d 3e 4d 73  67 57 69 6e 48 65 61 64  |ader=>MsgWinHead|
000062a0  3e 0a 0a 20 20 20 20 20  20 20 5c 3c 3d 0a 20 20  |>..       \<=.  |
000062b0  20 20 20 20 20 20 20 69  6e 74 20 72 65 73 75 6c  |       int resul|
000062c0  74 0a 0a 54 68 69 73 20  72 6f 75 74 69 6e 65 20  |t..This routine |
000062d0  69 73 20 75 73 65 66 75  6c 20 66 6f 72 20 4f 4b  |is useful for OK|
000062e0  20 74 6f 20 71 75 69 74  20 74 79 70 65 0a 77 69  | to quit type.wi|
000062f0  6e 64 6f 77 73 2e 20 54  68 65 20 72 65 74 75 72  |ndows. The retur|
00006300  6e 65 64 20 72 65 73 75  6c 74 20 69 73 20 31 20  |ned result is 1 |
00006310  69 66 20 4f 4b 0a 77 61  73 20 63 6c 69 63 6b 65  |if OK.was clicke|
00006320  64 2c 20 32 20 69 66 20  43 61 6e 63 65 6c 20 77  |d, 2 if Cancel w|
00006330  61 73 20 73 65 6c 65 63  74 65 64 2e 0a 0a 4c 69  |as selected...Li|
00006340  62 72 61 72 79 20 47 72  6f 75 70 20 3d 3e 20 3c  |brary Group => <|
00006350  57 69 6e 64 6f 77 73 3d  3e 4c 69 62 47 72 6f 75  |Windows=>LibGrou|
00006360  70 57 69 6e 64 6f 77 73  3e 46 4e 73 68 65 6c 6c  |pWindows>FNshell|
00006370  5f 57 69 6d 70 49 6e 69  74 28 29 0a 50 61 72 61  |_WimpInit().Para|
00006380  6d 73 20 3d 5c 3e 0a 20  20 20 20 20 20 20 20 20  |ms =\>.         |
00006390  69 6e 74 20 76 65 72 73  69 6f 6e 20 6e 75 6d 62  |int version numb|
000063a0  65 72 0a 20 20 20 20 20  20 20 20 20 73 74 72 20  |er.         str |
000063b0  74 61 73 6b 20 6e 61 6d  65 0a 0a 4e 6f 74 20 75  |task name..Not u|
000063c0  73 65 64 20 69 6e 20 45  76 6e 74 53 68 65 6c 6c  |sed in EvntShell|
000063d0  20 6c 69 62 72 61 72 79  20 2d 20 75 73 65 20 3c  | library - use <|
000063e0  46 4e 73 68 65 6c 6c 5f  57 69 6d 70 49 6e 69 74  |FNshell_WimpInit|
000063f0  5f 49 3e 20 69 6e 73 74  65 61 64 2e 0a 0a 4c 69  |_I> instead...Li|
00006400  62 72 61 72 79 20 47 72  6f 75 70 20 3d 5c 3e 20  |brary Group =\> |
00006410  3c 53 68 65 6c 6c 3d 3e  4c 69 62 47 72 6f 75 70  |<Shell=>LibGroup|
00006420  53 68 65 6c 6c 3e 46 4e  73 68 65 6c 6c 5f 57 69  |Shell>FNshell_Wi|
00006430  6d 70 49 6e 69 74 5f 49  28 29 0a 50 61 72 61 6d  |mpInit_I().Param|
00006440  73 20 3d 5c 3e 0a 20 20  20 20 20 20 20 20 20 69  |s =\>.         i|
00006450  6e 74 20 76 65 72 73 69  6f 6e 20 6e 75 6d 62 65  |nt version numbe|
00006460  72 20 0a 20 20 20 20 20  20 20 20 20 73 74 72 20  |r .         str |
00006470  74 61 73 6b 20 6e 61 6d  65 0a 0a 41 6c 73 6f 20  |task name..Also |
00006480  69 6e 69 74 69 61 6c 69  73 65 73 20 49 6e 74 65  |initialises Inte|
00006490  72 66 61 63 65 20 6d 6f  64 75 6c 65 2e 0a 0a 4c  |rface module...L|
000064a0  69 62 72 61 72 79 20 47  72 6f 75 70 20 3d 5c 3e  |ibrary Group =\>|
000064b0  20 3c 53 68 65 6c 6c 3d  3e 4c 69 62 47 72 6f 75  | <Shell=>LibGrou|
000064c0  70 53 68 65 6c 6c 3e 50  52 4f 43 73 68 65 6c 6c  |pShell>PROCshell|
000064d0  5f 57 69 6e 64 6f 77 4d  6f 76 65 54 6f 28 29 0a  |_WindowMoveTo().|
000064e0  50 61 72 61 6d 73 20 3d  5c 3e 0a 20 20 20 20 20  |Params =\>.     |
000064f0  20 20 20 20 69 6e 74 20  77 69 6e 64 6f 77 20 68  |    int window h|
00006500  61 6e 64 6c 65 20 74 6f  20 6d 6f 76 65 0a 20 20  |andle to move.  |
00006510  20 20 20 20 20 20 20 69  6e 74 20 78 20 63 6f 6f  |       int x coo|
00006520  72 64 20 74 6f 20 6d 6f  76 65 20 74 6f 0a 20 20  |rd to move to.  |
00006530  20 20 20 20 20 20 20 69  6e 74 20 79 20 63 6f 6f  |       int y coo|
00006540  72 64 20 74 6f 20 6d 6f  76 65 20 74 6f 0a 0a 53  |rd to move to..S|
00006550  65 65 20 61 6c 73 6f 20  3c 50 52 4f 43 73 68 65  |ee also <PROCshe|
00006560  6c 6c 5f 57 69 6e 64 6f  77 4d 6f 76 65 54 6f 49  |ll_WindowMoveToI|
00006570  63 6f 6e 3e 2e 0a 0a 4c  69 62 72 61 72 79 20 47  |con>...Library G|
00006580  72 6f 75 70 20 3d 5c 3e  20 3c 57 69 6e 64 6f 77  |roup =\> <Window|
00006590  73 3d 3e 4c 69 62 47 72  6f 75 70 57 69 6e 64 6f  |s=>LibGroupWindo|
000065a0  77 73 3e 50 52 4f 43 73  68 65 6c 6c 5f 57 69 6e  |ws>PROCshell_Win|
000065b0  64 6f 77 4d 6f 76 65 54  6f 49 63 6f 6e 28 29 0a  |dowMoveToIcon().|
000065c0  50 61 72 61 6d 73 20 3d  3e 0a 20 20 20 20 20 20  |Params =>.      |
000065d0  20 20 20 69 6e 74 20 77  69 6e 64 6f 77 20 68 61  |   int window ha|
000065e0  6e 64 6c 65 20 74 6f 20  6d 6f 76 65 0a 20 20 20  |ndle to move.   |
000065f0  20 20 20 20 20 20 69 6e  74 20 77 69 6e 64 6f 77  |      int window|
00006600  20 68 61 6e 64 6c 65 20  63 6f 6e 74 61 69 6e 69  | handle containi|
00006610  6e 67 20 69 63 6f 6e 0a  20 20 20 20 20 20 20 20  |ng icon.        |
00006620  20 69 6e 74 20 69 63 6f  6e 20 68 61 6e 64 6c 65  | int icon handle|
00006630  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 78 20  |.         int x |
00006640  6f 66 66 73 65 74 20 6f  66 20 6d 6f 76 65 64 20  |offset of moved |
00006650  77 69 6e 64 6f 77 20 66  72 6f 6d 20 69 63 6f 6e  |window from icon|
00006660  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 79 20  |.         int y |
00006670  6f 66 66 73 65 74 20 6f  66 20 6d 6f 76 65 64 20  |offset of moved |
00006680  77 69 6e 64 6f 77 20 66  72 6f 6d 20 69 63 6f 6e  |window from icon|
00006690  0a 0a 53 65 65 20 61 6c  73 6f 20 3c 50 52 4f 43  |..See also <PROC|
000066a0  73 68 65 6c 6c 5f 57 69  6e 64 6f 77 4d 6f 76 65  |shell_WindowMove|
000066b0  54 6f 3e 2e 0a 0a 4c 69  62 72 61 72 79 20 47 72  |To>...Library Gr|
000066c0  6f 75 70 20 3d 3e 20 3c  57 69 6e 64 6f 77 73 3d  |oup => <Windows=|
000066d0  3e 4c 69 62 47 72 6f 75  70 57 69 6e 64 6f 77 73  |>LibGroupWindows|
000066e0  3e 50 52 4f 43 73 68 65  6c 6c 5f 43 72 65 61 74  |>PROCshell_Creat|
000066f0  65 57 69 6e 64 6f 77 28  29 0a 50 61 72 61 6d 73  |eWindow().Params|
00006700  20 3d 5c 3e 0a 20 20 20  20 20 20 20 20 20 73 74  | =\>.         st|
00006710  72 20 77 69 6e 64 6f 77  20 69 64 65 6e 74 69 66  |r window identif|
00006720  69 65 72 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |ier.         int|
00006730  20 28 69 67 6e 6f 72 65  64 20 6f 6e 20 65 6e 74  | (ignored on ent|
00006740  72 79 29 0a 0a 20 20 20  20 20 20 20 5c 3c 3d 0a  |ry)..       \<=.|
00006750  20 20 20 20 20 20 20 20  20 69 6e 74 20 77 69 6e  |         int win|
00006760  64 6f 77 20 68 61 6e 64  6c 65 20 6f 66 20 6e 65  |dow handle of ne|
00006770  77 6c 79 20 63 72 65 61  74 65 64 20 77 69 6e 64  |wly created wind|
00006780  6f 77 0a 0a 4c 69 62 72  61 72 79 20 47 72 6f 75  |ow..Library Grou|
00006790  70 20 3d 5c 3e 20 3c 57  69 6e 64 6f 77 73 3d 3e  |p =\> <Windows=>|
000067a0  4c 69 62 47 72 6f 75 70  57 69 6e 64 6f 77 73 3e  |LibGroupWindows>|
000067b0  53 69 6d 6f 6e 20 48 75  6e 74 69 6e 67 64 6f 6e  |Simon Huntingdon|
000067c0  0a 46 6f 72 20 74 68 65  20 49 6e 74 65 72 66 61  |.For the Interfa|
000067d0  63 65 20 6d 6f 64 75 6c  65 20 2d 20 65 76 65 6e  |ce module - even|
000067e0  20 41 63 6f 72 6e 0a 68  61 76 65 20 72 65 61 6c  | Acorn.have real|
000067f0  69 73 65 64 20 77 69 74  68 20 52 49 53 43 2d 4f  |ised with RISC-O|
00006800  53 20 33 20 74 68 61 74  20 74 68 69 73 0a 69 73  |S 3 that this.is|
00006810  20 77 68 61 74 20 74 68  65 20 75 73 65 72 73 20  | what the users |
00006820  77 61 6e 74 21 0a 0a 43  6f 6e 74 61 63 74 73 3a  |want!..Contacts:|
00006830  0a 20 20 20 20 20 20 20  41 72 63 61 64 65 20 42  |.       Arcade B|
00006840  42 53 20 20 20 20 20 20  20 20 20 20 28 30 38 31  |BS          (081|
00006850  20 36 35 34 20 32 32 31  32 29 0a 0a 20 20 20 20  | 654 2212)..    |
00006860  20 20 20 41 6c 6c 20 6d  61 69 6c 20 6f 6e 20 74  |   All mail on t|
00006870  68 65 20 61 62 6f 76 65  20 42 75 6c 6c 65 74 69  |he above Bulleti|
00006880  6e 0a 20 20 20 20 20 20  20 42 6f 61 72 64 73 20  |n.       Boards |
00006890  73 68 6f 75 6c 64 20 62  65 20 6d 61 69 6c 65 64  |should be mailed|
000068a0  20 74 6f 20 4a 49 43 4b  52 6f 62 65 72 74 20 53  | to JICKRobert S|
000068b0  65 61 67 6f 0a 46 6f 72  20 75 73 69 6e 67 20 6d  |eago.For using m|
000068c0  79 20 6f 72 69 67 69 6e  61 6c 20 73 68 65 6c 6c  |y original shell|
000068d0  20 70 72 6f 67 72 61 6d  20 66 6f 72 0a 74 68 69  | program for.thi|
000068e0  6e 67 73 20 49 20 77 6f  75 6c 64 20 65 76 65 6e  |ngs I would even|
000068f0  20 64 72 65 61 6d 20 6f  66 20 61 74 74 65 6d 70  | dream of attemp|
00006900  74 69 6e 67 21 49 6e 74  72 6f 64 75 63 74 69 6f  |ting!Introductio|
00006910  6e 0a 54 68 65 72 65 20  61 72 65 20 61 20 6c 6f  |n.There are a lo|
00006920  74 20 6f 66 20 27 53 68  65 6c 6c 27 20 74 79 70  |t of 'Shell' typ|
00006930  65 20 61 70 70 6c 69 63  61 74 69 6f 6e 73 20 61  |e applications a|
00006940  6c 72 65 61 64 79 20 69  6e 0a 74 68 65 20 50 75  |lready in.the Pu|
00006950  62 6c 69 63 20 44 6f 6d  61 69 6e 20 28 74 68 69  |blic Domain (thi|
00006960  73 20 69 73 20 74 68 65  20 73 65 63 6f 6e 64 20  |s is the second |
00006970  6f 6e 65 20 49 20 68 61  76 65 20 77 72 69 74 74  |one I have writt|
00006980  65 6e 21 29 0a 73 6f 20  77 68 79 20 64 6f 20 77  |en!).so why do w|
00006990  65 20 6e 65 65 64 20 61  6e 6f 74 68 65 72 20 6f  |e need another o|
000069a0  6e 65 3f 0a 0a 54 68 65  20 72 65 61 73 6f 6e 20  |ne?..The reason |
000069b0  69 73 20 74 68 61 74 20  65 78 69 73 74 69 6e 67  |is that existing|
000069c0  20 73 68 65 6c 6c 20 70  72 6f 67 72 61 6d 73 20  | shell programs |
000069d0  61 72 65 20 65 69 74 68  65 72 20 74 6f 6f 0a 69  |are either too.i|
000069e0  6e 66 6c 65 78 69 62 6c  65 20 6f 72 20 74 6f 6f  |nflexible or too|
000069f0  20 63 6f 6d 70 6c 69 63  61 74 65 64 2e 20 41 6c  | complicated. Al|
00006a00  6c 20 6f 66 20 74 68 65  6d 20 49 20 68 61 76 65  |l of them I have|
00006a10  20 73 65 65 6e 0a 69 6e  76 6f 6c 76 65 20 65 64  | seen.involve ed|
00006a20  69 74 69 6e 67 20 74 68  65 20 73 68 65 6c 6c 20  |iting the shell |
00006a30  63 6f 64 65 20 69 6e 74  72 6f 64 75 63 69 6e 67  |code introducing|
00006a40  20 74 68 65 0a 70 6f 73  73 69 62 69 6c 69 74 79  | the.possibility|
00006a50  20 6f 66 20 6d 61 6b 69  6e 67 20 6d 69 73 74 61  | of making mista|
00006a60  6b 65 73 20 77 68 69 63  68 20 75 73 75 61 6c 6c  |kes which usuall|
00006a70  79 20 72 65 73 75 6c 74  20 69 6e 20 61 0a 63 72  |y result in a.cr|
00006a80  61 73 68 65 64 20 63 6f  6d 70 75 74 65 72 2e 20  |ashed computer. |
00006a90  54 68 69 73 20 6f 6e 65  20 69 73 20 64 69 66 66  |This one is diff|
00006aa0  65 72 65 6e 74 20 62 65  63 61 75 73 65 20 74 68  |erent because th|
00006ab0  65 20 75 73 65 72 0a 61  70 70 6c 69 63 61 74 69  |e user.applicati|
00006ac0  6f 6e 20 6e 6f 74 69 66  69 65 73 20 74 68 65 20  |on notifies the |
00006ad0  73 68 65 6c 6c 20 77 68  69 63 68 20 27 65 76 65  |shell which 'eve|
00006ae0  6e 74 73 27 20 69 74 20  69 73 0a 69 6e 74 65 72  |nts' it is.inter|
00006af0  65 73 74 65 64 20 69 6e  20 61 6e 64 20 74 68 65  |ested in and the|
00006b00  20 73 68 65 6c 6c 20 74  68 65 6e 20 63 61 6c 6c  | shell then call|
00006b10  73 20 74 68 65 20 75 73  65 72 0a 61 70 70 6c 69  |s the user.appli|
00006b20  63 61 74 69 6f 6e 20 77  68 65 6e 20 74 68 65 20  |cation when the |
00006b30  65 76 65 6e 74 20 6f 63  63 75 72 73 2e 0a 0a 3c  |event occurs...<|
00006b40  50 52 4f 43 73 68 65 6c  6c 5f 41 74 74 61 63 68  |PROCshell_Attach|
00006b50  4d 6f 64 65 43 68 61 6e  67 65 48 61 6e 64 6c 65  |ModeChangeHandle|
00006b60  72 3e 20 69 73 20 61 20  76 65 72 79 20 73 69 6d  |r> is a very sim|
00006b70  70 6c 65 0a 65 78 61 6d  70 6c 65 20 77 68 69 63  |ple.example whic|
00006b80  68 20 63 61 6c 6c 73 20  61 20 66 75 6e 63 74 69  |h calls a functi|
00006b90  6f 6e 20 69 6e 20 74 68  65 20 75 73 65 72 20 61  |on in the user a|
00006ba0  70 70 6c 69 63 61 74 69  6f 6e 0a 77 68 65 6e 20  |pplication.when |
00006bb0  74 68 65 20 73 63 72 65  65 6e 20 6d 6f 64 65 20  |the screen mode |
00006bc0  63 68 61 6e 67 65 73 2e  20 41 20 6d 6f 72 65 20  |changes. A more |
00006bd0  63 6f 6d 70 6c 69 63 61  74 65 64 20 65 78 61 6d  |complicated exam|
00006be0  70 6c 65 0a 69 73 20 3c  50 52 4f 43 73 68 65 6c  |ple.is <PROCshel|
00006bf0  6c 5f 41 74 74 61 63 68  50 61 6e 65 3e 20 77 68  |l_AttachPane> wh|
00006c00  69 63 68 20 61 6c 6c 6f  77 73 20 74 68 65 20 61  |ich allows the a|
00006c10  74 74 61 63 68 6d 65 6e  74 20 6f 66 0a 70 61 6e  |ttachment of.pan|
00006c20  65 20 77 69 6e 64 6f 77  73 20 74 6f 20 61 20 70  |e windows to a p|
00006c30  61 72 65 6e 74 20 77 69  6e 64 6f 77 2e 20 41 6c  |arent window. Al|
00006c40  6c 20 6f 70 65 6e 69 6e  67 20 61 6e 64 20 63 6c  |l opening and cl|
00006c50  6f 73 69 6e 67 0a 6f 66  20 77 69 6e 64 6f 77 73  |osing.of windows|
00006c60  20 61 6e 64 20 70 61 6e  65 73 20 69 73 20 68 61  | and panes is ha|
00006c70  6e 64 6c 65 64 20 74 6f  74 61 6c 6c 79 20 62 79  |ndled totally by|
00006c80  20 74 68 65 20 73 68 65  6c 6c 0a 6c 69 62 72 61  | the shell.libra|
00006c90  72 79 2e 0a 0a 54 68 65  20 61 64 76 61 6e 74 61  |ry...The advanta|
00006ca0  67 65 20 69 73 20 74 68  65 72 65 66 6f 72 65 20  |ge is therefore |
00006cb0  74 68 61 74 20 74 68 65  20 73 68 65 6c 6c 20 63  |that the shell c|
00006cc0  6f 64 65 20 61 6e 64 20  74 68 65 0a 75 73 65 72  |ode and the.user|
00006cd0  20 63 6f 64 65 20 69 73  20 6b 65 70 74 20 63 6f  | code is kept co|
00006ce0  6d 70 6c 65 74 65 6c 79  20 73 65 70 65 72 61 74  |mpletely seperat|
00006cf0  65 20 72 65 73 75 6c 74  69 6e 67 20 69 6e 20 61  |e resulting in a|
00006d00  0a 28 68 6f 70 65 66 75  6c 6c 79 29 20 6d 75 63  |.(hopefully) muc|
00006d10  68 20 6d 6f 72 65 20 75  6e 64 65 72 73 74 61 6e  |h more understan|
00006d20  64 61 62 6c 65 20 61 6e  64 20 72 6f 62 75 73 74  |dable and robust|
00006d30  20 75 73 65 72 0a 61 70  70 6c 69 63 61 74 69 6f  | user.applicatio|
00006d40  6e 2e 54 68 65 20 41 75  74 68 6f 72 0a 4f 4b 20  |n.The Author.OK |
00006d50  49 20 6c 69 65 64 20 61  62 6f 75 74 20 6e 6f 74  |I lied about not|
00006d60  20 61 73 6b 69 6e 67 20  66 6f 72 20 6d 6f 6e 65  | asking for mone|
00006d70  79 2e 20 49 66 20 79 6f  75 20 73 65 6e 64 0a 6d  |y. If you send.m|
00006d80  65 20 3c a3 35 2e 30 30  70 3d 3e 43 61 73 68 3e  |e <.5.00p=>Cash>|
00006d90  20 79 6f 75 20 77 69 6c  6c 20 6d 61 6b 65 20 3c  | you will make <|
00006da0  54 68 65 20 57 69 66 65  3d 3e 57 69 66 65 3e 20  |The Wife=>Wife> |
00006db0  61 6e 64 20 6d 65 20 76  65 72 79 0a 68 61 70 70  |and me very.happ|
00006dc0  79 2e 20 59 6f 75 20 63  6f 75 6c 64 20 65 76 65  |y. You could eve|
00006dd0  6e 20 72 65 63 65 69 76  65 20 75 70 64 61 74 65  |n receive update|
00006de0  64 20 76 65 72 73 69 6f  6e 73 20 6f 66 0a 61 6c  |d versions of.al|
00006df0  6c 20 6d 79 20 77 6f 6e  64 65 72 66 75 6c 20 3c  |l my wonderful <|
00006e00  50 72 6f 67 72 61 6d 73  3e 2e 20 49 20 6b 6e 6f  |Programs>. I kno|
00006e10  77 20 69 66 20 79 6f 75  20 72 65 67 69 73 74 65  |w if you registe|
00006e20  72 0a 61 6c 6c 20 6f 66  20 74 68 65 20 27 53 68  |r.all of the 'Sh|
00006e30  61 72 65 57 61 72 65 27  20 28 77 68 69 63 68 20  |areWare' (which |
00006e40  69 73 20 77 68 61 74 20  74 68 65 20 45 76 6e 74  |is what the Evnt|
00006e50  73 68 65 6c 6c 0a 6c 69  62 72 61 72 79 20 69 73  |shell.library is|
00006e60  29 20 79 6f 75 20 68 61  76 65 20 69 74 20 77 6f  |) you have it wo|
00006e70  75 6c 64 20 63 6f 73 74  20 61 20 66 61 69 72 20  |uld cost a fair |
00006e80  62 69 74 20 6f 66 0a 63  61 73 68 2c 20 62 75 74  |bit of.cash, but|
00006e90  20 63 6f 6e 73 69 64 65  72 20 74 68 65 20 74 69  | consider the ti|
00006ea0  6d 65 20 61 6e 64 20 65  66 66 6f 72 74 20 49 20  |me and effort I |
00006eb0  61 6e 64 20 74 68 65 0a  6f 74 68 65 72 20 61 75  |and the.other au|
00006ec0  74 68 6f 72 73 20 68 61  76 65 20 70 75 74 20 69  |thors have put i|
00006ed0  6e 74 6f 20 61 6c 6c 20  74 68 69 73 21 0a 0a 43  |nto all this!..C|
00006ee0  6c 69 63 6b 20 3c 68 65  72 65 3d 3e 41 75 74 68  |lick <here=>Auth|
00006ef0  6f 72 32 3e 20 66 6f 72  20 6d 79 20 61 64 64 72  |or2> for my addr|
00006f00  65 73 73 2e 2e 2e 54 68  65 20 57 69 66 65 0a 48  |ess...The Wife.H|
00006f10  65 72 20 6e 61 6d 65 20  69 73 20 48 69 6c 6b 65  |er name is Hilke|
00006f20  20 62 79 20 74 68 65 20  77 61 79 2e 20 57 68 65  | by the way. Whe|
00006f30  6e 20 47 75 74 74 6f 72  6d 0a 69 6d 70 72 6f 76  |n Guttorm.improv|
00006f40  65 73 20 53 74 72 6f 6e  67 48 6c 70 20 74 6f 20  |es StrongHlp to |
00006f50  69 6e 63 6c 75 64 65 20  73 70 72 69 74 65 20 66  |include sprite f|
00006f60  69 6c 65 0a 64 69 73 70  6c 61 79 73 20 49 27 6c  |ile.displays I'l|
00006f70  6c 20 62 65 20 61 62 6c  65 20 74 6f 20 20 73 68  |l be able to  sh|
00006f80  6f 77 20 79 6f 75 20 61  20 70 69 63 74 75 72 65  |ow you a picture|
00006f90  0a 6f 66 20 68 65 72 2e  20 54 68 61 74 20 69 73  |.of her. That is|
00006fa0  20 69 66 20 73 68 65 20  64 69 64 6e 27 74 20 74  | if she didn't t|
00006fb0  68 69 6e 6b 20 74 68 61  74 20 6e 65 77 0a 63 75  |hink that new.cu|
00006fc0  72 74 61 69 6e 73 20 77  65 72 65 20 6d 6f 72 65  |rtains were more|
00006fd0  20 69 6d 70 6f 72 74 61  6e 74 20 74 68 61 6e 20  | important than |
00006fe0  73 63 61 6e 6e 65 72 73  0a 6f 72 20 61 20 6e 65  |scanners.or a ne|
00006ff0  77 20 41 52 43 2e 2e 2e  2e 2e 2e 2e 2e 2e 2e 55  |w ARC..........U|
00007000  73 65 72 20 47 75 69 64  65 0a 3c 43 68 61 6e 67  |ser Guide.<Chang|
00007010  65 20 48 69 73 74 6f 72  79 20 20 20 3d 3e 48 69  |e History   =>Hi|
00007020  73 74 6f 72 79 3e 0a 3c  43 6f 6d 6d 6f 6e 20 51  |story>.<Common Q|
00007030  75 65 73 74 69 6f 6e 73  20 3d 3e 71 75 65 73 74  |uestions =>quest|
00007040  69 6f 6e 73 3e 0a 3c 43  6f 6d 70 72 65 73 73 69  |ions>.<Compressi|
00007050  6e 67 20 20 20 20 20 20  3e 0a 3c 43 6f 70 79 72  |ng      >.<Copyr|
00007060  69 67 68 74 20 20 20 20  20 20 20 20 3e 0a 3c 44  |ight        >.<D|
00007070  65 62 75 67 67 69 6e 67  20 20 20 20 20 20 20 20  |ebugging        |
00007080  3e 0a 3c 44 79 6e 61 6d  69 63 20 57 69 6e 64 6f  |>.<Dynamic Windo|
00007090  77 73 20 20 3d 3e 44 79  6e 61 6d 69 63 57 69 6e  |ws  =>DynamicWin|
000070a0  64 6f 77 73 3e 0a 3c 49  6e 74 65 72 61 63 74 69  |dows>.<Interacti|
000070b0  76 65 20 48 65 6c 70 20  3d 3e 49 6e 74 65 72 48  |ve Help =>InterH|
000070c0  6c 70 3e 0a 3c 49 6e 74  65 72 66 61 63 65 20 4d  |lp>.<Interface M|
000070d0  6f 64 75 6c 65 20 3d 3e  49 6e 74 65 72 66 61 63  |odule =>Interfac|
000070e0  65 3e 0a 3c 4c 6f 61 64  69 6e 67 20 46 69 6c 65  |e>.<Loading File|
000070f0  73 20 20 20 20 3d 3e 4c  6f 61 64 69 6e 67 3e 0a  |s    =>Loading>.|
00007100  3c 4d 65 6d 6f 72 79 20  4d 61 6e 61 67 65 6d 65  |<Memory Manageme|
00007110  6e 74 3d 3e 4d 65 6d 4d  61 6e 3e 0a 3c 4d 65 6e  |nt=>MemMan>.<Men|
00007120  75 73 20 20 20 20 20 20  20 20 20 20 20 20 3e 0a  |us            >.|
00007130  3c 4d 65 73 73 61 67 65  73 20 20 20 20 20 20 20  |<Messages       |
00007140  20 20 3e 0a 3c 4f 75 74  6c 69 6e 65 20 46 6f 6e  |  >.<Outline Fon|
00007150  74 73 20 20 20 20 3d 3e  66 6f 6e 74 73 3e 0a 3c  |ts    =>fonts>.<|
00007160  52 65 73 46 69 6e 64 20  20 20 20 20 20 20 20 20  |ResFind         |
00007170  20 3d 3e 52 65 73 46 69  6e 64 3e 0a 3c 52 49 53  | =>ResFind>.<RIS|
00007180  43 2d 4f 53 20 33 20 20  20 20 20 20 20 20 3d 3e  |C-OS 3        =>|
00007190  52 49 53 43 4f 53 33 3e  0a 3c 53 74 61 74 69 63  |RISCOS3>.<Static|
000071a0  20 57 69 6e 64 6f 77 73  20 20 20 3d 3e 53 74 61  | Windows   =>Sta|
000071b0  74 69 63 57 69 6e 64 6f  77 73 3e 0a 3c 53 74 72  |ticWindows>.<Str|
000071c0  6f 6e 67 48 6c 70 20 20  20 20 20 20 20 20 3e 0a  |ongHlp        >.|
000071d0  3c 53 61 76 69 6e 67 20  46 69 6c 65 73 20 20 20  |<Saving Files   |
000071e0  20 20 3d 3e 53 61 76 69  6e 67 3e 0a 3c 53 70 72  |  =>Saving>.<Spr|
000071f0  69 74 65 73 20 20 20 20  20 20 20 20 20 20 3e 0a  |ites          >.|
00007200  3c 54 65 6d 70 6c 61 74  65 73 20 20 20 20 20 20  |<Templates      |
00007210  20 20 3e 0a 0a 3c 54 68  65 20 4e 65 78 74 20 52  |  >..<The Next R|
00007220  65 6c 65 61 73 65 3d 3e  4e 65 78 74 52 65 6c 65  |elease=>NextRele|
00007230  61 73 65 3e 54 68 65 20  4e 65 78 74 20 72 65 6c  |ase>The Next rel|
00007240  65 61 73 65 0a 20 4e 6f  20 70 72 6f 6d 69 73 65  |ease. No promise|
00007250  73 20 6d 69 6e 64 2e 2e  2e 0a 0a 2d 20 53 75 70  |s mind.....- Sup|
00007260  70 6f 72 74 20 66 6f 72  20 61 75 74 6f 6d 61 74  |port for automat|
00007270  69 63 20 68 61 6e 64 6c  69 6e 67 20 6f 66 20 6d  |ic handling of m|
00007280  6f 72 65 0a 20 20 63 6f  6d 70 6c 69 63 61 74 65  |ore.  complicate|
00007290  64 20 69 63 6f 6e 20 74  79 70 65 73 2c 20 66 6f  |d icon types, fo|
000072a0  72 20 65 78 61 6d 70 6c  65 0a 20 20 73 6c 69 64  |r example.  slid|
000072b0  65 72 73 2c 20 72 6f 74  61 74 69 6e 67 20 6b 6e  |ers, rotating kn|
000072c0  6f 62 73 20 65 74 63 0a  20 20 28 73 74 65 61 64  |obs etc.  (stead|
000072d0  79 20 6e 6f 77 20 64 6f  6e 27 74 20 67 65 74 20  |y now don't get |
000072e0  63 61 72 72 69 65 64 20  61 77 61 79 29 0a 2d 20  |carried away).- |
000072f0  49 6d 70 6f 72 74 20 61  6e 64 20 64 69 73 70 6c  |Import and displ|
00007300  61 79 20 6f 66 20 44 72  61 77 46 69 6c 65 73 20  |ay of DrawFiles |
00007310  61 6e 64 0a 20 20 53 70  72 69 74 65 73 0a 2d 20  |and.  Sprites.- |
00007320  49 6e 63 6c 75 73 69 6f  6e 20 6f 66 20 6d 6f 72  |Inclusion of mor|
00007330  65 20 64 65 62 75 67 67  69 6e 67 20 61 69 64 73  |e debugging aids|
00007340  0a 2d 20 4d 6f 72 65 20  64 72 61 67 20 74 79 70  |.- More drag typ|
00007350  65 73 0a 2d 20 41 75 74  6f 73 63 72 6f 6c 6c 20  |es.- Autoscroll |
00007360  68 61 6e 64 6c 65 72 20  77 68 65 6e 20 6f 62 6a  |handler when obj|
00007370  65 63 74 20 69 73 0a 20  20 64 72 61 67 67 65 64  |ect is.  dragged|
00007380  20 77 69 74 68 69 6e 20  61 20 77 69 6e 64 6f 77  | within a window|
00007390  0a 2d 20 43 6f 6c 6f 75  72 20 70 69 63 6b 20 64  |.- Colour pick d|
000073a0  69 61 6c 6f 67 73 0a 2d  20 41 75 74 6f 6d 61 74  |ialogs.- Automat|
000073b0  69 63 20 68 61 6e 64 6c  69 6e 67 20 6f 66 20 6e  |ic handling of n|
000073c0  6f 6e 2d 69 63 6f 6e 20  74 65 78 74 0a 20 20 77  |on-icon text.  w|
000073d0  69 74 68 69 6e 20 61 20  77 69 6e 64 6f 77 20 28  |ithin a window (|
000073e0  6c 69 6b 65 20 43 20 74  78 74 20 6f 62 6a 65 63  |like C txt objec|
000073f0  74 73 29 0a 2d 20 50 6c  61 79 69 6e 67 20 6f 66  |ts).- Playing of|
00007400  20 4d 61 65 73 74 72 6f  20 74 75 6e 65 73 20 28  | Maestro tunes (|
00007410  41 72 63 68 57 61 79 20  64 6f 65 73 21 29 0a 2d  |ArchWay does!).-|
00007420  20 45 78 74 65 6e 64 69  6e 67 20 6d 65 73 73 61  | Extending messa|
00007430  67 65 20 66 69 6c 65 20  75 73 65 61 67 65 20 74  |ge file useage t|
00007440  6f 20 69 63 6f 6e 73 2f  0a 20 20 77 69 6e 64 6f  |o icons/.  windo|
00007450  77 73 2f 6d 65 6e 75 73  0a 2d 20 52 65 70 6c 61  |ws/menus.- Repla|
00007460  79 20 46 69 6c 6d 73 20  28 21 21 21 29 0a 2d 20  |y Films (!!!).- |
00007470  42 65 74 74 65 72 20 6d  75 6c 74 69 70 6c 65 20  |Better multiple |
00007480  66 69 6c 65 20 62 75 66  66 65 72 73 0a 2d 20 43  |file buffers.- C|
00007490  6f 6d 70 6c 65 74 65 20  47 65 72 6d 61 6e 20 6d  |omplete German m|
000074a0  65 73 73 61 67 65 20 66  69 6c 65 73 0a 2d 20 41  |essage files.- A|
000074b0  75 74 6f 6d 61 74 69 63  20 61 74 74 61 63 68 69  |utomatic attachi|
000074c0  6e 67 20 6f 66 20 27 68  6f 74 20 6b 65 79 27 20  |ng of 'hot key' |
000074d0  65 76 65 6e 74 73 0a 20  20 62 79 20 65 78 61 6d  |events.  by exam|
000074e0  69 6e 69 6e 67 20 6d 65  6e 75 20 74 65 78 74 52  |ining menu textR|
000074f0  49 53 43 2d 4f 53 20 33  0a 41 6c 6c 20 73 75 70  |ISC-OS 3.All sup|
00007500  70 6c 69 65 64 20 61 70  70 73 20 68 61 76 65 20  |plied apps have |
00007510  62 65 65 6e 20 74 65 73  74 65 64 20 75 6e 64 65  |been tested unde|
00007520  72 20 52 49 53 43 2d 4f  53 20 33 2e 31 0a 72 75  |r RISC-OS 3.1.ru|
00007530  6e 6e 69 6e 67 20 6f 6e  20 61 20 34 4d 65 67 20  |nning on a 4Meg |
00007540  41 33 31 30 20 61 6e 64  20 6f 6e 20 61 6e 20 41  |A310 and on an A|
00007550  34 2c 20 62 75 74 20 61  74 20 74 68 65 20 6d 6f  |4, but at the mo|
00007560  6d 65 6e 74 0a 6d 61 6b  65 20 6c 69 74 74 6c 65  |ment.make little|
00007570  20 75 73 65 20 6f 66 20  74 68 65 20 6e 65 77 20  | use of the new |
00007580  66 65 61 74 75 72 65 73  2e 0a 0a 41 70 61 72 74  |features...Apart|
00007590  20 66 72 6f 6d 20 73 75  70 70 6f 72 74 69 6e 67  | from supporting|
000075a0  20 73 6f 6c 69 64 20 73  70 72 69 74 65 20 64 72  | solid sprite dr|
000075b0  61 67 67 69 6e 67 2e 20  28 54 68 61 74 27 73 0a  |agging. (That's.|
000075c0  6f 6e 65 20 75 70 20 6f  6e 20 52 49 53 43 5f 4f  |one up on RISC_O|
000075d0  53 4c 69 62 20 61 6e 79  77 61 79 2e 2e 29 0a 0a  |SLib anyway..)..|
000075e0  4f 68 20 79 65 73 2c 20  61 6e 64 20 74 68 65 20  |Oh yes, and the |
000075f0  62 6f 6f 74 20 66 69 6c  65 20 6d 65 73 73 61 67  |boot file messag|
00007600  65 2e 52 65 63 6f 6d 70  65 6e 73 65 0a 4f 72 20  |e.Recompense.Or |
00007610  74 68 65 20 65 71 75 69  76 61 6c 65 6e 74 0a 69  |the equivalent.i|
00007620  6e 20 63 68 6f 63 6f 6c  61 74 65 44 65 62 75 67  |n chocolateDebug|
00007630  67 69 6e 67 0a 54 68 65  20 45 76 6e 74 53 68 65  |ging.The EvntShe|
00007640  6c 6c 20 6c 69 62 72 61  72 79 20 6f 75 74 70 75  |ll library outpu|
00007650  74 73 20 61 20 63 6f 6d  6d 65 6e 74 61 72 79 20  |ts a commentary |
00007660  6f 6e 0a 77 68 61 74 20  69 74 20 69 73 20 64 6f  |on.what it is do|
00007670  69 6e 67 20 69 6e 74 6f  20 61 20 74 72 61 63 65  |ing into a trace|
00007680  66 69 6c 65 2c 20 70 72  6f 76 69 64 69 6e 67 0a  |file, providing.|
00007690  74 68 61 74 20 3c 50 52  4f 43 73 68 65 6c 6c 5f  |that <PROCshell_|
000076a0  54 72 61 63 65 49 6e 69  74 3e 20 61 6e 64 20 3c  |TraceInit> and <|
000076b0  50 52 4f 43 73 68 65 6c  6c 5f 54 72 61 63 65 4f  |PROCshell_TraceO|
000076c0  6e 3e 0a 68 61 76 65 20  62 65 65 6e 20 63 61 6c  |n>.have been cal|
000076d0  6c 65 64 2e 20 54 68 65  20 75 73 65 72 20 61 70  |led. The user ap|
000076e0  70 6c 69 63 61 74 69 6f  6e 20 63 61 6e 20 61 6c  |plication can al|
000076f0  73 6f 0a 70 6c 61 63 65  20 6f 75 74 70 75 74 20  |so.place output |
00007700  69 6e 20 74 68 69 73 20  66 69 6c 65 20 75 73 69  |in this file usi|
00007710  6e 67 20 3c 50 52 4f 43  73 68 65 6c 6c 5f 54 72  |ng <PROCshell_Tr|
00007720  61 63 65 66 30 3e 2e 0a  0a 4f 75 74 70 75 74 74  |acef0>...Outputt|
00007730  69 6e 67 20 74 72 61 63  65 20 69 6e 66 6f 72 6d  |ing trace inform|
00007740  61 74 69 6f 6e 20 77 69  6c 6c 20 73 6c 6f 77 20  |ation will slow |
00007750  74 68 65 20 75 73 65 72  0a 61 70 70 6c 69 63 61  |the user.applica|
00007760  74 69 6f 6e 20 6e 6f 74  69 63 65 61 62 6c 79 2c  |tion noticeably,|
00007770  20 65 73 70 65 63 69 61  6c 6c 79 20 77 68 65 6e  | especially when|
00007780  20 73 74 61 72 74 69 6e  67 20 75 70 0a 61 73 20  | starting up.as |
00007790  61 20 6c 6f 74 20 6f 66  20 74 72 61 63 65 20 69  |a lot of trace i|
000077a0  6e 66 6f 20 69 73 20 67  65 6e 65 72 61 74 65 64  |nfo is generated|
000077b0  20 62 79 20 74 68 65 20  63 61 6c 6c 20 74 6f 0a  | by the call to.|
000077c0  3c 50 52 4f 43 73 68 65  6c 6c 5f 52 65 73 6f 75  |<PROCshell_Resou|
000077d0  72 63 65 73 49 6e 69 74  3e 2e 20 54 68 65 72 65  |rcesInit>. There|
000077e0  66 6f 72 65 20 69 74 20  69 73 20 62 65 73 74 20  |fore it is best |
000077f0  74 6f 0a 6f 6e 6c 79 20  74 75 72 6e 20 6f 6e 20  |to.only turn on |
00007800  74 72 61 63 69 6e 67 20  77 68 65 6e 20 6e 65 63  |tracing when nec|
00007810  65 73 73 61 72 79 2c 20  61 6e 64 20 6f 66 20 63  |essary, and of c|
00007820  6f 75 72 73 65 0a 6d 61  6b 65 20 73 75 72 65 20  |ourse.make sure |
00007830  74 68 61 74 20 74 72 61  63 69 6e 67 20 69 73 20  |that tracing is |
00007840  6f 66 66 20 6f 6e 20 61  6e 79 20 61 70 70 6c 69  |off on any appli|
00007850  63 61 74 69 6f 6e 73 0a  79 6f 75 20 64 69 73 74  |cations.you dist|
00007860  72 69 62 75 74 65 21 0a  0a 41 20 73 65 70 65 72  |ribute!..A seper|
00007870  61 74 65 20 61 70 70 6c  69 63 61 74 69 6f 6e 2c  |ate application,|
00007880  20 21 53 68 65 6c 6c 44  42 75 67 20 61 6c 6c 6f  | !ShellDBug allo|
00007890  77 73 20 74 68 65 20 74  72 61 63 65 0a 6d 65 73  |ws the trace.mes|
000078a0  73 61 67 65 73 20 74 6f  20 62 65 20 76 69 65 77  |sages to be view|
000078b0  65 64 20 69 6e 20 61 20  77 69 6e 64 6f 77 20 61  |ed in a window a|
000078c0  73 20 74 68 65 20 75 73  65 72 0a 61 70 70 6c 69  |s the user.appli|
000078d0  63 61 74 69 6f 6e 20 72  75 6e 73 2e 44 79 6e 61  |cation runs.Dyna|
000078e0  6d 69 63 20 44 69 61 6c  6f 67 20 57 69 6e 64 6f  |mic Dialog Windo|
000078f0  77 73 0a 44 79 6e 61 6d  69 63 20 77 69 6e 64 6f  |ws.Dynamic windo|
00007900  77 73 20 61 72 65 20 74  68 6f 73 65 20 63 72 65  |ws are those cre|
00007910  61 74 65 64 20 62 79 20  6d 6f 76 69 6e 67 20 74  |ated by moving t|
00007920  68 65 20 70 6f 69 6e 74  65 72 20 0a 6f 76 65 72  |he pointer .over|
00007930  20 61 20 73 75 62 6d 65  6e 75 20 70 6f 69 6e 74  | a submenu point|
00007940  65 72 20 61 72 72 6f 77  20 28 69 2e 65 20 74 68  |er arrow (i.e th|
00007950  65 20 6e 6f 72 6d 61 6c  20 27 41 62 6f 75 74 20  |e normal 'About |
00007960  74 68 69 73 20 0a 70 72  6f 67 72 61 6d 27 20 77  |this .program' w|
00007970  69 6e 64 6f 77 20 70 72  6f 64 75 63 65 64 20 62  |indow produced b|
00007980  79 20 74 68 65 20 27 49  6e 66 6f 27 20 65 6e 74  |y the 'Info' ent|
00007990  72 79 20 6f 6e 20 74 68  65 20 0a 69 63 6f 6e 62  |ry on the .iconb|
000079a0  61 72 20 6d 65 6e 75 29  20 6f 72 20 6f 70 74 69  |ar menu) or opti|
000079b0  6f 6e 61 6c 6c 79 20 77  68 65 6e 20 61 20 27 68  |onally when a 'h|
000079c0  6f 74 20 6b 65 79 27 20  69 73 20 70 72 65 73 73  |ot key' is press|
000079d0  65 64 2e 20 0a 54 68 65  79 20 61 72 65 20 6f 70  |ed. .They are op|
000079e0  65 6e 65 64 20 77 69 74  68 20 61 20 63 61 6c 6c  |ened with a call|
000079f0  20 74 6f 20 3c 50 52 4f  43 73 68 65 6c 6c 5f 4f  | to <PROCshell_O|
00007a00  70 65 6e 57 69 6e 64 6f  77 44 79 6e 61 6d 69 63  |penWindowDynamic|
00007a10  3e 2e 0a 0a 57 68 65 6e  20 77 72 69 74 65 61 62  |>...When writeab|
00007a20  6c 65 20 69 63 6f 6e 73  20 65 78 69 73 74 20 69  |le icons exist i|
00007a30  6e 20 74 68 65 20 64 79  6e 61 6d 69 63 20 77 69  |n the dynamic wi|
00007a40  6e 64 6f 77 20 75 70 2f  64 6f 77 6e 20 0a 63 75  |ndow up/down .cu|
00007a50  72 73 6f 72 20 6b 65 79  70 72 65 73 73 65 73 20  |rsor keypresses |
00007a60  6d 6f 76 65 20 74 68 65  20 63 61 72 65 74 20 62  |move the caret b|
00007a70  65 74 77 65 65 6e 20 74  68 65 20 69 63 6f 6e 73  |etween the icons|
00007a80  20 75 73 69 6e 67 20 0a  74 68 65 20 69 63 6f 6e  | using .the icon|
00007a90  20 68 61 6e 64 6c 65 73  20 74 6f 20 64 65 74 65  | handles to dete|
00007aa0  72 6d 69 6e 65 20 77 68  65 72 65 20 74 6f 20 6d  |rmine where to m|
00007ab0  6f 76 65 20 6e 65 78 74  2e 20 59 6f 75 20 0a 73  |ove next. You .s|
00007ac0  68 6f 75 6c 64 20 65 6e  73 75 72 65 20 74 68 65  |hould ensure the|
00007ad0  72 65 66 6f 72 65 20 74  68 61 74 20 74 68 65 20  |refore that the |
00007ae0  6f 72 64 65 72 20 6f 66  20 74 68 65 20 69 63 6f  |order of the ico|
00007af0  6e 20 68 61 6e 64 6c 65  73 0a 69 73 20 61 20 6c  |n handles.is a l|
00007b00  6f 67 69 63 61 6c 20 70  72 6f 67 72 65 73 73 69  |ogical progressi|
00007b10  6f 6e 20 74 68 72 6f 75  67 68 20 74 68 65 20 64  |on through the d|
00007b20  69 61 6c 6f 67 20 62 6f  78 2e 20 49 63 6f 6e 73  |ialog box. Icons|
00007b30  20 74 68 61 74 0a 61 72  65 20 75 6e 73 65 6c 65  | that.are unsele|
00007b40  63 74 61 62 6c 65 20 28  69 2e 65 2e 20 67 72 65  |ctable (i.e. gre|
00007b50  79 65 64 20 6f 75 74 29  20 77 69 6c 6c 20 62 65  |yed out) will be|
00007b60  20 69 67 6e 6f 72 65 64  2e 20 50 72 65 73 73 69  | ignored. Pressi|
00007b70  6e 67 20 0a 74 68 65 20  5c 3c 52 45 54 55 52 4e  |ng .the \<RETURN|
00007b80  3e 20 6b 65 79 20 6d 6f  76 65 73 20 74 68 65 20  |> key moves the |
00007b90  63 61 72 65 74 20 74 6f  20 74 68 65 20 6e 65 78  |caret to the nex|
00007ba0  74 20 69 63 6f 6e 2c 20  75 6e 6c 65 73 73 20 0a  |t icon, unless .|
00007bb0  74 68 65 20 63 61 72 65  74 20 69 73 20 61 6c 72  |the caret is alr|
00007bc0  65 61 64 79 20 69 6e 20  74 68 65 20 6c 61 73 74  |eady in the last|
00007bd0  20 77 72 69 74 65 61 62  6c 65 20 69 63 6f 6e 2c  | writeable icon,|
00007be0  20 69 6e 20 77 68 69 63  68 20 0a 63 61 73 65 20  | in which .case |
00007bf0  69 63 6f 6e 20 30 20 28  6e 6f 72 6d 61 6c 6c 79  |icon 0 (normally|
00007c00  20 61 20 27 64 65 66 61  75 6c 74 20 61 63 74 69  | a 'default acti|
00007c10  6f 6e 27 20 69 63 6f 6e  20 77 69 74 68 20 61 6e  |on' icon with an|
00007c20  20 65 78 74 72 61 0a 62  6f 72 64 65 72 29 20 69  | extra.border) i|
00007c30  73 20 70 72 65 73 73 65  64 20 61 6e 64 20 74 68  |s pressed and th|
00007c40  65 20 6d 65 6e 75 2f 64  69 61 6c 6f 67 20 62 6f  |e menu/dialog bo|
00007c50  78 20 63 6c 6f 73 65 64  2e 20 41 63 74 75 61 6c  |x closed. Actual|
00007c60  6c 79 20 0a 63 6c 69 63  6b 69 6e 67 20 5c 3c 53  |ly .clicking \<S|
00007c70  45 4c 45 43 54 3e 20 6f  6e 20 69 63 6f 6e 20 30  |ELECT> on icon 0|
00007c80  20 6f 66 20 61 20 64 79  6e 61 6d 69 63 20 64 69  | of a dynamic di|
00007c90  61 6c 6f 67 20 62 6f 78  20 77 69 6c 6c 20 0a 63  |alog box will .c|
00007ca0  61 75 73 65 20 74 68 65  20 73 68 65 6c 6c 20 6c  |ause the shell l|
00007cb0  69 62 72 61 72 79 20 74  6f 20 63 6c 6f 73 65 20  |ibrary to close |
00007cc0  74 68 65 20 77 69 6e 64  6f 77 20 61 73 20 77 65  |the window as we|
00007cd0  6c 6c 2e 0a 0a 57 68 65  6e 20 61 20 27 68 6f 74  |ll...When a 'hot|
00007ce0  20 6b 65 79 27 20 69 73  20 70 72 65 73 73 65 64  | key' is pressed|
00007cf0  20 79 6f 75 20 68 61 76  65 20 74 68 65 20 6f 70  | you have the op|
00007d00  74 69 6f 6e 20 6f 66 20  6f 70 65 6e 69 6e 67 20  |tion of opening |
00007d10  0a 61 20 64 79 6e 61 6d  69 63 20 64 69 61 6c 6f  |.a dynamic dialo|
00007d20  67 20 62 6f 78 20 77 68  69 63 68 20 77 69 6c 6c  |g box which will|
00007d30  20 64 69 73 61 70 70 65  61 72 20 77 68 65 6e 20  | disappear when |
00007d40  61 20 6d 6f 75 73 65 20  63 6c 69 63 6b 0a 69 73  |a mouse click.is|
00007d50  20 6d 61 64 65 20 6f 75  74 73 69 64 65 20 69 74  | made outside it|
00007d60  20 6f 72 20 74 68 65 20  5c 3c 45 53 43 3e 20 6b  | or the \<ESC> k|
00007d70  65 79 20 69 73 20 70 72  65 73 73 65 64 2c 20 6f  |ey is pressed, o|
00007d80  72 20 61 73 20 61 20 0a  27 53 74 61 74 69 63 27  |r as a .'Static'|
00007d90  20 64 69 61 6c 6f 67 20  62 6f 78 20 77 68 69 63  | dialog box whic|
00007da0  68 20 6d 75 73 74 20 62  65 20 65 78 70 6c 69 63  |h must be explic|
00007db0  69 74 6c 79 20 63 6c 6f  73 65 64 20 62 79 20 74  |itly closed by t|
00007dc0  68 65 20 0a 75 73 65 72  20 61 70 70 6c 69 63 61  |he .user applica|
00007dd0  74 69 6f 6e 20 70 72 6f  67 72 61 6d 2e 0a 0a 44  |tion program...D|
00007de0  6f 20 6e 6f 74 20 61 74  74 65 6d 70 74 20 74 6f  |o not attempt to|
00007df0  20 63 6c 6f 73 65 20 61  20 64 79 6e 61 6d 69 63  | close a dynamic|
00007e00  20 64 69 61 6c 6f 67 20  62 6f 78 20 77 69 74 68  | dialog box with|
00007e10  20 61 20 63 61 6c 6c 20  74 6f 20 0a 3c 50 52 4f  | a call to .<PRO|
00007e20  43 73 68 65 6c 6c 5f 43  6c 6f 73 65 57 69 6e 64  |Cshell_CloseWind|
00007e30  6f 77 3e 20 6f 72 20 3c  50 52 4f 43 73 68 65 6c  |ow> or <PROCshel|
00007e40  6c 5f 44 65 6c 65 74 65  57 69 6e 64 6f 77 3e 20  |l_DeleteWindow> |
00007e50  61 73 20 74 68 69 73 20  0a 77 69 6c 6c 20 63 61  |as this .will ca|
00007e60  75 73 65 20 61 6e 20 65  72 72 6f 72 20 77 68 65  |use an error whe|
00007e70  6e 20 74 68 65 20 73 68  65 6c 6c 20 6c 69 62 72  |n the shell libr|
00007e80  61 72 79 20 74 72 69 65  73 20 74 6f 20 63 6c 6f  |ary tries to clo|
00007e90  73 65 20 6f 72 0a 64 65  6c 65 74 65 20 74 68 65  |se or.delete the|
00007ea0  20 77 69 6e 64 6f 77 2e  53 74 61 74 69 63 20 57  | window.Static W|
00007eb0  69 6e 64 6f 77 73 0a 54  68 65 73 65 20 61 72 65  |indows.These are|
00007ec0  20 6f 70 65 6e 65 64 20  77 69 74 68 20 61 20 63  | opened with a c|
00007ed0  61 6c 6c 20 74 6f 20 3c  50 52 4f 43 73 68 65 6c  |all to <PROCshel|
00007ee0  6c 5f 4f 70 65 6e 57 69  6e 64 6f 77 53 74 61 74  |l_OpenWindowStat|
00007ef0  69 63 3e 20 61 6e 64 0a  72 65 73 70 6f 6e 64 20  |ic> and.respond |
00007f00  74 6f 20 63 75 72 73 6f  72 20 61 6e 64 20 5c 3c  |to cursor and \<|
00007f10  52 45 54 55 52 4e 3e 20  6b 65 79 70 72 65 73 73  |RETURN> keypress|
00007f20  65 73 20 6c 69 6b 65 20  64 79 6e 61 6d 69 63 20  |es like dynamic |
00007f30  0a 64 69 61 6c 6f 67 20  62 6f 78 65 73 20 65 78  |.dialog boxes ex|
00007f40  63 65 70 74 20 74 68 61  74 20 70 72 65 73 73 69  |cept that pressi|
00007f50  6e 67 20 5c 3c 52 45 54  55 52 4e 3e 20 69 6e 20  |ng \<RETURN> in |
00007f60  74 68 65 20 6c 61 73 74  20 0a 77 72 69 74 65 61  |the last .writea|
00007f70  62 6c 65 20 69 63 6f 6e  20 77 69 6c 6c 20 6e 6f  |ble icon will no|
00007f80  74 20 63 6c 6f 73 65 20  74 68 65 20 77 69 6e 64  |t close the wind|
00007f90  6f 77 2e 20 53 74 61 74  69 63 20 77 69 6e 64 6f  |ow. Static windo|
00007fa0  77 73 0a 6d 75 73 74 20  62 65 20 63 72 65 61 74  |ws.must be creat|
00007fb0  65 64 20 77 69 74 68 20  61 20 63 61 6c 6c 20 74  |ed with a call t|
00007fc0  6f 20 3c 50 52 4f 43 73  68 65 6c 6c 5f 43 72 65  |o <PROCshell_Cre|
00007fd0  61 74 65 57 69 6e 64 6f  77 53 74 61 74 69 63 3e  |ateWindowStatic>|
00007fe0  2e 0a 0a 43 6c 6f 73 69  6e 67 20 74 68 65 73 65  |...Closing these|
00007ff0  20 77 69 6e 64 6f 77 73  20 69 73 20 74 68 65 20  | windows is the |
00008000  72 65 73 70 6f 6e 73 69  62 69 6c 69 74 79 20 6f  |responsibility o|
00008010  66 20 74 68 65 20 0a 61  70 70 6c 69 63 61 74 69  |f the .applicati|
00008020  6f 6e 20 70 72 6f 67 72  61 6d 20 28 75 73 65 20  |on program (use |
00008030  3c 50 52 4f 43 73 68 65  6c 6c 5f 43 6c 6f 73 65  |<PROCshell_Close|
00008040  57 69 6e 64 6f 77 3e 29  20 65 78 63 65 70 74 20  |Window>) except |
00008050  69 6e 0a 74 68 65 20 63  61 73 65 20 6f 66 20 61  |in.the case of a|
00008060  20 63 6c 69 63 6b 20 6f  6e 20 74 68 65 20 27 43  | click on the 'C|
00008070  6c 6f 73 65 27 20 69 63  6f 6e 20 69 6e 20 74 68  |lose' icon in th|
00008080  65 20 74 69 74 6c 65 20  62 61 72 0a 69 63 6f 6e  |e title bar.icon|
00008090  20 28 69 66 20 70 72 65  73 65 6e 74 29 2e 0a 0a  | (if present)...|
000080a0  59 6f 75 20 77 6f 75 6c  64 20 75 73 65 20 61 20  |You would use a |
000080b0  73 74 61 74 69 63 20 77  69 6e 64 6f 77 20 66 6f  |static window fo|
000080c0  72 20 74 68 65 20 6d 61  69 6e 20 77 69 6e 64 6f  |r the main windo|
000080d0  77 20 6f 66 20 61 6e 20  0a 61 70 70 6c 69 63 61  |w of an .applica|
000080e0  74 69 6f 6e 2c 20 6f 72  20 70 65 72 68 61 70 73  |tion, or perhaps|
000080f0  20 66 6f 72 20 61 20 73  61 76 65 20 62 6f 78 20  | for a save box |
00008100  61 73 20 69 6e 20 74 68  65 20 63 61 73 65 20 6f  |as in the case o|
00008110  66 20 74 68 65 0a 21 57  69 6e 53 61 76 65 32 20  |f the.!WinSave2 |
00008120  65 78 61 6d 70 6c 65 2e  20 54 68 65 20 61 64 76  |example. The adv|
00008130  61 6e 74 61 67 65 20 6f  66 20 75 73 69 6e 67 20  |antage of using |
00008140  61 20 73 74 61 74 69 63  20 77 69 6e 64 6f 77 20  |a static window |
00008150  69 6e 20 0a 74 68 69 73  20 63 61 73 65 20 69 73  |in .this case is|
00008160  20 74 68 61 74 20 74 68  69 73 20 61 6c 6c 6f 77  | that this allow|
00008170  73 20 74 68 65 20 75 73  65 72 20 74 6f 20 6f 70  |s the user to op|
00008180  65 6e 20 64 69 72 65 63  74 6f 72 79 20 0a 76 69  |en directory .vi|
00008190  65 77 65 72 73 20 6f 72  20 73 74 61 72 74 20 6f  |ewers or start o|
000081a0  74 68 65 72 20 61 70 70  6c 69 63 61 74 69 6f 6e  |ther application|
000081b0  73 20 77 68 69 6c 65 20  6b 65 65 70 69 6e 67 20  |s while keeping |
000081c0  74 68 65 20 73 61 76 65  20 0a 62 6f 78 20 6f 6e  |the save .box on|
000081d0  20 74 68 65 20 73 63 72  65 65 6e 2e 54 65 6d 70  | the screen.Temp|
000081e0  6c 61 74 65 73 0a 41 6c  6c 20 77 69 6e 64 6f 77  |lates.All window|
000081f0  73 20 75 73 65 64 20 62  79 20 70 72 6f 67 72 61  |s used by progra|
00008200  6d 73 20 62 61 73 65 64  20 6f 6e 20 74 68 65 20  |ms based on the |
00008210  73 68 65 6c 6c 20 6c 69  62 72 61 72 79 20 77 6f  |shell library wo|
00008220  75 6c 64 20 6e 6f 72 6d  61 6c 6c 79 20 0a 62 65  |uld normally .be|
00008230  20 64 65 66 69 6e 65 64  20 75 73 69 6e 67 20 61  | defined using a|
00008240  20 74 65 6d 70 6c 61 74  65 20 65 64 69 74 6f 72  | template editor|
00008250  20 61 73 20 74 68 69 73  20 69 73 20 66 61 72 20  | as this is far |
00008260  73 69 6d 70 6c 65 72 20  74 68 61 6e 20 0a 63 72  |simpler than .cr|
00008270  65 61 74 69 6e 67 20 74  68 65 20 77 69 6e 64 6f  |eating the windo|
00008280  77 73 2f 69 63 6f 6e 73  20 69 6e 20 74 68 65 20  |ws/icons in the |
00008290  75 73 65 72 20 70 72 6f  67 72 61 6d 2e 20 54 68  |user program. Th|
000082a0  69 73 20 69 73 20 6e 6f  74 20 61 73 20 69 6e 66  |is is not as inf|
000082b0  6c 65 78 69 62 6c 65 0a  61 73 20 69 74 20 6d 61  |lexible.as it ma|
000082c0  79 20 73 6f 75 6e 64 20  61 73 20 77 69 6e 64 6f  |y sound as windo|
000082d0  77 73 20 63 61 6e 20 62  65 20 72 65 73 69 7a 65  |ws can be resize|
000082e0  64 2c 20 6d 6f 76 65 64  20 6f 72 20 6f 74 68 65  |d, moved or othe|
000082f0  72 77 69 73 65 20 61 6c  74 65 72 65 64 20 62 79  |rwise altered by|
00008300  20 0a 73 68 65 6c 6c 20  6c 69 62 72 61 72 79 20  | .shell library |
00008310  72 6f 75 74 69 6e 65 73  2e 0a 0a 54 68 65 20 74  |routines...The t|
00008320  65 6d 70 6c 61 74 65 20  66 69 6c 65 20 6d 75 73  |emplate file mus|
00008330  74 20 62 65 20 63 61 6c  6c 65 64 20 27 54 65 6d  |t be called 'Tem|
00008340  70 6c 61 74 65 73 27 20  61 6e 64 20 62 65 20 65  |plates' and be e|
00008350  69 74 68 65 72 20 69 6e  20 74 68 65 0a 61 70 70  |ither in the.app|
00008360  6c 69 63 61 74 69 6f 6e  20 64 69 72 65 63 74 6f  |lication directo|
00008370  72 79 20 6f 72 20 69 6e  20 74 68 65 20 61 70 70  |ry or in the app|
00008380  72 6f 70 72 69 61 74 65  20 6c 61 6e 67 75 61 67  |ropriate languag|
00008390  65 20 64 69 72 65 63 74  6f 72 79 20 69 66 20 52  |e directory if R|
000083a0  65 73 46 69 6e 64 0a 69  73 20 69 6e 20 75 73 65  |esFind.is in use|
000083b0  2e 20 4e 6f 74 65 20 74  68 61 74 20 69 66 20 79  |. Note that if y|
000083c0  6f 75 20 61 72 65 20 75  73 69 6e 67 20 64 69 66  |ou are using dif|
000083d0  66 65 72 65 6e 74 20 74  65 6d 70 6c 61 74 65 73  |ferent templates|
000083e0  20 66 6f 72 20 64 69 66  66 65 72 65 6e 74 0a 6c  | for different.l|
000083f0  61 6e 67 75 61 67 65 73  20 79 6f 75 20 6d 75 73  |anguages you mus|
00008400  74 20 75 73 65 20 52 65  73 46 69 6e 64 2e 20 49  |t use ResFind. I|
00008410  6e 20 6d 6f 73 74 20 63  61 73 65 73 2c 20 68 6f  |n most cases, ho|
00008420  77 65 76 65 72 2c 20 69  74 20 69 73 20 73 75 66  |wever, it is suf|
00008430  66 69 63 69 65 6e 74 0a  74 6f 20 68 61 76 65 20  |ficient.to have |
00008440  6f 6e 6c 79 20 6f 6e 65  20 74 65 6d 70 6c 61 74  |only one templat|
00008450  65 20 66 69 6c 65 20 69  6e 20 74 68 65 20 61 70  |e file in the ap|
00008460  70 6c 69 63 61 74 69 6f  6e 20 64 69 72 65 63 74  |plication direct|
00008470  6f 72 79 20 61 6e 64 20  74 6f 20 69 6e 73 65 72  |ory and to inser|
00008480  74 0a 74 68 65 20 74 65  78 74 20 74 61 6b 65 6e  |t.the text taken|
00008490  20 66 72 6f 6d 20 74 68  65 20 6d 65 73 73 61 67  | from the messag|
000084a0  65 20 66 69 6c 65 20 69  6e 20 74 68 65 20 6c 61  |e file in the la|
000084b0  6e 67 75 61 67 65 20 6f  66 20 63 68 6f 69 63 65  |nguage of choice|
000084c0  20 69 6e 74 6f 20 74 68  65 0a 69 63 6f 6e 73 2e  | into the.icons.|
000084d0  0a 0a 41 20 63 61 6c 6c  20 74 6f 20 3c 50 52 4f  |..A call to <PRO|
000084e0  43 73 68 65 6c 6c 5f 52  65 73 6f 75 72 63 65 73  |Cshell_Resources|
000084f0  49 6e 69 74 3e 20 77 69  6c 6c 20 66 69 6e 64 20  |Init> will find |
00008500  74 68 65 20 74 65 6d 70  6c 61 74 65 20 66 69 6c  |the template fil|
00008510  65 20 61 6e 64 20 6c 6f  61 64 0a 61 6c 6c 20 74  |e and load.all t|
00008520  68 65 20 74 65 6d 70 6c  61 74 65 73 20 69 74 20  |he templates it |
00008530  63 6f 6e 74 61 69 6e 73  20 61 6c 6c 6f 63 61 74  |contains allocat|
00008540  69 6e 67 20 6d 65 6d 6f  72 79 20 61 73 20 72 65  |ing memory as re|
00008550  71 75 69 72 65 64 2e 4d  65 6e 75 73 0a 4d 65 6e  |quired.Menus.Men|
00008560  75 73 20 61 72 65 20 6e  6f 77 20 68 61 6e 64 6c  |us are now handl|
00008570  65 64 20 62 79 20 4d 65  6e 75 55 74 69 6c 73 20  |ed by MenuUtils |
00008580  77 68 69 63 68 20 77 61  73 20 77 72 69 74 74 65  |which was writte|
00008590  6e 0a 62 79 20 3c 41 6c  65 78 20 50 65 74 72 6f  |n.by <Alex Petro|
000085a0  76 3d 3e 50 65 74 72 6f  76 3e 2e 20 56 65 72 73  |v=>Petrov>. Vers|
000085b0  69 6f 6e 73 20 6f 66 20  74 68 65 20 6c 69 62 72  |ions of the libr|
000085c0  61 72 79 20 70 72 69 6f  72 20 74 6f 20 31 2e 32  |ary prior to 1.2|
000085d0  30 0a 75 73 65 64 20 61  20 6d 65 6e 75 20 65 64  |0.used a menu ed|
000085e0  69 74 6f 72 20 74 6f 20  63 72 65 61 74 65 20 61  |itor to create a|
000085f0  20 73 65 70 65 72 61 74  65 20 6d 65 6e 75 20 74  | seperate menu t|
00008600  65 6d 70 6c 61 74 65 0a  66 69 6c 65 2c 20 62 75  |emplate.file, bu|
00008610  74 20 49 20 68 61 76 65  20 6e 6f 77 20 61 62 61  |t I have now aba|
00008620  6e 64 6f 6e 65 64 20 74  68 69 73 20 61 73 20 69  |ndoned this as i|
00008630  74 20 77 61 73 20 72 61  74 68 65 72 0a 69 6e 66  |t was rather.inf|
00008640  6c 65 78 69 62 6c 65 2e  0a 0a 54 68 65 20 75 73  |lexible...The us|
00008650  65 20 6f 66 20 4d 65 6e  75 55 74 69 6c 73 20 68  |e of MenuUtils h|
00008660  61 73 20 65 6e 61 62 6c  65 64 20 6d 65 20 74 6f  |as enabled me to|
00008670  20 72 65 6d 6f 76 65 20  6c 61 72 67 65 0a 63 68  | remove large.ch|
00008680  75 6e 6b 73 20 6f 66 20  73 6c 6f 77 20 42 41 53  |unks of slow BAS|
00008690  49 43 20 63 6f 64 65 20  61 6e 64 20 74 6f 20 70  |IC code and to p|
000086a0  72 6f 76 69 64 65 20 6d  61 6e 79 20 6d 6f 72 65  |rovide many more|
000086b0  0a 66 65 61 74 75 72 65  73 2c 20 73 75 63 68 20  |.features, such |
000086c0  61 73 20 63 72 65 61 74  69 6f 6e 20 61 6e 64 20  |as creation and |
000086d0  6d 6f 64 69 66 69 63 61  74 69 6f 6e 20 6f 66 20  |modification of |
000086e0  6d 65 6e 75 73 0a 75 6e  64 65 72 20 70 72 6f 67  |menus.under prog|
000086f0  72 61 6d 20 63 6f 6e 74  72 6f 6c 2e 20 54 68 65  |ram control. The|
00008700  20 6d 65 6e 75 73 20 74  68 65 6d 73 65 6c 76 65  | menus themselve|
00008710  73 20 61 70 70 65 61 72  0a 6d 6f 72 65 20 71 75  |s appear.more qu|
00008720  69 63 6b 6c 79 20 61 73  20 77 65 6c 6c 20 28 4f  |ickly as well (O|
00008730  4b 20 43 79 3f 29 2e 0a  0a 54 68 65 20 20 73 75  |K Cy?)...The  su|
00008740  70 70 6f 72 74 20 6d 6f  64 75 6c 65 20 69 73 20  |pport module is |
00008750  61 75 74 6f 6d 61 74 69  63 61 6c 6c 79 20 6c 6f  |automatically lo|
00008760  61 64 65 64 20 62 79 20  74 68 65 0a 21 52 75 6e  |aded by the.!Run|
00008770  20 66 69 6c 65 20 74 6f  20 70 72 6f 76 69 64 65  | file to provide|
00008780  20 74 68 65 20 6e 65 77  20 6d 65 6e 75 20 68 61  | the new menu ha|
00008790  6e 64 6c 69 6e 67 20 53  57 49 73 20 75 73 65 64  |ndling SWIs used|
000087a0  0a 62 79 20 74 68 65 20  45 76 6e 74 53 68 65 6c  |.by the EvntShel|
000087b0  6c 20 6c 69 62 72 61 72  79 2e 4d 65 73 73 61 67  |l library.Messag|
000087c0  65 20 46 69 6c 65 73 0a  54 68 65 20 6d 65 73 73  |e Files.The mess|
000087d0  61 67 65 20 66 69 6c 65  20 69 73 20 61 20 6e 6f  |age file is a no|
000087e0  72 6d 61 6c 20 41 53 43  49 49 20 66 69 6c 65 20  |rmal ASCII file |
000087f0  77 72 69 74 74 65 6e 20  75 73 69 6e 67 20 21 45  |written using !E|
00008800  64 69 74 20 6f 72 20 73  69 6d 69 6c 61 72 20 0a  |dit or similar .|
00008810  74 68 61 74 20 63 6f 6e  74 61 69 6e 73 20 6d 65  |that contains me|
00008820  73 73 61 67 65 20 73 74  72 69 6e 67 73 20 70 72  |ssage strings pr|
00008830  65 63 65 65 64 65 64 20  62 79 20 61 20 6d 65 73  |eceeded by a mes|
00008840  73 61 67 65 20 74 61 67  2e 20 54 68 65 20 0a 61  |sage tag. The .a|
00008850  70 70 6c 69 63 61 74 69  6f 6e 20 70 72 6f 67 72  |pplication progr|
00008860  61 6d 20 73 68 6f 75 6c  64 20 66 69 6e 64 20 74  |am should find t|
00008870  68 65 20 6d 65 73 73 61  67 65 73 20 61 73 20 72  |he messages as r|
00008880  65 71 75 69 72 65 64 20  62 79 20 74 61 67 20 6e  |equired by tag n|
00008890  61 6d 65 20 0a 77 68 69  63 68 20 61 6c 6c 6f 77  |ame .which allow|
000088a0  73 20 74 68 65 20 70 72  6f 64 75 63 74 69 6f 6e  |s the production|
000088b0  20 6f 66 20 66 6f 72 65  69 67 6e 20 6c 61 6e 67  | of foreign lang|
000088c0  75 61 67 65 20 76 65 72  73 69 6f 6e 73 20 28 70  |uage versions (p|
000088d0  72 6f 62 61 62 6c 79 20  62 79 20 0a 73 6f 6d 65  |robably by .some|
000088e0  6f 6e 65 20 65 6c 73 65  21 29 2e 20 49 74 20 69  |one else!). It i|
000088f0  73 20 61 6c 73 6f 20 66  61 72 20 65 61 73 69 65  |s also far easie|
00008900  72 20 74 6f 20 65 64 69  74 20 74 68 65 20 6d 65  |r to edit the me|
00008910  73 73 61 67 65 20 66 69  6c 65 20 74 6f 20 0a 63  |ssage file to .c|
00008920  68 61 6e 67 65 20 74 65  78 74 20 64 69 73 70 6c  |hange text displ|
00008930  61 79 65 64 20 62 79 20  74 68 65 20 61 70 70 6c  |ayed by the appl|
00008940  69 63 61 74 69 6f 6e 20  74 68 61 6e 20 75 73 69  |ication than usi|
00008950  6e 67 20 21 46 6f 72 6d  45 64 20 6f 72 20 73 69  |ng !FormEd or si|
00008960  6d 69 6c 61 72 2e 0a 0a  54 68 65 20 21 52 75 6e  |milar...The !Run|
00008970  20 66 69 6c 65 20 61 75  74 6f 6d 61 74 69 63 61  | file automatica|
00008980  6c 6c 79 20 6c 6f 61 64  73 20 61 20 73 75 70 70  |lly loads a supp|
00008990  6f 72 74 20 6d 6f 64 75  6c 65 20 27 4d 73 67 54  |ort module 'MsgT|
000089a0  72 61 6e 73 27 20 69 66  0a 72 65 71 75 69 72 65  |rans' if.require|
000089b0  64 20 28 69 74 20 69 73  20 62 75 69 6c 74 20 69  |d (it is built i|
000089c0  6e 20 74 6f 20 52 49 53  43 2d 4f 53 20 33 29 20  |n to RISC-OS 3) |
000089d0  74 6f 20 70 72 6f 76 69  64 65 20 74 68 69 73 20  |to provide this |
000089e0  66 61 63 69 6c 69 74 79  2e 0a 0a 54 68 65 20 6d  |facility...The m|
000089f0  65 73 73 61 67 65 20 66  69 6c 65 20 6d 75 73 74  |essage file must|
00008a00  20 62 65 20 63 61 6c 6c  65 64 20 27 4d 65 73 73  | be called 'Mess|
00008a10  61 67 65 73 27 20 61 6e  64 20 62 65 20 69 6e 20  |ages' and be in |
00008a20  74 68 65 20 61 70 70 6c  69 63 61 74 69 6f 6e 0a  |the application.|
00008a30  64 69 72 65 63 74 6f 72  79 20 6f 72 20 69 6e 20  |directory or in |
00008a40  74 68 65 20 61 70 70 72  6f 70 72 69 61 74 65 20  |the appropriate |
00008a50  6c 61 6e 67 75 61 67 65  20 64 69 72 65 63 74 6f  |language directo|
00008a60  72 79 20 69 66 20 52 65  73 46 69 6e 64 20 69 73  |ry if ResFind is|
00008a70  20 69 6e 0a 75 73 65 2e  20 41 20 63 61 6c 6c 20  | in.use. A call |
00008a80  74 6f 20 3c 50 52 4f 43  73 68 65 6c 6c 5f 52 65  |to <PROCshell_Re|
00008a90  73 6f 75 72 63 65 73 49  6e 69 74 3e 20 77 69 6c  |sourcesInit> wil|
00008aa0  6c 20 66 69 6e 64 20 74  68 65 20 66 69 6c 65 20  |l find the file |
00008ab0  69 66 20 69 74 20 65 78  69 73 74 73 0a 61 6e 64  |if it exists.and|
00008ac0  20 6c 6f 61 64 20 61 6c  6c 20 74 68 65 20 6d 65  | load all the me|
00008ad0  73 73 61 67 65 73 20 69  74 20 63 6f 6e 74 61 69  |ssages it contai|
00008ae0  6e 73 20 61 6c 6c 6f 63  61 74 69 6e 67 20 6d 65  |ns allocating me|
00008af0  6d 6f 72 79 20 61 73 20  72 65 71 75 69 72 65 64  |mory as required|
00008b00  2e 0a 0a 54 68 65 20 6d  65 73 73 61 67 65 73 20  |...The messages |
00008b10  69 73 73 75 65 64 20 62  79 20 74 68 65 20 6c 69  |issued by the li|
00008b20  62 72 61 72 79 20 63 6f  64 65 20 61 72 65 20 73  |brary code are s|
00008b30  74 6f 72 65 64 20 69 6e  20 61 20 66 69 6c 65 20  |tored in a file |
00008b40  63 61 6c 6c 65 64 0a 27  53 68 65 6c 6c 4d 73 67  |called.'ShellMsg|
00008b50  73 27 20 69 6e 73 69 64  65 20 74 68 65 20 21 53  |s' inside the !S|
00008b60  68 65 6c 6c 53 79 73 2e  52 65 73 6f 75 72 63 65  |hellSys.Resource|
00008b70  73 2e 55 4b 20 64 69 72  65 63 74 6f 72 79 2e 20  |s.UK directory. |
00008b80  49 66 20 74 68 69 73 20  66 69 6c 65 0a 69 73 20  |If this file.is |
00008b90  70 72 65 73 65 6e 74 20  69 6e 20 74 68 65 20 75  |present in the u|
00008ba0  73 65 72 20 61 70 70 6c  69 63 61 74 69 6f 6e 20  |ser application |
00008bb0  64 69 72 65 63 74 6f 72  79 20 74 68 65 6e 20 69  |directory then i|
00008bc0  74 20 69 73 20 6c 6f 61  64 65 64 20 66 72 6f 6d  |t is loaded from|
00008bd0  0a 74 68 65 72 65 2c 20  69 66 20 6e 6f 74 20 69  |.there, if not i|
00008be0  74 20 69 73 20 6c 6f 61  64 65 64 20 66 72 6f 6d  |t is loaded from|
00008bf0  20 21 53 68 65 6c 6c 53  79 73 2e 20 54 68 69 73  | !ShellSys. This|
00008c00  20 69 73 20 74 6f 20 61  69 64 20 74 68 65 0a 63  | is to aid the.c|
00008c10  6f 6e 73 74 72 75 63 74  69 6f 6e 20 6f 66 20 73  |onstruction of s|
00008c20  74 61 6e 64 20 61 6c 6f  6e 65 20 61 70 70 6c 69  |tand alone appli|
00008c30  63 61 74 69 6f 6e 73 2e  53 70 72 69 74 65 73 0a  |cations.Sprites.|
00008c40  54 68 65 20 73 70 72 69  74 65 20 66 69 6c 65 20  |The sprite file |
00008c50  6d 75 73 74 20 62 65 20  63 61 6c 6c 65 64 20 27  |must be called '|
00008c60  53 70 72 69 74 65 73 27  20 61 6e 64 20 62 65 20  |Sprites' and be |
00008c70  65 69 74 68 65 72 20 69  6e 20 74 68 65 0a 61 70  |either in the.ap|
00008c80  70 6c 69 63 61 74 69 6f  6e 20 64 69 72 65 63 74  |plication direct|
00008c90  6f 72 79 20 6f 72 20 69  6e 20 74 68 65 20 61 70  |ory or in the ap|
00008ca0  70 72 6f 70 72 69 61 74  65 20 6c 61 6e 67 75 61  |propriate langua|
00008cb0  67 65 20 64 69 72 65 63  74 6f 72 79 0a 69 66 20  |ge directory.if |
00008cc0  52 65 73 46 69 6e 64 20  69 73 20 69 6e 20 75 73  |ResFind is in us|
00008cd0  65 2e 20 41 20 63 61 6c  6c 20 74 6f 20 3c 50 52  |e. A call to <PR|
00008ce0  4f 43 73 68 65 6c 6c 5f  52 65 73 6f 75 72 63 65  |OCshell_Resource|
00008cf0  73 49 6e 69 74 3e 20 77  69 6c 6c 0a 66 69 6e 64  |sInit> will.find|
00008d00  20 74 68 65 20 66 69 6c  65 20 69 66 20 69 74 20  | the file if it |
00008d10  65 78 69 73 74 73 20 61  6e 64 20 6c 6f 61 64 20  |exists and load |
00008d20  61 6c 6c 20 74 68 65 20  73 70 72 69 74 65 73 20  |all the sprites |
00008d30  69 74 20 63 6f 6e 74 61  69 6e 73 0a 61 6c 6c 6f  |it contains.allo|
00008d40  63 61 74 69 6e 67 20 6d  65 6d 6f 72 79 20 61 73  |cating memory as|
00008d50  20 72 65 71 75 69 72 65  64 2e 0a 0a 54 68 65 20  | required...The |
00008d60  73 70 72 69 74 65 20 61  72 65 61 20 70 6f 69 6e  |sprite area poin|
00008d70  74 65 72 20 66 6f 72 20  65 61 63 68 20 6c 6f 61  |ter for each loa|
00008d80  64 65 64 20 74 65 6d 70  6c 61 74 65 20 77 69 6c  |ded template wil|
00008d90  6c 20 62 65 20 73 65 74  20 74 6f 0a 70 6f 69 6e  |l be set to.poin|
00008da0  74 20 74 6f 20 74 68 65  20 75 73 65 72 20 73 70  |t to the user sp|
00008db0  72 69 74 65 20 61 72 65  61 2c 20 77 68 69 63 68  |rite area, which|
00008dc0  20 70 75 74 20 73 69 6d  70 6c 79 20 74 68 69 73  | put simply this|
00008dd0  20 6d 65 61 6e 73 20 74  68 61 74 0a 61 6c 6c 20  | means that.all |
00008de0  73 70 72 69 74 65 73 20  64 69 73 70 6c 61 79 65  |sprites displaye|
00008df0  64 20 69 6e 20 77 69 6e  64 6f 77 73 20 6d 75 73  |d in windows mus|
00008e00  74 20 62 65 20 70 72 65  73 65 6e 74 20 69 6e 20  |t be present in |
00008e10  74 68 65 0a 27 53 70 72  69 74 65 73 27 20 66 69  |the.'Sprites' fi|
00008e20  6c 65 2e 20 54 68 69 73  20 6d 61 79 2c 20 68 6f  |le. This may, ho|
00008e30  77 65 76 65 72 2c 20 62  65 20 63 68 61 6e 67 65  |wever, be change|
00008e40  64 20 61 66 74 65 72 20  6c 6f 61 64 69 6e 67 2e  |d after loading.|
00008e50  49 6e 74 65 72 66 61 63  65 20 4d 6f 64 75 6c 65  |Interface Module|
00008e60  0a 54 68 65 20 73 68 65  6c 6c 20 6c 69 62 72 61  |.The shell libra|
00008e70  72 79 20 6d 61 6b 65 73  20 74 68 65 20 61 73 73  |ry makes the ass|
00008e80  75 6d 70 74 69 6f 6e 20  74 68 61 74 20 74 68 65  |umption that the|
00008e90  20 69 6e 74 65 72 66 61  63 65 20 6d 6f 64 75 6c  | interface modul|
00008ea0  65 20 0a 77 69 6c 6c 20  61 6c 77 61 79 73 20 62  |e .will always b|
00008eb0  65 20 75 73 65 64 2e 20  54 68 65 20 72 65 61 73  |e used. The reas|
00008ec0  6f 6e 20 69 73 20 74 68  61 74 20 66 69 72 73 74  |on is that first|
00008ed0  6c 79 20 74 68 61 74 20  69 74 20 69 73 20 68 69  |ly that it is hi|
00008ee0  67 68 6c 79 20 0a 6c 69  6b 65 6c 79 20 74 68 61  |ghly .likely tha|
00008ef0  74 20 73 6f 6d 65 20 6f  74 68 65 72 20 50 44 20  |t some other PD |
00008f00  70 72 6f 67 72 61 6d 20  77 69 6c 6c 20 68 61 76  |program will hav|
00008f10  65 20 61 6c 72 65 61 64  79 20 6c 6f 61 64 65 64  |e already loaded|
00008f20  20 69 74 2c 20 0a 61 6e  64 20 73 65 63 6f 6e 64  | it, .and second|
00008f30  6c 79 20 74 68 61 74 20  74 68 65 20 66 61 63 69  |ly that the faci|
00008f40  6c 69 74 69 65 73 20 69  74 20 70 72 6f 76 69 64  |lities it provid|
00008f50  65 73 20 66 6f 72 20 63  68 61 6e 67 69 6e 67 20  |es for changing |
00008f60  70 6f 69 6e 74 65 72 20  0a 73 68 61 70 65 73 20  |pointer .shapes |
00008f70  6f 76 65 72 20 63 65 72  74 61 69 6e 20 69 63 6f  |over certain ico|
00008f80  6e 73 20 69 73 20 65 78  74 72 65 6d 65 6c 79 20  |ns is extremely |
00008f90  75 73 65 66 75 6c 20 61  73 20 61 20 70 72 6f 6d  |useful as a prom|
00008fa0  70 74 20 66 6f 72 20 0a  77 68 61 74 20 74 68 65  |pt for .what the|
00008fb0  20 69 63 6f 6e 20 69 73  20 66 6f 72 2e 20 49 6e  | icon is for. In|
00008fc0  64 65 65 64 20 52 49 53  43 2d 4f 53 20 33 20 68  |deed RISC-OS 3 h|
00008fd0  61 73 20 74 68 69 73 20  62 75 69 6c 74 20 69 6e  |as this built in|
00008fe0  20 73 6f 20 65 76 65 6e  20 0a 41 63 6f 72 6e 20  | so even .Acorn |
00008ff0  61 72 65 20 73 75 70 70  6f 72 74 69 6e 67 20 33  |are supporting 3|
00009000  44 20 62 75 74 74 6f 6e  73 20 65 74 63 2e 2e 2e  |D buttons etc...|
00009010  2e 0a 0a 54 68 65 20 6d  6f 64 75 6c 65 20 69 73  |...The module is|
00009020  20 6c 6f 61 64 65 64 20  62 79 20 74 68 65 20 21  | loaded by the !|
00009030  52 75 6e 20 66 69 6c 65  20 69 66 20 6e 6f 74 20  |Run file if not |
00009040  61 6c 72 65 61 64 79 20  6c 6f 61 64 65 64 2e 20  |already loaded. |
00009050  55 73 69 6e 67 0a 61 20  74 65 6d 70 6c 61 74 65  |Using.a template|
00009060  20 65 64 69 74 6f 72 20  74 68 61 74 20 69 73 20  | editor that is |
00009070  27 49 6e 74 65 72 66 61  63 65 20 41 77 61 72 65  |'Interface Aware|
00009080  27 20 6d 61 6b 65 73 20  69 6e 63 6f 72 70 6f 72  |' makes incorpor|
00009090  61 74 69 6e 67 20 0a 74  68 65 73 65 20 65 66 66  |ating .these eff|
000090a0  65 63 74 73 20 69 6e 74  6f 20 61 20 75 73 65 72  |ects into a user|
000090b0  20 70 72 6f 67 72 61 6d  20 65 61 73 79 20 61 73  | program easy as|
000090c0  20 6f 6e 63 65 20 74 68  65 20 69 63 6f 6e 73 20  | once the icons |
000090d0  68 61 76 65 20 62 65 65  6e 0a 64 65 73 69 67 6e  |have been.design|
000090e0  65 64 20 61 6e 64 20 70  6c 61 63 65 64 20 74 68  |ed and placed th|
000090f0  65 20 73 68 65 6c 6c 20  6c 69 62 72 61 72 79 20  |e shell library |
00009100  68 61 6e 64 6c 65 73 20  61 6c 6c 20 74 68 65 20  |handles all the |
00009110  72 65 64 72 61 77 69 6e  67 20 0a 61 75 74 6f 6d  |redrawing .autom|
00009120  61 74 69 63 61 6c 6c 79  2e 0a 0a 4e 6f 74 65 20  |atically...Note |
00009130  74 68 61 74 20 77 69 6e  64 6f 77 73 20 63 6f 6e  |that windows con|
00009140  74 61 69 6e 69 6e 67 20  33 64 20 69 6e 74 65 72  |taining 3d inter|
00009150  66 61 63 65 20 69 63 6f  6e 73 20 6d 75 73 74 20  |face icons must |
00009160  68 61 76 65 20 74 68 65  20 27 41 75 74 6f 0a 52  |have the 'Auto.R|
00009170  65 64 72 61 77 27 20 66  6c 61 67 20 6f 66 66 2c  |edraw' flag off,|
00009180  20 62 75 74 20 69 66 20  74 68 65 20 74 65 6d 70  | but if the temp|
00009190  6c 61 74 65 20 65 64 69  74 6f 72 20 64 69 73 70  |late editor disp|
000091a0  6c 61 79 73 20 69 6e 74  65 72 66 61 63 65 20 0a  |lays interface .|
000091b0  69 63 6f 6e 73 20 74 68  65 6e 20 74 68 65 20 75  |icons then the u|
000091c0  73 65 72 20 61 70 70 6c  69 63 61 74 69 6f 6e 20  |ser application |
000091d0  77 69 6c 6c 20 61 73 20  77 65 6c 6c 2e 50 61 6e  |will as well.Pan|
000091e0  65 73 0a 41 20 70 61 6e  65 20 77 69 6e 64 6f 77  |es.A pane window|
000091f0  20 69 73 20 61 20 77 69  6e 64 6f 77 20 61 74 74  | is a window att|
00009200  61 63 68 65 64 20 74 6f  20 61 20 70 61 72 65 6e  |ached to a paren|
00009210  74 20 77 69 6e 64 6f 77  20 77 68 69 63 68 20 68  |t window which h|
00009220  61 73 20 0a 64 69 66 66  65 72 65 6e 74 20 70 72  |as .different pr|
00009230  6f 70 65 72 74 69 65 73  20 74 6f 20 74 68 65 20  |operties to the |
00009240  70 61 72 65 6e 74 2e 20  41 20 77 65 6c 6c 2d 6b  |parent. A well-k|
00009250  6e 6f 77 6e 20 65 78 61  6d 70 6c 65 20 69 73 20  |nown example is |
00009260  74 68 65 20 0a 27 54 6f  6f 6c 42 6f 78 27 20 70  |the .'ToolBox' p|
00009270  61 6e 65 20 61 74 74 61  63 68 65 64 20 74 6f 20  |ane attached to |
00009280  61 20 21 44 72 61 77 20  77 69 6e 64 6f 77 20 77  |a !Draw window w|
00009290  68 69 63 68 20 61 6c 77  61 79 73 20 61 70 70 65  |hich always appe|
000092a0  61 72 73 20 0a 61 74 20  74 68 65 20 74 6f 70 20  |ars .at the top |
000092b0  6c 65 66 74 20 6f 66 20  74 68 65 20 70 61 72 65  |left of the pare|
000092c0  6e 74 20 77 69 6e 64 6f  77 20 68 6f 77 65 76 65  |nt window howeve|
000092d0  72 20 74 68 65 20 70 61  72 65 6e 74 20 77 69 6e  |r the parent win|
000092e0  64 6f 77 20 0a 69 73 20  73 63 72 6f 6c 6c 65 64  |dow .is scrolled|
000092f0  2e 20 41 6e 6f 74 68 65  72 20 65 78 61 6d 70 6c  |. Another exampl|
00009300  65 20 63 6f 75 6c 64 20  62 65 20 61 20 70 61 72  |e could be a par|
00009310  65 6e 74 20 77 69 6e 64  6f 77 20 77 69 74 68 6f  |ent window witho|
00009320  75 74 20 0a 73 63 72 6f  6c 6c 62 61 72 73 20 77  |ut .scrollbars w|
00009330  68 69 63 68 20 68 61 73  20 61 20 73 63 72 6f 6c  |hich has a scrol|
00009340  6c 69 6e 67 20 70 61 6e  65 20 61 74 74 61 63 68  |ling pane attach|
00009350  65 64 20 74 6f 20 74 68  65 20 77 6f 72 6b 20 61  |ed to the work a|
00009360  72 65 61 20 0a 77 68 69  63 68 20 6d 69 67 68 74  |rea .which might|
00009370  20 62 65 20 75 73 65 64  20 69 6e 20 61 20 27 46  | be used in a 'F|
00009380  69 6e 64 46 69 6c 65 27  20 61 70 70 6c 69 63 61  |indFile' applica|
00009390  74 69 6f 6e 20 74 6f 20  64 69 73 70 6c 61 79 20  |tion to display |
000093a0  61 20 0a 6c 69 73 74 20  6f 66 20 66 69 6e 64 73  |a .list of finds|
000093b0  2e 0a 0a 50 61 6e 65 73  20 61 72 65 20 63 72 65  |...Panes are cre|
000093c0  61 74 65 64 20 75 73 69  6e 67 20 21 46 6f 72 6d  |ated using !Form|
000093d0  45 64 20 6f 72 20 73 69  6d 69 6c 61 72 20 77 69  |Ed or similar wi|
000093e0  74 68 20 74 68 65 20 27  70 61 6e 65 27 20 66 6c  |th the 'pane' fl|
000093f0  61 67 20 0a 73 65 74 2e  20 41 20 63 61 6c 6c 20  |ag .set. A call |
00009400  74 6f 20 3c 50 52 4f 43  73 68 65 6c 6c 5f 41 74  |to <PROCshell_At|
00009410  74 61 63 68 50 61 6e 65  3e 20 73 70 65 63 69 66  |tachPane> specif|
00009420  69 65 73 20 77 68 69 63  68 20 70 61 6e 65 20 69  |ies which pane i|
00009430  73 20 0a 61 74 74 61 63  68 65 64 20 74 6f 20 77  |s .attached to w|
00009440  68 69 63 68 20 77 69 6e  64 6f 77 20 61 6e 64 20  |hich window and |
00009450  74 68 65 20 70 6f 73 69  74 69 6f 6e 20 6f 66 20  |the position of |
00009460  74 68 65 20 70 61 6e 65  2e 20 4d 75 6c 74 69 70  |the pane. Multip|
00009470  6c 65 20 0a 70 61 6e 65  73 20 6d 61 79 20 74 6f  |le .panes may to|
00009480  20 61 74 74 61 63 68 65  64 20 74 6f 20 61 20 70  | attached to a p|
00009490  61 72 65 6e 74 20 77 69  6e 64 6f 77 20 28 73 65  |arent window (se|
000094a0  65 20 74 68 65 20 65 78  61 6d 70 6c 65 20 0a 61  |e the example .a|
000094b0  70 70 6c 69 63 61 74 69  6f 6e 20 21 50 61 6e 65  |pplication !Pane|
000094c0  73 29 2e 0a 0a 54 68 65  20 6f 70 65 6e 69 6e 67  |s)...The opening|
000094d0  20 61 6e 64 20 63 6c 6f  73 69 6e 67 20 6f 66 20  | and closing of |
000094e0  70 61 6e 65 73 20 69 73  20 68 61 6e 64 6c 65 64  |panes is handled|
000094f0  20 74 6f 74 61 6c 6c 79  20 62 79 20 74 68 65 20  | totally by the |
00009500  73 68 65 6c 6c 0a 6c 69  62 72 61 72 79 20 2d 20  |shell.library - |
00009510  61 20 63 61 6c 6c 20 74  6f 20 3c 50 52 4f 43 73  |a call to <PROCs|
00009520  68 65 6c 6c 5f 4f 70 65  6e 57 69 6e 64 6f 77 3e  |hell_OpenWindow>|
00009530  20 61 66 74 65 72 20 61  74 74 61 63 68 69 6e 67  | after attaching|
00009540  20 74 68 65 0a 70 61 6e  65 73 20 77 69 6c 6c 20  | the.panes will |
00009550  6f 70 65 6e 20 74 68 65  20 70 61 72 65 6e 74 20  |open the parent |
00009560  77 69 6e 64 6f 77 20 61  6e 64 20 74 68 65 20 70  |window and the p|
00009570  61 6e 65 73 20 74 6f 67  65 74 68 65 72 2e 53 61  |anes together.Sa|
00009580  76 69 6e 67 20 44 61 74  61 0a 54 68 69 73 20 69  |ving Data.This i|
00009590  73 20 61 63 68 69 65 76  65 64 20 62 79 20 61 20  |s achieved by a |
000095a0  63 61 6c 6c 20 74 6f 20  3c 50 52 4f 43 73 68 65  |call to <PROCshe|
000095b0  6c 6c 5f 41 74 74 61 63  68 44 61 74 61 53 61 76  |ll_AttachDataSav|
000095c0  65 3e 20 77 68 69 63 68  20 0a 73 70 65 63 69 66  |e> which .specif|
000095d0  69 65 73 20 77 68 69 63  68 20 66 69 6c 65 74 79  |ies which filety|
000095e0  70 65 20 74 68 65 20 73  61 76 65 64 20 66 69 6c  |pe the saved fil|
000095f0  65 20 73 68 6f 75 6c 64  20 62 65 20 67 69 76 65  |e should be give|
00009600  6e 2c 20 74 68 65 20 6e  61 6d 65 20 0a 6f 66 20  |n, the name .of |
00009610  61 20 66 75 6e 63 74 69  6f 6e 20 77 68 69 63 68  |a function which|
00009620  20 77 69 6c 6c 20 61 63  74 75 61 6c 6c 79 20 70  | will actually p|
00009630  65 72 66 6f 72 6d 20 74  68 65 20 73 61 76 65 20  |erform the save |
00009640  61 6e 64 20 74 68 65 20  0a 77 69 6e 64 6f 77 2f  |and the .window/|
00009650  69 63 6f 6e 20 68 61 6e  64 6c 65 73 20 74 68 65  |icon handles the|
00009660  20 64 72 61 67 20 73 61  76 65 20 65 76 65 6e 74  | drag save event|
00009670  20 69 73 20 61 73 73 6f  63 69 61 74 65 64 20 77  | is associated w|
00009680  69 74 68 2e 20 49 74 20  69 73 20 0a 74 68 65 72  |ith. It is .ther|
00009690  65 66 6f 72 65 20 70 6f  73 73 69 62 6c 65 20 74  |efore possible t|
000096a0  6f 20 68 61 76 65 20 64  69 66 66 65 72 65 6e 74  |o have different|
000096b0  20 64 72 61 67 20 73 61  76 65 20 65 76 65 6e 74  | drag save event|
000096c0  73 20 61 74 74 61 63 68  65 64 20 74 6f 20 0a 64  |s attached to .d|
000096d0  69 66 66 65 72 65 6e 74  20 69 63 6f 6e 73 20 69  |ifferent icons i|
000096e0  6e 20 74 68 65 20 73 61  6d 65 20 77 69 6e 64 6f  |n the same windo|
000096f0  77 2e 20 54 68 69 73 20  69 73 20 75 73 65 66 75  |w. This is usefu|
00009700  6c 20 77 68 65 72 65 20  69 74 20 69 73 20 0a 70  |l where it is .p|
00009710  6f 73 73 69 62 6c 65 20  74 6f 20 73 61 76 65 20  |ossible to save |
00009720  74 68 65 20 66 69 6c 65  20 61 73 20 6d 6f 72 65  |the file as more|
00009730  20 74 68 61 6e 20 6f 6e  65 20 74 79 70 65 20 2d  | than one type -|
00009740  20 79 6f 75 20 63 61 6e  20 68 61 76 65 20 0a 6d  | you can have .m|
00009750  75 6c 74 69 70 6c 65 20  66 69 6c 65 74 79 70 65  |ultiple filetype|
00009760  20 69 63 6f 6e 73 20 69  6e 20 74 68 65 20 73 61  | icons in the sa|
00009770  76 65 20 77 69 6e 64 6f  77 2e 20 0a 0a 54 68 65  |ve window. ..The|
00009780  20 45 76 6e 74 53 68 65  6c 6c 20 6c 69 62 72 61  | EvntShell libra|
00009790  72 79 20 73 75 70 70 6f  72 74 73 20 52 41 4d 20  |ry supports RAM |
000097a0  66 69 6c 65 20 74 72 61  6e 73 66 65 72 20 66 6f  |file transfer fo|
000097b0  72 20 73 70 65 65 64 20  77 68 65 6e 0a 73 61 76  |r speed when.sav|
000097c0  69 6e 67 20 64 61 74 61  20 74 6f 20 63 6f 6e 73  |ing data to cons|
000097d0  65 6e 74 69 6e 67 20 61  70 70 6c 69 63 61 74 69  |enting applicati|
000097e0  6f 6e 73 2e 0a 0a 53 65  65 20 74 68 65 20 21 57  |ons...See the !W|
000097f0  69 6e 53 61 76 65 20 61  6e 64 20 21 56 42 61 73  |inSave and !VBas|
00009800  65 32 20 65 78 61 6d 70  6c 65 20 61 70 70 6c 69  |e2 example appli|
00009810  63 61 74 69 6f 6e 73 20  66 6f 72 20 68 6f 77 20  |cations for how |
00009820  74 6f 20 75 73 65 20 0a  74 68 69 73 20 72 6f 75  |to use .this rou|
00009830  74 69 6e 65 2e 4c 6f 61  64 69 6e 67 20 44 61 74  |tine.Loading Dat|
00009840  61 0a 0a 54 68 69 73 20  69 73 20 61 63 68 69 65  |a..This is achie|
00009850  76 65 64 20 62 79 20 61  20 63 61 6c 6c 20 74 6f  |ved by a call to|
00009860  20 3c 50 52 4f 43 73 68  65 6c 6c 5f 41 74 74 61  | <PROCshell_Atta|
00009870  63 68 44 61 74 61 4c 6f  61 64 3e 20 77 68 69 63  |chDataLoad> whic|
00009880  68 20 0a 74 65 6c 6c 73  20 74 68 65 20 45 76 6e  |h .tells the Evn|
00009890  74 53 68 65 6c 6c 20 6c  69 62 72 61 72 79 20 77  |tShell library w|
000098a0  68 69 63 68 20 66 69 6c  65 74 79 70 65 73 20 74  |hich filetypes t|
000098b0  68 65 20 75 73 65 72 20  61 70 70 6c 69 63 61 74  |he user applicat|
000098c0  69 6f 6e 0a 69 73 20 69  6e 74 65 72 65 73 74 65  |ion.is intereste|
000098d0  64 20 69 6e 20 61 6e 64  20 74 68 65 20 6e 61 6d  |d in and the nam|
000098e0  65 20 6f 66 20 61 20 66  75 6e 63 74 69 6f 6e 20  |e of a function |
000098f0  74 6f 20 63 61 6c 6c 20  77 68 65 6e 20 61 20 6c  |to call when a l|
00009900  6f 61 64 0a 65 76 65 6e  74 20 6f 63 63 75 72 73  |oad.event occurs|
00009910  2e 20 4d 75 6c 74 69 70  6c 65 20 66 69 6c 65 73  |. Multiple files|
00009920  20 6d 61 79 20 62 65 20  6c 6f 61 64 65 64 2c 20  | may be loaded, |
00009930  62 75 74 20 69 6e 20 74  68 65 20 63 75 72 72 65  |but in the curre|
00009940  6e 74 0a 72 65 6c 65 61  73 65 20 6f 66 20 74 68  |nt.release of th|
00009950  65 20 6c 69 62 72 61 72  79 20 69 74 20 69 73 20  |e library it is |
00009960  75 70 20 74 6f 20 74 68  65 20 75 73 65 72 20 61  |up to the user a|
00009970  70 70 6c 69 63 61 74 69  6f 6e 20 74 6f 20 6b 65  |pplication to ke|
00009980  65 70 0a 74 72 61 63 6b  20 6f 66 20 77 68 65 72  |ep.track of wher|
00009990  65 20 74 68 65 79 20 61  72 65 20 6c 6f 61 64 65  |e they are loade|
000099a0  64 20 61 6e 64 20 69 66  20 74 68 65 79 20 68 61  |d and if they ha|
000099b0  76 65 20 62 65 65 6e 20  6d 6f 64 69 66 69 65 64  |ve been modified|
000099c0  2e 0a 54 68 69 73 20 77  69 6c 6c 20 63 68 61 6e  |..This will chan|
000099d0  67 65 20 69 6e 20 61 20  66 75 74 75 72 65 20 72  |ge in a future r|
000099e0  65 6c 65 61 73 65 2e 0a  0a 49 66 20 72 65 71 75  |elease...If requ|
000099f0  69 72 65 64 20 74 68 65  20 66 69 6c 65 73 20 63  |ired the files c|
00009a00  61 6e 20 62 65 20 6c 6f  61 64 65 64 20 61 75 74  |an be loaded aut|
00009a10  6f 6d 61 74 69 63 61 6c  6c 79 20 69 6e 74 6f 20  |omatically into |
00009a20  61 20 72 65 73 65 72 76  65 64 0a 62 6c 6f 63 6b  |a reserved.block|
00009a30  20 6f 66 20 6d 65 6d 6f  72 79 2c 20 6f 72 20 74  | of memory, or t|
00009a40  68 65 20 75 73 65 72 20  61 70 70 6c 69 63 61 74  |he user applicat|
00009a50  69 6f 6e 20 63 61 6e 20  68 61 76 65 20 74 6f 74  |ion can have tot|
00009a60  61 6c 20 63 6f 6e 74 72  6f 6c 0a 6f 76 65 72 20  |al control.over |
00009a70  6c 6f 61 64 69 6e 67 20  61 6e 64 20 70 72 6f 63  |loading and proc|
00009a80  65 73 73 69 6e 67 20 74  68 65 20 66 69 6c 65 2e  |essing the file.|
00009a90  0a 0a 54 68 65 20 45 76  6e 74 53 68 65 6c 6c 20  |..The EvntShell |
00009aa0  6c 69 62 72 61 72 79 20  73 75 70 70 6f 72 74 73  |library supports|
00009ab0  20 52 41 4d 20 66 69 6c  65 20 74 72 61 6e 73 66  | RAM file transf|
00009ac0  65 72 20 66 6f 72 20 73  70 65 65 64 20 77 68 65  |er for speed whe|
00009ad0  6e 0a 6c 6f 61 64 69 6e  67 20 64 61 74 61 20 66  |n.loading data f|
00009ae0  72 6f 6d 20 63 6f 6e 73  65 6e 74 69 6e 67 20 61  |rom consenting a|
00009af0  70 70 6c 69 63 61 74 69  6f 6e 73 2e 0a 0a 49 74  |pplications...It|
00009b00  20 69 73 20 61 6c 73 6f  20 70 6f 73 73 69 62 6c  | is also possibl|
00009b10  65 20 74 6f 20 61 72 72  61 6e 67 65 20 66 6f 72  |e to arrange for|
00009b20  20 74 68 65 20 75 73 65  72 20 61 70 70 6c 69 63  | the user applic|
00009b30  61 74 69 6f 6e 20 74 6f  20 72 65 73 70 6f 6e 64  |ation to respond|
00009b40  20 0a 74 6f 20 61 20 72  61 6e 67 65 20 6f 66 20  | .to a range of |
00009b50  66 69 6c 65 74 79 70 65  73 20 62 79 20 61 74 74  |filetypes by att|
00009b60  61 63 68 69 6e 67 20 6d  6f 72 65 20 74 68 61 6e  |aching more than|
00009b70  20 6f 6e 65 20 68 61 6e  64 6c 65 72 2e 43 6f 6d  | one handler.Com|
00009b80  70 72 65 73 73 69 6e 67  20 54 68 65 20 41 70 70  |pressing The App|
00009b90  6c 69 63 61 74 69 6f 6e  0a 49 20 72 65 63 6f 6d  |lication.I recom|
00009ba0  6d 65 6e 64 20 21 42 61  73 53 68 72 69 6e 6b 20  |mend !BasShrink |
00009bb0  6f 72 20 21 53 68 72 69  6e 6b 5f 50 44 20 28 74  |or !Shrink_PD (t|
00009bc0  68 65 20 50 75 62 6c 69  63 20 44 6f 6d 61 69 6e  |he Public Domain|
00009bd0  20 76 65 72 73 69 6f 6e  20 0a 6f 66 20 21 42 61  | version .of !Ba|
00009be0  73 53 68 72 69 6e 6b 29  20 62 79 20 3c 4a 6f 68  |sShrink) by <Joh|
00009bf0  6e 20 57 61 6c 6c 61 63  65 3d 3e 57 61 6c 6c 61  |n Wallace=>Walla|
00009c00  63 65 3e 2e 20 49 74 20  69 73 20 70 6f 73 73 69  |ce>. It is possi|
00009c10  62 6c 65 20 66 6f 72 20  0a 65 78 61 6d 70 6c 65  |ble for .example|
00009c20  20 74 6f 20 63 6f 6d 62  69 6e 65 20 74 68 65 20  | to combine the |
00009c30  21 50 61 6e 65 73 20 61  70 70 6c 69 63 61 74 69  |!Panes applicati|
00009c40  6f 6e 20 61 6e 64 20 74  68 65 20 73 68 65 6c 6c  |on and the shell|
00009c50  20 6c 69 62 72 61 72 79  20 0a 74 6f 20 66 6f 72  | library .to for|
00009c60  6d 20 61 20 73 74 61 6e  64 20 61 6c 6f 6e 65 20  |m a stand alone |
00009c70  70 72 6f 67 72 61 6d 20  61 6e 64 20 74 68 65 6e  |program and then|
00009c80  20 75 73 65 20 21 42 61  73 53 68 72 69 6e 6b 20  | use !BasShrink |
00009c90  74 6f 20 72 65 64 75 63  65 20 0a 69 74 20 66 72  |to reduce .it fr|
00009ca0  6f 6d 20 35 31 4b 20 74  6f 20 61 72 6f 75 6e 64  |om 51K to around|
00009cb0  20 32 30 4b 2e 0a 0a 46  75 74 75 72 65 20 76 65  | 20K...Future ve|
00009cc0  72 73 69 6f 6e 73 20 6f  66 20 21 42 61 73 53 68  |rsions of !BasSh|
00009cd0  72 69 6e 6b 20 73 68 6f  75 6c 64 20 62 65 20 61  |rink should be a|
00009ce0  62 6c 65 20 74 6f 20 72  65 6d 6f 76 65 20 75 6e  |ble to remove un|
00009cf0  75 73 65 64 0a 72 6f 75  74 69 6e 65 73 20 74 6f  |used.routines to|
00009d00  20 73 61 76 65 20 65 76  65 6e 20 6d 6f 72 65 20  | save even more |
00009d10  73 70 61 63 65 2c 20 6f  72 20 61 6c 74 65 72 6e  |space, or altern|
00009d20  61 74 69 76 65 6c 79 20  42 4c 69 62 49 49 20 63  |atively BLibII c|
00009d30  61 6e 20 62 65 0a 75 73  65 64 20 74 6f 20 70 72  |an be.used to pr|
00009d40  65 2d 70 72 6f 63 65 73  73 20 74 68 65 20 61 70  |e-process the ap|
00009d50  70 6c 69 63 61 74 69 6f  6e 20 74 6f 20 6c 69 6e  |plication to lin|
00009d60  6b 20 69 6e 20 6f 6e 6c  79 20 74 68 65 20 72 6f  |k in only the ro|
00009d70  75 74 69 6e 65 73 20 74  68 61 74 0a 61 72 65 20  |utines that.are |
00009d80  61 63 74 75 61 6c 6c 79  20 75 73 65 64 2e 20 53  |actually used. S|
00009d90  65 65 20 74 68 65 20 6d  61 6e 75 61 6c 20 73 65  |ee the manual se|
00009da0  63 74 69 6f 6e 20 27 4f  74 68 65 72 20 54 6f 6f  |ction 'Other Too|
00009db0  6c 73 27 20 66 6f 72 20  6d 6f 72 65 0a 64 65 74  |ls' for more.det|
00009dc0  61 69 6c 73 2e 0a 0a 54  68 65 72 65 20 69 73 20  |ails...There is |
00009dd0  6f 6e 65 20 69 6d 70 6f  72 74 61 6e 74 20 70 6f  |one important po|
00009de0  69 6e 74 20 74 6f 20 62  65 61 72 20 69 6e 20 6d  |int to bear in m|
00009df0  69 6e 64 20 77 68 65 6e  20 75 73 69 6e 67 20 74  |ind when using t|
00009e00  68 65 20 73 68 65 6c 6c  20 0a 6c 69 62 72 61 72  |he shell .librar|
00009e10  79 20 61 6e 64 20 21 42  61 73 53 68 72 69 6e 6b  |y and !BasShrink|
00009e20  20 74 6f 67 65 74 68 65  72 20 2d 20 66 75 6e 63  | together - func|
00009e30  74 69 6f 6e 20 6e 61 6d  65 73 20 74 68 61 74 20  |tion names that |
00009e40  61 72 65 20 45 56 41 4c  75 61 74 65 64 20 0a 62  |are EVALuated .b|
00009e50  79 20 74 68 65 20 73 68  65 6c 6c 20 6c 69 62 72  |y the shell libr|
00009e60  61 72 79 20 73 68 6f 75  6c 64 20 62 65 67 69 6e  |ary should begin|
00009e70  20 77 69 74 68 20 61 20  27 5f 27 20 63 68 61 72  | with a '_' char|
00009e80  61 63 74 65 72 20 61 6e  64 20 74 68 65 20 0a 27  |acter and the .'|
00009e90  50 72 65 73 65 72 76 65  20 6e 61 6d 65 73 20 73  |Preserve names s|
00009ea0  74 61 72 74 69 6e 67 20  77 69 74 68 27 20 72 61  |tarting with' ra|
00009eb0  64 69 6f 20 62 75 74 74  6f 6e 20 69 6e 20 74 68  |dio button in th|
00009ec0  65 20 21 42 61 73 53 68  72 69 6e 6b 20 0a 77 69  |e !BasShrink .wi|
00009ed0  6e 64 6f 77 20 6d 75 73  74 20 62 65 20 4f 4e 2e  |ndow must be ON.|
00009ee0  20 49 6e 20 73 68 6f 72  74 20 69 66 20 79 6f 75  | In short if you|
00009ef0  20 61 72 65 20 63 61 6c  6c 69 6e 67 20 61 6e 79  | are calling any|
00009f00  20 73 68 65 6c 6c 20 6c  69 62 72 61 72 79 20 0a  | shell library .|
00009f10  72 6f 75 74 69 6e 65 20  74 68 61 74 20 68 61 73  |routine that has|
00009f20  20 61 20 66 75 6e 63 74  69 6f 6e 20 6e 61 6d 65  | a function name|
00009f30  20 61 73 20 61 20 70 61  72 61 6d 65 74 65 72 20  | as a parameter |
00009f40  74 68 65 6e 20 74 68 61  74 20 6e 61 6d 65 20 6d  |then that name m|
00009f50  75 73 74 20 0a 73 74 61  72 74 20 77 69 74 68 20  |ust .start with |
00009f60  61 20 27 5f 27 2e 20 46  61 69 6c 75 72 65 20 74  |a '_'. Failure t|
00009f70  6f 20 6f 62 73 65 72 76  65 20 74 68 69 73 20 72  |o observe this r|
00009f80  75 6c 65 20 77 69 6c 6c  20 72 65 73 75 6c 74 20  |ule will result |
00009f90  69 6e 20 61 20 0a 6e 6f  6e 2d 77 6f 72 6b 69 6e  |in a .non-workin|
00009fa0  67 20 63 6f 6d 70 72 65  73 73 65 64 20 70 72 6f  |g compressed pro|
00009fb0  67 72 61 6d 21 0a 0a 41  73 73 75 6d 69 6e 67 20  |gram!..Assuming |
00009fc0  79 6f 75 20 68 61 76 65  20 21 42 61 73 53 68 72  |you have !BasShr|
00009fd0  69 6e 6b 20 32 2e 31 34  20 6f 72 20 6c 61 74 65  |ink 2.14 or late|
00009fe0  72 20 74 68 65 20 45 76  6e 74 53 68 65 6c 6c 20  |r the EvntShell |
00009ff0  6c 69 62 72 61 72 79 0a  63 61 6e 20 62 65 20 63  |library.can be c|
0000a000  6f 6d 70 72 65 73 73 65  64 20 77 69 74 68 20 61  |ompressed with a|
0000a010  6c 6c 20 73 77 69 74 63  68 65 73 20 6f 6e 20 65  |ll switches on e|
0000a020  78 63 65 70 74 20 27 53  68 6f 72 74 65 6e 20 46  |xcept 'Shorten F|
0000a030  4e 20 6e 61 6d 65 73 27  2c 0a 27 53 68 6f 72 74  |N names',.'Short|
0000a040  65 6e 20 50 52 4f 43 20  6e 61 6d 65 73 27 20 61  |en PROC names' a|
0000a050  6e 64 20 27 52 65 6d 6f  76 65 20 2a 20 63 6f 6d  |nd 'Remove * com|
0000a060  6d 65 6e 74 73 27 2e 20  49 66 20 79 6f 75 20 61  |ments'. If you a|
0000a070  72 65 20 6e 6f 74 20 67  6f 69 6e 67 0a 74 6f 20  |re not going.to |
0000a080  75 73 65 20 21 42 4c 69  62 49 49 20 79 6f 75 20  |use !BLibII you |
0000a090  63 61 6e 20 73 77 69 74  63 68 20 6f 6e 20 27 52  |can switch on 'R|
0000a0a0  65 6d 6f 76 65 20 2a 20  63 6f 6d 6d 65 6e 74 73  |emove * comments|
0000a0b0  27 20 74 6f 20 73 74 72  69 70 20 6f 75 74 0a 74  |' to strip out.t|
0000a0c0  68 65 20 21 42 4c 69 62  49 49 20 63 6f 6d 6d 61  |he !BLibII comma|
0000a0d0  6e 64 73 2e 0a 0a 49 66  20 79 6f 75 20 61 70 70  |nds...If you app|
0000a0e0  65 6e 64 20 74 68 65 20  45 76 6e 74 53 68 65 6c  |end the EvntShel|
0000a0f0  6c 20 6c 69 62 72 61 72  79 20 74 6f 20 74 68 65  |l library to the|
0000a100  20 75 73 65 72 20 61 70  70 6c 69 63 61 74 69 6f  | user applicatio|
0000a110  6e 0a 6d 61 6e 75 61 6c  6c 79 20 6f 72 20 62 79  |n.manually or by|
0000a120  20 75 73 69 6e 67 20 42  4c 69 62 49 49 20 79 6f  | using BLibII yo|
0000a130  75 20 63 61 6e 20 63 6f  6d 70 72 65 73 73 20 74  |u can compress t|
0000a140  68 65 20 63 6f 6d 70 6c  65 74 65 20 70 72 6f 67  |he complete prog|
0000a150  72 61 6d 0a 77 69 74 68  20 61 6c 6c 20 73 77 69  |ram.with all swi|
0000a160  74 63 68 65 73 20 6f 6e  2e 4a 6f 68 6e 20 57 61  |tches on.John Wa|
0000a170  6c 6c 61 63 65 20 28 41  72 63 68 69 74 79 70 65  |llace (Architype|
0000a180  20 53 6f 66 74 57 61 72  65 29 0a 53 75 70 70 6c  | SoftWare).Suppl|
0000a190  69 65 72 20 6f 66 20 21  42 61 73 53 68 72 69 6e  |ier of !BasShrin|
0000a1a0  6b 20 77 68 69 63 68 20  63 6f 73 74 73 20 35 2e  |k which costs 5.|
0000a1b0  30 30 70 2e 20 21 42 61  73 53 68 72 69 6e 6b 5f  |00p. !BasShrink_|
0000a1c0  50 44 20 69 73 20 74 68  65 20 0a 50 75 62 6c 69  |PD is the .Publi|
0000a1d0  63 20 44 6f 6d 61 69 6e  20 76 65 72 73 69 6f 6e  |c Domain version|
0000a1e0  20 61 6e 64 20 69 73 20  61 76 61 69 6c 61 62 6c  | and is availabl|
0000a1f0  65 20 66 72 6f 6d 20 76  61 72 69 6f 75 73 20 50  |e from various P|
0000a200  44 20 6c 69 62 72 61 72  69 65 73 2e 0a 0a 4a 6f  |D libraries...Jo|
0000a210  68 6e 20 57 61 6c 6c 61  63 65 2c 20 41 72 63 68  |hn Wallace, Arch|
0000a220  69 74 79 70 65 20 53 6f  66 74 77 61 72 65 2c 20  |itype Software, |
0000a230  35 34 20 50 61 72 6b 65  73 20 48 61 6c 6c 20 52  |54 Parkes Hall R|
0000a240  6f 61 64 2c 20 57 6f 6f  64 73 65 74 74 6f 6e 2c  |oad, Woodsetton,|
0000a250  0a 44 75 64 6c 65 79 2c  20 57 65 73 74 20 4d 69  |.Dudley, West Mi|
0000a260  64 6c 61 6e 64 73 2c 20  44 59 31 20 33 53 52 20  |dlands, DY1 3SR |
0000a270  45 4e 47 4c 41 4e 44 2e  50 72 6f 67 72 61 6d 73  |ENGLAND.Programs|
0000a280  0a 21 44 61 74 61 4c 6f  61 64 20 20 20 2d 20 45  |.!DataLoad   - E|
0000a290  76 6e 74 53 68 65 6c 6c  20 44 65 6d 6f 20 6f 66  |vntShell Demo of|
0000a2a0  20 6c 6f 61 64 69 6e 67  20 64 61 74 61 20 66 69  | loading data fi|
0000a2b0  6c 65 73 0a 21 45 76 6e  74 53 68 65 6c 6c 20 20  |les.!EvntShell  |
0000a2c0  2d 20 45 76 6e 74 53 68  65 6c 6c 20 44 65 6d 6f  |- EvntShell Demo|
0000a2d0  20 77 68 69 63 68 20 64  65 6d 6f 6e 73 74 72 61  | which demonstra|
0000a2e0  74 65 73 20 61 6e 20 27  61 64 64 72 65 73 73 20  |tes an 'address |
0000a2f0  62 6f 6f 6b 27 0a 20 20  20 20 20 20 20 20 20 20  |book'.          |
0000a300  20 20 20 20 74 79 70 65  20 64 61 74 61 20 65 64  |    type data ed|
0000a310  69 74 6f 72 2c 20 69 6e  63 6c 75 64 69 6e 67 20  |itor, including |
0000a320  6c 6f 61 64 69 6e 67 20  61 20 73 70 65 63 69 61  |loading a specia|
0000a330  6c 20 66 69 6c 65 0a 20  20 20 20 20 20 20 20 20  |l file.         |
0000a340  20 20 20 20 20 74 79 70  65 0a 21 53 68 65 6c 6c  |     type.!Shell|
0000a350  44 42 75 67 20 20 2d 20  44 69 73 70 6c 61 79 20  |DBug  - Display |
0000a360  74 72 61 63 65 20 6d 65  73 73 61 67 65 73 20 66  |trace messages f|
0000a370  72 6f 6d 20 45 76 6e 74  53 68 65 6c 6c 20 61 70  |rom EvntShell ap|
0000a380  70 6c 69 63 61 74 69 6f  6e 73 0a 21 50 61 6e 65  |plications.!Pane|
0000a390  73 20 20 20 20 20 20 2d  20 45 76 6e 74 53 68 65  |s      - EvntShe|
0000a3a0  6c 6c 20 44 65 6d 6f 20  77 68 69 63 68 20 64 65  |ll Demo which de|
0000a3b0  6d 6f 6e 73 74 72 61 74  65 73 20 70 61 72 65 6e  |monstrates paren|
0000a3c0  74 20 77 69 6e 64 6f 77  73 0a 20 20 20 20 20 20  |t windows.      |
0000a3d0  20 20 20 20 20 20 20 20  61 6e 64 20 70 61 6e 65  |        and pane|
0000a3e0  73 0a 21 56 42 61 73 65  32 20 20 20 20 20 2d 20  |s.!VBase2     - |
0000a3f0  45 76 6e 74 53 68 65 6c  6c 20 44 65 6d 6f 20 77  |EvntShell Demo w|
0000a400  68 69 63 68 20 64 65 6d  6f 6e 73 74 72 61 74 65  |hich demonstrate|
0000a410  73 20 68 6f 74 20 6b 65  79 73 2c 20 64 79 6e 61  |s hot keys, dyna|
0000a420  6d 69 63 0a 20 20 20 20  20 20 20 20 20 20 20 20  |mic.            |
0000a430  20 20 64 69 61 6c 6f 67  20 62 6f 78 65 73 20 61  |  dialog boxes a|
0000a440  6e 64 20 73 61 76 69 6e  67 20 64 61 74 61 0a 21  |nd saving data.!|
0000a450  57 69 6e 53 61 76 65 20  20 20 20 2d 20 45 76 6e  |WinSave    - Evn|
0000a460  74 53 68 65 6c 6c 20 44  65 6d 6f 20 62 75 74 20  |tShell Demo but |
0000a470  75 73 65 66 75 6c 20 61  73 20 77 65 6c 6c 2e 20  |useful as well. |
0000a480  41 6e 20 65 78 61 6d 70  6c 65 20 6f 66 20 61 20  |An example of a |
0000a490  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 72  |.              r|
0000a4a0  65 61 6c 20 77 6f 72 6b  69 6e 67 20 61 70 70 6c  |eal working appl|
0000a4b0  69 63 61 74 69 6f 6e 20  75 73 69 6e 67 20 74 68  |ication using th|
0000a4c0  65 20 45 76 6e 74 53 68  65 6c 6c 20 6c 69 62 72  |e EvntShell libr|
0000a4d0  61 72 79 2e 0a 20 20 20  20 20 20 20 20 20 20 20  |ary..           |
0000a4e0  20 20 20 54 68 69 73 20  61 70 70 20 73 61 76 65  |   This app save|
0000a4f0  73 20 64 65 73 6b 74 6f  70 20 77 69 6e 64 6f 77  |s desktop window|
0000a500  73 20 61 73 20 61 20 73  70 72 69 74 65 20 66 69  |s as a sprite fi|
0000a510  6c 65 20 66 6f 72 0a 20  20 20 20 20 20 20 20 20  |le for.         |
0000a520  20 20 20 20 20 69 6e 63  6c 75 73 69 6f 6e 20 69  |     inclusion i|
0000a530  6e 20 44 54 50 20 65 74  63 2e 0a 21 46 6f 72 6d  |n DTP etc..!Form|
0000a540  45 64 32 20 20 20 20 2d  20 42 61 73 65 64 20 6f  |Ed2    - Based o|
0000a550  6e 20 52 69 73 63 20 53  71 75 61 64 20 76 65 72  |n Risc Squad ver|
0000a560  73 69 6f 6e 20 32 2e 38  34 62 20 6c 69 67 68 74  |sion 2.84b light|
0000a570  6c 79 20 6d 6f 64 69 66  69 65 64 0a 20 20 20 20  |ly modified.    |
0000a580  20 20 20 20 20 20 20 20  20 20 74 6f 20 73 75 70  |          to sup|
0000a590  70 6f 72 74 20 69 6e 74  65 72 66 61 63 65 20 73  |port interface s|
0000a5a0  74 79 6c 65 20 69 63 6f  6e 73 0a 21 46 6f 72 6d  |tyle icons.!Form|
0000a5b0  45 64 33 20 20 20 20 2d  20 45 76 6e 74 53 68 65  |Ed3    - EvntShe|
0000a5c0  6c 6c 20 6d 65 6e 75 20  74 65 73 74 69 6e 67 20  |ll menu testing |
0000a5d0  61 70 70 6c 69 63 61 74  69 6f 6e 0a 21 41 70 70  |application.!App|
0000a5e0  42 75 69 6c 64 20 20 20  2d 20 50 72 6f 64 75 63  |Build   - Produc|
0000a5f0  65 73 20 61 20 63 75 73  74 6f 6d 69 73 65 64 20  |es a customised |
0000a600  76 65 72 73 69 6f 6e 20  6f 66 20 21 45 76 6e 74  |version of !Evnt|
0000a610  53 68 65 6c 6c 20 74 6f  20 75 73 65 0a 20 20 20  |Shell to use.   |
0000a620  20 20 20 20 20 20 20 20  20 20 20 61 73 20 61 20  |           as a |
0000a630  62 61 73 69 73 20 66 6f  72 20 6e 65 77 20 61 70  |basis for new ap|
0000a640  70 6c 69 63 61 74 69 6f  6e 73 0a 0a 21 49 6e 6c  |plications..!Inl|
0000a650  61 79 50 72 6e 74 20 20  2d 20 43 61 73 73 65 74  |ayPrnt  - Casset|
0000a660  74 65 20 69 6e 6c 61 79  20 70 72 69 6e 74 65 72  |te inlay printer|
0000a670  0a 21 56 42 61 73 65 20  20 20 20 20 20 2d 20 56  |.!VBase      - V|
0000a680  69 64 65 6f 20 43 61 73  73 65 74 74 65 20 44 61  |ideo Cassette Da|
0000a690  74 61 42 61 73 65 20 28  76 31 2e 35 31 29 0a 21  |taBase (v1.51).!|
0000a6a0  54 65 78 74 2d 44 54 50  20 20 20 2d 20 43 6f 6e  |Text-DTP   - Con|
0000a6b0  76 65 72 73 69 6f 6e 20  6f 66 20 66 6f 72 6d 61  |version of forma|
0000a6c0  74 74 65 64 20 74 65 78  74 20 66 69 6c 65 73 20  |tted text files |
0000a6d0  66 6f 72 20 44 54 50 4d  69 73 63 0a 4e 6f 20 52  |for DTPMisc.No R|
0000a6e0  6f 75 74 69 6e 65 73 20  68 65 72 65 20 79 65 74  |outines here yet|
0000a6f0  21 43 61 6e 63 65 6c 20  46 6c 61 67 0a 46 41 4c  |!Cancel Flag.FAL|
0000a700  53 45 20 3d 20 64 6f 6e  27 74 20 64 69 73 70 6c  |SE = don't displ|
0000a710  61 79 20 61 20 43 41 4e  43 45 4c 20 69 63 6f 6e  |ay a CANCEL icon|
0000a720  0a 54 52 55 45 20 20 3d  20 6d 65 73 73 61 67 65  |.TRUE  = message|
0000a730  20 77 69 6e 64 6f 77 20  68 61 73 20 61 20 43 41  | window has a CA|
0000a740  4e 43 45 4c 20 69 63 6f  6e 50 72 6f 67 72 61 6d  |NCEL iconProgram|
0000a750  20 4e 61 6d 65 0a 44 69  73 70 6c 61 79 65 64 20  | Name.Displayed |
0000a760  69 6e 20 74 68 65 20 74  69 74 6c 65 20 62 61 72  |in the title bar|
0000a770  20 6f 66 20 74 68 65 0a  6d 65 73 73 61 67 65 20  | of the.message |
0000a780  77 69 6e 64 6f 77 48 65  61 64 65 72 0a 57 68 65  |windowHeader.Whe|
0000a790  6e 20 6e 75 6c 6c 20 74  68 65 6e 20 74 68 65 20  |n null then the |
0000a7a0  74 69 74 6c 65 20 62 61  72 20 77 69 6c 6c 20 72  |title bar will r|
0000a7b0  65 61 64 0a 22 4d 65 73  73 61 67 65 20 66 72 6f  |ead."Message fro|
0000a7c0  6d 20 41 70 70 4e 61 6d  65 22 2e 20 57 68 65 6e  |m AppName". When|
0000a7d0  20 6e 6f 6e 2d 6e 75 6c  6c 0a 74 68 65 20 68 65  | non-null.the he|
0000a7e0  61 64 65 72 20 69 73 20  64 69 73 70 6c 61 79 65  |ader is displaye|
0000a7f0  64 20 69 6e 73 74 65 61  64 46 4e 73 68 65 6c 6c  |d insteadFNshell|
0000a800  5f 49 63 6f 6e 43 72 65  61 74 65 28 29 0a 50 61  |_IconCreate().Pa|
0000a810  72 61 6d 73 20 3d 3e 20  0a 20 20 20 20 20 20 20  |rams => .       |
0000a820  20 20 69 6e 74 20 77 69  6e 64 6f 77 20 68 61 6e  |  int window han|
0000a830  64 6c 65 20 0a 20 20 20  20 20 20 20 20 20 69 6e  |dle .         in|
0000a840  74 20 6d 69 6e 20 78 20  63 6f 6f 72 64 20 6f 66  |t min x coord of|
0000a850  20 69 63 6f 6e 0a 20 20  20 20 20 20 20 20 20 69  | icon.         i|
0000a860  6e 74 20 6d 69 6e 20 79  20 63 6f 6f 72 64 20 6f  |nt min y coord o|
0000a870  66 20 69 63 6f 6e 0a 20  20 20 20 20 20 20 20 20  |f icon.         |
0000a880  69 6e 74 20 77 69 64 74  68 20 6f 66 20 69 63 6f  |int width of ico|
0000a890  6e 0a 20 20 20 20 20 20  20 20 20 69 6e 74 20 68  |n.         int h|
0000a8a0  65 69 67 68 74 20 6f 66  20 69 63 6f 6e 0a 20 20  |eight of icon.  |
0000a8b0  20 20 20 20 20 20 20 69  6e 74 20 66 6f 72 65 67  |       int foreg|
0000a8c0  72 6f 75 6e 64 20 63 6f  6c 6f 75 72 0a 20 20 20  |round colour.   |
0000a8d0  20 20 20 20 20 20 69 6e  74 20 62 61 63 6b 67 72  |      int backgr|
0000a8e0  6f 75 6e 64 20 63 6f 6c  6f 75 72 0a 20 20 20 20  |ound colour.    |
0000a8f0  20 20 20 20 20 69 6e 74  20 3c 69 63 6f 6e 20 66  |     int <icon f|
0000a900  6c 61 67 73 3d 3e 53 57  49 2e 57 69 6d 70 5f 69  |lags=>SWI.Wimp_i|
0000a910  63 6f 6e 66 6c 61 67 73  3e 0a 20 20 20 20 20 20  |conflags>.      |
0000a920  20 20 20 73 74 72 20 74  65 78 74 20 74 6f 20 69  |   str text to i|
0000a930  6e 73 65 72 74 20 69 6e  74 6f 20 69 63 6f 6e 0a  |nsert into icon.|
0000a940  20 20 20 20 20 20 20 20  20 69 6e 74 20 61 64 64  |         int add|
0000a950  72 65 73 73 20 6f 66 20  69 6e 64 69 72 65 63 74  |ress of indirect|
0000a960  65 64 20 64 61 74 61 0a  20 20 20 20 20 20 20 20  |ed data.        |
0000a970  20 20 20 20 20 28 69 67  6e 6f 72 65 64 20 77 68  |     (ignored wh|
0000a980  65 6e 20 6e 6f 74 20 69  6e 64 69 72 65 63 74 65  |en not indirecte|
0000a990  64 29 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |d).         int |
0000a9a0  6c 65 6e 67 74 68 20 6f  66 20 69 6e 64 69 72 65  |length of indire|
0000a9b0  63 74 65 64 20 62 75 66  66 65 72 0a 20 20 20 20  |cted buffer.    |
0000a9c0  20 20 20 20 20 20 20 20  20 28 69 67 6e 6f 72 65  |         (ignore|
0000a9d0  64 20 77 68 65 6e 20 6e  6f 74 20 69 6e 64 69 72  |d when not indir|
0000a9e0  65 63 74 65 64 29 0a 20  20 20 20 20 20 20 20 20  |ected).         |
0000a9f0  73 74 72 20 3c 76 61 6c  69 64 61 74 69 6f 6e 20  |str <validation |
0000aa00  73 74 72 69 6e 67 3d 3e  73 77 69 2e 77 69 6d 70  |string=>swi.wimp|
0000aa10  5f 76 61 6c 69 64 61 74  69 6f 6e 73 74 72 69 6e  |_validationstrin|
0000aa20  67 3e 0a 0a 20 20 20 20  20 20 20 5c 3c 3d 0a 20  |g>..       \<=. |
0000aa30  20 20 20 20 20 20 20 20  69 6e 74 20 68 61 6e 64  |        int hand|
0000aa40  6c 65 20 6f 66 20 6e 65  77 20 69 63 6f 6e 0a 20  |le of new icon. |
0000aa50  20 20 20 20 20 20 20 20  0a 54 68 69 73 20 72 6f  |        .This ro|
0000aa60  75 74 69 6e 65 20 69 73  20 6f 6e 6c 79 20 75 73  |utine is only us|
0000aa70  65 64 20 77 68 65 6e 20  74 68 65 20 61 70 70 6c  |ed when the appl|
0000aa80  69 63 61 74 69 6f 6e 0a  6e 65 65 64 73 20 74 6f  |ication.needs to|
0000aa90  20 63 72 65 61 74 65 20  69 63 6f 6e 73 20 69 74  | create icons it|
0000aaa0  73 65 6c 66 20 72 61 74  68 65 72 20 74 68 61 6e  |self rather than|
0000aab0  0a 6c 6f 61 64 69 6e 67  20 74 68 65 6d 20 61 73  |.loading them as|
0000aac0  20 70 61 72 74 20 6f 66  20 61 20 77 69 6e 64 6f  | part of a windo|
0000aad0  77 20 64 65 66 69 6e 69  74 69 6f 6e 20 69 6e 0a  |w definition in.|
0000aae0  61 20 74 65 6d 70 6c 61  74 65 2e 0a 0a 49 74 20  |a template...It |
0000aaf0  64 6f 65 73 20 6e 6f 74  20 72 65 64 72 61 77 20  |does not redraw |
0000ab00  74 68 65 20 61 72 65 61  20 6f 66 20 74 68 65 20  |the area of the |
0000ab10  77 69 6e 64 6f 77 20 6f  63 63 75 70 69 65 64 0a  |window occupied.|
0000ab20  62 79 20 74 68 65 20 6e  65 77 20 69 63 6f 6e 2e  |by the new icon.|
0000ab30  20 49 66 20 74 68 65 20  77 69 6e 64 6f 77 20 69  | If the window i|
0000ab40  73 20 6f 70 65 6e 20 69  74 20 6d 61 79 20 62 65  |s open it may be|
0000ab50  0a 6e 65 63 65 73 73 61  72 79 20 74 6f 20 63 61  |.necessary to ca|
0000ab60  6c 6c 20 3c 50 52 4f 43  73 68 65 6c 6c 5f 49 63  |ll <PROCshell_Ic|
0000ab70  6f 6e 52 65 64 72 61 77  3e 20 74 6f 20 75 70 64  |onRedraw> to upd|
0000ab80  61 74 65 0a 74 68 65 20  77 69 6e 64 6f 77 20 61  |ate.the window a|
0000ab90  72 65 61 20 63 6f 76 65  72 65 64 20 62 79 20 74  |rea covered by t|
0000aba0  68 65 20 69 63 6f 6e 2e  0a 0a 4c 69 62 72 61 72  |he icon...Librar|
0000abb0  79 20 47 72 6f 75 70 20  3d 3e 20 3c 49 63 6f 6e  |y Group => <Icon|
0000abc0  73 3d 3e 4c 69 62 47 72  6f 75 70 49 63 6f 6e 73  |s=>LibGroupIcons|
0000abd0  3e 50 52 4f 43 73 68 65  6c 6c 5f 41 74 74 61 63  |>PROCshell_Attac|
0000abe0  68 4d 65 6e 75 44 42 6f  78 28 29 0a 50 61 72 61  |hMenuDBox().Para|
0000abf0  6d 73 20 3d 3e 20 20 0a  20 20 20 20 20 20 20 20  |ms =>  .        |
0000ac00  20 73 74 72 20 3c 6d 65  6e 75 20 73 65 6c 65 63  | str <menu selec|
0000ac10  74 69 6f 6e 20 73 74 72  69 6e 67 3d 3e 6d 65 6e  |tion string=>men|
0000ac20  75 64 62 6f 78 73 65 6c  73 74 72 3e 0a 20 20 20  |udboxselstr>.   |
0000ac30  20 20 20 20 20 20 73 74  72 20 77 69 6e 64 6f 77  |      str window|
0000ac40  20 69 64 65 6e 74 69 66  69 65 72 0a 20 20 20 20  | identifier.    |
0000ac50  20 20 20 20 20 73 74 72  20 3c 66 75 6e 63 74 69  |     str <functi|
0000ac60  6f 6e 20 6e 61 6d 65 3d  3e 55 73 65 72 46 4e 30  |on name=>UserFN0|
0000ac70  37 3e 0a 20 20 20 20 20  20 20 20 20 73 74 72 20  |7>.         str |
0000ac80  3c 66 75 6e 63 74 69 6f  6e 20 6e 61 6d 65 3d 3e  |<function name=>|
0000ac90  55 73 65 72 46 4e 30 38  3e 0a 0a 43 61 6c 6c 69  |UserFN08>..Calli|
0000aca0  6e 67 20 74 68 69 73 20  72 6f 75 74 69 6e 65 20  |ng this routine |
0000acb0  77 69 6c 6c 20 61 75 74  6f 6d 61 74 69 63 61 6c  |will automatical|
0000acc0  6c 79 20 73 65 74 75 70  20 74 68 65 20 73 75 62  |ly setup the sub|
0000acd0  0a 6d 65 6e 75 20 61 72  72 6f 77 20 6f 6e 20 74  |.menu arrow on t|
0000ace0  68 65 20 6d 65 6e 75 20  69 74 65 6d 2c 20 61 6e  |he menu item, an|
0000acf0  64 20 61 6c 73 6f 20 73  65 74 20 74 68 65 20 27  |d also set the '|
0000ad00  6d 65 6e 75 0a 77 61 72  6e 69 6e 67 27 20 66 6c  |menu.warning' fl|
0000ad10  61 67 2e 20 49 74 20 69  73 20 6e 6f 74 20 6e 65  |ag. It is not ne|
0000ad20  63 65 73 73 61 72 79 20  74 6f 20 64 6f 20 74 68  |cessary to do th|
0000ad30  69 73 20 69 6e 20 74 68  65 0a 6d 65 6e 75 20 65  |is in the.menu e|
0000ad40  64 69 74 6f 72 2e 0a 0a  4c 69 62 72 61 72 79 20  |ditor...Library |
0000ad50  47 72 6f 75 70 20 3d 3e  20 3c 45 76 65 6e 74 73  |Group => <Events|
0000ad60  3d 3e 4c 69 62 47 72 6f  75 70 45 76 65 6e 74 73  |=>LibGroupEvents|
0000ad70  3e 55 73 65 72 20 46 4e  20 28 50 52 4f 43 73 68  |>User FN (PROCsh|
0000ad80  65 6c 6c 5f 41 74 74 61  63 68 4d 65 6e 75 44 42  |ell_AttachMenuDB|
0000ad90  6f 78 29 0a 50 61 72 61  6d 73 20 3d 3e 20 0a 20  |ox).Params => . |
0000ada0  20 20 20 20 20 20 20 20  69 6e 74 20 77 69 6e 64  |        int wind|
0000adb0  6f 77 20 68 61 6e 64 6c  65 0a 20 0a 54 68 65 20  |ow handle. .The |
0000adc0  66 75 6e 63 74 69 6f 6e  20 74 6f 20 63 61 6c 6c  |function to call|
0000add0  20 61 66 74 65 72 20 63  72 65 61 74 69 6e 67 20  | after creating |
0000ade0  74 68 65 20 77 69 6e 64  6f 77 0a 62 75 74 20 62  |the window.but b|
0000adf0  65 66 6f 72 65 20 6f 70  65 6e 69 6e 67 20 69 74  |efore opening it|
0000ae00  2e 20 54 68 69 73 20 63  61 6e 20 62 65 20 75 73  |. This can be us|
0000ae10  65 64 20 74 6f 20 66 69  6c 6c 0a 69 6e 20 69 63  |ed to fill.in ic|
0000ae20  6f 6e 20 66 69 65 6c 64  73 20 65 74 63 2e 20 41  |on fields etc. A|
0000ae30  20 66 75 6e 63 74 69 6f  6e 20 6e 61 6d 65 20 6f  | function name o|
0000ae40  66 20 22 22 20 6d 61 79  0a 62 65 20 75 73 65 64  |f "" may.be used|
0000ae50  20 69 66 20 79 6f 75 20  64 6f 6e 27 74 20 6e 65  | if you don't ne|
0000ae60  65 64 20 74 6f 20 63 61  6c 6c 20 61 20 66 75 6e  |ed to call a fun|
0000ae70  63 74 69 6f 6e 2e 55 73  65 72 20 46 4e 20 28 50  |ction.User FN (P|
0000ae80  52 4f 43 73 68 65 6c 6c  5f 41 74 74 61 63 68 4d  |ROCshell_AttachM|
0000ae90  65 6e 75 44 42 6f 78 29  0a 50 61 72 61 6d 73 20  |enuDBox).Params |
0000aea0  3d 3e 20 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |=> .         int|
0000aeb0  20 77 69 6e 64 6f 77 20  68 61 6e 64 6c 65 0a 20  | window handle. |
0000aec0  0a 54 68 65 20 66 75 6e  63 74 69 6f 6e 20 74 6f  |.The function to|
0000aed0  20 63 61 6c 6c 20 61 66  74 65 72 20 6f 70 65 6e  | call after open|
0000aee0  69 6e 67 20 74 68 65 20  77 69 6e 64 6f 77 2e 0a  |ing the window..|
0000aef0  41 20 66 75 6e 63 74 69  6f 6e 20 6e 61 6d 65 20  |A function name |
0000af00  6f 66 20 22 22 20 6d 61  79 20 62 65 20 75 73 65  |of "" may be use|
0000af10  64 20 69 66 20 79 6f 75  20 64 6f 6e 27 74 0a 6e  |d if you don't.n|
0000af20  65 65 64 20 74 6f 20 63  61 6c 6c 20 61 20 66 75  |eed to call a fu|
0000af30  6e 63 74 69 6f 6e 2e 50  52 4f 43 73 68 65 6c 6c  |nction.PROCshell|
0000af40  5f 41 74 74 61 63 68 48  6f 74 4b 65 79 28 29 0a  |_AttachHotKey().|
0000af50  50 61 72 61 6d 73 20 3d  3e 0a 20 20 20 20 20 20  |Params =>.      |
0000af60  20 20 20 73 74 72 20 20  3c 6b 65 79 3d 3e 48 6f  |   str  <key=>Ho|
0000af70  74 4b 65 79 4b 65 79 3e  0a 20 20 20 20 20 20 20  |tKeyKey>.       |
0000af80  20 20 62 6f 6f 6c 20 73  68 69 66 74 20 66 6c 61  |  bool shift fla|
0000af90  67 0a 20 20 20 20 20 20  20 20 20 62 6f 6f 6c 20  |g.         bool |
0000afa0  63 74 72 6c 20 20 66 6c  61 67 0a 20 20 20 20 20  |ctrl  flag.     |
0000afb0  20 20 20 20 62 6f 6f 6c  20 61 6c 74 20 20 20 66  |    bool alt   f|
0000afc0  6c 61 67 0a 20 20 20 20  20 20 20 20 20 73 74 72  |lag.         str|
0000afd0  20 20 3c 77 69 6e 64 6f  77 20 69 64 65 6e 74 69  |  <window identi|
0000afe0  66 69 65 72 3d 3e 48 6f  74 4b 65 79 57 69 6e 3e  |fier=>HotKeyWin>|
0000aff0  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 20 3c  |.         int  <|
0000b000  77 69 6e 64 6f 77 20 68  61 6e 64 6c 65 3d 3e 48  |window handle=>H|
0000b010  6f 74 4b 65 79 53 74 61  74 69 63 3e 0a 20 20 20  |otKeyStatic>.   |
0000b020  20 20 20 20 20 20 73 74  72 20 20 3c 66 75 6e 63  |      str  <func|
0000b030  74 69 6f 6e 20 6e 61 6d  65 3d 3e 55 73 65 72 46  |tion name=>UserF|
0000b040  4e 30 39 3e 0a 20 20 20  20 20 20 20 20 20 73 74  |N09>.         st|
0000b050  72 20 20 3c 66 75 6e 63  74 69 6f 6e 20 6e 61 6d  |r  <function nam|
0000b060  65 3d 3e 55 73 65 72 46  4e 31 30 3e 0a 0a 53 65  |e=>UserFN10>..Se|
0000b070  74 73 20 75 70 20 61 20  27 68 6f 74 6b 65 79 27  |ts up a 'hotkey'|
0000b080  20 65 76 65 6e 74 2e 20  46 75 6e 63 74 69 6f 6e  | event. Function|
0000b090  20 6b 65 79 73 20 46 30  2d 46 31 31 0a 28 6e 6f  | keys F0-F11.(no|
0000b0a0  74 65 20 4e 4f 54 20 46  31 32 20 61 73 20 74 68  |te NOT F12 as th|
0000b0b0  65 20 74 61 73 6b 20 6d  61 6e 61 67 65 72 20 75  |e task manager u|
0000b0c0  73 65 73 20 69 74 20 75  6e 64 65 72 0a 52 49 53  |ses it under.RIS|
0000b0d0  43 2d 4f 53 20 33 29 20  61 72 65 20 73 75 70 70  |C-OS 3) are supp|
0000b0e0  6f 72 74 65 64 2e 0a 0a  4c 69 62 72 61 72 79 20  |orted...Library |
0000b0f0  47 72 6f 75 70 20 3d 3e  20 3c 45 76 65 6e 74 73  |Group => <Events|
0000b100  3d 3e 4c 69 62 47 72 6f  75 70 45 76 65 6e 74 73  |=>LibGroupEvents|
0000b110  3e 55 73 65 72 20 46 4e  20 28 50 52 4f 43 73 68  |>User FN (PROCsh|
0000b120  65 6c 6c 5f 41 74 74 61  63 68 48 6f 74 4b 65 79  |ell_AttachHotKey|
0000b130  29 0a 50 61 72 61 6d 73  20 3d 3e 20 0a 20 20 20  |).Params => .   |
0000b140  20 20 20 20 20 20 69 6e  74 20 77 69 6e 64 6f 77  |      int window|
0000b150  20 68 61 6e 64 6c 65 0a  20 0a 54 68 65 20 66 75  | handle. .The fu|
0000b160  6e 63 74 69 6f 6e 20 74  6f 20 63 61 6c 6c 20 62  |nction to call b|
0000b170  65 66 6f 72 65 20 6f 70  65 6e 69 6e 67 20 74 68  |efore opening th|
0000b180  65 20 77 69 6e 64 6f 77  2e 0a 41 20 66 75 6e 63  |e window..A func|
0000b190  74 69 6f 6e 20 6e 61 6d  65 20 6f 66 20 22 22 20  |tion name of "" |
0000b1a0  6d 61 79 20 62 65 20 75  73 65 64 20 69 66 20 79  |may be used if y|
0000b1b0  6f 75 20 64 6f 6e 27 74  0a 6e 65 65 64 20 74 6f  |ou don't.need to|
0000b1c0  20 63 61 6c 6c 20 61 20  66 75 6e 63 74 69 6f 6e  | call a function|
0000b1d0  2e 20 54 68 69 73 20 77  6f 75 6c 64 20 6e 6f 72  |. This would nor|
0000b1e0  6d 61 6c 6c 79 20 62 65  0a 75 73 65 64 20 74 6f  |mally be.used to|
0000b1f0  20 66 69 6c 6c 20 69 6e  20 69 63 6f 6e 20 66 69  | fill in icon fi|
0000b200  65 6c 64 73 20 61 6e 64  20 73 65 74 20 74 68 65  |elds and set the|
0000b210  20 73 74 61 74 65 0a 6f  66 20 72 61 64 69 6f 20  | state.of radio |
0000b220  62 75 74 74 6f 6e 73 55  73 65 72 20 46 4e 20 28  |buttonsUser FN (|
0000b230  50 52 4f 43 73 68 65 6c  6c 5f 41 74 74 61 63 68  |PROCshell_Attach|
0000b240  48 6f 74 4b 65 79 29 0a  50 61 72 61 6d 73 20 3d  |HotKey).Params =|
0000b250  3e 20 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |> .         int |
0000b260  77 69 6e 64 6f 77 20 68  61 6e 64 6c 65 0a 20 0a  |window handle. .|
0000b270  54 68 65 20 66 75 6e 63  74 69 6f 6e 20 74 6f 20  |The function to |
0000b280  63 61 6c 6c 20 61 66 74  65 72 20 6f 70 65 6e 69  |call after openi|
0000b290  6e 67 20 74 68 65 20 77  69 6e 64 6f 77 2e 0a 41  |ng the window..A|
0000b2a0  20 66 75 6e 63 74 69 6f  6e 20 6e 61 6d 65 20 6f  | function name o|
0000b2b0  66 20 22 22 20 6d 61 79  20 62 65 20 75 73 65 64  |f "" may be used|
0000b2c0  20 69 66 20 79 6f 75 20  64 6f 6e 27 74 0a 6e 65  | if you don't.ne|
0000b2d0  65 64 20 74 6f 20 63 61  6c 6c 20 61 20 66 75 6e  |ed to call a fun|
0000b2e0  63 74 69 6f 6e 2e 4b 65  79 20 28 50 52 4f 43 73  |ction.Key (PROCs|
0000b2f0  68 65 6c 6c 5f 41 74 74  61 63 68 48 6f 74 4b 65  |hell_AttachHotKe|
0000b300  79 29 0a 54 68 65 20 6b  65 79 20 73 74 72 69 6e  |y).The key strin|
0000b310  67 20 6e 6f 72 6d 61 6c  6c 79 20 63 6f 6e 73 69  |g normally consi|
0000b320  73 74 73 20 6f 66 20 6f  6e 65 20 41 53 43 49 49  |sts of one ASCII|
0000b330  0a 63 68 61 72 61 63 74  65 72 20 69 2e 65 2e 20  |.character i.e. |
0000b340  22 52 22 2e 20 57 68 65  6e 20 74 68 65 20 63 74  |"R". When the ct|
0000b350  72 6c 20 66 6c 61 67 20  69 73 20 73 65 74 0a 74  |rl flag is set.t|
0000b360  68 69 73 20 77 6f 75 6c  64 20 63 61 75 73 65 20  |his would cause |
0000b370  74 68 65 20 61 63 74 69  6f 6e 73 20 74 6f 20 62  |the actions to b|
0000b380  65 20 63 61 72 72 69 65  64 20 6f 75 74 0a 77 68  |e carried out.wh|
0000b390  65 6e 20 43 54 52 4c 2d  52 20 69 73 20 70 72 65  |en CTRL-R is pre|
0000b3a0  73 73 65 64 2e 0a 0a 54  68 65 20 73 74 72 69 6e  |ssed...The strin|
0000b3b0  67 20 6d 61 79 20 61 6c  73 6f 20 63 6f 6e 74 61  |g may also conta|
0000b3c0  69 6e 20 22 46 31 22 20  74 6f 20 22 46 31 31 22  |in "F1" to "F11"|
0000b3d0  20 74 6f 0a 61 6c 6c 6f  77 20 66 75 6e 63 74 69  | to.allow functi|
0000b3e0  6f 6e 20 6b 65 79 73 20  74 6f 20 62 65 20 75 73  |on keys to be us|
0000b3f0  65 64 2e 20 4e 6f 20 63  68 65 63 6b 69 6e 67 20  |ed. No checking |
0000b400  69 73 0a 70 65 72 66 6f  72 6d 65 64 20 6f 6e 20  |is.performed on |
0000b410  74 68 65 20 73 74 72 69  6e 67 2e 57 69 6e 64 6f  |the string.Windo|
0000b420  77 20 28 50 52 4f 43 73  68 65 6c 6c 5f 41 74 74  |w (PROCshell_Att|
0000b430  61 63 68 48 6f 74 4b 65  79 29 0a 54 68 65 20 77  |achHotKey).The w|
0000b440  69 6e 64 6f 77 20 69 64  65 6e 74 69 66 69 65 72  |indow identifier|
0000b450  20 73 70 65 63 69 66 69  65 73 20 74 68 65 20 6e  | specifies the n|
0000b460  61 6d 65 0a 6f 66 20 74  68 65 20 77 69 6e 64 6f  |ame.of the windo|
0000b470  77 20 79 6f 75 20 77 61  6e 74 20 74 6f 20 61 70  |w you want to ap|
0000b480  70 65 61 72 20 77 68 65  6e 20 74 68 65 0a 6b 65  |pear when the.ke|
0000b490  79 70 72 65 73 73 20 69  73 20 72 65 63 65 69 76  |ypress is receiv|
0000b4a0  65 64 2e 20 54 68 69 73  20 70 61 72 61 6d 65 74  |ed. This paramet|
0000b4b0  65 72 20 69 73 0a 6f 70  74 69 6f 6e 61 6c 20 61  |er is.optional a|
0000b4c0  73 20 79 6f 75 20 6d 69  67 68 74 20 6e 6f 74 20  |s you might not |
0000b4d0  61 6c 77 61 79 73 20 77  61 6e 74 20 74 6f 0a 6f  |always want to.o|
0000b4e0  70 65 6e 20 61 20 77 69  6e 64 6f 77 2e 0a 0a 54  |pen a window...T|
0000b4f0  68 65 20 77 69 6e 64 6f  77 20 69 73 20 61 20 27  |he window is a '|
0000b500  64 79 6e 61 6d 69 63 27  20 64 69 61 6c 6f 67 20  |dynamic' dialog |
0000b510  62 6f 78 20 77 68 69 63  68 0a 77 69 6c 6c 20 64  |box which.will d|
0000b520  69 73 61 70 70 65 61 72  20 77 68 65 6e 20 5c 3c  |isappear when \<|
0000b530  45 53 43 3e 20 69 73 20  70 72 65 73 73 65 64 20  |ESC> is pressed |
0000b540  61 6e 64 0a 69 73 20 6f  70 65 6e 65 64 20 69 6e  |and.is opened in|
0000b550  20 73 75 63 68 20 61 20  70 6f 73 69 74 69 6f 6e  | such a position|
0000b560  20 74 68 61 74 20 74 68  65 20 6d 6f 75 73 65 0a  | that the mouse.|
0000b570  70 6f 69 6e 74 65 72 20  69 73 20 69 6e 20 74 68  |pointer is in th|
0000b580  65 20 6d 69 64 64 6c 65  20 6f 66 20 74 68 65 20  |e middle of the |
0000b590  77 69 6e 64 6f 77 0a 28  77 68 65 72 65 20 70 6f  |window.(where po|
0000b5a0  73 73 69 62 6c 65 29 2e  57 69 6e 64 6f 77 20 48  |ssible).Window H|
0000b5b0  61 6e 64 6c 65 20 28 73  68 65 6c 6c 5f 41 74 74  |andle (shell_Att|
0000b5c0  61 63 68 48 6f 74 4b 65  79 29 0a 57 68 65 6e 20  |achHotKey).When |
0000b5d0  74 68 69 73 20 69 73 20  3e 30 20 74 68 65 6e 20  |this is >0 then |
0000b5e0  74 68 65 20 77 69 6e 64  6f 77 0a 63 72 65 61 74  |the window.creat|
0000b5f0  65 64 20 77 69 6c 6c 20  62 65 20 73 74 61 74 69  |ed will be stati|
0000b600  63 20 69 2e 65 2e 20 69  74 20 77 69 6c 6c 20 6e  |c i.e. it will n|
0000b610  6f 74 0a 62 65 20 72 65  6d 6f 76 65 64 20 77 68  |ot.be removed wh|
0000b620  65 6e 20 74 68 65 20 6d  6f 75 73 65 20 69 73 20  |en the mouse is |
0000b630  63 6c 69 63 6b 65 64 0a  6f 75 74 73 69 64 65 20  |clicked.outside |
0000b640  69 74 2c 20 6f 72 20 77  68 65 6e 20 5c 3c 45 53  |it, or when \<ES|
0000b650  43 3e 20 69 73 20 70 72  65 73 73 65 64 2e 55 73  |C> is pressed.Us|
0000b660  65 72 20 46 4e 20 28 50  52 4f 43 73 68 65 6c 6c  |er FN (PROCshell|
0000b670  5f 41 74 74 61 63 68 55  73 65 72 52 65 64 72 61  |_AttachUserRedra|
0000b680  77 29 0a 50 61 72 61 6d  73 20 3d 3e 20 0a 20 20  |w).Params => .  |
0000b690  20 20 20 20 20 20 20 69  6e 74 20 61 64 64 72 65  |       int addre|
0000b6a0  73 73 20 6f 66 20 3c 62  6c 6f 63 6b 3d 3e 53 57  |ss of <block=>SW|
0000b6b0  49 2e 77 69 6d 70 5f 67  65 74 72 65 63 74 61 6e  |I.wimp_getrectan|
0000b6c0  67 6c 65 30 3e 20 72 65  74 75 72 6e 65 64 20 62  |gle0> returned b|
0000b6d0  79 20 72 65 64 72 61 77  0a 20 20 20 20 20 20 20  |y redraw.       |
0000b6e0  20 20 20 20 20 20 72 65  71 75 65 73 74 0a 20 20  |      request.  |
0000b6f0  20 20 20 20 20 20 20 69  6e 74 20 78 20 6f 72 69  |       int x ori|
0000b700  67 69 6e 20 6f 66 20 77  69 6e 64 6f 77 20 28 73  |gin of window (s|
0000b710  63 72 65 65 6e 20 63 6f  6f 72 64 73 29 0a 20 20  |creen coords).  |
0000b720  20 20 20 20 20 20 20 69  6e 74 20 79 20 6f 72 69  |       int y ori|
0000b730  67 69 6e 20 6f 66 20 77  69 6e 64 6f 77 20 28 73  |gin of window (s|
0000b740  63 72 65 65 6e 20 63 6f  6f 72 64 73 29 0a 20 0a  |creen coords). .|
0000b750  54 68 65 20 66 75 6e 63  74 69 6f 6e 20 74 6f 20  |The function to |
0000b760  63 61 6c 6c 20 77 68 65  6e 20 61 20 72 65 64 72  |call when a redr|
0000b770  61 77 20 72 65 71 75 65  73 74 0a 69 73 20 6d 61  |aw request.is ma|
0000b780  64 65 2e 55 73 65 72 20  46 4e 20 28 50 52 4f 43  |de.User FN (PROC|
0000b790  73 68 65 6c 6c 5f 41 74  74 61 63 68 43 6c 69 63  |shell_AttachClic|
0000b7a0  6b 53 65 6c 65 63 74 29  0a 50 61 72 61 6d 73 20  |kSelect).Params |
0000b7b0  3d 3e 20 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |=> .         int|
0000b7c0  20 77 69 6e 64 6f 77 20  68 61 6e 64 6c 65 0a 20  | window handle. |
0000b7d0  20 20 20 20 20 20 20 20  69 6e 74 20 69 63 6f 6e  |        int icon|
0000b7e0  20 68 61 6e 64 6c 65 20  20 20 20 20 20 20 20 20  | handle         |
0000b7f0  20 20 20 20 20 20 20 20  55 73 65 72 20 46 4e 20  |        User FN |
0000b800  28 50 52 4f 43 73 68 65  6c 6c 5f 41 74 74 61 63  |(PROCshell_Attac|
0000b810  68 43 6c 69 63 6b 41 64  6a 75 73 74 29 0a 50 61  |hClickAdjust).Pa|
0000b820  72 61 6d 73 20 3d 3e 20  0a 20 20 20 20 20 20 20  |rams => .       |
0000b830  20 20 69 6e 74 20 77 69  6e 64 6f 77 20 68 61 6e  |  int window han|
0000b840  64 6c 65 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |dle.         int|
0000b850  20 69 63 6f 6e 20 68 61  6e 64 6c 65 20 20 20 20  | icon handle    |
0000b860  20 20 20 20 20 20 20 20  20 20 20 20 20 50 52 4f  |             PRO|
0000b870  43 73 68 65 6c 6c 5f 4f  70 65 6e 57 69 6e 64 6f  |Cshell_OpenWindo|
0000b880  77 53 74 61 74 69 63 28  29 0a 50 61 72 61 6d 73  |wStatic().Params|
0000b890  20 3d 3e 20 20 20 20 20  0a 20 20 20 20 20 20 20  | =>     .       |
0000b8a0  20 20 69 6e 74 20 77 69  6e 64 6f 77 20 68 61 6e  |  int window han|
0000b8b0  64 6c 65 0a 0a 54 68 65  20 77 69 6e 64 6f 77 20  |dle..The window |
0000b8c0  77 69 6c 6c 20 62 65 20  62 72 6f 75 67 68 74 20  |will be brought |
0000b8d0  74 6f 20 74 68 65 20 74  6f 70 0a 6f 66 20 74 68  |to the top.of th|
0000b8e0  65 20 73 74 61 63 6b 20  62 79 20 74 68 69 73 20  |e stack by this |
0000b8f0  63 61 6c 6c 2e 20 54 68  65 20 77 69 6e 64 6f 77  |call. The window|
0000b900  0a 6d 75 73 74 20 68 61  76 65 20 62 65 65 6e 20  |.must have been |
0000b910  63 72 65 61 74 65 64 20  77 69 74 68 20 61 20 63  |created with a c|
0000b920  61 6c 6c 20 74 6f 0a 3c  50 52 4f 43 73 68 65 6c  |all to.<PROCshel|
0000b930  6c 5f 43 72 65 61 74 65  57 69 6e 64 6f 77 53 74  |l_CreateWindowSt|
0000b940  61 74 69 63 3e 20 2d 20  61 6e 20 65 72 72 6f 72  |atic> - an error|
0000b950  0a 77 69 6c 6c 20 62 65  20 67 65 6e 65 72 61 74  |.will be generat|
0000b960  65 64 20 69 66 20 74 68  69 73 20 69 73 20 6e 6f  |ed if this is no|
0000b970  74 20 74 68 65 0a 63 61  73 65 2e 0a 0a 41 6e 79  |t the.case...Any|
0000b980  20 70 61 6e 65 73 20 61  74 74 61 63 68 65 64 20  | panes attached |
0000b990  74 6f 20 74 68 65 20 77  69 6e 64 6f 77 20 77 69  |to the window wi|
0000b9a0  74 68 0a 3c 50 52 4f 43  73 68 65 6c 6c 5f 41 74  |th.<PROCshell_At|
0000b9b0  74 61 63 68 50 61 6e 65  3e 20 77 69 6c 6c 20 62  |tachPane> will b|
0000b9c0  65 20 6f 70 65 6e 65 64  0a 61 75 74 6f 6d 61 74  |e opened.automat|
0000b9d0  69 63 61 6c 6c 79 2e 0a  0a 4c 69 62 72 61 72 79  |ically...Library|
0000b9e0  20 47 72 6f 75 70 20 3d  5c 3e 20 3c 57 69 6e 64  | Group =\> <Wind|
0000b9f0  6f 77 73 3d 3e 4c 69 62  47 72 6f 75 70 57 69 6e  |ows=>LibGroupWin|
0000ba00  64 6f 77 73 3e 50 52 4f  43 73 68 65 6c 6c 5f 43  |dows>PROCshell_C|
0000ba10  72 65 61 74 65 57 69 6e  64 6f 77 53 74 61 74 69  |reateWindowStati|
0000ba20  63 28 29 0a 50 61 72 61  6d 73 20 3d 5c 3e 0a 20  |c().Params =\>. |
0000ba30  20 20 20 20 20 20 20 20  73 74 72 20 77 69 6e 64  |        str wind|
0000ba40  6f 77 20 69 64 65 6e 74  69 66 69 65 72 0a 20 20  |ow identifier.  |
0000ba50  20 20 20 20 20 20 20 69  6e 74 20 28 69 67 6e 6f  |       int (igno|
0000ba60  72 65 64 20 6f 6e 20 65  6e 74 72 79 29 0a 0a 20  |red on entry).. |
0000ba70  20 20 20 20 20 20 5c 3c  3d 0a 20 20 20 20 20 20  |      \<=.      |
0000ba80  20 20 20 69 6e 74 20 77  69 6e 64 6f 77 20 68 61  |   int window ha|
0000ba90  6e 64 6c 65 20 6f 66 20  6e 65 77 6c 79 20 63 72  |ndle of newly cr|
0000baa0  65 61 74 65 64 20 77 69  6e 64 6f 77 0a 0a 4c 69  |eated window..Li|
0000bab0  62 72 61 72 79 20 47 72  6f 75 70 20 3d 5c 3e 20  |brary Group =\> |
0000bac0  3c 57 69 6e 64 6f 77 73  3d 3e 4c 69 62 47 72 6f  |<Windows=>LibGro|
0000bad0  75 70 57 69 6e 64 6f 77  73 3e 4d 65 6e 75 20 53  |upWindows>Menu S|
0000bae0  74 72 69 6e 67 20 28 50  52 4f 43 73 68 65 6c 6c  |tring (PROCshell|
0000baf0  5f 41 74 74 61 63 68 4d  65 6e 75 44 42 6f 78 29  |_AttachMenuDBox)|
0000bb00  0a 4e 6f 74 65 20 74 68  61 74 20 74 68 69 73 20  |.Note that this |
0000bb10  73 74 72 69 6e 67 20 69  73 20 74 72 65 61 74 65  |string is treate|
0000bb20  64 20 61 73 20 61 20 6c  69 73 74 20 6f 66 0a 3c  |d as a list of.<|
0000bb30  6d 65 73 73 61 67 65 20  74 61 67 73 3d 3e 4d 65  |message tags=>Me|
0000bb40  73 73 61 67 65 54 61 67  3e 2c 20 61 6e 64 20 61  |ssageTag>, and a|
0000bb50  6e 79 20 74 6f 6b 65 6e  73 20 66 6f 75 6e 64 20  |ny tokens found |
0000bb60  69 6e 20 74 68 65 0a 6d  65 73 73 61 67 65 20 66  |in the.message f|
0000bb70  69 6c 65 20 77 69 6c 6c  20 62 65 20 72 65 70 6c  |ile will be repl|
0000bb80  61 63 65 64 2e 20 49 66  20 74 68 65 20 74 61 67  |aced. If the tag|
0000bb90  20 69 73 0a 6e 6f 74 20  66 6f 75 6e 64 20 6e 6f  | is.not found no|
0000bba0  20 73 75 62 73 74 69 74  75 74 69 6f 6e 20 77 69  | substitution wi|
0000bbb0  6c 6c 20 6f 63 63 75 72  2e 0a 0a 54 68 69 73 20  |ll occur...This |
0000bbc0  61 6c 6c 6f 77 73 20 79  6f 75 20 74 6f 20 69 67  |allows you to ig|
0000bbd0  6e 6f 72 65 20 74 68 65  20 61 62 69 6c 69 74 79  |nore the ability|
0000bbe0  20 6f 66 20 74 68 65 0a  45 76 6e 74 53 68 65 6c  | of the.EvntShel|
0000bbf0  6c 20 6c 69 62 72 61 72  79 20 74 6f 20 68 61 6e  |l library to han|
0000bc00  64 6c 65 20 6d 75 6c 74  69 2d 6c 69 6e 67 75 61  |dle multi-lingua|
0000bc10  6c 20 6d 65 6e 75 73 0a  69 66 20 72 65 71 75 69  |l menus.if requi|
0000bc20  72 65 64 2e 49 6e 74 65  72 61 63 74 69 76 65 20  |red.Interactive |
0000bc30  48 65 6c 70 0a 54 68 65  20 45 76 6e 74 53 68 65  |Help.The EvntShe|
0000bc40  6c 6c 20 6c 69 62 72 61  79 20 73 75 70 70 6f 72  |ll libray suppor|
0000bc50  74 73 20 41 63 6f 72 6e  27 73 20 49 6e 74 65 72  |ts Acorn's Inter|
0000bc60  61 63 74 69 76 65 20 48  65 6c 70 0a 61 70 70 6c  |active Help.appl|
0000bc70  69 63 61 74 69 6f 6e 20  21 48 65 6c 70 20 62 79  |ication !Help by|
0000bc80  20 73 65 61 72 63 68 69  6e 67 20 69 63 6f 6e 20  | searching icon |
0000bc90  76 61 6c 69 64 61 74 69  6f 6e 20 73 74 72 69 6e  |validation strin|
0000bca0  67 73 0a 66 6f 72 20 74  68 65 20 27 49 27 20 63  |gs.for the 'I' c|
0000bcb0  6f 6d 6d 61 6e 64 20 28  61 73 20 72 65 63 6f 6d  |ommand (as recom|
0000bcc0  6d 65 6e 64 65 64 20 62  79 20 74 68 65 20 61 75  |mended by the au|
0000bcd0  74 68 6f 72 20 6f 66 0a  74 68 65 20 49 6e 74 65  |thor of.the Inte|
0000bce0  72 66 61 63 65 20 6d 6f  64 75 6c 65 29 20 66 6f  |rface module) fo|
0000bcf0  72 20 61 20 3c 6d 65 73  73 61 67 65 20 74 61 67  |r a <message tag|
0000bd00  3d 3e 4d 65 73 73 61 67  65 54 61 67 3e 2e 0a 0a  |=>MessageTag>...|
0000bd10  54 68 65 20 6d 65 73 73  61 67 65 20 62 65 6c 6f  |The message belo|
0000bd20  6e 67 69 6e 67 20 74 6f  20 74 68 65 20 74 61 67  |nging to the tag|
0000bd30  20 77 69 6c 6c 20 62 65  20 6c 6f 6f 6b 65 64 20  | will be looked |
0000bd40  75 70 20 61 6e 64 0a 73  65 6e 74 20 74 6f 20 21  |up and.sent to !|
0000bd50  48 65 6c 70 20 28 69 66  20 21 48 65 6c 70 20 69  |Help (if !Help i|
0000bd60  73 20 72 75 6e 6e 69 6e  67 29 2e 20 41 6e 20 65  |s running). An e|
0000bd70  78 61 6d 70 6c 65 20 77  6f 75 6c 64 0a 62 65 20  |xample would.be |
0000bd80  61 20 76 61 6c 69 64 61  74 69 6f 6e 20 73 74 72  |a validation str|
0000bd90  69 6e 67 20 6f 66 20 22  69 4d 65 73 73 54 61 67  |ing of "iMessTag|
0000bda0  30 31 22 2c 20 77 68 65  72 65 20 74 68 65 20 66  |01", where the f|
0000bdb0  69 6c 65 0a 27 4d 65 73  73 61 67 65 73 27 20 63  |ile.'Messages' c|
0000bdc0  6f 6e 74 61 69 6e 73 20  74 68 65 20 6c 69 6e 65  |ontains the line|
0000bdd0  20 27 4d 65 73 73 54 61  67 30 31 3a 54 68 69 73  | 'MessTag01:This|
0000bde0  20 69 73 20 61 20 74 65  73 74 27 2e 0a 27 54 68  | is a test'..'Th|
0000bdf0  69 73 20 69 73 20 61 20  74 65 73 74 27 20 77 6f  |is is a test' wo|
0000be00  75 6c 64 20 62 65 20 74  68 65 20 6d 65 73 73 61  |uld be the messa|
0000be10  67 65 20 64 69 73 70 6c  61 79 65 64 2e 0a 0a 49  |ge displayed...I|
0000be20  74 20 69 73 20 61 6c 73  6f 20 70 6f 73 73 69 62  |t is also possib|
0000be30  6c 65 20 74 6f 20 61 74  74 61 63 68 20 61 20 6d  |le to attach a m|
0000be40  65 73 73 61 67 65 20 74  61 67 20 74 6f 20 61 20  |essage tag to a |
0000be50  77 69 6e 64 6f 77 0a 6f  72 20 61 20 77 69 6e 64  |window.or a wind|
0000be60  6f 77 2f 69 63 6f 6e 20  75 73 69 6e 67 20 3c 50  |ow/icon using <P|
0000be70  52 4f 43 73 68 65 6c 6c  5f 41 74 74 61 63 68 48  |ROCshell_AttachH|
0000be80  65 6c 70 54 61 67 3e 2e  4d 65 73 73 61 67 65 20  |elpTag>.Message |
0000be90  54 61 67 73 0a 41 20 6d  65 73 73 61 67 65 20 74  |Tags.A message t|
0000bea0  61 67 20 69 73 20 61 20  73 74 72 69 6e 67 20 6e  |ag is a string n|
0000beb0  6f 74 20 6d 6f 72 65 20  74 68 61 6e 20 31 31 0a  |ot more than 11.|
0000bec0  63 68 61 72 61 63 74 65  72 73 20 6c 6f 6e 67 20  |characters long |
0000bed0  61 6e 64 20 72 65 70 72  65 73 65 6e 74 73 20 61  |and represents a|
0000bee0  20 6d 65 73 73 61 67 65  0a 73 74 72 69 6e 67 20  | message.string |
0000bef0  74 6f 20 62 65 20 66 6f  75 6e 64 20 69 6e 20 74  |to be found in t|
0000bf00  68 65 20 27 4d 65 73 73  61 67 65 73 27 20 66 69  |he 'Messages' fi|
0000bf10  6c 65 2e 46 4e 73 68 65  6c 6c 5f 4d 65 6e 75 4c  |le.FNshell_MenuL|
0000bf20  61 73 74 58 50 6f 73 0a  52 65 74 75 72 6e 73 20  |astXPos.Returns |
0000bf30  74 68 65 20 58 20 63 6f  6f 72 64 69 6e 61 74 65  |the X coordinate|
0000bf40  20 6f 66 20 74 68 65 20  6c 61 73 74 20 6d 65 6e  | of the last men|
0000bf50  75 0a 6f 70 65 6e 65 64  20 62 79 20 3c 50 52 4f  |u.opened by <PRO|
0000bf60  43 73 68 65 6c 6c 5f 4f  70 65 6e 4d 65 6e 75 3e  |Cshell_OpenMenu>|
0000bf70  2e 0a 0a 4c 69 62 72 61  72 79 20 47 72 6f 75 70  |...Library Group|
0000bf80  20 3d 3e 20 3c 4d 65 6e  75 73 3d 3e 4c 69 62 47  | => <Menus=>LibG|
0000bf90  72 6f 75 70 4d 65 6e 75  73 3e 46 4e 73 68 65 6c  |roupMenus>FNshel|
0000bfa0  6c 5f 4d 65 6e 75 4c 61  73 74 59 50 6f 73 0a 52  |l_MenuLastYPos.R|
0000bfb0  65 74 75 72 6e 73 20 74  68 65 20 59 20 63 6f 6f  |eturns the Y coo|
0000bfc0  72 64 69 6e 61 74 65 20  6f 66 20 74 68 65 20 6c  |rdinate of the l|
0000bfd0  61 73 74 20 6d 65 6e 75  0a 6f 70 65 6e 65 64 20  |ast menu.opened |
0000bfe0  62 79 20 3c 50 52 4f 43  73 68 65 6c 6c 5f 4f 70  |by <PROCshell_Op|
0000bff0  65 6e 4d 65 6e 75 3e 2e  0a 0a 4c 69 62 72 61 72  |enMenu>...Librar|
0000c000  79 20 47 72 6f 75 70 20  3d 3e 20 3c 4d 65 6e 75  |y Group => <Menu|
0000c010  73 3d 3e 4c 69 62 47 72  6f 75 70 4d 65 6e 75 73  |s=>LibGroupMenus|
0000c020  3e 50 52 4f 43 73 68 65  6c 6c 5f 4f 70 65 6e 4d  |>PROCshell_OpenM|
0000c030  65 6e 75 28 29 0a 50 61  72 61 6d 73 20 3d 3e 20  |enu().Params => |
0000c040  20 20 20 20 0a 20 20 20  20 20 20 20 20 20 69 6e  |    .         in|
0000c050  74 20 6d 65 6e 75 20 78  20 63 6f 6f 72 64 69 6e  |t menu x coordin|
0000c060  61 74 65 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |ate.         int|
0000c070  20 6d 65 6e 75 20 79 20  63 6f 6f 72 64 69 6e 61  | menu y coordina|
0000c080  74 65 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |te.         int |
0000c090  68 61 6e 64 6c 65 20 6f  66 20 6d 65 6e 75 20 74  |handle of menu t|
0000c0a0  6f 20 6f 70 65 6e 0a 0a  4e 6f 72 6d 61 6c 6c 79  |o open..Normally|
0000c0b0  20 74 68 69 73 20 72 6f  75 74 69 6e 65 20 69 73  | this routine is|
0000c0c0  20 63 61 6c 6c 65 64 20  69 6e 74 65 72 6e 61 6c  | called internal|
0000c0d0  6c 79 0a 62 79 20 74 68  65 20 6c 69 62 72 61 72  |ly.by the librar|
0000c0e0  79 20 72 6f 75 74 69 6e  65 73 20 69 6e 20 72 65  |y routines in re|
0000c0f0  73 70 6f 6e 73 65 20 74  6f 20 6d 65 6e 75 0a 6f  |sponse to menu.o|
0000c100  70 65 6e 20 65 76 65 6e  74 73 20 73 65 74 20 75  |pen events set u|
0000c110  70 20 62 79 20 3c 50 52  4f 43 73 68 65 6c 6c 5f  |p by <PROCshell_|
0000c120  41 74 74 61 63 68 4d 65  6e 75 3e 2e 0a 49 6e 20  |AttachMenu>..In |
0000c130  73 6f 6d 65 20 63 69 72  63 75 6d 73 74 61 6e 63  |some circumstanc|
0000c140  65 73 20 69 74 20 6d 61  79 20 62 65 20 61 64 76  |es it may be adv|
0000c150  61 6e 74 61 67 65 6f 75  73 0a 74 6f 20 63 61 6c  |antageous.to cal|
0000c160  6c 20 69 74 20 66 72 6f  6d 20 74 68 65 20 75 73  |l it from the us|
0000c170  65 72 20 61 70 70 6c 69  63 61 74 69 6f 6e 73 2e  |er applications.|
0000c180  0a 0a 4c 69 62 72 61 72  79 20 47 72 6f 75 70 20  |..Library Group |
0000c190  3d 3e 20 3c 4d 65 6e 75  73 3d 3e 4c 69 62 47 72  |=> <Menus=>LibGr|
0000c1a0  6f 75 70 4d 65 6e 75 73  3e 50 52 4f 43 73 68 65  |oupMenus>PROCshe|
0000c1b0  6c 6c 5f 54 72 61 63 65  45 78 69 74 0a 50 61 72  |ll_TraceExit.Par|
0000c1c0  61 6d 73 20 3d 3e 0a 20  20 20 20 20 20 20 20 20  |ams =>.         |
0000c1d0  6e 6f 6e 65 0a 0a 43 6c  6f 73 65 73 20 74 68 65  |none..Closes the|
0000c1e0  20 74 72 61 63 65 20 66  69 6c 65 20 69 66 20 69  | trace file if i|
0000c1f0  74 20 69 73 20 6f 70 65  6e 2e 20 4e 6f 72 6d 61  |t is open. Norma|
0000c200  6c 6c 79 0a 6f 6e 6c 79  20 63 61 6c 6c 65 64 20  |lly.only called |
0000c210  62 79 20 74 68 65 20 45  76 6e 74 53 68 65 6c 6c  |by the EvntShell|
0000c220  20 6c 69 62 72 61 72 79  20 77 68 65 6e 20 74 68  | library when th|
0000c230  65 0a 61 70 70 6c 69 63  61 74 69 6f 6e 20 63 6c  |e.application cl|
0000c240  6f 73 65 73 20 64 6f 77  6e 2e 0a 0a 4c 69 62 72  |oses down...Libr|
0000c250  61 72 79 20 47 72 6f 75  70 20 3d 5c 3e 20 3c 44  |ary Group =\> <D|
0000c260  65 62 75 67 3d 3e 4c 69  62 47 72 6f 75 70 44 65  |ebug=>LibGroupDe|
0000c270  62 75 67 3e 50 52 4f 43  73 68 65 6c 6c 5f 54 72  |bug>PROCshell_Tr|
0000c280  61 63 65 66 30 28 29 0a  50 61 72 61 6d 73 20 3d  |acef0().Params =|
0000c290  3e 0a 20 20 20 20 20 20  20 20 20 73 74 72 20 74  |>.         str t|
0000c2a0  72 61 63 65 20 6f 75 74  70 75 74 0a 0a 57 72 69  |race output..Wri|
0000c2b0  74 65 73 20 74 68 65 20  67 69 76 65 6e 20 73 74  |tes the given st|
0000c2c0  72 69 6e 67 20 69 6e 74  6f 20 74 68 65 20 74 72  |ring into the tr|
0000c2d0  61 63 65 20 66 69 6c 65  20 69 66 0a 69 74 20 69  |ace file if.it i|
0000c2e0  73 20 6f 70 65 6e 2e 20  49 66 20 3c 50 52 4f 43  |s open. If <PROC|
0000c2f0  73 68 65 6c 6c 5f 54 72  61 63 65 49 6e 69 74 3e  |shell_TraceInit>|
0000c300  20 77 61 73 20 63 61 6c  6c 65 64 0a 77 69 74 68  | was called.with|
0000c310  20 61 20 6e 75 6c 6c 20  66 69 6c 65 6e 61 6d 65  | a null filename|
0000c320  20 28 22 22 29 20 74 68  65 6e 20 74 68 65 20 74  | ("") then the t|
0000c330  72 61 63 65 20 6f 75 74  70 75 74 0a 77 69 6c 6c  |race output.will|
0000c340  20 62 65 20 62 72 6f 61  64 63 61 73 74 20 75 73  | be broadcast us|
0000c350  69 6e 67 20 41 63 6f 72  6e 27 73 20 6d 65 73 73  |ing Acorn's mess|
0000c360  61 67 65 20 73 79 73 74  65 6d 0a 74 6f 20 62 65  |age system.to be|
0000c370  20 70 69 63 6b 65 64 20  75 70 20 61 6e 64 20 64  | picked up and d|
0000c380  69 73 70 6c 61 79 65 64  20 62 79 20 21 53 68 65  |isplayed by !She|
0000c390  6c 6c 44 42 75 67 20 69  66 0a 69 74 20 69 73 20  |llDBug if.it is |
0000c3a0  72 75 6e 6e 69 6e 67 2e  0a 0a 4c 69 62 72 61 72  |running...Librar|
0000c3b0  79 20 47 72 6f 75 70 20  3d 5c 3e 20 3c 44 65 62  |y Group =\> <Deb|
0000c3c0  75 67 3d 3e 4c 69 62 47  72 6f 75 70 44 65 62 75  |ug=>LibGroupDebu|
0000c3d0  67 3e 50 52 4f 43 73 68  65 6c 6c 5f 54 72 61 63  |g>PROCshell_Trac|
0000c3e0  65 49 6e 69 74 28 29 0a  50 61 72 61 6d 73 20 3d  |eInit().Params =|
0000c3f0  3e 0a 20 20 20 20 20 20  20 20 20 73 74 72 20 66  |>.         str f|
0000c400  69 6c 65 20 6e 61 6d 65  20 66 6f 72 20 74 72 61  |ile name for tra|
0000c410  63 65 20 6f 75 74 70 75  74 0a 20 20 20 20 20 20  |ce output.      |
0000c420  20 20 20 20 20 20 20 28  63 61 6e 20 62 65 20 22  |       (can be "|
0000c430  22 20 2d 20 73 65 65 20  62 65 6c 6f 77 29 0a 0a  |" - see below)..|
0000c440  49 6e 69 74 69 61 6c 69  73 65 73 20 74 68 65 20  |Initialises the |
0000c450  74 72 61 63 65 20 66 69  6c 65 20 28 6d 75 73 74  |trace file (must|
0000c460  20 62 65 20 63 61 6c 6c  65 64 0a 62 65 66 6f 72  | be called.befor|
0000c470  65 20 61 6e 79 20 6f 74  68 65 72 20 74 72 61 63  |e any other trac|
0000c480  65 20 66 75 6e 63 74 69  6f 6e 73 29 2e 20 49 66  |e functions). If|
0000c490  20 74 68 65 0a 66 69 6c  65 20 6e 61 6d 65 20 69  | the.file name i|
0000c4a0  73 20 22 22 20 74 68 65  6e 20 6e 6f 20 66 69 6c  |s "" then no fil|
0000c4b0  65 20 69 73 20 6f 70 65  6e 65 64 2c 20 74 72 61  |e is opened, tra|
0000c4c0  63 65 0a 6f 75 74 70 75  74 20 69 73 20 62 72 6f  |ce.output is bro|
0000c4d0  61 64 63 61 73 74 20 61  73 20 61 20 75 73 65 72  |adcast as a user|
0000c4e0  20 6d 65 73 73 61 67 65  20 74 6f 20 62 65 0a 64  | message to be.d|
0000c4f0  69 73 70 6c 61 79 65 64  20 62 79 20 21 53 68 65  |isplayed by !She|
0000c500  6c 6c 44 42 75 67 2e 0a  0a 4c 69 62 72 61 72 79  |llDBug...Library|
0000c510  20 47 72 6f 75 70 20 3d  5c 3e 20 3c 44 65 62 75  | Group =\> <Debu|
0000c520  67 3d 3e 4c 69 62 47 72  6f 75 70 44 65 62 75 67  |g=>LibGroupDebug|
0000c530  3e 46 4e 73 68 65 6c 6c  5f 54 72 61 63 65 49 73  |>FNshell_TraceIs|
0000c540  4f 6e 0a 50 61 72 61 6d  73 20 20 3d 3e 0a 20 20  |On.Params  =>.  |
0000c550  20 20 20 20 20 20 20 20  6e 6f 6e 65 0a 0a 20 20  |        none..  |
0000c560  20 20 20 20 20 20 5c 3c  3d 0a 20 20 20 20 20 20  |      \<=.      |
0000c570  20 20 20 20 54 52 55 45  20 69 66 20 74 72 61 63  |    TRUE if trac|
0000c580  65 20 69 73 20 65 6e 61  62 6c 65 64 2c 20 46 41  |e is enabled, FA|
0000c590  4c 53 45 20 6f 74 68 65  72 77 69 73 65 2e 0a 0a  |LSE otherwise...|
0000c5a0  4c 69 62 72 61 72 79 20  47 72 6f 75 70 20 3d 5c  |Library Group =\|
0000c5b0  3e 20 3c 44 65 62 75 67  3d 3e 4c 69 62 47 72 6f  |> <Debug=>LibGro|
0000c5c0  75 70 44 65 62 75 67 3e  50 52 4f 43 73 68 65 6c  |upDebug>PROCshel|
0000c5d0  6c 5f 54 72 61 63 65 4f  66 66 0a 50 61 72 61 6d  |l_TraceOff.Param|
0000c5e0  73 20 20 3d 3e 0a 20 20  20 20 20 20 20 20 20 20  |s  =>.          |
0000c5f0  6e 6f 6e 65 0a 0a 54 75  72 6e 73 20 6f 66 66 20  |none..Turns off |
0000c600  74 72 61 63 65 20 6f 75  74 70 75 74 2e 0a 0a 4c  |trace output...L|
0000c610  69 62 72 61 72 79 20 47  72 6f 75 70 20 3d 5c 3e  |ibrary Group =\>|
0000c620  20 3c 44 65 62 75 67 3d  3e 4c 69 62 47 72 6f 75  | <Debug=>LibGrou|
0000c630  70 44 65 62 75 67 3e 50  52 4f 43 73 68 65 6c 6c  |pDebug>PROCshell|
0000c640  5f 54 72 61 63 65 4f 6e  0a 50 61 72 61 6d 73 20  |_TraceOn.Params |
0000c650  20 3d 3e 0a 20 20 20 20  20 20 20 20 20 20 6e 6f  | =>.          no|
0000c660  6e 65 0a 0a 54 75 72 6e  73 20 6f 6e 20 74 72 61  |ne..Turns on tra|
0000c670  63 65 20 6f 75 74 70 75  74 2e 0a 0a 4c 69 62 72  |ce output...Libr|
0000c680  61 72 79 20 47 72 6f 75  70 20 3d 5c 3e 20 3c 44  |ary Group =\> <D|
0000c690  65 62 75 67 3d 3e 4c 69  62 47 72 6f 75 70 44 65  |ebug=>LibGroupDe|
0000c6a0  62 75 67 3e 44 72 61 77  0a 4e 6f 20 52 6f 75 74  |bug>Draw.No Rout|
0000c6b0  69 6e 65 73 20 68 65 72  65 20 79 65 74 21 46 4e  |ines here yet!FN|
0000c6c0  73 68 65 6c 6c 5f 46 69  6c 65 4c 65 6e 67 74 68  |shell_FileLength|
0000c6d0  28 29 0a 50 61 72 61 6d  73 20 3d 3e 0a 20 20 20  |().Params =>.   |
0000c6e0  20 20 20 20 20 20 73 74  72 20 66 69 6c 65 20 6e  |      str file n|
0000c6f0  61 6d 65 20 20 20 20 20  0a 0a 20 20 20 20 20 20  |ame     ..      |
0000c700  20 5c 3c 3d 0a 20 20 20  20 20 20 20 20 20 69 6e  | \<=.         in|
0000c710  74 20 6c 65 6e 67 74 68  20 6f 66 20 74 68 65 20  |t length of the |
0000c720  73 70 65 63 69 66 69 65  64 20 66 69 6c 65 0a 0a  |specified file..|
0000c730  4c 69 62 72 61 72 79 20  47 72 6f 75 70 20 3d 3e  |Library Group =>|
0000c740  20 3c 46 69 6c 65 73 3d  3e 4c 69 62 47 72 6f 75  | <Files=>LibGrou|
0000c750  70 46 69 6c 65 73 3e 50  52 4f 43 73 68 65 6c 6c  |pFiles>PROCshell|
0000c760  5f 4d 6f 75 73 65 4c 69  6d 69 74 28 29 0a 50 61  |_MouseLimit().Pa|
0000c770  72 61 6d 73 20 3d 3e 0a  20 20 20 20 20 20 20 20  |rams =>.        |
0000c780  20 69 6e 74 20 61 64 64  72 65 73 73 20 6f 66 20  | int address of |
0000c790  77 6f 72 6b 73 70 61 63  65 20 70 61 72 61 6d 65  |workspace parame|
0000c7a0  74 65 72 20 62 6c 6f 63  6b 0a 20 20 20 20 20 20  |ter block.      |
0000c7b0  20 20 20 69 6e 74 20 77  69 6e 64 6f 77 20 68 61  |   int window ha|
0000c7c0  6e 64 6c 65 0a 0a 4c 69  6d 69 74 73 20 6d 6f 75  |ndle..Limits mou|
0000c7d0  73 65 20 70 6f 69 6e 74  65 72 20 6d 6f 76 65 6d  |se pointer movem|
0000c7e0  65 6e 74 20 74 6f 20 74  68 65 20 61 72 65 61 20  |ent to the area |
0000c7f0  6f 66 20 74 68 65 0a 73  70 65 63 69 66 69 65 64  |of the.specified|
0000c800  20 77 69 6e 64 6f 77 2e  0a 0a 4c 69 62 72 61 72  | window...Librar|
0000c810  79 20 47 72 6f 75 70 20  3d 3e 20 3c 4d 6f 75 73  |y Group => <Mous|
0000c820  65 3d 3e 4c 69 62 47 72  6f 75 70 4d 6f 75 73 65  |e=>LibGroupMouse|
0000c830  3e 46 4e 73 68 65 6c 6c  5f 4f 53 56 61 72 45 78  |>FNshell_OSVarEx|
0000c840  69 73 74 73 28 29 0a 50  61 72 61 6d 73 20 3d 3e  |ists().Params =>|
0000c850  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 20 77  |.         int  w|
0000c860  6f 72 6b 73 70 61 63 65  20 62 75 66 66 65 72 0a  |orkspace buffer.|
0000c870  20 20 20 20 20 20 20 20  20 73 74 72 20 20 6f 73  |         str  os|
0000c880  20 76 61 72 69 61 62 6c  65 20 6e 61 6d 65 0a 0a  | variable name..|
0000c890  20 20 20 20 20 20 20 5c  3c 3d 0a 20 20 20 20 20  |       \<=.     |
0000c8a0  20 20 20 20 62 6f 6f 6c  20 54 52 55 45 20 6f 72  |    bool TRUE or|
0000c8b0  20 46 41 4c 53 45 0a 0a  4c 69 62 72 61 72 79 20  | FALSE..Library |
0000c8c0  47 72 6f 75 70 20 3d 3e  20 3c 4f 53 3d 3e 4c 69  |Group => <OS=>Li|
0000c8d0  62 47 72 6f 75 70 4f 53  3e 46 4e 73 68 65 6c 6c  |bGroupOS>FNshell|
0000c8e0  5f 4f 53 56 61 72 47 65  74 56 61 6c 28 29 0a 50  |_OSVarGetVal().P|
0000c8f0  61 72 61 6d 73 20 3d 3e  0a 20 20 20 20 20 20 20  |arams =>.       |
0000c900  20 20 69 6e 74 20 20 77  6f 72 6b 73 70 61 63 65  |  int  workspace|
0000c910  20 62 75 66 66 65 72 0a  20 20 20 20 20 20 20 20  | buffer.        |
0000c920  20 69 6e 74 20 20 73 69  7a 65 20 6f 66 20 62 75  | int  size of bu|
0000c930  66 66 65 72 0a 20 20 20  20 20 20 20 20 20 73 74  |ffer.         st|
0000c940  72 20 20 6f 73 20 76 61  72 69 61 62 6c 65 20 6e  |r  os variable n|
0000c950  61 6d 65 0a 20 20 20 20  20 20 20 20 20 62 6f 6f  |ame.         boo|
0000c960  6c 20 65 78 70 61 6e 64  20 66 6c 61 67 0a 0a 20  |l expand flag.. |
0000c970  20 20 20 20 20 20 5c 3c  3d 0a 20 20 20 20 20 20  |      \<=.      |
0000c980  20 20 20 73 74 72 20 20  76 61 6c 75 65 20 6f 66  |   str  value of|
0000c990  20 76 61 72 69 61 62 6c  65 0a 0a 4c 69 62 72 61  | variable..Libra|
0000c9a0  72 79 20 47 72 6f 75 70  20 3d 3e 20 3c 4f 53 3d  |ry Group => <OS=|
0000c9b0  3e 4c 69 62 47 72 6f 75  70 4f 53 3e 46 4e 73 68  |>LibGroupOS>FNsh|
0000c9c0  65 6c 6c 5f 4f 53 52 65  61 64 43 6f 6d 6d 61 6e  |ell_OSReadComman|
0000c9d0  64 41 72 67 28 29 0a 50  61 72 61 6d 73 20 3d 3e  |dArg().Params =>|
0000c9e0  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 20 6f  |.         int  o|
0000c9f0  70 74 69 6f 6e 20 28 6d  75 73 74 20 62 65 20 30  |ption (must be 0|
0000ca00  20 6f 72 20 31 29 0a 0a  20 20 20 20 20 20 20 5c  | or 1)..       \|
0000ca10  3c 3d 0a 20 20 20 20 20  20 20 20 20 73 74 72 20  |<=.         str |
0000ca20  20 63 6f 6d 6d 61 6e 64  20 73 74 72 69 6e 67 0a  | command string.|
0000ca30  0a 4c 69 62 72 61 72 79  20 47 72 6f 75 70 20 3d  |.Library Group =|
0000ca40  3e 20 3c 4f 53 3d 3e 4c  69 62 47 72 6f 75 70 4f  |> <OS=>LibGroupO|
0000ca50  53 3e 46 4e 73 68 65 6c  6c 5f 53 74 72 69 6e 67  |S>FNshell_String|
0000ca60  41 72 72 61 79 47 65 74  4c 6f 6e 67 65 73 74 28  |ArrayGetLongest(|
0000ca70  29 0a 50 61 72 61 6d 73  20 3d 3e 0a 20 20 20 20  |).Params =>.    |
0000ca80  20 20 20 20 20 61 72 72  61 79 20 6e 61 6d 65 20  |     array name |
0000ca90  6f 66 20 73 74 72 69 6e  67 20 61 72 72 61 79 0a  |of string array.|
0000caa0  20 20 20 20 20 20 20 20  20 69 6e 74 20 20 20 6e  |         int   n|
0000cab0  75 6d 62 65 72 20 6f 66  20 65 6c 65 6d 65 6e 74  |umber of element|
0000cac0  73 0a 0a 20 20 20 20 20  20 20 5c 3c 3d 0a 20 20  |s..       \<=.  |
0000cad0  20 20 20 20 20 20 20 69  6e 74 20 20 20 6c 65 6e  |       int   len|
0000cae0  67 74 68 20 6f 66 20 6c  6f 6e 67 65 73 74 20 65  |gth of longest e|
0000caf0  6c 65 6d 65 6e 74 0a 0a  4c 69 62 72 61 72 79 20  |lement..Library |
0000cb00  47 72 6f 75 70 20 3d 3e  20 3c 53 74 72 69 6e 67  |Group => <String|
0000cb10  73 3d 3e 4c 69 62 47 72  6f 75 70 53 74 72 69 6e  |s=>LibGroupStrin|
0000cb20  67 73 3e 46 4e 73 68 65  6c 6c 5f 53 74 72 69 6e  |gs>FNshell_Strin|
0000cb30  67 45 78 63 68 61 6e 67  65 28 29 0a 50 61 72 61  |gExchange().Para|
0000cb40  6d 73 20 3d 3e 0a 20 20  20 20 20 20 20 20 20 73  |ms =>.         s|
0000cb50  74 72 20 73 6f 75 72 63  65 20 73 74 72 69 6e 67  |tr source string|
0000cb60  0a 20 20 20 20 20 20 20  20 20 73 74 72 20 74 61  |.         str ta|
0000cb70  72 67 65 74 20 73 74 72  69 6e 67 0a 20 20 20 20  |rget string.    |
0000cb80  20 20 20 20 20 73 74 72  20 73 75 62 73 74 69 74  |     str substit|
0000cb90  75 74 69 6f 6e 20 73 74  72 69 6e 67 0a 0a 20 20  |ution string..  |
0000cba0  20 20 20 20 20 5c 3c 3d  0a 20 20 20 20 20 20 20  |     \<=.       |
0000cbb0  20 20 73 74 72 20 74 72  61 6e 73 66 6f 72 6d 65  |  str transforme|
0000cbc0  64 20 73 74 72 69 6e 67  0a 0a 4c 69 62 72 61 72  |d string..Librar|
0000cbd0  79 20 47 72 6f 75 70 20  3d 3e 20 3c 53 74 72 69  |y Group => <Stri|
0000cbe0  6e 67 73 3d 3e 4c 69 62  47 72 6f 75 70 53 74 72  |ngs=>LibGroupStr|
0000cbf0  69 6e 67 73 3e 46 4e 73  68 65 6c 6c 5f 53 74 72  |ings>FNshell_Str|
0000cc00  69 6e 67 55 70 70 65 72  43 61 73 65 28 29 0a 50  |ingUpperCase().P|
0000cc10  61 72 61 6d 73 20 3d 3e  0a 20 20 20 20 20 20 20  |arams =>.       |
0000cc20  20 20 73 74 72 20 73 6f  75 72 63 65 20 73 74 72  |  str source str|
0000cc30  69 6e 67 0a 0a 20 20 20  20 20 20 20 5c 3c 3d 0a  |ing..       \<=.|
0000cc40  20 20 20 20 20 20 20 20  20 73 74 72 20 74 72 61  |         str tra|
0000cc50  6e 73 66 6f 72 6d 65 64  20 73 74 72 69 6e 67 0a  |nsformed string.|
0000cc60  0a 4c 69 62 72 61 72 79  20 47 72 6f 75 70 20 3d  |.Library Group =|
0000cc70  3e 20 3c 53 74 72 69 6e  67 73 3d 3e 4c 69 62 47  |> <Strings=>LibG|
0000cc80  72 6f 75 70 53 74 72 69  6e 67 73 3e 46 4e 73 68  |roupStrings>FNsh|
0000cc90  65 6c 6c 5f 53 74 72 69  6e 67 4c 6f 77 65 72 43  |ell_StringLowerC|
0000cca0  61 73 65 28 29 0a 50 61  72 61 6d 73 20 3d 3e 0a  |ase().Params =>.|
0000ccb0  20 20 20 20 20 20 20 20  20 73 74 72 20 73 6f 75  |         str sou|
0000ccc0  72 63 65 20 73 74 72 69  6e 67 0a 0a 20 20 20 20  |rce string..    |
0000ccd0  20 20 20 5c 3c 3d 0a 20  20 20 20 20 20 20 20 20  |   \<=.         |
0000cce0  73 74 72 20 74 72 61 6e  73 66 6f 72 6d 65 64 20  |str transformed |
0000ccf0  73 74 72 69 6e 67 0a 0a  4c 69 62 72 61 72 79 20  |string..Library |
0000cd00  47 72 6f 75 70 20 3d 3e  20 3c 53 74 72 69 6e 67  |Group => <String|
0000cd10  73 3d 3e 4c 69 62 47 72  6f 75 70 53 74 72 69 6e  |s=>LibGroupStrin|
0000cd20  67 73 3e 46 4e 73 68 65  6c 6c 5f 53 74 72 69 6e  |gs>FNshell_Strin|
0000cd30  67 50 61 64 4c 65 61 64  69 6e 67 28 29 0a 50 61  |gPadLeading().Pa|
0000cd40  72 61 6d 73 20 3d 3e 0a  20 20 20 20 20 20 20 20  |rams =>.        |
0000cd50  20 73 74 72 20 73 6f 75  72 63 65 20 73 74 72 69  | str source stri|
0000cd60  6e 67 0a 20 20 20 20 20  20 20 20 20 73 74 72 20  |ng.         str |
0000cd70  70 61 64 20 63 68 61 72  61 63 74 65 72 0a 20 20  |pad character.  |
0000cd80  20 20 20 20 20 20 20 69  6e 74 20 6c 65 6e 67 74  |       int lengt|
0000cd90  68 20 74 6f 20 70 61 64  20 74 6f 0a 0a 20 20 20  |h to pad to..   |
0000cda0  20 20 20 20 5c 3c 3d 0a  20 20 20 20 20 20 20 20  |    \<=.        |
0000cdb0  20 73 74 72 20 74 72 61  6e 73 66 6f 72 6d 65 64  | str transformed|
0000cdc0  20 73 74 72 69 6e 67 0a  0a 4c 69 62 72 61 72 79  | string..Library|
0000cdd0  20 47 72 6f 75 70 20 3d  3e 20 3c 53 74 72 69 6e  | Group => <Strin|
0000cde0  67 73 3d 3e 4c 69 62 47  72 6f 75 70 53 74 72 69  |gs=>LibGroupStri|
0000cdf0  6e 67 73 3e 46 4e 73 68  65 6c 6c 5f 53 74 72 69  |ngs>FNshell_Stri|
0000ce00  6e 67 50 61 64 54 72 61  69 6c 69 6e 67 28 29 0a  |ngPadTrailing().|
0000ce10  50 61 72 61 6d 73 20 3d  3e 0a 20 20 20 20 20 20  |Params =>.      |
0000ce20  20 20 20 73 74 72 20 73  6f 75 72 63 65 20 73 74  |   str source st|
0000ce30  72 69 6e 67 0a 20 20 20  20 20 20 20 20 20 73 74  |ring.         st|
0000ce40  72 20 70 61 64 20 63 68  61 72 61 63 74 65 72 0a  |r pad character.|
0000ce50  20 20 20 20 20 20 20 20  20 69 6e 74 20 6c 65 6e  |         int len|
0000ce60  67 74 68 20 74 6f 20 70  61 64 20 74 6f 0a 0a 20  |gth to pad to.. |
0000ce70  20 20 20 20 20 20 5c 3c  3d 0a 20 20 20 20 20 20  |      \<=.      |
0000ce80  20 20 20 73 74 72 20 74  72 61 6e 73 66 6f 72 6d  |   str transform|
0000ce90  65 64 20 73 74 72 69 6e  67 0a 0a 4c 69 62 72 61  |ed string..Libra|
0000cea0  72 79 20 47 72 6f 75 70  20 3d 3e 20 3c 53 74 72  |ry Group => <Str|
0000ceb0  69 6e 67 73 3d 3e 4c 69  62 47 72 6f 75 70 53 74  |ings=>LibGroupSt|
0000cec0  72 69 6e 67 73 3e 46 4e  73 68 65 6c 6c 5f 53 74  |rings>FNshell_St|
0000ced0  72 69 6e 67 53 74 72 69  70 41 6c 6c 28 29 0a 50  |ringStripAll().P|
0000cee0  61 72 61 6d 73 20 3d 3e  0a 20 20 20 20 20 20 20  |arams =>.       |
0000cef0  20 20 73 74 72 20 73 6f  75 72 63 65 20 73 74 72  |  str source str|
0000cf00  69 6e 67 0a 20 20 20 20  20 20 20 20 20 73 74 72  |ing.         str|
0000cf10  20 63 68 61 72 61 63 74  65 72 20 74 6f 20 73 74  | character to st|
0000cf20  72 69 70 0a 0a 20 20 20  20 20 20 20 5c 3c 3d 0a  |rip..       \<=.|
0000cf30  20 20 20 20 20 20 20 20  20 73 74 72 20 74 72 61  |         str tra|
0000cf40  6e 73 66 6f 72 6d 65 64  20 73 74 72 69 6e 67 0a  |nsformed string.|
0000cf50  0a 4c 69 62 72 61 72 79  20 47 72 6f 75 70 20 3d  |.Library Group =|
0000cf60  3e 20 3c 53 74 72 69 6e  67 73 3d 3e 4c 69 62 47  |> <Strings=>LibG|
0000cf70  72 6f 75 70 53 74 72 69  6e 67 73 3e 46 4e 73 68  |roupStrings>FNsh|
0000cf80  65 6c 6c 5f 53 74 72 69  6e 67 53 74 72 69 70 4c  |ell_StringStripL|
0000cf90  65 61 64 69 6e 67 28 29  0a 50 61 72 61 6d 73 20  |eading().Params |
0000cfa0  3d 3e 0a 20 20 20 20 20  20 20 20 20 73 74 72 20  |=>.         str |
0000cfb0  73 6f 75 72 63 65 20 73  74 72 69 6e 67 0a 20 20  |source string.  |
0000cfc0  20 20 20 20 20 20 20 73  74 72 20 63 68 61 72 61  |       str chara|
0000cfd0  63 74 65 72 20 74 6f 20  73 74 72 69 70 0a 0a 20  |cter to strip.. |
0000cfe0  20 20 20 20 20 20 5c 3c  3d 0a 20 20 20 20 20 20  |      \<=.      |
0000cff0  20 20 20 73 74 72 20 74  72 61 6e 73 66 6f 72 6d  |   str transform|
0000d000  65 64 20 73 74 72 69 6e  67 20 20 20 0a 0a 4c 69  |ed string   ..Li|
0000d010  62 72 61 72 79 20 47 72  6f 75 70 20 3d 3e 20 3c  |brary Group => <|
0000d020  53 74 72 69 6e 67 73 3d  3e 4c 69 62 47 72 6f 75  |Strings=>LibGrou|
0000d030  70 53 74 72 69 6e 67 73  3e 46 4e 73 68 65 6c 6c  |pStrings>FNshell|
0000d040  5f 53 74 72 69 6e 67 53  74 72 69 70 54 72 61 69  |_StringStripTrai|
0000d050  6c 69 6e 67 28 29 0a 50  61 72 61 6d 73 20 3d 3e  |ling().Params =>|
0000d060  0a 20 20 20 20 20 20 20  20 20 73 74 72 20 73 6f  |.         str so|
0000d070  75 72 63 65 20 73 74 72  69 6e 67 20 20 20 20 20  |urce string     |
0000d080  20 20 20 0a 20 20 20 20  20 20 20 20 20 73 74 72  |   .         str|
0000d090  20 63 68 61 72 61 63 74  65 72 20 74 6f 20 73 74  | character to st|
0000d0a0  72 69 70 0a 0a 20 20 20  20 20 20 20 5c 3c 3d 0a  |rip..       \<=.|
0000d0b0  20 20 20 20 20 20 20 20  20 73 74 72 20 74 72 61  |         str tra|
0000d0c0  6e 73 66 6f 72 6d 65 64  20 73 74 72 69 6e 67 0a  |nsformed string.|
0000d0d0  0a 4c 69 62 72 61 72 79  20 47 72 6f 75 70 20 3d  |.Library Group =|
0000d0e0  3e 20 3c 53 74 72 69 6e  67 73 3d 3e 4c 69 62 47  |> <Strings=>LibG|
0000d0f0  72 6f 75 70 53 74 72 69  6e 67 73 3e 46 4e 73 68  |roupStrings>FNsh|
0000d100  65 6c 6c 5f 47 65 74 41  70 70 4e 61 6d 65 0a 50  |ell_GetAppName.P|
0000d110  61 72 61 6d 73 20 3d 3e  0a 20 20 20 20 20 20 20  |arams =>.       |
0000d120  20 20 6e 6f 6e 65 0a 0a  20 20 20 20 20 20 20 5c  |  none..       \|
0000d130  3c 3d 0a 20 20 20 20 20  20 20 20 20 73 74 72 20  |<=.         str |
0000d140  6e 61 6d 65 20 6f 66 20  61 70 70 6c 69 63 61 74  |name of applicat|
0000d150  69 6f 6e 20 28 61 63 74  75 61 6c 6c 79 20 74 68  |ion (actually th|
0000d160  65 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 27  |e.             '|
0000d170  6c 65 61 66 27 20 6e 61  6d 65 20 6f 66 20 74 68  |leaf' name of th|
0000d180  65 20 61 70 70 6c 69 63  61 74 69 6f 6e 0a 20 20  |e application.  |
0000d190  20 20 20 20 20 20 20 20  20 20 20 64 69 72 65 63  |           direc|
0000d1a0  74 6f 72 79 20 6d 69 6e  75 73 20 74 68 65 20 27  |tory minus the '|
0000d1b0  21 27 29 0a 0a 4c 69 62  72 61 72 79 20 47 72 6f  |!')..Library Gro|
0000d1c0  75 70 20 3d 3e 20 3c 53  68 65 6c 6c 3d 3e 4c 69  |up => <Shell=>Li|
0000d1d0  62 47 72 6f 75 70 53 68  65 6c 6c 3e 46 4e 73 68  |bGroupShell>FNsh|
0000d1e0  65 6c 6c 5f 47 65 74 41  70 70 44 69 72 0a 50 61  |ell_GetAppDir.Pa|
0000d1f0  72 61 6d 73 20 3d 3e 0a  20 20 20 20 20 20 20 20  |rams =>.        |
0000d200  20 6e 6f 6e 65 0a 0a 20  20 20 20 20 20 20 5c 3c  | none..       \<|
0000d210  3d 0a 20 20 20 20 20 20  20 20 20 73 74 72 20 66  |=.         str f|
0000d220  75 6c 6c 20 70 61 74 68  20 6e 61 6d 65 20 6f 66  |ull path name of|
0000d230  20 74 68 65 20 61 70 70  6c 69 63 61 74 69 6f 6e  | the application|
0000d240  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 64 69  |.             di|
0000d250  72 65 63 74 6f 72 79 0a  0a 4c 69 62 72 61 72 79  |rectory..Library|
0000d260  20 47 72 6f 75 70 20 3d  3e 20 3c 53 68 65 6c 6c  | Group => <Shell|
0000d270  3d 3e 4c 69 62 47 72 6f  75 70 53 68 65 6c 6c 3e  |=>LibGroupShell>|
0000d280  46 4e 73 68 65 6c 6c 5f  47 65 74 41 70 70 44 61  |FNshell_GetAppDa|
0000d290  74 61 44 69 72 0a 50 61  72 61 6d 73 20 3d 3e 0a  |taDir.Params =>.|
0000d2a0  20 20 20 20 20 20 20 20  20 6e 6f 6e 65 0a 0a 20  |         none.. |
0000d2b0  20 20 20 20 20 20 5c 3c  3d 0a 20 20 20 20 20 20  |      \<=.      |
0000d2c0  20 20 20 73 74 72 20 66  75 6c 6c 20 70 61 74 68  |   str full path|
0000d2d0  20 6e 61 6d 65 20 6f 66  20 74 68 65 20 61 70 70  | name of the app|
0000d2e0  6c 69 63 61 74 69 6f 6e  0a 20 20 20 20 20 20 20  |lication.       |
0000d2f0  20 20 20 20 20 20 64 61  74 61 20 66 69 6c 65 20  |      data file |
0000d300  64 69 72 65 63 74 6f 72  79 0a 0a 4c 69 62 72 61  |directory..Libra|
0000d310  72 79 20 47 72 6f 75 70  20 3d 3e 20 3c 53 68 65  |ry Group => <She|
0000d320  6c 6c 3d 3e 4c 69 62 47  72 6f 75 70 53 68 65 6c  |ll=>LibGroupShel|
0000d330  6c 3e 50 52 4f 43 73 68  65 6c 6c 5f 49 6e 69 74  |l>PROCshell_Init|
0000d340  48 65 6c 70 53 79 73 74  65 6d 28 29 0a 50 61 72  |HelpSystem().Par|
0000d350  61 6d 73 20 3d 3e 0a 20  20 20 20 20 20 20 20 20  |ams =>.         |
0000d360  73 74 72 20 20 70 61 74  68 20 6e 61 6d 65 20 6f  |str  path name o|
0000d370  66 20 68 65 6c 70 20 66  69 6c 65 73 0a 20 20 20  |f help files.   |
0000d380  20 20 20 20 20 20 62 6f  6f 6c 20 3c 44 69 65 57  |      bool <DieW|
0000d390  69 74 68 54 61 73 6b 3e  20 66 6c 61 67 0a 0a 55  |ithTask> flag..U|
0000d3a0  73 65 64 20 74 6f 20 72  65 67 69 73 74 65 72 20  |sed to register |
0000d3b0  61 20 6e 65 77 20 68 65  6c 70 20 73 79 73 74 65  |a new help syste|
0000d3c0  6d 20 77 69 74 68 20 53  74 72 6f 6e 67 48 6c 70  |m with StrongHlp|
0000d3d0  2e 0a 41 66 74 65 72 20  6d 61 6b 69 6e 67 20 74  |..After making t|
0000d3e0  68 69 73 20 63 61 6c 6c  20 53 74 72 6f 6e 67 48  |his call StrongH|
0000d3f0  6c 70 20 77 69 6c 6c 20  61 64 64 20 74 68 65 20  |lp will add the |
0000d400  68 65 6c 70 0a 73 79 73  74 65 6d 20 66 6f 75 6e  |help.system foun|
0000d410  64 20 69 6e 20 74 68 65  20 67 69 76 65 6e 20 70  |d in the given p|
0000d420  61 74 68 20 74 6f 20 69  74 73 20 69 63 6f 6e 20  |ath to its icon |
0000d430  62 61 72 20 6d 65 6e 75  2e 0a 0a 53 74 72 6f 6e  |bar menu...Stron|
0000d440  67 48 6c 70 20 77 69 6c  6c 20 62 65 20 73 74 61  |gHlp will be sta|
0000d450  72 74 65 64 20 69 66 20  69 74 20 69 73 20 6e 6f  |rted if it is no|
0000d460  74 20 61 6c 72 65 61 64  79 0a 72 75 6e 6e 69 6e  |t already.runnin|
0000d470  67 20 61 6e 64 20 53 74  72 6f 6e 67 48 65 6c 70  |g and StrongHelp|
0000d480  24 44 69 72 20 68 61 73  20 62 65 65 6e 20 64 65  |$Dir has been de|
0000d490  66 69 6e 65 64 2e 20 49  66 0a 53 74 72 6f 6e 67  |fined. If.Strong|
0000d4a0  48 6c 70 20 63 61 6e 6e  6f 74 20 62 65 20 66 6f  |Hlp cannot be fo|
0000d4b0  75 6e 64 20 74 68 65 6e  20 74 68 65 20 69 6e 69  |und then the ini|
0000d4c0  74 69 61 6c 69 73 61 74  69 6f 6e 0a 63 6f 6d 6d  |tialisation.comm|
0000d4d0  61 6e 64 20 69 73 20 73  74 6f 72 65 64 20 61 6e  |and is stored an|
0000d4e0  64 20 73 65 6e 74 20 77  68 65 6e 20 53 74 72 6f  |d sent when Stro|
0000d4f0  6e 67 48 6c 70 20 69 73  20 73 74 61 72 74 65 64  |ngHlp is started|
0000d500  2e 0a 0a 4c 69 62 72 61  72 79 20 47 72 6f 75 70  |...Library Group|
0000d510  20 3d 3e 20 3c 53 74 72  6f 6e 67 48 6c 70 3d 3e  | => <StrongHlp=>|
0000d520  4c 69 62 47 72 6f 75 70  48 65 6c 70 3e 50 52 4f  |LibGroupHelp>PRO|
0000d530  43 73 68 65 6c 6c 5f 48  65 6c 70 57 6f 72 64 28  |Cshell_HelpWord(|
0000d540  29 0a 50 61 72 61 6d 73  20 3d 3e 0a 20 20 20 20  |).Params =>.    |
0000d550  20 20 20 20 20 73 74 72  20 77 6f 72 64 20 66 6f  |     str word fo|
0000d560  72 20 77 68 69 63 68 20  68 65 6c 70 20 69 73 20  |r which help is |
0000d570  74 6f 20 62 65 20 64 69  73 70 6c 61 79 65 64 0a  |to be displayed.|
0000d580  0a 55 73 65 64 20 74 6f  20 73 65 6e 64 20 61 20  |.Used to send a |
0000d590  68 65 6c 70 20 72 65 71  75 65 73 74 20 74 6f 20  |help request to |
0000d5a0  53 74 72 6f 6e 67 48 6c  70 2e 20 49 66 20 74 68  |StrongHlp. If th|
0000d5b0  65 20 77 6f 72 64 0a 69  73 20 66 6f 75 6e 64 20  |e word.is found |
0000d5c0  69 6e 20 74 68 65 20 68  65 6c 70 20 73 79 73 74  |in the help syst|
0000d5d0  65 6d 20 74 68 65 20 61  70 70 72 6f 70 72 69 61  |em the appropria|
0000d5e0  74 65 20 68 65 6c 70 20  74 65 78 74 0a 77 69 6c  |te help text.wil|
0000d5f0  6c 20 62 65 20 64 69 73  70 6c 61 79 65 64 2e 0a  |l be displayed..|
0000d600  0a 53 74 72 6f 6e 67 48  6c 70 20 77 69 6c 6c 20  |.StrongHlp will |
0000d610  62 65 20 73 74 61 72 74  65 64 20 69 66 20 69 74  |be started if it|
0000d620  20 69 73 20 6e 6f 74 20  61 6c 72 65 61 64 79 0a  | is not already.|
0000d630  72 75 6e 6e 69 6e 67 20  61 6e 64 20 53 74 72 6f  |running and Stro|
0000d640  6e 67 48 65 6c 70 24 44  69 72 20 68 61 73 20 62  |ngHelp$Dir has b|
0000d650  65 65 6e 20 64 65 66 69  6e 65 64 2e 20 49 66 0a  |een defined. If.|
0000d660  53 74 72 6f 6e 67 48 6c  70 20 63 61 6e 6e 6f 74  |StrongHlp cannot|
0000d670  20 62 65 20 66 6f 75 6e  64 20 74 68 65 6e 20 74  | be found then t|
0000d680  68 65 20 69 6e 69 74 69  61 6c 69 73 61 74 69 6f  |he initialisatio|
0000d690  6e 0a 63 6f 6d 6d 61 6e  64 20 69 73 20 73 74 6f  |n.command is sto|
0000d6a0  72 65 64 20 61 6e 64 20  73 65 6e 74 20 77 68 65  |red and sent whe|
0000d6b0  6e 20 53 74 72 6f 6e 67  48 6c 70 20 69 73 20 73  |n StrongHlp is s|
0000d6c0  74 61 72 74 65 64 2e 0a  0a 4c 69 62 72 61 72 79  |tarted...Library|
0000d6d0  20 47 72 6f 75 70 20 3d  3e 20 3c 53 74 72 6f 6e  | Group => <Stron|
0000d6e0  67 48 6c 70 3d 3e 4c 69  62 47 72 6f 75 70 48 65  |gHlp=>LibGroupHe|
0000d6f0  6c 70 3e 2d 44 69 65 57  69 74 68 54 61 73 6b 20  |lp>-DieWithTask |
0000d700  46 6c 61 67 0a 57 68 65  6e 20 54 52 55 45 20 74  |Flag.When TRUE t|
0000d710  68 65 20 68 65 6c 70 20  73 79 73 74 65 6d 20 77  |he help system w|
0000d720  69 6c 6c 20 6f 6e 6c 79  20 62 65 20 61 64 64 65  |ill only be adde|
0000d730  64 20 74 6f 20 0a 74 68  65 20 53 74 72 6f 6e 67  |d to .the Strong|
0000d740  48 6c 70 20 69 63 6f 6e  20 62 61 72 20 6d 65 6e  |Hlp icon bar men|
0000d750  75 20 77 68 69 6c 65 20  74 68 65 20 75 73 65 72  |u while the user|
0000d760  20 0a 61 70 70 6c 69 63  61 74 69 6f 6e 20 69 73  | .application is|
0000d770  20 61 63 74 75 61 6c 6c  79 20 72 75 6e 6e 69 6e  | actually runnin|
0000d780  67 2e 20 57 68 65 6e 20  46 41 4c 53 45 20 69 74  |g. When FALSE it|
0000d790  0a 72 65 6d 61 69 6e 73  20 61 76 61 69 6c 61 62  |.remains availab|
0000d7a0  6c 65 20 77 68 65 6e 20  74 68 65 20 61 70 70 6c  |le when the appl|
0000d7b0  69 63 61 74 69 6f 6e 20  71 75 69 74 73 2e 53 74  |ication quits.St|
0000d7c0  72 6f 6e 67 48 6c 70 0a  3c 48 65 6c 70 57 6f 72  |rongHlp.<HelpWor|
0000d7d0  64 20 20 20 20 20 20 20  20 20 20 20 20 3d 3e 50  |d            =>P|
0000d7e0  52 4f 43 73 68 65 6c 6c  5f 48 65 6c 70 57 6f 72  |ROCshell_HelpWor|
0000d7f0  64 3e 0a 3c 49 6e 69 74  48 65 6c 70 53 79 73 74  |d>.<InitHelpSyst|
0000d800  65 6d 20 20 20 20 20 20  3d 3e 50 52 4f 43 73 68  |em      =>PROCsh|
0000d810  65 6c 6c 5f 49 6e 69 74  48 65 6c 70 53 79 73 74  |ell_InitHelpSyst|
0000d820  65 6d 3e 0a 3c 53 74 72  6f 6e 67 48 6c 70 49 73  |em>.<StrongHlpIs|
0000d830  41 76 61 69 6c 61 62 6c  65 3d 3e 46 4e 73 68 65  |Available=>FNshe|
0000d840  6c 6c 5f 53 74 72 6f 6e  67 48 6c 70 49 73 41 76  |ll_StrongHlpIsAv|
0000d850  61 69 6c 61 62 6c 65 3e  53 74 72 6f 6e 67 48 6c  |ailable>StrongHl|
0000d860  70 0a 54 68 69 73 20 69  73 20 61 20 68 79 70 65  |p.This is a hype|
0000d870  72 74 65 78 74 20 61 70  70 6c 69 63 61 74 69 6f  |rtext applicatio|
0000d880  6e 20 77 72 69 74 74 65  6e 20 62 79 20 3c 47 75  |n written by <Gu|
0000d890  74 74 6f 72 6d 20 56 69  6b 3d 3e 56 69 6b 3e 20  |ttorm Vik=>Vik> |
0000d8a0  77 68 69 63 68 0a 66 75  6e 63 74 69 6f 6e 73 20  |which.functions |
0000d8b0  61 73 20 61 6e 20 6f 6e  2d 6c 69 6e 65 20 6d 61  |as an on-line ma|
0000d8c0  6e 75 61 6c 2e 20 49 74  20 63 6f 6d 65 73 20 77  |nual. It comes w|
0000d8d0  69 74 68 20 64 61 74 61  20 66 69 6c 65 20 66 6f  |ith data file fo|
0000d8e0  72 20 42 41 53 49 43 2c  0a 53 57 49 20 63 61 6c  |r BASIC,.SWI cal|
0000d8f0  6c 73 20 70 6c 75 73 20  6d 61 6e 79 20 6f 74 68  |ls plus many oth|
0000d900  65 72 73 20 61 6e 64 20  49 20 68 61 76 65 20 61  |ers and I have a|
0000d910  64 6f 70 74 65 64 20 69  74 20 74 6f 20 73 75 70  |dopted it to sup|
0000d920  70 6c 79 20 74 68 65 0a  64 6f 63 75 6d 65 6e 74  |ply the.document|
0000d930  61 74 69 6f 6e 20 66 6f  72 20 74 68 65 20 45 76  |ation for the Ev|
0000d940  6e 74 53 68 65 6c 6c 20  6c 69 62 72 61 72 79 2e  |ntShell library.|
0000d950  20 59 6f 75 20 6f 6e 6c  79 20 68 61 76 65 20 74  | You only have t|
0000d960  6f 20 75 73 65 20 69 74  20 74 6f 0a 73 65 65 20  |o use it to.see |
0000d970  74 68 65 20 61 64 76 61  6e 74 61 67 65 73 2c 20  |the advantages, |
0000d980  62 75 74 20 74 68 65 20  62 69 67 67 65 73 74 20  |but the biggest |
0000d990  61 64 76 61 6e 74 61 67  65 20 69 73 20 74 68 61  |advantage is tha|
0000d9a0  74 20 77 68 65 6e 20 79  6f 75 20 65 64 69 74 0a  |t when you edit.|
0000d9b0  70 72 6f 67 72 61 6d 20  73 6f 75 72 63 65 20 63  |program source c|
0000d9c0  6f 64 65 20 75 73 69 6e  67 20 3c 53 74 72 6f 6e  |ode using <Stron|
0000d9d0  67 45 44 32 3d 3e 53 74  72 6f 6e 67 45 44 32 2e  |gED2=>StrongED2.|
0000d9e0  24 3e 20 68 65 6c 70 20  63 61 6e 20 62 65 20 6f  |$> help can be o|
0000d9f0  62 74 61 69 6e 65 64 0a  73 69 6d 70 6c 79 20 62  |btained.simply b|
0000da00  79 20 70 72 65 73 73 69  6e 67 20 46 31 2e 20 4d  |y pressing F1. M|
0000da10  6f 72 65 20 64 65 74 61  69 6c 73 20 63 61 6e 20  |ore details can |
0000da20  62 65 20 66 6f 75 6e 64  20 69 6e 20 74 68 65 20  |be found in the |
0000da30  3c 53 74 72 6f 6e 67 48  6c 70 3d 3e 53 74 72 6f  |<StrongHlp=>Stro|
0000da40  6e 67 48 65 6c 70 2e 24  3e 0a 68 65 6c 70 20 66  |ngHelp.$>.help f|
0000da50  69 6c 65 73 2e 0a 0a 54  68 65 20 45 76 6e 74 53  |iles...The EvntS|
0000da60  68 65 6c 6c 20 6c 69 62  72 61 72 79 20 61 6c 73  |hell library als|
0000da70  6f 20 68 61 73 20 61 20  66 65 77 20 50 52 4f 43  |o has a few PROC|
0000da80  73 20 74 6f 20 69 6e 74  65 72 66 61 63 65 20 77  |s to interface w|
0000da90  69 74 68 20 53 74 72 6f  6e 67 48 6c 70 0a 74 6f  |ith StrongHlp.to|
0000daa0  20 65 6e 61 62 6c 65 20  75 73 65 72 20 61 70 70  | enable user app|
0000dab0  6c 69 63 61 74 69 6f 6e  73 20 74 6f 20 72 65 67  |lications to reg|
0000dac0  69 73 74 65 72 20 68 65  6c 70 20 73 79 73 74 65  |ister help syste|
0000dad0  6d 73 2e 0a 0a 57 68 65  6e 20 61 20 72 65 71 75  |ms...When a requ|
0000dae0  65 73 74 20 69 73 20 73  65 6e 74 20 74 6f 20 53  |est is sent to S|
0000daf0  74 72 6f 6e 67 48 6c 70  20 74 68 65 20 61 63 74  |trongHlp the act|
0000db00  69 76 65 20 61 70 70 6c  69 63 61 74 69 6f 6e 73  |ive applications|
0000db10  20 6f 6e 20 74 68 65 20  69 63 6f 6e 0a 62 61 72  | on the icon.bar|
0000db20  20 61 72 65 20 63 68 65  63 6b 65 64 20 74 6f 20  | are checked to |
0000db30  73 65 65 20 69 66 20 53  74 72 6f 6e 67 48 6c 70  |see if StrongHlp|
0000db40  20 69 73 20 72 75 6e 6e  69 6e 67 2e 20 49 66 20  | is running. If |
0000db50  69 74 20 69 73 20 6e 6f  74 20 61 6e 64 20 69 74  |it is not and it|
0000db60  73 0a 21 42 6f 6f 74 20  66 69 6c 65 20 68 61 73  |s.!Boot file has|
0000db70  20 62 65 65 6e 20 27 73  65 65 6e 27 20 62 79 20  | been 'seen' by |
0000db80  74 68 65 20 46 69 6c 65  72 20 74 68 65 6e 20 69  |the Filer then i|
0000db90  74 20 77 69 6c 6c 20 62  65 20 73 74 61 72 74 65  |t will be starte|
0000dba0  64 0a 61 75 74 6f 6d 61  74 69 63 61 6c 6c 79 2e  |d.automatically.|
0000dbb0  20 49 66 20 53 74 72 6f  6e 67 48 6c 70 20 68 61  | If StrongHlp ha|
0000dbc0  73 20 6e 6f 74 20 62 65  65 6e 20 27 73 65 65 6e  |s not been 'seen|
0000dbd0  27 20 74 68 65 6e 20 61  6e 20 65 72 72 6f 72 20  |' then an error |
0000dbe0  77 69 6c 6c 20 62 65 0a  67 65 6e 65 72 61 74 65  |will be.generate|
0000dbf0  64 2e 0a 0a 4e 6f 74 65  20 74 68 61 74 20 66 6f  |d...Note that fo|
0000dc00  72 20 74 68 65 20 61 62  6f 76 65 20 74 6f 20 77  |r the above to w|
0000dc10  6f 72 6b 20 69 74 20 69  73 20 76 69 74 61 6c 20  |ork it is vital |
0000dc20  74 68 61 74 20 74 68 65  20 68 65 6c 70 20 73 79  |that the help sy|
0000dc30  73 74 65 6d 0a 64 69 72  65 63 74 6f 72 79 20 68  |stem.directory h|
0000dc40  61 73 20 74 68 65 20 73  61 6d 65 20 6e 61 6d 65  |as the same name|
0000dc50  20 61 73 20 74 68 65 20  61 70 70 6c 69 63 61 74  | as the applicat|
0000dc60  69 6f 6e 20 28 6d 69 6e  75 73 20 74 68 65 20 27  |ion (minus the '|
0000dc70  21 27 29 2e 50 52 4f 43  73 68 65 6c 6c 5f 49 63  |!').PROCshell_Ic|
0000dc80  6f 6e 53 65 74 28 29 0a  50 61 72 61 6d 73 20 3d  |onSet().Params =|
0000dc90  3e 20 20 20 20 20 20 20  20 20 0a 20 20 20 20 20  |>         .     |
0000dca0  20 20 20 20 69 6e 74 20  20 77 69 6e 64 6f 77 20  |    int  window |
0000dcb0  68 61 6e 64 6c 65 0a 20  20 20 20 20 20 20 20 20  |handle.         |
0000dcc0  69 6e 74 20 20 69 63 6f  6e 20 68 61 6e 64 6c 65  |int  icon handle|
0000dcd0  0a 20 20 20 20 20 20 20  20 20 62 6f 6f 6c 20 73  |.         bool s|
0000dce0  74 61 74 65 20 28 30 20  66 6f 72 20 64 65 73 65  |tate (0 for dese|
0000dcf0  6c 65 63 74 65 64 2c 20  6e 6f 6e 20 30 0a 20 20  |lected, non 0.  |
0000dd00  20 20 20 20 20 20 20 20  20 20 20 20 66 6f 72 20  |            for |
0000dd10  73 65 6c 65 63 74 65 64  29 0a 0a 54 68 69 73 20  |selected)..This |
0000dd20  63 61 6c 6c 20 69 73 20  75 73 65 64 20 74 6f 20  |call is used to |
0000dd30  73 65 6c 65 63 74 20 6f  72 20 64 65 73 65 6c 65  |select or desele|
0000dd40  63 74 20 69 63 6f 6e 73  0a 64 65 70 65 6e 64 69  |ct icons.dependi|
0000dd50  6e 67 20 6f 6e 20 74 68  65 20 76 61 6c 75 65 20  |ng on the value |
0000dd60  6f 66 20 74 68 65 20 73  74 61 74 65 20 66 6c 61  |of the state fla|
0000dd70  67 0a 0a 4c 69 62 72 61  72 79 20 47 72 6f 75 70  |g..Library Group|
0000dd80  20 3d 3e 20 3c 49 63 6f  6e 73 3d 3e 4c 69 62 47  | => <Icons=>LibG|
0000dd90  72 6f 75 70 49 63 6f 6e  73 3e 46 4e 73 68 65 6c  |roupIcons>FNshel|
0000dda0  6c 5f 4c 69 62 72 61 72  79 56 65 72 73 69 6f 6e  |l_LibraryVersion|
0000ddb0  0a 50 61 72 61 6d 73 20  3d 3e 0a 20 20 20 20 20  |.Params =>.     |
0000ddc0  20 20 20 20 6e 6f 6e 65  0a 0a 20 20 20 20 20 20  |    none..      |
0000ddd0  20 5c 3c 3d 0a 20 20 20  20 20 20 20 20 20 69 6e  | \<=.         in|
0000dde0  74 20 6c 69 62 72 61 72  79 20 76 65 72 73 69 6f  |t library versio|
0000ddf0  6e 20 2a 20 31 30 30 20  69 2e 65 20 76 65 72 73  |n * 100 i.e vers|
0000de00  69 6f 6e 20 31 2e 30 32  0a 20 20 20 20 20 20 20  |ion 1.02.       |
0000de10  20 20 20 20 20 20 72 65  74 75 72 6e 73 20 31 30  |      returns 10|
0000de20  32 0a 0a 4c 69 62 72 61  72 79 20 47 72 6f 75 70  |2..Library Group|
0000de30  20 3d 5c 3e 20 3c 53 68  65 6c 6c 3d 3e 4c 69 62  | =\> <Shell=>Lib|
0000de40  47 72 6f 75 70 53 68 65  6c 6c 3e 4c 69 62 72 61  |GroupShell>Libra|
0000de50  72 79 20 56 65 72 73 69  6f 6e 73 0a 31 2e 30 30  |ry Versions.1.00|
0000de60  20 2d 20 49 6e 69 74 69  61 6c 20 72 65 6c 65 61  | - Initial relea|
0000de70  73 65 0a 0a 31 2e 30 31  20 2d 20 41 64 64 65 64  |se..1.01 - Added|
0000de80  20 73 75 70 70 6f 72 74  20 66 6f 72 20 53 74 72  | support for Str|
0000de90  6f 6e 67 48 6c 70 20 68  65 6c 70 20 73 79 73 74  |ongHlp help syst|
0000dea0  65 6d 73 0a 20 20 20 20  20 2d 20 41 64 64 65 64  |ems.     - Added|
0000deb0  20 75 73 65 72 20 72 65  64 72 61 77 20 65 76 65  | user redraw eve|
0000dec0  6e 74 73 0a 20 20 20 20  20 2d 20 49 6d 70 72 6f  |nts.     - Impro|
0000ded0  76 65 64 20 64 6f 63 75  6d 65 6e 74 61 74 69 6f  |ved documentatio|
0000dee0  6e 0a 20 20 20 20 20 2d  20 41 64 64 65 64 20 72  |n.     - Added r|
0000def0  75 6e 20 74 69 6d 65 20  76 65 72 73 69 6f 6e 20  |un time version |
0000df00  6f 66 20 6c 69 62 72 61  72 79 0a 20 20 20 20 20  |of library.     |
0000df10  2d 20 43 68 61 6e 67 65  73 20 74 6f 20 67 6c 6f  |- Changes to glo|
0000df20  62 61 6c 20 76 61 72 69  61 62 6c 65 20 6e 61 6d  |bal variable nam|
0000df30  65 73 20 74 6f 20 61 6c  6c 6f 77 0a 20 20 20 20  |es to allow.    |
0000df40  20 20 20 63 6f 6d 70 72  65 73 73 69 6f 6e 20 77  |   compression w|
0000df50  69 74 68 20 42 61 73 53  68 72 69 6e 6b 0a 20 20  |ith BasShrink.  |
0000df60  20 20 20 2d 20 52 65 6c  65 61 73 65 64 20 74 6f  |   - Released to|
0000df70  20 41 50 44 4c 0a 0a 31  2e 30 32 20 2d 20 42 75  | APDL..1.02 - Bu|
0000df80  67 20 66 69 78 65 73 20  74 6f 20 5c 3c 57 69 6d  |g fixes to \<Wim|
0000df90  70 24 53 63 72 61 70 3e  20 66 69 6c 65 20 74 72  |p$Scrap> file tr|
0000dfa0  61 6e 73 66 65 72 20 72  6f 75 74 69 6e 65 0a 20  |ansfer routine. |
0000dfb0  20 20 20 20 20 20 28 77  61 73 20 6e 6f 74 20 73  |      (was not s|
0000dfc0  65 6e 64 69 6e 67 20 63  6f 72 72 65 63 74 20 6d  |ending correct m|
0000dfd0  65 73 73 61 67 65 20 72  65 73 75 6c 74 69 6e 67  |essage resulting|
0000dfe0  20 69 6e 20 74 68 65 0a  20 20 20 20 20 20 20 66  | in the.       f|
0000dff0  69 6c 65 20 6e 6f 74 20  62 65 69 6e 67 20 6c 6f  |ile not being lo|
0000e000  61 64 65 64 20 62 79 20  74 68 65 20 74 61 72 67  |aded by the targ|
0000e010  65 74 20 61 70 70 6c 69  63 61 74 69 6f 6e 29 0a  |et application).|
0000e020  20 20 20 20 20 2d 20 44  61 74 61 53 61 76 65 20  |     - DataSave |
0000e030  65 76 65 6e 74 20 68 61  6e 64 6c 65 72 20 64 6f  |event handler do|
0000e040  65 73 20 6e 6f 74 20 6e  6f 77 20 72 65 71 75 69  |es not now requi|
0000e050  72 65 20 74 68 61 74 0a  20 20 20 20 20 20 20 74  |re that.       t|
0000e060  68 65 20 66 69 6c 65 20  65 78 69 73 74 20 69 6e  |he file exist in|
0000e070  20 61 20 68 65 61 70 20  62 6c 6f 63 6b 2e 20 54  | a heap block. T|
0000e080  68 65 20 64 61 74 61 20  63 61 6e 20 62 65 0a 20  |he data can be. |
0000e090  20 20 20 20 20 20 77 72  69 74 74 65 6e 20 64 69  |      written di|
0000e0a0  72 65 63 74 6c 79 20 74  6f 20 61 20 64 69 73 6b  |rectly to a disk|
0000e0b0  20 66 69 6c 65 20 77 68  65 6e 20 74 68 65 20 64  | file when the d|
0000e0c0  61 74 61 73 61 76 65 0a  20 20 20 20 20 20 20 75  |atasave.       u|
0000e0d0  73 65 72 20 66 75 6e 63  74 69 6f 6e 20 69 73 20  |ser function is |
0000e0e0  63 61 6c 6c 65 64 0a 0a  31 2e 30 33 20 2d 20 42  |called..1.03 - B|
0000e0f0  75 67 20 66 69 78 20 66  6f 72 20 77 69 6e 64 6f  |ug fix for windo|
0000e100  77 73 20 77 69 74 68 6f  75 74 20 6d 65 6e 75 73  |ws without menus|
0000e110  20 61 74 74 61 63 68 65  64 2e 20 54 68 65 0a 20  | attached. The. |
0000e120  20 20 20 20 20 20 6d 65  6d 6f 72 79 20 6c 6f 63  |      memory loc|
0000e130  61 74 69 6f 6e 20 68 6f  6c 64 69 6e 67 20 74 68  |ation holding th|
0000e140  65 20 61 64 64 72 65 73  73 20 6f 66 20 74 68 65  |e address of the|
0000e150  20 6d 65 6e 75 0a 20 20  20 20 20 20 20 77 61 73  | menu.       was|
0000e160  20 6e 6f 74 20 62 65 69  6e 67 20 69 6e 69 74 69  | not being initi|
0000e170  61 6c 69 73 65 64 20 6c  65 61 64 69 6e 67 20 74  |alised leading t|
0000e180  6f 20 74 68 65 20 6c 69  62 72 61 72 79 0a 20 20  |o the library.  |
0000e190  20 20 20 20 20 74 68 69  6e 6b 69 6e 67 20 61 20  |     thinking a |
0000e1a0  6d 65 6e 75 20 68 61 64  20 62 65 65 6e 20 61 74  |menu had been at|
0000e1b0  74 61 63 68 65 64 20 74  6f 20 61 20 77 69 6e 64  |tached to a wind|
0000e1c0  6f 77 20 77 68 65 6e 0a  20 20 20 20 20 20 20 69  |ow when.       i|
0000e1d0  74 20 68 61 64 6e 27 74  21 0a 0a 31 2e 30 34 20  |t hadn't!..1.04 |
0000e1e0  2d 20 48 65 6c 70 20 74  61 67 73 20 6e 6f 77 20  |- Help tags now |
0000e1f0  77 6f 72 6b 20 74 68 65  20 77 61 79 20 49 20 6f  |work the way I o|
0000e200  72 69 67 69 6e 61 6c 6c  79 20 69 6e 74 65 6e 64  |riginally intend|
0000e210  65 64 2c 0a 20 20 20 20  20 20 20 69 6e 20 74 68  |ed,.       in th|
0000e220  61 74 20 6d 65 73 73 61  67 65 20 74 61 67 73 20  |at message tags |
0000e230  69 6e 20 69 63 6f 6e 20  76 61 6c 69 64 61 74 69  |in icon validati|
0000e240  6f 6e 20 73 74 72 69 6e  67 73 0a 20 20 20 20 20  |on strings.     |
0000e250  20 20 6f 76 65 72 72 69  64 65 20 74 61 67 73 20  |  override tags |
0000e260  73 65 74 20 75 70 20 62  79 20 73 68 65 6c 6c 5f  |set up by shell_|
0000e270  41 74 74 61 63 68 48 65  6c 70 54 61 67 2e 0a 20  |AttachHelpTag.. |
0000e280  20 20 20 20 2d 20 3c 50  52 4f 43 73 68 65 6c 6c  |    - <PROCshell|
0000e290  5f 49 63 6f 6e 50 75 74  44 61 74 61 3e 20 6e 6f  |_IconPutData> no|
0000e2a0  77 20 75 70 64 61 74 65  73 20 69 63 6f 6e 20 63  |w updates icon c|
0000e2b0  6f 6e 74 65 6e 74 73 0a  20 20 20 20 20 20 20 69  |ontents.       i|
0000e2c0  6d 6d 65 64 69 61 74 65  6c 79 20 69 6e 73 74 65  |mmediately inste|
0000e2d0  61 64 20 6f 66 20 77 61  69 74 69 6e 67 20 66 6f  |ad of waiting fo|
0000e2e0  72 20 74 68 65 20 6e 65  78 74 20 77 69 6d 70 0a  |r the next wimp.|
0000e2f0  20 20 20 20 20 20 20 70  6f 6c 6c 20 65 76 65 6e  |       poll even|
0000e300  74 2e 20 54 68 69 73 20  61 6c 6c 6f 77 73 20 6d  |t. This allows m|
0000e310  65 73 73 61 67 65 73 20  74 6f 20 62 65 20 64 69  |essages to be di|
0000e320  73 70 6c 61 79 65 64 0a  20 20 20 20 20 20 20 69  |splayed.       i|
0000e330  6e 20 69 63 6f 6e 73 20  64 75 72 69 6e 67 20 70  |n icons during p|
0000e340  72 6f 67 72 61 6d 20 73  65 63 74 69 6f 6e 73 20  |rogram sections |
0000e350  74 68 61 74 20 64 6f 20  6e 6f 74 20 63 61 6c 6c  |that do not call|
0000e360  0a 20 20 20 20 20 20 20  74 68 65 20 70 6f 6c 6c  |.       the poll|
0000e370  69 6e 67 20 6c 6f 6f 70  20 28 73 65 65 20 21 41  |ing loop (see !A|
0000e380  70 70 42 75 69 6c 64 29  0a 20 20 20 20 20 2d 20  |ppBuild).     - |
0000e390  4e 65 77 20 52 6f 75 74  69 6e 65 20 3c 46 4e 73  |New Routine <FNs|
0000e3a0  68 65 6c 6c 5f 4c 65 61  66 3e 0a 20 20 20 20 20  |hell_Leaf>.     |
0000e3b0  2d 20 4e 65 77 20 52 6f  75 74 69 6e 65 20 3c 46  |- New Routine <F|
0000e3c0  4e 73 68 65 6c 6c 5f 42  72 61 6e 63 68 3e 0a 20  |Nshell_Branch>. |
0000e3d0  20 20 20 20 2d 20 4e 65  77 20 52 6f 75 74 69 6e  |    - New Routin|
0000e3e0  65 20 3c 46 4e 73 68 65  6c 6c 5f 46 69 6c 65 54  |e <FNshell_FileT|
0000e3f0  79 70 65 3e 0a 20 20 20  20 20 2d 20 4e 65 77 20  |ype>.     - New |
0000e400  52 6f 75 74 69 6e 65 20  3c 50 52 4f 43 73 68 65  |Routine <PROCshe|
0000e410  6c 6c 5f 4d 65 6d 46 69  6c 6c 3e 0a 20 20 20 20  |ll_MemFill>.    |
0000e420  20 2d 20 4e 65 77 20 52  6f 75 74 69 6e 65 20 3c  | - New Routine <|
0000e430  46 4e 73 68 65 6c 6c 5f  49 63 6f 6e 52 65 73 69  |FNshell_IconResi|
0000e440  7a 65 3e 0a 20 20 20 20  20 2d 20 41 64 64 65 64  |ze>.     - Added|
0000e450  20 73 75 70 70 6f 72 74  20 66 6f 72 20 53 68 65  | support for She|
0000e460  6c 6c 44 42 75 67 20 74  6f 20 73 65 6e 64 20 74  |llDBug to send t|
0000e470  72 61 63 65 20 6d 65 73  73 61 67 65 73 0a 20 20  |race messages.  |
0000e480  20 20 20 20 20 74 6f 20  61 20 77 69 6e 64 6f 77  |     to a window|
0000e490  0a 20 20 20 20 20 2d 20  52 65 6c 65 61 73 65 64  |.     - Released|
0000e4a0  20 74 6f 20 41 50 44 4c  0a 0a 31 2e 30 35 20 2d  | to APDL..1.05 -|
0000e4b0  20 3c 50 52 4f 43 73 68  65 6c 6c 5f 48 65 6c 70  | <PROCshell_Help|
0000e4c0  57 6f 72 64 3e 20 6e 6f  77 20 77 6f 72 6b 69 6e  |Word> now workin|
0000e4d0  67 20 28 73 65 65 20 21  56 42 61 73 65 32 29 0a  |g (see !VBase2).|
0000e4e0  20 20 20 20 20 2d 20 41  74 74 65 6d 70 74 69 6e  |     - Attemptin|
0000e4f0  67 20 74 6f 20 73 65 6e  64 20 61 20 68 65 6c 70  |g to send a help|
0000e500  20 72 65 71 75 65 73 74  20 74 6f 20 21 53 74 72  | request to !Str|
0000e510  6f 6e 67 48 6c 70 20 77  68 65 6e 0a 20 20 20 20  |ongHlp when.    |
0000e520  20 20 20 53 74 72 6f 6e  67 48 6c 70 20 69 73 20  |   StrongHlp is |
0000e530  6e 6f 74 20 72 75 6e 6e  69 6e 67 20 77 69 6c 6c  |not running will|
0000e540  20 6e 6f 77 20 73 74 61  72 74 20 21 53 74 72 6f  | now start !Stro|
0000e550  6e 67 48 6c 70 0a 20 20  20 20 20 20 20 66 6f 72  |ngHlp.       for|
0000e560  20 79 6f 75 20 28 54 68  61 6e 6b 73 20 47 75 74  | you (Thanks Gut|
0000e570  74 6f 72 6d 20 66 6f 72  20 73 6f 72 74 69 6e 67  |torm for sorting|
0000e580  20 74 68 69 73 20 6f 6e  65 20 6f 75 74 21 29 0a  | this one out!).|
0000e590  20 20 20 20 20 2d 20 4e  6f 6e 20 66 61 74 61 6c  |     - Non fatal|
0000e5a0  20 65 72 72 6f 72 73 20  64 6f 20 6e 6f 74 20 6e  | errors do not n|
0000e5b0  6f 77 20 6b 69 6c 6c 20  74 68 65 20 74 72 61 63  |ow kill the trac|
0000e5c0  65 20 6f 75 74 70 75 74  0a 20 20 20 20 20 2d 20  |e output.     - |
0000e5d0  44 72 61 67 67 69 6e 67  20 61 6e 20 69 63 6f 6e  |Dragging an icon|
0000e5e0  20 74 68 61 74 20 64 6f  65 73 20 6e 6f 74 20 68  | that does not h|
0000e5f0  61 76 65 20 61 20 64 72  61 67 20 65 76 65 6e 74  |ave a drag event|
0000e600  0a 20 20 20 20 20 20 20  72 65 67 69 73 74 65 72  |.       register|
0000e610  65 64 20 6e 6f 77 20 64  69 73 70 6c 61 79 73 20  |ed now displays |
0000e620  61 20 77 61 72 6e 69 6e  67 20 6d 65 73 73 61 67  |a warning messag|
0000e630  65 20 69 6e 73 74 65 61  64 20 6f 66 0a 20 20 20  |e instead of.   |
0000e640  20 20 20 20 67 65 6e 65  72 61 74 69 6e 67 20 61  |    generating a|
0000e650  6e 20 65 72 72 6f 72 0a  20 20 20 20 20 2d 20 4d  |n error.     - M|
0000e660  6f 72 65 20 6d 65 73 73  61 67 65 73 20 61 64 64  |ore messages add|
0000e670  65 64 20 74 6f 20 74 68  65 20 6d 65 73 73 61 67  |ed to the messag|
0000e680  65 20 66 69 6c 65 0a 20  20 20 20 20 2d 20 50 72  |e file.     - Pr|
0000e690  6f 62 6c 65 6d 20 77 69  74 68 20 44 61 74 61 53  |oblem with DataS|
0000e6a0  61 76 65 20 65 76 65 6e  74 20 6e 6f 74 20 62 65  |ave event not be|
0000e6b0  69 6e 67 20 64 65 6c 65  74 65 64 20 70 72 6f 70  |ing deleted prop|
0000e6c0  65 72 6c 79 0a 20 20 20  20 20 20 20 66 69 78 65  |erly.       fixe|
0000e6d0  64 2e 20 54 68 69 73 20  6c 65 64 20 74 6f 20 74  |d. This led to t|
0000e6e0  68 65 20 65 76 65 6e 74  20 62 65 69 6e 67 20 61  |he event being a|
0000e6f0  74 74 61 63 68 65 64 20  74 6f 20 74 68 65 0a 20  |ttached to the. |
0000e700  20 20 20 20 20 20 77 72  6f 6e 67 20 77 69 6e 64  |      wrong wind|
0000e710  6f 77 2f 69 63 6f 6e 20  73 6f 6d 65 74 69 6d 65  |ow/icon sometime|
0000e720  73 0a 20 20 20 20 20 2d  20 4d 69 6e 6f 72 20 62  |s.     - Minor b|
0000e730  75 67 20 66 69 78 20 74  6f 20 69 6e 74 65 72 61  |ug fix to intera|
0000e740  63 74 69 76 65 20 68 65  6c 70 20 72 6f 75 74 69  |ctive help routi|
0000e750  6e 65 20 77 68 69 63 68  0a 20 20 20 20 20 20 20  |ne which.       |
0000e760  73 6f 6d 65 74 69 6d 65  73 20 70 72 65 76 65 6e  |sometimes preven|
0000e770  74 65 64 20 68 65 6c 70  20 6d 65 73 73 61 67 65  |ted help message|
0000e780  73 20 62 65 69 6e 67 20  73 65 6e 74 0a 20 20 20  |s being sent.   |
0000e790  20 20 2d 20 43 6c 69 63  6b 20 6f 6e 20 69 63 6f  |  - Click on ico|
0000e7a0  6e 20 30 20 6f 66 20 73  74 61 74 69 63 20 77 69  |n 0 of static wi|
0000e7b0  6e 64 6f 77 20 64 6f 65  73 20 6e 6f 74 20 6e 6f  |ndow does not no|
0000e7c0  77 20 63 6c 6f 73 65 0a  20 20 20 20 20 20 20 74  |w close.       t|
0000e7d0  68 65 20 77 69 6e 64 6f  77 2e 20 28 41 6c 73 6f  |he window. (Also|
0000e7e0  20 74 72 75 65 20 6f 66  20 70 72 65 73 73 69 6e  | true of pressin|
0000e7f0  67 20 52 45 54 55 52 4e  20 77 68 65 6e 20 63 61  |g RETURN when ca|
0000e800  72 65 74 0a 20 20 20 20  20 20 20 69 73 20 69 6e  |ret.       is in|
0000e810  20 6c 61 73 74 20 77 72  69 74 65 61 62 6c 65 20  | last writeable |
0000e820  69 63 6f 6e 20 6f 66 20  61 20 73 74 61 74 69 63  |icon of a static|
0000e830  20 77 69 6e 64 6f 77 29  2e 0a 20 20 20 20 20 2d  | window)..     -|
0000e840  20 4e 65 77 20 52 6f 75  74 69 6e 65 20 3c 50 52  | New Routine <PR|
0000e850  4f 43 73 68 65 6c 6c 5f  57 69 6e 64 6f 77 42 72  |OCshell_WindowBr|
0000e860  69 6e 67 54 6f 54 6f 70  3e 0a 20 20 20 20 20 2d  |ingToTop>.     -|
0000e870  20 4e 65 77 20 52 6f 75  74 69 6e 65 20 3c 46 4e  | New Routine <FN|
0000e880  73 68 65 6c 6c 5f 57 69  6e 64 6f 77 49 73 4f 6e  |shell_WindowIsOn|
0000e890  54 6f 70 3e 0a 20 20 20  20 20 2d 20 4e 65 77 20  |Top>.     - New |
0000e8a0  52 6f 75 74 69 6e 65 20  3c 50 52 4f 43 73 68 65  |Routine <PROCshe|
0000e8b0  6c 6c 5f 4d 65 6e 75 54  69 63 6b 3e 0a 20 20 20  |ll_MenuTick>.   |
0000e8c0  20 20 2d 20 4e 65 77 20  52 6f 75 74 69 6e 65 20  |  - New Routine |
0000e8d0  3c 50 52 4f 43 73 68 65  6c 6c 5f 4d 65 6e 75 53  |<PROCshell_MenuS|
0000e8e0  68 61 64 65 3e 0a 20 20  20 20 20 2d 20 52 6f 75  |hade>.     - Rou|
0000e8f0  74 69 6e 65 20 49 6d 70  72 6f 76 65 64 20 3c 50  |tine Improved <P|
0000e900  52 4f 43 73 68 65 6c 6c  5f 57 69 6e 64 6f 77 52  |ROCshell_WindowR|
0000e910  65 74 69 74 6c 65 3e 0a  20 20 20 20 20 2d 20 52  |etitle>.     - R|
0000e920  6f 75 74 69 6e 65 20 49  6d 70 72 6f 76 65 64 20  |outine Improved |
0000e930  3c 50 52 4f 43 73 68 65  6c 6c 5f 57 69 6e 64 6f  |<PROCshell_Windo|
0000e940  77 4d 6f 76 65 54 6f 49  63 6f 6e 3e 0a 20 20 20  |wMoveToIcon>.   |
0000e950  20 20 2d 20 52 6f 75 74  69 6e 65 20 49 6d 70 72  |  - Routine Impr|
0000e960  6f 76 65 64 20 3c 50 52  4f 43 73 68 65 6c 6c 5f  |oved <PROCshell_|
0000e970  57 69 6e 64 6f 77 4d 6f  76 65 54 6f 3e 0a 20 20  |WindowMoveTo>.  |
0000e980  20 20 20 2d 20 43 6c 69  63 6b 69 6e 67 20 6f 6e  |   - Clicking on|
0000e990  20 27 69 6e 74 65 72 66  61 63 65 27 20 73 74 79  | 'interface' sty|
0000e9a0  6c 65 20 69 63 6f 6e 73  20 77 69 74 68 6f 75 74  |le icons without|
0000e9b0  20 65 76 65 6e 74 73 0a  20 20 20 20 20 20 20 61  | events.       a|
0000e9c0  74 74 61 63 68 65 64 20  6e 6f 77 20 64 6f 65 73  |ttached now does|
0000e9d0  20 6e 6f 74 20 27 73 6c  61 62 27 20 74 68 65 20  | not 'slab' the |
0000e9e0  69 63 6f 6e 0a 0a 31 2e  30 36 20 2d 20 4e 65 77  |icon..1.06 - New|
0000e9f0  20 52 6f 75 74 69 6e 65  20 3c 46 4e 73 68 65 6c  | Routine <FNshel|
0000ea00  6c 5f 57 69 6e 64 6f 77  48 61 73 54 69 74 6c 65  |l_WindowHasTitle|
0000ea10  42 61 72 3e 0a 20 20 20  20 20 2d 20 4e 65 77 20  |Bar>.     - New |
0000ea20  52 6f 75 74 69 6e 65 20  3c 46 4e 73 68 65 6c 6c  |Routine <FNshell|
0000ea30  5f 57 69 6e 64 6f 77 49  73 4d 6f 76 65 61 62 6c  |_WindowIsMoveabl|
0000ea40  65 3e 0a 20 20 20 20 20  2d 20 4e 65 77 20 52 6f  |e>.     - New Ro|
0000ea50  75 74 69 6e 65 20 3c 46  4e 73 68 65 6c 6c 5f 57  |utine <FNshell_W|
0000ea60  69 6e 64 6f 77 49 73 41  50 61 6e 65 3e 0a 20 20  |indowIsAPane>.  |
0000ea70  20 20 20 2d 20 4e 65 77  20 52 6f 75 74 69 6e 65  |   - New Routine|
0000ea80  20 3c 46 4e 73 68 65 6c  6c 5f 57 69 6e 64 6f 77  | <FNshell_Window|
0000ea90  49 73 4e 6f 74 42 6f 75  6e 64 65 64 3e 0a 20 20  |IsNotBounded>.  |
0000eaa0  20 20 20 2d 20 4e 65 77  20 52 6f 75 74 69 6e 65  |   - New Routine|
0000eab0  20 3c 46 4e 73 68 65 6c  6c 5f 57 69 6e 64 6f 77  | <FNshell_Window|
0000eac0  54 72 61 70 73 48 6f 74  4b 65 79 73 3e 0a 20 20  |TrapsHotKeys>.  |
0000ead0  20 20 20 2d 20 4e 65 77  20 52 6f 75 74 69 6e 65  |   - New Routine|
0000eae0  20 3c 46 4e 73 68 65 6c  6c 5f 57 69 6e 64 6f 77  | <FNshell_Window|
0000eaf0  49 73 4f 70 65 6e 3e 0a  20 20 20 20 20 2d 20 4e  |IsOpen>.     - N|
0000eb00  65 77 20 52 6f 75 74 69  6e 65 20 3c 46 4e 73 68  |ew Routine <FNsh|
0000eb10  65 6c 6c 5f 57 69 6e 64  6f 77 48 61 73 42 65 65  |ell_WindowHasBee|
0000eb20  6e 54 6f 67 67 6c 65 64  3e 0a 20 20 20 20 20 2d  |nToggled>.     -|
0000eb30  20 4e 65 77 20 52 6f 75  74 69 6e 65 20 3c 46 4e  | New Routine <FN|
0000eb40  73 68 65 6c 6c 5f 57 69  6e 64 6f 77 48 61 73 49  |shell_WindowHasI|
0000eb50  6e 70 75 74 46 6f 63 75  73 3e 0a 20 20 20 20 20  |nputFocus>.     |
0000eb60  2d 20 4e 65 77 20 52 6f  75 74 69 6e 65 20 3c 46  |- New Routine <F|
0000eb70  4e 73 68 65 6c 6c 5f 57  69 6e 64 6f 77 48 61 73  |Nshell_WindowHas|
0000eb80  42 61 63 6b 49 63 6f 6e  3e 0a 20 20 20 20 20 2d  |BackIcon>.     -|
0000eb90  20 4e 65 77 20 52 6f 75  74 69 6e 65 20 3c 46 4e  | New Routine <FN|
0000eba0  73 68 65 6c 6c 5f 57 69  6e 64 6f 77 48 61 73 43  |shell_WindowHasC|
0000ebb0  6c 6f 73 65 49 63 6f 6e  3e 0a 20 20 20 20 20 2d  |loseIcon>.     -|
0000ebc0  20 4e 65 77 20 52 6f 75  74 69 6e 65 20 3c 46 4e  | New Routine <FN|
0000ebd0  73 68 65 6c 6c 5f 57 69  6e 64 6f 77 48 61 73 54  |shell_WindowHasT|
0000ebe0  6f 67 67 6c 65 49 63 6f  6e 3e 0a 20 20 20 20 20  |oggleIcon>.     |
0000ebf0  2d 20 4e 65 77 20 52 6f  75 74 69 6e 65 20 3c 46  |- New Routine <F|
0000ec00  4e 73 68 65 6c 6c 5f 57  69 6e 64 6f 77 48 61 73  |Nshell_WindowHas|
0000ec10  56 53 63 72 6f 6c 6c 42  61 72 3e 0a 20 20 20 20  |VScrollBar>.    |
0000ec20  20 2d 20 4e 65 77 20 52  6f 75 74 69 6e 65 20 3c  | - New Routine <|
0000ec30  46 4e 73 68 65 6c 6c 5f  57 69 6e 64 6f 77 48 61  |FNshell_WindowHa|
0000ec40  73 41 64 6a 75 73 74 53  69 7a 65 49 63 6f 6e 3e  |sAdjustSizeIcon>|
0000ec50  0a 20 20 20 20 20 2d 20  4e 65 77 20 52 6f 75 74  |.     - New Rout|
0000ec60  69 6e 65 20 3c 46 4e 73  68 65 6c 6c 5f 57 69 6e  |ine <FNshell_Win|
0000ec70  64 6f 77 48 61 73 48 53  63 72 6f 6c 6c 42 61 72  |dowHasHScrollBar|
0000ec80  3e 0a 20 20 20 20 20 2d  20 4e 65 77 20 52 6f 75  |>.     - New Rou|
0000ec90  74 69 6e 65 20 3c 46 4e  73 68 65 6c 6c 5f 57 69  |tine <FNshell_Wi|
0000eca0  6e 64 6f 77 47 65 74 54  69 74 6c 65 3e 0a 20 20  |ndowGetTitle>.  |
0000ecb0  20 20 20 2d 20 4e 65 77  20 52 6f 75 74 69 6e 65  |   - New Routine|
0000ecc0  20 3c 46 4e 73 68 65 6c  6c 5f 57 69 6e 64 6f 77  | <FNshell_Window|
0000ecd0  54 69 74 6c 65 42 75 66  66 65 72 4c 65 6e 67 74  |TitleBufferLengt|
0000ece0  68 3e 0a 20 20 20 20 20  2d 20 4e 65 77 20 52 6f  |h>.     - New Ro|
0000ecf0  75 74 69 6e 65 20 3c 46  4e 73 68 65 6c 6c 5f 57  |utine <FNshell_W|
0000ed00  69 6e 64 6f 77 4c 6f 61  64 65 64 3e 0a 20 20 20  |indowLoaded>.   |
0000ed10  20 20 2d 20 4e 65 77 20  52 6f 75 74 69 6e 65 20  |  - New Routine |
0000ed20  3c 46 4e 73 68 65 6c 6c  5f 49 63 6f 6e 4d 6f 76  |<FNshell_IconMov|
0000ed30  65 3e 0a 20 20 20 20 20  2d 20 4e 65 77 20 52 6f  |e>.     - New Ro|
0000ed40  75 74 69 6e 65 20 3c 46  4e 73 68 65 6c 6c 5f 49  |utine <FNshell_I|
0000ed50  63 6f 6e 4d 6f 76 65 32  3e 0a 20 20 20 20 20 2d  |conMove2>.     -|
0000ed60  20 4e 65 77 20 52 6f 75  74 69 6e 65 20 3c 46 4e  | New Routine <FN|
0000ed70  73 68 65 6c 6c 5f 46 6f  6e 74 4d 65 6e 75 47 65  |shell_FontMenuGe|
0000ed80  74 4c 61 73 74 53 65 6c  65 63 74 65 64 46 6f 6e  |tLastSelectedFon|
0000ed90  74 3e 0a 20 20 20 20 20  2d 20 4e 65 77 20 52 6f  |t>.     - New Ro|
0000eda0  75 74 69 6e 65 20 3c 50  52 4f 43 73 68 65 6c 6c  |utine <PROCshell|
0000edb0  5f 49 63 6f 6e 44 65 6c  65 74 65 3e 0a 20 20 20  |_IconDelete>.   |
0000edc0  20 20 2d 20 4e 65 77 20  52 6f 75 74 69 6e 65 20  |  - New Routine |
0000edd0  3c 50 52 4f 43 73 68 65  6c 6c 5f 49 63 6f 6e 44  |<PROCshell_IconD|
0000ede0  65 6c 65 74 65 32 3e 0a  20 20 20 20 20 2d 20 4e  |elete2>.     - N|
0000edf0  65 77 20 52 6f 75 74 69  6e 65 20 3c 50 52 4f 43  |ew Routine <PROC|
0000ee00  73 68 65 6c 6c 5f 44 6f  42 61 63 6b 67 72 6f 75  |shell_DoBackgrou|
0000ee10  6e 64 54 61 73 6b 3e 0a  20 20 20 20 20 2d 20 4e  |ndTask>.     - N|
0000ee20  65 77 20 52 6f 75 74 69  6e 65 20 3c 50 52 4f 43  |ew Routine <PROC|
0000ee30  73 68 65 6c 6c 5f 48 61  6e 64 6c 65 55 6e 6b 6e  |shell_HandleUnkn|
0000ee40  6f 77 6e 4d 65 73 73 61  67 65 3e 0a 20 20 20 20  |ownMessage>.    |
0000ee50  20 2d 20 4e 65 77 20 52  6f 75 74 69 6e 65 20 3c  | - New Routine <|
0000ee60  50 52 4f 43 73 68 65 6c  6c 5f 4d 65 6e 75 50 75  |PROCshell_MenuPu|
0000ee70  74 44 61 74 61 3e 0a 20  20 20 20 20 2d 20 4e 65  |tData>.     - Ne|
0000ee80  77 20 52 6f 75 74 69 6e  65 20 3c 50 52 4f 43 73  |w Routine <PROCs|
0000ee90  68 65 6c 6c 5f 41 74 74  61 63 68 53 75 62 4d 65  |hell_AttachSubMe|
0000eea0  6e 75 3e 0a 20 20 20 20  20 2d 20 4e 65 77 20 52  |nu>.     - New R|
0000eeb0  6f 75 74 69 6e 65 20 3c  50 52 4f 43 73 68 65 6c  |outine <PROCshel|
0000eec0  6c 5f 41 74 74 61 63 68  46 6f 6e 74 53 75 62 4d  |l_AttachFontSubM|
0000eed0  65 6e 75 3e 0a 20 20 20  20 20 2d 20 4e 65 77 20  |enu>.     - New |
0000eee0  52 6f 75 74 69 6e 65 20  3c 50 52 4f 43 73 68 65  |Routine <PROCshe|
0000eef0  6c 6c 5f 41 74 74 61 63  68 46 6f 6e 74 4d 65 6e  |ll_AttachFontMen|
0000ef00  75 3e 0a 20 20 20 20 20  2d 20 4e 65 77 20 52 6f  |u>.     - New Ro|
0000ef10  75 74 69 6e 65 20 3c 50  52 4f 43 73 68 65 6c 6c  |utine <PROCshell|
0000ef20  5f 46 6f 6e 74 4d 65 6e  75 53 65 6c 65 63 74 46  |_FontMenuSelectF|
0000ef30  6f 6e 74 3e 0a 20 20 20  20 20 2d 20 41 64 64 65  |ont>.     - Adde|
0000ef40  64 20 73 75 70 70 6f 72  74 20 66 6f 72 20 53 68  |d support for Sh|
0000ef50  65 6c 6c 44 42 75 67 20  74 6f 20 74 75 72 6e 20  |ellDBug to turn |
0000ef60  74 72 61 63 69 6e 67 20  6f 6e 2f 6f 66 66 0a 20  |tracing on/off. |
0000ef70  20 20 20 20 2d 20 52 65  76 69 73 65 64 20 70 61  |    - Revised pa|
0000ef80  72 61 6d 65 74 65 72 73  20 66 6f 72 20 75 73 65  |rameters for use|
0000ef90  72 20 66 75 6e 63 74 69  6f 6e 20 63 61 6c 6c 65  |r function calle|
0000efa0  64 20 62 79 0a 20 20 20  20 20 20 20 3c 50 52 4f  |d by.       <PRO|
0000efb0  43 73 68 65 6c 6c 5f 41  74 74 61 63 68 4d 65 6e  |Cshell_AttachMen|
0000efc0  75 4d 61 6b 65 72 3e 2e  20 4e 6f 77 20 70 61 73  |uMaker>. Now pas|
0000efd0  73 65 73 20 68 61 6e 64  6c 65 20 6f 66 0a 20 20  |ses handle of.  |
0000efe0  20 20 20 20 20 77 69 6e  64 6f 77 20 61 6e 64 20  |     window and |
0000eff0  69 63 6f 6e 20 74 68 61  74 20 77 61 73 20 63 6c  |icon that was cl|
0000f000  69 63 6b 65 64 20 6f 76  65 72 2e 20 54 68 69 73  |icked over. This|
0000f010  20 61 6c 6c 6f 77 73 0a  20 20 20 20 20 20 20 79  | allows.       y|
0000f020  6f 75 20 74 6f 20 73 65  74 20 75 70 20 74 68 65  |ou to set up the|
0000f030  20 6d 65 6e 75 20 64 65  70 65 6e 64 69 6e 67 20  | menu depending |
0000f040  6f 6e 20 74 68 65 20 77  69 6e 64 6f 77 2f 69 63  |on the window/ic|
0000f050  6f 6e 20 0a 20 20 20 20  20 20 20 68 61 6e 64 6c  |on .       handl|
0000f060  65 73 2e 0a 20 20 20 20  20 2d 20 52 65 76 69 73  |es..     - Revis|
0000f070  65 64 20 70 61 72 61 6d  65 74 65 72 73 20 66 6f  |ed parameters fo|
0000f080  72 20 3c 46 4e 73 68 65  6c 6c 5f 49 63 6f 6e 43  |r <FNshell_IconC|
0000f090  72 65 61 74 65 3e 20 28  61 64 64 65 64 0a 20 20  |reate> (added.  |
0000f0a0  20 20 20 20 20 76 61 6c  69 64 61 74 69 6f 6e 20  |     validation |
0000f0b0  73 74 72 69 6e 67 20 70  61 72 61 6d 65 74 65 72  |string parameter|
0000f0c0  29 0a 20 20 20 20 20 2d  20 52 65 76 69 73 65 64  |).     - Revised|
0000f0d0  20 70 61 72 61 6d 65 74  65 72 73 20 66 6f 72 20  | parameters for |
0000f0e0  3c 46 4e 73 68 65 6c 6c  5f 49 63 6f 6e 52 65 73  |<FNshell_IconRes|
0000f0f0  69 7a 65 3e 20 28 72 65  6d 6f 76 65 64 0a 20 20  |ize> (removed.  |
0000f100  20 20 20 20 20 62 6f 72  64 65 72 20 77 69 64 74  |     border widt|
0000f110  68 20 70 61 72 61 6d 65  74 65 72 20 61 73 20 74  |h parameter as t|
0000f120  68 69 73 20 69 73 20 63  61 6c 63 75 6c 61 74 65  |his is calculate|
0000f130  64 20 62 79 20 74 68 65  0a 20 20 20 20 20 20 20  |d by the.       |
0000f140  72 6f 75 74 69 6e 65 20  6e 6f 77 29 0a 20 20 20  |routine now).   |
0000f150  20 20 2d 20 4d 69 6e 6f  72 20 62 75 67 20 66 69  |  - Minor bug fi|
0000f160  78 65 64 20 74 68 61 74  20 72 65 73 75 6c 74 65  |xed that resulte|
0000f170  64 20 69 6e 20 66 69 6c  65 73 20 6e 6f 74 20 62  |d in files not b|
0000f180  65 69 6e 67 0a 20 20 20  20 20 20 20 74 72 61 6e  |eing.       tran|
0000f190  73 66 65 72 72 65 64 20  63 6f 72 72 65 63 74 6c  |sferred correctl|
0000f1a0  79 20 74 6f 20 21 53 74  72 6f 6e 67 45 64 32 20  |y to !StrongEd2 |
0000f1b0  28 65 76 65 72 79 20 6f  74 68 65 72 0a 20 20 20  |(every other.   |
0000f1c0  20 20 20 20 52 49 53 43  2d 4f 53 20 74 65 78 74  |    RISC-OS text|
0000f1d0  20 68 61 6e 64 6c 69 6e  67 20 70 72 6f 67 72 61  | handling progra|
0000f1e0  6d 20 66 72 6f 6d 20 21  49 6d 70 72 65 73 73 69  |m from !Impressi|
0000f1f0  6f 6e 20 64 6f 77 6e 0a  20 20 20 20 20 20 20 77  |on down.       w|
0000f200  6f 72 6b 65 64 20 4f 4b  20 74 68 6f 75 67 68 21  |orked OK though!|
0000f210  29 0a 20 20 20 20 20 2d  20 41 64 64 65 64 20 73  |).     - Added s|
0000f220  75 70 70 6f 72 74 20 66  6f 72 20 6f 75 74 6c 69  |upport for outli|
0000f230  6e 65 20 66 6f 6e 74 73  2e 20 54 65 6d 70 6c 61  |ne fonts. Templa|
0000f240  74 65 73 20 75 73 69 6e  67 0a 20 20 20 20 20 20  |tes using.      |
0000f250  20 66 6f 6e 74 73 20 63  61 6e 20 6e 6f 77 20 62  | fonts can now b|
0000f260  65 20 6c 6f 61 64 65 64  2c 20 62 75 74 20 6d 69  |e loaded, but mi|
0000f270  73 73 69 6e 67 20 66 6f  6e 74 73 20 6d 61 79 20  |ssing fonts may |
0000f280  73 74 69 6c 6c 0a 20 20  20 20 20 20 20 63 61 75  |still.       cau|
0000f290  73 65 20 70 72 6f 62 6c  65 6d 73 21 0a 0a 31 2e  |se problems!..1.|
0000f2a0  30 37 20 2d 20 4e 65 77  20 52 6f 75 74 69 6e 65  |07 - New Routine|
0000f2b0  20 3c 50 52 4f 43 73 68  65 6c 6c 5f 49 63 6f 6e  | <PROCshell_Icon|
0000f2c0  44 65 73 65 6c 65 63 74  41 6c 6c 3e 0a 20 20 20  |DeselectAll>.   |
0000f2d0  20 20 2d 20 4e 65 77 20  52 6f 75 74 69 6e 65 20  |  - New Routine |
0000f2e0  3c 50 52 4f 43 73 68 65  6c 6c 5f 49 63 6f 6e 53  |<PROCshell_IconS|
0000f2f0  65 6c 65 63 74 41 6c 6c  3e 0a 20 20 20 20 20 2d  |electAll>.     -|
0000f300  20 49 66 20 61 20 6d 65  6e 75 20 68 61 73 20 62  | If a menu has b|
0000f310  65 65 6e 20 61 74 74 61  63 68 65 64 20 74 6f 20  |een attached to |
0000f320  61 6e 20 69 63 6f 6e 2c  20 53 45 4c 45 43 54 2c  |an icon, SELECT,|
0000f330  20 4d 45 4e 55 0a 20 20  20 20 20 20 20 6f 72 20  | MENU.       or |
0000f340  41 44 4a 55 53 54 20 77  69 6c 6c 20 6e 6f 77 20  |ADJUST will now |
0000f350  6f 70 65 6e 20 69 74 20  28 69 6e 73 74 65 61 64  |open it (instead|
0000f360  20 6f 66 20 6a 75 73 74  20 4d 45 4e 55 20 61 73  | of just MENU as|
0000f370  0a 20 20 20 20 20 20 20  62 65 66 6f 72 65 29 0a  |.       before).|
0000f380  31 2e 30 38 20 2d 20 42  75 67 20 66 69 78 20 74  |1.08 - Bug fix t|
0000f390  6f 20 53 45 4c 45 43 54  2f 41 44 4a 55 53 54 20  |o SELECT/ADJUST |
0000f3a0  6f 70 65 6e 69 6e 67 20  61 20 6d 65 6e 75 20 28  |opening a menu (|
0000f3b0  6f 70 65 6e 65 64 20 6d  65 6e 75 73 0a 20 20 20  |opened menus.   |
0000f3c0  20 20 20 20 77 68 65 6e  20 69 74 20 73 68 6f 75  |    when it shou|
0000f3d0  6c 64 6e 27 74 20 68 61  76 65 2e 20 47 72 72 72  |ldn't have. Grrr|
0000f3e0  72 72 72 21 29 0a 20 20  20 20 20 2d 20 41 64 64  |rrr!).     - Add|
0000f3f0  65 64 20 27 6e 6f 20 6c  6f 61 64 27 20 66 6c 61  |ed 'no load' fla|
0000f400  67 20 74 6f 20 3c 50 52  4f 43 73 68 65 6c 6c 5f  |g to <PROCshell_|
0000f410  41 74 74 61 63 68 44 61  74 61 4c 6f 61 64 3e 0a  |AttachDataLoad>.|
0000f420  20 20 20 20 20 2d 20 46  69 78 65 64 20 62 75 67  |     - Fixed bug|
0000f430  20 69 6e 20 61 74 74 61  63 68 20 64 61 74 61 6c  | in attach datal|
0000f440  6f 61 64 20 72 6f 75 74  69 6e 65 0a 20 20 20 20  |oad routine.    |
0000f450  20 2d 20 41 64 64 65 64  20 73 75 70 70 6f 72 74  | - Added support|
0000f460  20 66 6f 72 20 52 49 53  43 2d 4f 53 20 33 20 62  | for RISC-OS 3 b|
0000f470  6f 6f 74 20 6d 65 73 73  61 67 65 0a 20 20 20 20  |oot message.    |
0000f480  20 2d 20 53 68 65 6c 6c  20 6d 65 73 73 61 67 65  | - Shell message|
0000f490  73 20 68 65 6c 64 20 69  6e 20 73 65 70 65 72 61  |s held in sepera|
0000f4a0  74 65 20 66 69 6c 65 20  28 74 68 61 6e 6b 73 20  |te file (thanks |
0000f4b0  66 6f 72 20 74 68 65 0a  20 20 20 20 20 20 20 73  |for the.       s|
0000f4c0  75 67 67 65 73 74 69 6f  6e 20 61 6e 64 20 69 6e  |uggestion and in|
0000f4d0  66 6f 20 43 79 21 29 0a  20 20 20 20 20 2d 20 53  |fo Cy!).     - S|
0000f4e0  6d 61 6c 6c 20 27 46 6f  6e 74 4d 65 6e 75 27 20  |mall 'FontMenu' |
0000f4f0  62 75 67 65 74 74 65 20  66 69 78 65 64 20 28 73  |bugette fixed (s|
0000f500  65 6c 65 63 74 65 64 20  66 6f 6e 74 20 77 61 73  |elected font was|
0000f510  20 6e 6f 74 0a 20 20 20  20 20 20 20 62 65 69 6e  | not.       bein|
0000f520  67 20 74 69 63 6b 65 64  20 69 6e 20 74 68 65 20  |g ticked in the |
0000f530  6d 65 6e 75 20 69 66 20  74 68 65 20 6d 65 6e 75  |menu if the menu|
0000f540  20 77 61 73 20 61 74 74  61 63 68 65 64 20 74 6f  | was attached to|
0000f550  0a 20 20 20 20 20 20 20  61 20 77 69 6e 64 6f 77  |.       a window|
0000f560  20 69 6e 73 74 65 61 64  20 6f 66 20 61 6e 6f 74  | instead of anot|
0000f570  68 65 72 20 6d 65 6e 75  29 0a 31 2e 30 39 20 2d  |her menu).1.09 -|
0000f580  20 4e 65 77 20 72 6f 75  74 69 6e 65 20 3c 50 52  | New routine <PR|
0000f590  4f 43 73 68 65 6c 6c 5f  41 74 74 61 63 68 42 75  |OCshell_AttachBu|
0000f5a0  6d 70 48 61 6e 64 6c 65  72 3e 0a 20 20 20 20 20  |mpHandler>.     |
0000f5b0  2d 20 4e 65 77 20 72 6f  75 74 69 6e 65 20 3c 46  |- New routine <F|
0000f5c0  4e 73 68 65 6c 6c 5f 57  69 6e 64 6f 77 53 65 74  |Nshell_WindowSet|
0000f5d0  53 70 72 69 74 65 41 72  65 61 3e 0a 20 20 20 20  |SpriteArea>.    |
0000f5e0  20 2d 20 43 6f 72 72 65  63 74 65 64 20 64 6f 63  | - Corrected doc|
0000f5f0  75 6d 65 6e 74 61 74 69  6f 6e 20 66 6f 72 20 50  |umentation for P|
0000f600  52 4f 43 73 68 65 6c 6c  5f 41 74 74 61 63 68 55  |ROCshell_AttachU|
0000f610  73 65 72 52 65 64 72 61  77 0a 31 2e 31 30 20 2d  |serRedraw.1.10 -|
0000f620  20 43 6f 72 72 65 63 74  65 64 20 64 6f 63 75 6d  | Corrected docum|
0000f630  65 6e 74 61 74 69 6f 6e  20 66 6f 72 20 50 52 4f  |entation for PRO|
0000f640  43 73 68 65 6c 6c 5f 41  74 74 61 63 68 48 6f 74  |Cshell_AttachHot|
0000f650  4b 65 79 0a 31 2e 31 31  20 2d 20 41 64 64 65 64  |Key.1.11 - Added|
0000f660  20 73 75 70 70 6f 72 74  20 66 6f 72 20 21 42 4c  | support for !BL|
0000f670  69 62 49 49 20 6c 69 6e  6b 65 72 0a 20 20 20 20  |ibII linker.    |
0000f680  20 2d 20 3c 50 52 4f 43  73 68 65 6c 6c 5f 41 74  | - <PROCshell_At|
0000f690  74 61 63 68 55 73 65 72  52 65 64 72 61 77 3e 20  |tachUserRedraw> |
0000f6a0  6e 6f 77 20 63 68 61 6e  67 65 73 20 61 75 74 6f  |now changes auto|
0000f6b0  20 72 65 64 72 61 77 0a  20 20 20 20 20 20 20 66  | redraw.       f|
0000f6c0  6c 61 67 20 66 6f 72 20  74 68 65 20 77 69 6e 64  |lag for the wind|
0000f6d0  6f 77 20 69 66 20 6e 65  63 65 73 73 61 72 79 0a  |ow if necessary.|
0000f6e0  31 2e 31 32 20 2d 20 44  61 74 61 53 61 76 65 20  |1.12 - DataSave |
0000f6f0  72 6f 75 74 69 6e 65 20  6e 6f 77 20 61 75 74 6f  |routine now auto|
0000f700  6d 61 74 69 63 61 6c 6c  79 20 73 61 76 65 73 20  |matically saves |
0000f710  64 61 74 61 20 69 66 20  64 61 74 61 0a 20 20 20  |data if data.   |
0000f720  20 20 20 20 69 73 20 69  6e 20 61 20 68 65 61 70  |    is in a heap|
0000f730  62 6c 6f 63 6b 20 61 6e  64 20 6e 6f 20 46 4e 20  |block and no FN |
0000f740  69 73 20 6e 61 6d 65 64  20 74 6f 20 61 63 74 75  |is named to actu|
0000f750  61 6c 6c 79 20 70 65 72  66 6f 72 6d 0a 20 20 20  |ally perform.   |
0000f760  20 20 20 20 74 68 65 20  73 61 76 65 0a 20 20 20  |    the save.   |
0000f770  20 20 2d 20 3c 50 52 4f  43 73 68 65 6c 6c 5f 41  |  - <PROCshell_A|
0000f780  74 74 61 63 68 50 61 6e  65 3e 20 61 6c 74 65 72  |ttachPane> alter|
0000f790  73 20 70 61 6e 65 20 77  69 6e 64 6f 77 20 66 6c  |s pane window fl|
0000f7a0  61 67 73 20 69 66 0a 20  20 20 20 20 20 20 6e 65  |ags if.       ne|
0000f7b0  63 65 73 73 61 72 79 0a  31 2e 31 33 20 2d 20 42  |cessary.1.13 - B|
0000f7c0  75 67 20 66 69 78 65 73  20 66 6f 72 20 27 6e 6f  |ug fixes for 'no|
0000f7d0  20 6c 6f 61 64 27 20 6c  6f 61 64 73 20 66 72 6f  | load' loads fro|
0000f7e0  6d 20 6f 74 68 65 72 20  61 70 70 6c 69 63 61 74  |m other applicat|
0000f7f0  69 6f 6e 73 0a 31 2e 31  34 20 2d 20 4d 6f 72 65  |ions.1.14 - More|
0000f800  20 6c 69 62 72 61 72 79  20 72 6f 75 74 69 6e 65  | library routine|
0000f810  73 20 6e 6f 77 20 63 6c  61 69 6d 20 70 72 69 76  |s now claim priv|
0000f820  61 74 65 20 77 6f 72 6b  73 70 61 63 65 20 74 6f  |ate workspace to|
0000f830  0a 20 20 20 20 20 20 20  61 76 6f 69 64 20 69 6e  |.       avoid in|
0000f840  74 65 72 61 63 74 69 6f  6e 73 0a 20 20 20 20 20  |teractions.     |
0000f850  2d 20 41 64 64 65 64 20  72 6f 75 74 69 6e 65 20  |- Added routine |
0000f860  3c 50 52 4f 43 73 68 65  6c 6c 5f 49 63 6f 6e 53  |<PROCshell_IconS|
0000f870  65 74 42 75 74 74 6f 6e  54 79 70 65 3e 0a 20 20  |etButtonType>.  |
0000f880  20 20 20 2d 20 41 64 64  65 64 20 72 6f 75 74 69  |   - Added routi|
0000f890  6e 65 20 3c 50 52 4f 43  73 68 65 6c 6c 5f 49 63  |ne <PROCshell_Ic|
0000f8a0  6f 6e 53 65 74 45 53 47  3e 0a 20 20 20 20 20 2d  |onSetESG>.     -|
0000f8b0  20 41 64 64 65 64 20 72  6f 75 74 69 6e 65 20 3c  | Added routine <|
0000f8c0  50 52 4f 43 73 68 65 6c  6c 5f 49 63 6f 6e 53 65  |PROCshell_IconSe|
0000f8d0  74 54 65 78 74 3e 0a 20  20 20 20 20 2d 20 41 64  |tText>.     - Ad|
0000f8e0  64 65 64 20 72 6f 75 74  69 6e 65 20 3c 50 52 4f  |ded routine <PRO|
0000f8f0  43 73 68 65 6c 6c 5f 49  63 6f 6e 53 65 74 53 70  |Cshell_IconSetSp|
0000f900  72 69 74 65 3e 0a 20 20  20 20 20 2d 20 41 64 64  |rite>.     - Add|
0000f910  65 64 20 72 6f 75 74 69  6e 65 20 3c 50 52 4f 43  |ed routine <PROC|
0000f920  73 68 65 6c 6c 5f 49 63  6f 6e 53 65 74 42 6f 72  |shell_IconSetBor|
0000f930  64 65 72 3e 0a 20 20 20  20 20 2d 20 41 64 64 65  |der>.     - Adde|
0000f940  64 20 72 6f 75 74 69 6e  65 20 3c 50 52 4f 43 73  |d routine <PROCs|
0000f950  68 65 6c 6c 5f 49 63 6f  6e 53 65 74 48 43 65 6e  |hell_IconSetHCen|
0000f960  74 72 65 64 3e 0a 20 20  20 20 20 2d 20 41 64 64  |tred>.     - Add|
0000f970  65 64 20 72 6f 75 74 69  6e 65 20 3c 50 52 4f 43  |ed routine <PROC|
0000f980  73 68 65 6c 6c 5f 49 63  6f 6e 53 65 74 56 43 65  |shell_IconSetVCe|
0000f990  6e 74 72 65 64 3e 0a 20  20 20 20 20 2d 20 41 64  |ntred>.     - Ad|
0000f9a0  64 65 64 20 72 6f 75 74  69 6e 65 20 3c 50 52 4f  |ded routine <PRO|
0000f9b0  43 73 68 65 6c 6c 5f 49  63 6f 6e 53 65 74 46 69  |Cshell_IconSetFi|
0000f9c0  6c 6c 65 64 3e 0a 20 20  20 20 20 2d 20 41 64 64  |lled>.     - Add|
0000f9d0  65 64 20 72 6f 75 74 69  6e 65 20 3c 50 52 4f 43  |ed routine <PROC|
0000f9e0  73 68 65 6c 6c 5f 49 63  6f 6e 53 65 74 52 69 67  |shell_IconSetRig|
0000f9f0  68 74 4a 75 73 74 3e 0a  31 2e 32 30 20 2d 20 4e  |htJust>.1.20 - N|
0000fa00  6f 77 20 75 73 65 73 20  4d 65 6e 75 55 74 69 6c  |ow uses MenuUtil|
0000fa10  73 20 6d 6f 64 75 6c 65  20 66 6f 72 20 6d 65 6e  |s module for men|
0000fa20  75 20 68 61 6e 64 6c 69  6e 67 0a 20 20 20 20 20  |u handling.     |
0000fa30  2d 20 41 64 64 65 64 20  72 6f 75 74 69 6e 65 20  |- Added routine |
0000fa40  3c 50 52 4f 43 73 68 65  6c 6c 5f 49 63 6f 6e 53  |<PROCshell_IconS|
0000fa50  65 74 53 65 6c 65 63 74  65 64 3e 0a 20 20 20 20  |etSelected>.    |
0000fa60  20 2d 20 41 64 64 65 64  20 72 6f 75 74 69 6e 65  | - Added routine|
0000fa70  20 3c 50 52 4f 43 73 68  65 6c 6c 5f 49 63 6f 6e  | <PROCshell_Icon|
0000fa80  53 65 74 55 6e 73 65 6c  65 63 74 61 62 6c 65 3e  |SetUnselectable>|
0000fa90  0a 20 20 20 20 20 2d 20  41 64 64 65 64 20 72 6f  |.     - Added ro|
0000faa0  75 74 69 6e 65 20 3c 46  4e 73 68 65 6c 6c 5f 4d  |utine <FNshell_M|
0000fab0  65 6e 75 4e 65 77 3e 0a  20 20 20 20 20 2d 20 41  |enuNew>.     - A|
0000fac0  64 64 65 64 20 72 6f 75  74 69 6e 65 20 3c 46 4e  |dded routine <FN|
0000fad0  73 68 65 6c 6c 5f 4d 65  6e 75 41 64 64 3e 0a 20  |shell_MenuAdd>. |
0000fae0  20 20 20 20 2d 20 41 64  64 65 64 20 72 6f 75 74  |    - Added rout|
0000faf0  69 6e 65 20 3c 46 4e 73  68 65 6c 6c 5f 4d 65 6e  |ine <FNshell_Men|
0000fb00  75 44 65 6c 65 74 65 3e  0a 20 20 20 20 20 2d 20  |uDelete>.     - |
0000fb10  41 64 64 65 64 20 72 6f  75 74 69 6e 65 20 3c 46  |Added routine <F|
0000fb20  4e 73 68 65 6c 6c 5f 4d  65 6e 75 43 6f 6c 6f 75  |Nshell_MenuColou|
0000fb30  72 73 3e 0a 20 20 20 20  20 2d 20 41 64 64 65 64  |rs>.     - Added|
0000fb40  20 72 6f 75 74 69 6e 65  20 3c 46 4e 73 68 65 6c  | routine <FNshel|
0000fb50  6c 5f 4d 65 6e 75 44 6f  74 74 65 64 3e 0a 20 20  |l_MenuDotted>.  |
0000fb60  20 20 20 2d 20 41 64 64  65 64 20 72 6f 75 74 69  |   - Added routi|
0000fb70  6e 65 20 3c 46 4e 73 68  65 6c 6c 5f 4d 65 6e 75  |ne <FNshell_Menu|
0000fb80  57 72 69 74 61 62 6c 65  3e 0a 20 20 20 20 20 2d  |Writable>.     -|
0000fb90  20 41 64 64 65 64 20 72  6f 75 74 69 6e 65 20 3c  | Added routine <|
0000fba0  46 4e 73 68 65 6c 6c 5f  4d 65 6e 75 54 69 63 6b  |FNshell_MenuTick|
0000fbb0  4f 6e 6c 79 31 3e 0a 20  20 20 20 20 2d 20 41 64  |Only1>.     - Ad|
0000fbc0  64 65 64 20 72 6f 75 74  69 6e 65 20 3c 46 4e 73  |ded routine <FNs|
0000fbd0  68 65 6c 6c 5f 4d 65 6e  75 54 69 63 6b 4f 6e 6c  |hell_MenuTickOnl|
0000fbe0  79 32 3e 0a 20 20 20 20  20 2d 20 4d 6f 64 69 66  |y2>.     - Modif|
0000fbf0  69 65 64 20 61 6c 6c 20  6f 74 68 65 72 20 6d 65  |ied all other me|
0000fc00  6e 75 20 72 6f 75 74 69  6e 65 73 0a 20 20 20 20  |nu routines.    |
0000fc10  20 2d 20 41 64 64 65 64  20 72 6f 75 74 69 6e 65  | - Added routine|
0000fc20  20 3c 46 4e 73 68 65 6c  6c 5f 53 74 72 6f 6e 67  | <FNshell_Strong|
0000fc30  48 6c 70 49 73 41 76 61  69 6c 61 62 6c 65 3e 0a  |HlpIsAvailable>.|
0000fc40  20 20 20 20 20 2d 20 41  64 64 65 64 20 72 6f 75  |     - Added rou|
0000fc50  74 69 6e 65 20 3c 50 52  4f 43 73 68 65 6c 6c 5f  |tine <PROCshell_|
0000fc60  41 74 74 61 63 68 50 72  65 51 75 69 74 48 61 6e  |AttachPreQuitHan|
0000fc70  64 6c 65 72 3e 0a 20 20  20 20 20 2d 20 41 64 64  |dler>.     - Add|
0000fc80  65 64 20 72 6f 75 74 69  6e 65 20 3c 50 52 4f 43  |ed routine <PROC|
0000fc90  73 68 65 6c 6c 5f 41 74  74 61 63 68 4f 70 65 6e  |shell_AttachOpen|
0000fca0  57 69 6e 64 6f 77 3e 0a  20 20 20 20 20 2d 20 41  |Window>.     - A|
0000fcb0  64 64 65 64 20 72 6f 75  74 69 6e 65 20 3c 50 52  |dded routine <PR|
0000fcc0  4f 43 73 68 65 6c 6c 5f  41 74 74 61 63 68 43 6c  |OCshell_AttachCl|
0000fcd0  6f 73 65 57 69 6e 64 6f  77 3e 0a 20 20 20 20 20  |oseWindow>.     |
0000fce0  2d 20 41 64 64 65 64 20  72 6f 75 74 69 6e 65 20  |- Added routine |
0000fcf0  3c 50 52 4f 43 73 68 65  6c 6c 5f 49 63 6f 6e 53  |<PROCshell_IconS|
0000fd00  65 74 4c 65 66 74 4a 75  73 74 3e 0a 20 20 20 20  |etLeftJust>.    |
0000fd10  20 2d 20 41 64 64 65 64  20 72 6f 75 74 69 6e 65  | - Added routine|
0000fd20  20 3c 50 52 4f 43 73 68  65 6c 6c 5f 53 70 72 69  | <PROCshell_Spri|
0000fd30  74 65 41 72 65 61 53 61  76 65 3e 0a 20 20 20 20  |teAreaSave>.    |
0000fd40  20 2d 20 41 64 64 65 64  20 72 6f 75 74 69 6e 65  | - Added routine|
0000fd50  20 3c 50 52 4f 43 73 68  65 6c 6c 5f 53 70 72 69  | <PROCshell_Spri|
0000fd60  74 65 52 65 6e 61 6d 65  3e 0a 20 20 20 20 20 2d  |teRename>.     -|
0000fd70  20 41 64 64 65 64 20 72  6f 75 74 69 6e 65 20 3c  | Added routine <|
0000fd80  46 4e 73 68 65 6c 6c 5f  53 70 72 69 74 65 41 72  |FNshell_SpriteAr|
0000fd90  65 61 4c 6f 61 64 3e 0a  20 20 20 20 20 2d 20 41  |eaLoad>.     - A|
0000fda0  64 64 65 64 20 72 6f 75  74 69 6e 65 20 3c 46 4e  |dded routine <FN|
0000fdb0  73 68 65 6c 6c 5f 53 70  72 69 74 65 47 65 74 50  |shell_SpriteGetP|
0000fdc0  74 72 3e 0a 20 20 20 20  20 2d 20 41 64 64 65 64  |tr>.     - Added|
0000fdd0  20 72 6f 75 74 69 6e 65  20 3c 46 4e 73 68 65 6c  | routine <FNshel|
0000fde0  6c 5f 4f 53 43 68 65 63  6b 56 65 72 73 69 6f 6e  |l_OSCheckVersion|
0000fdf0  3e 0a 20 20 20 20 20 2d  20 41 64 64 65 64 20 72  |>.     - Added r|
0000fe00  6f 75 74 69 6e 65 20 3c  46 4e 73 68 65 6c 6c 5f  |outine <FNshell_|
0000fe10  4f 53 43 68 65 63 6b 4d  6f 64 75 6c 65 56 65 72  |OSCheckModuleVer|
0000fe20  73 69 6f 6e 3e 0a 20 20  20 20 20 2d 20 46 69 78  |sion>.     - Fix|
0000fe30  65 64 20 50 52 4f 43 73  68 65 6c 6c 5f 49 63 6f  |ed PROCshell_Ico|
0000fe40  6e 53 65 74 52 69 67 68  74 4a 75 73 74 0a 20 20  |nSetRightJust.  |
0000fe50  20 20 20 2d 20 57 72 69  74 61 62 6c 65 20 69 63  |   - Writable ic|
0000fe60  6f 6e 20 68 61 6e 64 6c  65 72 20 6e 6f 77 20 69  |on handler now i|
0000fe70  67 6e 6f 72 65 73 20 75  6e 73 65 6c 65 63 74 61  |gnores unselecta|
0000fe80  62 6c 65 20 69 63 6f 6e  73 0a 20 20 20 20 20 20  |ble icons.      |
0000fe90  20 77 68 65 6e 20 6d 6f  76 69 6e 67 20 63 61 72  | when moving car|
0000fea0  65 74 0a 20 20 20 20 20  2d 20 41 64 64 65 64 20  |et.     - Added |
0000feb0  73 75 70 70 6f 72 74 20  66 6f 72 20 52 65 73 46  |support for ResF|
0000fec0  69 6e 64 20 28 69 6e 74  65 72 6e 61 74 69 6f 6e  |ind (internation|
0000fed0  61 6c 69 73 61 74 69 6f  6e 20 6f 66 0a 20 20 20  |alisation of.   |
0000fee0  20 20 20 20 6d 65 73 73  61 67 65 73 20 65 74 63  |    messages etc|
0000fef0  29 45 73 74 69 6d 61 74  65 64 20 46 69 6c 65 20  |)Estimated File |
0000ff00  53 69 7a 65 73 0a 49 74  20 73 68 6f 75 6c 64 20  |Sizes.It should |
0000ff10  28 69 66 20 6f 74 68 65  72 20 61 70 70 6c 69 63  |(if other applic|
0000ff20  61 74 69 6f 6e 73 20 61  72 65 20 77 72 69 74 74  |ations are writt|
0000ff30  65 6e 20 74 6f 0a 74 68  65 20 41 63 6f 72 6e 20  |en to.the Acorn |
0000ff40  67 75 69 64 65 6c 69 6e  65 73 21 29 20 6e 6f 74  |guidelines!) not|
0000ff50  20 6d 61 74 74 65 72 20  69 66 20 74 68 69 73 20  | matter if this |
0000ff60  65 73 74 69 6d 61 74 65  0a 69 73 20 69 6e 61 63  |estimate.is inac|
0000ff70  63 75 72 61 74 65 2e 20  48 6f 77 65 76 65 72 2c  |curate. However,|
0000ff80  20 66 69 6c 65 20 74 72  61 6e 73 66 65 72 20 77  | file transfer w|
0000ff90  69 6c 6c 20 62 65 20 61  0a 6c 69 74 74 6c 65 20  |ill be a.little |
0000ffa0  66 61 73 74 65 72 20 69  66 20 69 74 20 69 73 20  |faster if it is |
0000ffb0  61 63 63 75 72 61 74 65  20 61 6e 64 20 70 72 6f  |accurate and pro|
0000ffc0  62 6c 65 6d 73 20 6d 61  79 0a 6f 63 63 75 72 20  |blems may.occur |
0000ffd0  77 69 74 68 20 62 61 64  6c 79 20 77 72 69 74 74  |with badly writt|
0000ffe0  65 6e 20 61 70 70 6c 69  63 61 74 69 6f 6e 73 20  |en applications |
0000fff0  69 66 20 69 74 20 69 73  20 6e 6f 74 2e 46 4e 73  |if it is not.FNs|
00010000  68 65 6c 6c 5f 49 63 6f  6e 52 65 73 69 7a 65 28  |hell_IconResize(|
00010010  29 0a 50 61 72 61 6d 73  20 3d 3e 0a 20 20 20 20  |).Params =>.    |
00010020  20 20 20 20 20 69 6e 74  20 77 69 6e 64 6f 77 20  |     int window |
00010030  68 61 6e 64 6c 65 20 20  0a 20 20 20 20 20 20 20  |handle  .       |
00010040  20 20 69 6e 74 20 69 63  6f 6e 20 68 61 6e 64 6c  |  int icon handl|
00010050  65 0a 20 20 20 20 20 20  20 20 20 69 6e 74 20 6d  |e.         int m|
00010060  69 6e 20 78 20 63 6f 6f  72 64 0a 20 20 20 20 20  |in x coord.     |
00010070  20 20 20 20 69 6e 74 20  6d 69 6e 20 79 20 63 6f  |    int min y co|
00010080  6f 72 64 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |ord.         int|
00010090  20 6d 61 78 20 78 20 63  6f 6f 72 64 0a 20 20 20  | max x coord.   |
000100a0  20 20 20 20 20 20 69 6e  74 20 6d 61 78 20 79 20  |      int max y |
000100b0  63 6f 6f 72 64 0a 0a 20  20 20 20 20 20 20 5c 3c  |coord..       \<|
000100c0  3d 0a 20 20 20 20 20 20  20 20 20 69 6e 74 20 69  |=.         int i|
000100d0  63 6f 6e 20 68 61 6e 64  6c 65 0a 0a 41 6c 6c 6f  |con handle..Allo|
000100e0  77 73 20 74 68 65 20 72  65 64 65 66 69 6e 69 74  |ws the redefinit|
000100f0  69 6f 6e 20 6f 66 20 61  6e 20 69 63 6f 6e 27 73  |ion of an icon's|
00010100  20 62 6f 75 6e 64 69 6e  67 0a 62 6f 78 2e 20 41  | bounding.box. A|
00010110  73 20 74 68 65 20 69 63  6f 6e 20 68 61 73 20 74  |s the icon has t|
00010120  6f 20 62 65 20 64 65 6c  65 74 65 64 20 61 6e 64  |o be deleted and|
00010130  20 74 68 65 6e 0a 72 65  63 72 65 61 74 65 64 20  | then.recreated |
00010140  69 74 20 72 65 74 75 72  6e 73 20 74 68 65 20 6e  |it returns the n|
00010150  65 77 20 69 63 6f 6e 20  68 61 6e 64 6c 65 20 28  |ew icon handle (|
00010160  77 68 69 63 68 0a 73 68  6f 75 6c 64 20 62 65 20  |which.should be |
00010170  74 68 65 20 73 61 6d 65  20 61 73 20 74 68 65 20  |the same as the |
00010180  6f 6c 64 20 68 61 6e 64  6c 65 29 2e 20 54 68 65  |old handle). The|
00010190  20 69 63 6f 6e 0a 69 73  20 72 65 64 72 61 77 6e  | icon.is redrawn|
000101a0  20 61 66 74 65 72 20 72  65 73 69 7a 69 6e 67 2c  | after resizing,|
000101b0  20 74 61 6b 69 6e 67 20  61 63 63 6f 75 6e 74 20  | taking account |
000101c0  6f 66 20 61 6e 79 0a 33  44 20 62 6f 72 64 65 72  |of any.3D border|
000101d0  73 2e 0a 0a 4c 69 62 72  61 72 79 20 47 72 6f 75  |s...Library Grou|
000101e0  70 20 3d 3e 20 3c 49 63  6f 6e 73 3d 3e 4c 69 62  |p => <Icons=>Lib|
000101f0  47 72 6f 75 70 49 63 6f  6e 73 3e 4d 65 73 73 61  |GroupIcons>Messa|
00010200  67 65 73 0a 3c 42 72 6f  61 64 63 61 73 74 4d 65  |ges.<BroadcastMe|
00010210  73 73 61 67 65 20 20 20  20 3d 3e 46 4e 73 68 65  |ssage    =>FNshe|
00010220  6c 6c 5f 42 72 6f 61 64  63 61 73 74 4d 65 73 73  |ll_BroadcastMess|
00010230  61 67 65 3e 0a 3c 48 61  6e 64 6c 65 55 6e 6b 6e  |age>.<HandleUnkn|
00010240  6f 77 6e 4d 65 73 73 61  67 65 3d 3e 50 52 4f 43  |ownMessage=>PROC|
00010250  73 68 65 6c 6c 5f 48 61  6e 64 6c 65 55 6e 6b 6e  |shell_HandleUnkn|
00010260  6f 77 6e 4d 65 73 73 61  67 65 3e 50 52 4f 43 73  |ownMessage>PROCs|
00010270  68 65 6c 6c 5f 42 72 6f  61 64 63 61 73 74 4d 65  |hell_BroadcastMe|
00010280  73 73 61 67 65 28 29 0a  50 61 72 61 6d 73 20 3d  |ssage().Params =|
00010290  3e 0a 20 20 20 20 20 20  20 20 20 69 6e 74 20 72  |>.         int r|
000102a0  65 61 73 6f 6e 20 63 6f  64 65 20 20 20 20 20 20  |eason code      |
000102b0  20 20 20 0a 20 20 20 20  20 20 20 20 20 73 74 72  |   .         str|
000102c0  20 6d 65 73 73 61 67 65  20 74 65 78 74 0a 0a 4c  | message text..L|
000102d0  69 62 72 61 72 79 20 47  72 6f 75 70 20 3d 3e 20  |ibrary Group => |
000102e0  3c 4d 65 73 73 61 67 65  73 3d 3e 4c 69 62 47 72  |<Messages=>LibGr|
000102f0  6f 75 70 4d 65 73 73 61  67 65 73 3e 50 52 4f 43  |oupMessages>PROC|
00010300  73 68 65 6c 6c 5f 57 69  6e 64 6f 77 52 65 74 69  |shell_WindowReti|
00010310  74 6c 65 28 29 0a 50 61  72 61 6d 73 20 3d 3e 0a  |tle().Params =>.|
00010320  20 20 20 20 20 20 20 20  20 69 6e 74 20 77 69 6e  |         int win|
00010330  64 6f 77 20 68 61 6e 64  6c 65 20 20 20 20 20 20  |dow handle      |
00010340  20 20 20 0a 20 20 20 20  20 20 20 20 20 73 74 72  |   .         str|
00010350  20 6e 65 77 20 74 69 74  6c 65 0a 0a 49 74 20 69  | new title..It i|
00010360  73 20 6e 6f 74 20 6e 65  63 65 73 73 61 72 79 20  |s not necessary |
00010370  74 6f 20 6d 61 6b 65 20  74 68 65 20 77 69 6e 64  |to make the wind|
00010380  6f 77 20 74 69 74 6c 65  0a 69 6e 64 69 72 65 63  |ow title.indirec|
00010390  74 65 64 2c 20 62 75 74  20 74 69 74 6c 65 73 20  |ted, but titles |
000103a0  6c 6f 6e 67 65 72 20 74  68 61 6e 20 31 31 20 63  |longer than 11 c|
000103b0  68 61 72 61 63 74 65 72  73 0a 77 69 6c 6c 20 62  |haracters.will b|
000103c0  65 20 74 72 75 6e 63 61  74 65 64 20 77 69 74 68  |e truncated with|
000103d0  6f 75 74 20 77 61 72 6e  69 6e 67 20 69 66 20 69  |out warning if i|
000103e0  74 20 69 73 20 6e 6f 74  2e 0a 0a 41 74 74 65 6d  |t is not...Attem|
000103f0  70 74 69 6e 67 20 74 6f  20 75 73 65 20 61 20 74  |pting to use a t|
00010400  69 74 6c 65 20 77 68 69  63 68 20 69 73 20 6c 6f  |itle which is lo|
00010410  6e 67 65 72 20 74 68 61  6e 0a 74 68 65 20 61 6c  |nger than.the al|
00010420  6c 6f 63 61 74 65 64 20  62 75 66 66 65 72 20 77  |located buffer w|
00010430  69 6c 6c 20 61 67 61 69  6e 20 63 61 75 73 65 20  |ill again cause |
00010440  74 72 75 6e 63 61 74 69  6f 6e 2e 0a 0a 4c 69 62  |truncation...Lib|
00010450  72 61 72 79 20 47 72 6f  75 70 20 3d 5c 3e 20 3c  |rary Group =\> <|
00010460  57 69 6e 64 6f 77 73 3d  3e 4c 69 62 47 72 6f 75  |Windows=>LibGrou|
00010470  70 57 69 6e 64 6f 77 73  3e 50 52 4f 43 73 68 65  |pWindows>PROCshe|
00010480  6c 6c 5f 57 69 6e 64 6f  77 52 65 73 69 7a 65 28  |ll_WindowResize(|
00010490  29 0a 50 61 72 61 6d 73  20 3d 3e 0a 20 20 20 20  |).Params =>.    |
000104a0  20 20 20 20 20 69 6e 74  20 20 77 69 6e 64 6f 77  |     int  window|
000104b0  20 68 61 6e 64 6c 65 0a  20 20 20 20 20 20 20 20  | handle.        |
000104c0  20 69 6e 74 20 20 6d 69  6e 20 78 20 63 6f 6f 72  | int  min x coor|
000104d0  64 20 6f 66 20 77 6f 72  6b 61 72 65 61 0a 20 20  |d of workarea.  |
000104e0  20 20 20 20 20 20 20 69  6e 74 20 20 6d 69 6e 20  |       int  min |
000104f0  79 20 63 6f 6f 72 64 20  6f 66 20 77 6f 72 6b 61  |y coord of worka|
00010500  72 65 61 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |rea.         int|
00010510  20 20 6d 61 78 20 78 20  63 6f 6f 72 64 20 6f 66  |  max x coord of|
00010520  20 77 6f 72 6b 61 72 65  61 0a 20 20 20 20 20 20  | workarea.      |
00010530  20 20 20 69 6e 74 20 20  6d 61 78 20 79 20 63 6f  |   int  max y co|
00010540  6f 72 64 20 6f 66 20 77  6f 72 6b 61 72 65 61 0a  |ord of workarea.|
00010550  20 20 20 20 20 20 20 20  20 62 6f 6f 6c 20 6f 70  |         bool op|
00010560  65 6e 20 66 6c 61 67 0a  0a 4c 69 62 72 61 72 79  |en flag..Library|
00010570  20 47 72 6f 75 70 20 3d  5c 3e 20 3c 57 69 6e 64  | Group =\> <Wind|
00010580  6f 77 73 3d 3e 4c 69 62  47 72 6f 75 70 57 69 6e  |ows=>LibGroupWin|
00010590  64 6f 77 73 3e 46 4e 73  68 65 6c 6c 5f 46 69 6c  |dows>FNshell_Fil|
000105a0  65 54 79 70 65 28 29 0a  50 61 72 61 6d 73 20 3d  |eType().Params =|
000105b0  3e 0a 20 20 20 20 20 20  20 20 20 73 74 72 20 66  |>.         str f|
000105c0  69 6c 65 20 6e 61 6d 65  0a 0a 20 20 20 20 20 20  |ile name..      |
000105d0  20 5c 3c 3d 0a 20 20 20  20 20 20 20 20 20 69 6e  | \<=.         in|
000105e0  74 20 66 69 6c 65 20 74  79 70 65 0a 0a 52 65 74  |t file type..Ret|
000105f0  75 72 6e 73 20 74 68 65  20 66 69 6c 65 20 74 79  |urns the file ty|
00010600  70 65 20 6f 66 20 74 68  65 20 73 70 65 63 69 66  |pe of the specif|
00010610  69 65 64 20 66 69 6c 65  0a 6f 6e 20 64 69 73 6b  |ied file.on disk|
00010620  2e 20 41 20 66 75 6c 6c  20 70 61 74 68 20 6e 61  |. A full path na|
00010630  6d 65 20 6d 75 73 74 20  62 65 20 67 69 76 65 6e  |me must be given|
00010640  0a 28 65 73 70 65 63 69  61 6c 6c 79 20 75 6e 64  |.(especially und|
00010650  65 72 20 52 49 53 43 2d  4f 53 20 33 2e 31 21 29  |er RISC-OS 3.1!)|
00010660  0a 0a 4c 69 62 72 61 72  79 20 47 72 6f 75 70 20  |..Library Group |
00010670  3d 3e 20 3c 46 69 6c 65  73 3d 3e 4c 69 62 47 72  |=> <Files=>LibGr|
00010680  6f 75 70 46 69 6c 65 73  3e 46 4e 73 68 65 6c 6c  |oupFiles>FNshell|
00010690  5f 4c 65 61 66 28 29 0a  50 61 72 61 6d 73 20 3d  |_Leaf().Params =|
000106a0  3e 0a 20 20 20 20 20 20  20 20 20 73 74 72 20 66  |>.         str f|
000106b0  69 6c 65 20 6e 61 6d 65  20 20 20 20 20 0a 0a 20  |ile name     .. |
000106c0  20 20 20 20 20 20 5c 3c  3d 0a 20 20 20 20 20 20  |      \<=.      |
000106d0  20 20 20 73 74 72 20 27  6c 65 61 66 27 20 6f 66  |   str 'leaf' of|
000106e0  20 66 69 6c 65 6e 61 6d  65 2c 20 69 2e 65 20 74  | filename, i.e t|
000106f0  68 65 20 6e 61 6d 65 0a  20 20 20 20 20 20 20 20  |he name.        |
00010700  20 20 20 20 20 6f 66 20  74 68 65 20 61 63 74 75  |     of the actu|
00010710  61 6c 20 66 69 6c 65 2c  20 6d 69 6e 75 73 20 74  |al file, minus t|
00010720  68 65 20 70 61 74 68 0a  0a 4c 69 62 72 61 72 79  |he path..Library|
00010730  20 47 72 6f 75 70 20 3d  3e 20 3c 46 69 6c 65 73  | Group => <Files|
00010740  3d 3e 4c 69 62 47 72 6f  75 70 46 69 6c 65 73 3e  |=>LibGroupFiles>|
00010750  46 4e 73 68 65 6c 6c 5f  42 72 61 6e 63 68 28 29  |FNshell_Branch()|
00010760  0a 50 61 72 61 6d 73 20  3d 3e 0a 20 20 20 20 20  |.Params =>.     |
00010770  20 20 20 20 73 74 72 20  66 69 6c 65 20 6e 61 6d  |    str file nam|
00010780  65 20 20 20 20 20 0a 0a  20 20 20 20 20 20 20 5c  |e     ..       \|
00010790  3c 3d 0a 20 20 20 20 20  20 20 20 20 73 74 72 20  |<=.         str |
000107a0  27 62 72 61 6e 63 68 27  20 6f 66 20 66 69 6c 65  |'branch' of file|
000107b0  6e 61 6d 65 2c 20 69 2e  65 20 74 68 65 20 70 61  |name, i.e the pa|
000107c0  74 68 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |th.             |
000107d0  6f 66 20 74 68 65 20 64  69 72 65 63 74 6f 72 79  |of the directory|
000107e0  20 63 6f 6e 74 61 69 6e  69 6e 67 20 74 68 65 20  | containing the |
000107f0  66 69 6c 65 2e 0a 20 20  20 20 20 20 20 20 20 20  |file..          |
00010800  20 20 20 4e 6f 74 65 20  74 68 61 74 20 74 68 65  |   Note that the|
00010810  20 72 65 74 75 72 6e 65  64 20 73 74 72 69 6e 67  | returned string|
00010820  20 64 6f 65 73 20 6e 6f  74 0a 20 20 20 20 20 20  | does not.      |
00010830  20 20 20 20 20 20 20 69  6e 63 6c 75 64 65 20 74  |       include t|
00010840  68 65 20 66 69 6e 61 6c  20 27 2e 27 20 63 68 61  |he final '.' cha|
00010850  72 61 63 74 65 72 2e 0a  0a 4c 69 62 72 61 72 79  |racter...Library|
00010860  20 47 72 6f 75 70 20 3d  3e 20 3c 46 69 6c 65 73  | Group => <Files|
00010870  3d 3e 4c 69 62 47 72 6f  75 70 46 69 6c 65 73 3e  |=>LibGroupFiles>|
00010880  43 6f 70 79 72 69 67 68  74 20 4e 6f 74 69 63 65  |Copyright Notice|
00010890  0a 54 68 65 20 45 76 6e  74 53 68 65 6c 6c 20 6c  |.The EvntShell l|
000108a0  69 62 72 61 72 79 20 63  6f 64 65 20 61 6e 64 20  |ibrary code and |
000108b0  61 6e 79 20 64 65 6d 6f  20 6f 72 20 73 75 70 70  |any demo or supp|
000108c0  6f 72 74 20 70 72 6f 67  72 61 6d 73 0a 73 75 70  |ort programs.sup|
000108d0  70 6c 69 65 64 20 77 69  74 68 20 69 74 20 61 72  |plied with it ar|
000108e0  65 20 4e 4f 54 20 50 75  62 6c 69 63 20 44 6f 6d  |e NOT Public Dom|
000108f0  61 69 6e 20 73 6f 66 74  77 61 72 65 2e 20 54 68  |ain software. Th|
00010900  65 79 20 61 72 65 0a 53  68 61 72 65 57 61 72 65  |ey are.ShareWare|
00010910  20 77 68 69 63 68 20 6d  65 61 6e 73 20 74 68 61  | which means tha|
00010920  74 20 69 66 20 79 6f 75  20 75 73 65 20 74 68 65  |t if you use the|
00010930  6d 20 61 6e 64 20 6c 69  6b 65 20 74 68 65 6d 0a  |m and like them.|
00010940  79 6f 75 20 73 68 6f 75  6c 64 20 72 65 67 69 73  |you should regis|
00010950  74 65 72 20 77 69 74 68  20 74 68 65 20 3c 41 75  |ter with the <Au|
00010960  74 68 6f 72 3d 3e 41 75  74 68 6f 72 32 3e 2e 0a  |thor=>Author2>..|
00010970  0a 49 6e 20 70 61 72 74  69 63 75 6c 61 72 20 79  |.In particular y|
00010980  6f 75 20 73 68 6f 75 6c  64 20 6e 6f 74 65 20 74  |ou should note t|
00010990  68 61 74 20 6e 6f 20 70  61 72 74 20 6f 66 20 74  |hat no part of t|
000109a0  68 65 20 45 76 6e 74 53  68 65 6c 6c 0a 63 6f 64  |he EvntShell.cod|
000109b0  65 20 6d 61 79 20 61 70  70 65 61 72 20 6f 6e 20  |e may appear on |
000109c0  21 49 6c 6c 75 73 69 6f  6e 73 20 6d 61 67 61 7a  |!Illusions magaz|
000109d0  69 6e 65 20 64 69 73 6b  73 20 6f 72 20 69 6e 20  |ine disks or in |
000109e0  74 68 65 0a 61 73 73 6f  63 69 61 74 65 64 20 50  |the.associated P|
000109f0  44 20 6c 69 62 72 61 72  79 20 27 44 69 67 69 74  |D library 'Digit|
00010a00  61 6c 20 49 6c 6c 75 73  69 6f 6e 73 27 2e 20 54  |al Illusions'. T|
00010a10  68 69 73 20 74 68 65 72  65 66 6f 72 65 0a 61 70  |his therefore.ap|
00010a20  70 6c 69 65 73 20 74 6f  20 61 6e 79 20 61 70 70  |plies to any app|
00010a30  6c 69 63 61 74 69 6f 6e  20 77 72 69 74 74 65 6e  |lication written|
00010a40  20 75 73 69 6e 67 20 74  68 65 20 45 76 6e 74 53  | using the EvntS|
00010a50  68 65 6c 6c 0a 6c 69 62  72 61 72 79 2e 0a 0a 4f  |hell.library...O|
00010a60  74 68 65 72 20 50 44 20  6c 69 62 72 61 72 69 65  |ther PD librarie|
00010a70  73 20 6d 61 79 20 64 69  73 74 72 69 62 75 74 65  |s may distribute|
00010a80  20 74 68 69 73 20 73 6f  66 74 77 61 72 65 20 66  | this software f|
00010a90  72 65 65 6c 79 2e 20 54  68 65 0a 72 65 61 73 6f  |reely. The.reaso|
00010aa0  6e 20 66 6f 72 20 65 78  63 6c 75 64 69 6e 67 20  |n for excluding |
00010ab0  21 49 6c 6c 75 73 69 6f  6e 73 20 69 73 20 74 68  |!Illusions is th|
00010ac0  61 74 20 49 20 64 6f 6e  27 74 20 6c 69 6b 65 20  |at I don't like |
00010ad0  70 65 6f 70 6c 65 0a 77  68 6f 20 75 73 65 20 28  |people.who use (|
00010ae0  6f 72 20 74 68 72 65 61  74 65 6e 20 74 6f 20 75  |or threaten to u|
00010af0  73 65 29 20 76 69 72 75  73 65 73 20 61 73 20 61  |se) viruses as a|
00010b00  20 6d 65 61 6e 73 20 6f  66 20 63 6f 70 79 0a 70  | means of copy.p|
00010b10  72 6f 74 65 63 74 69 6f  6e 2e 0a 0a 59 6f 75 20  |rotection...You |
00010b20  6d 61 79 20 64 69 73 74  72 69 62 75 74 65 20 53  |may distribute S|
00010b30  68 65 6c 6c 4c 69 62 2c  20 53 68 65 6c 6c 4c 69  |hellLib, ShellLi|
00010b40  62 52 54 20 6f 72 20 62  6f 74 68 20 77 69 74 68  |bRT or both with|
00010b50  20 79 6f 75 72 20 6f 77  6e 0a 61 70 70 6c 69 63  | your own.applic|
00010b60  61 74 69 6f 6e 73 2e 20  4c 69 62 72 61 72 79 20  |ations. Library |
00010b70  63 6f 64 65 20 6d 61 79  20 62 65 20 61 70 70 65  |code may be appe|
00010b80  6e 64 65 64 20 74 6f 20  74 68 65 20 75 73 65 72  |nded to the user|
00010b90  0a 61 70 70 6c 69 63 61  74 69 6f 6e 20 69 66 20  |.application if |
00010ba0  72 65 71 75 69 72 65 64  2c 20 61 6e 64 20 72 65  |required, and re|
00010bb0  64 75 6e 64 61 6e 74 20  72 6f 75 74 69 6e 65 73  |dundant routines|
00010bc0  20 6d 61 79 20 62 65 0a  72 65 6d 6f 76 65 64 2e  | may be.removed.|
00010bd0  20 59 6f 75 20 6d 61 79  20 6e 6f 74 20 61 6c 74  | You may not alt|
00010be0  65 72 20 74 68 65 20 6c  69 62 72 61 72 79 20 63  |er the library c|
00010bf0  6f 64 65 2c 20 63 6c 61  69 6d 20 74 6f 20 68 61  |ode, claim to ha|
00010c00  76 65 0a 77 72 69 74 74  65 6e 20 69 74 20 6f 72  |ve.written it or|
00010c10  20 6d 61 6b 65 20 6d 6f  6e 65 79 20 6f 6e 20 69  | make money on i|
00010c20  74 2e 20 41 20 6e 6f 74  65 20 69 6e 20 74 68 65  |t. A note in the|
00010c30  20 61 70 70 6c 69 63 61  74 69 6f 6e 0a 21 48 65  | application.!He|
00010c40  6c 70 20 66 69 6c 65 20  61 63 6b 6e 6f 77 6c 65  |lp file acknowle|
00010c50  64 67 69 6e 67 20 74 68  65 20 73 6f 75 72 63 65  |dging the source|
00010c60  20 6f 66 20 74 68 65 20  6c 69 62 72 61 72 79 20  | of the library |
00010c70  63 6f 64 65 20 77 69 74  68 0a 64 65 74 61 69 6c  |code with.detail|
00010c80  73 20 6f 66 20 68 6f 77  20 74 6f 20 6f 62 74 61  |s of how to obta|
00010c90  69 6e 20 74 68 65 20 66  75 6c 6c 20 70 61 63 6b  |in the full pack|
00010ca0  61 67 65 20 77 6f 75 6c  64 20 62 65 20 61 70 70  |age would be app|
00010cb0  72 65 63 69 61 74 65 64  2e 0a 0a 54 68 65 20 68  |reciated...The h|
00010cc0  65 61 70 20 6d 61 6e 61  67 65 72 20 72 6f 75 74  |eap manager rout|
00010cd0  69 6e 65 73 20 61 72 65  20 63 6f 70 79 72 69 67  |ines are copyrig|
00010ce0  68 74 20 52 69 73 63 20  55 73 65 72 20 61 6e 64  |ht Risc User and|
00010cf0  20 61 72 65 0a 75 73 65  64 20 77 69 74 68 20 70  | are.used with p|
00010d00  65 72 6d 69 73 73 69 6f  6e 2e 54 68 65 20 41 75  |ermission.The Au|
00010d10  74 68 6f 72 0a 50 61 75  6c 20 48 6f 62 62 73 0a  |thor.Paul Hobbs.|
00010d20  52 68 65 69 6e 70 66 61  6c 7a 73 74 72 61 73 73  |Rheinpfalzstrass|
00010d30  65 20 32 0a 38 35 30 34  39 20 49 6e 67 6f 6c 73  |e 2.85049 Ingols|
00010d40  74 61 64 74 0a 47 65 72  6d 61 6e 79 55 73 65 72  |tadt.GermanyUser|
00010d50  20 46 4e 20 28 50 52 4f  43 73 68 65 6c 6c 5f 41  | FN (PROCshell_A|
00010d60  74 74 61 63 68 4d 65 6e  75 4d 61 6b 65 72 29 0a  |ttachMenuMaker).|
00010d70  50 61 72 61 6d 73 20 3d  3e 0a 20 20 20 20 20 20  |Params =>.      |
00010d80  20 20 20 69 6e 74 20 77  69 6e 64 6f 77 20 68 61  |   int window ha|
00010d90  6e 64 6c 65 20 6f 76 65  72 20 77 68 69 63 68 20  |ndle over which |
00010da0  4d 45 4e 55 0a 20 20 20  20 20 20 20 20 20 20 20  |MENU.           |
00010db0  20 20 77 61 73 20 70 72  65 73 73 65 64 20 0a 20  |  was pressed . |
00010dc0  20 20 20 20 20 20 20 20  69 6e 74 20 69 63 6f 6e  |        int icon|
00010dd0  20 68 61 6e 64 6c 65 20  6f 76 65 72 20 77 68 69  | handle over whi|
00010de0  63 68 20 4d 45 4e 55 20  77 61 73 0a 20 20 20 20  |ch MENU was.    |
00010df0  20 20 20 20 20 20 20 20  20 70 72 65 73 73 65 64  |         pressed|
00010e00  20 28 2d 31 20 66 6f 72  20 6e 6f 20 69 63 6f 6e  | (-1 for no icon|
00010e10  29 0a 20 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |). .This functio|
00010e20  6e 20 69 73 20 63 61 6c  6c 65 64 20 62 65 66 6f  |n is called befo|
00010e30  72 65 20 74 68 65 20 6d  65 6e 75 20 69 73 0a 6f  |re the menu is.o|
00010e40  70 65 6e 65 64 2e 52 69  73 63 20 55 73 65 72 20  |pened.Risc User |
00010e50  4d 61 67 61 7a 69 6e 65  0a 53 70 65 63 69 61 6c  |Magazine.Special|
00010e60  20 74 68 61 6e 6b 73 20  74 6f 20 52 69 73 63 20  | thanks to Risc |
00010e70  55 73 65 72 20 66 6f 72  20 70 65 72 6d 69 73 73  |User for permiss|
00010e80  69 6f 6e 20 74 6f 0a 75  73 65 20 74 68 65 20 68  |ion to.use the h|
00010e90  65 61 70 20 6d 61 6e 61  67 65 72 20 63 6f 64 65  |eap manager code|
00010ea0  20 70 75 62 6c 69 73 68  65 64 20 69 6e 20 52 69  | published in Ri|
00010eb0  73 63 20 55 73 65 72 0a  56 6f 6c 75 6d 65 20 34  |sc User.Volume 4|
00010ec0  20 69 73 73 75 65 20 32  2c 20 77 69 74 68 6f 75  | issue 2, withou|
00010ed0  74 20 77 68 69 63 68 20  74 68 65 20 45 76 6e 74  |t which the Evnt|
00010ee0  53 68 65 6c 6c 0a 6c 69  62 72 61 72 79 20 77 6f  |Shell.library wo|
00010ef0  75 6c 64 20 6e 6f 74 20  62 65 20 70 6f 73 73 69  |uld not be possi|
00010f00  62 6c 65 2e 0a 0a 50 6c  65 61 73 65 20 6e 6f 74  |ble...Please not|
00010f10  65 20 74 68 61 74 20 61  6e 79 20 45 76 6e 74 53  |e that any EvntS|
00010f20  68 65 6c 6c 20 62 61 73  65 64 20 61 70 70 6c 69  |hell based appli|
00010f30  63 61 74 69 6f 6e 0a 64  69 73 74 72 69 62 75 74  |cation.distribut|
00010f40  65 64 20 66 6f 72 20 77  68 61 74 65 76 65 72 20  |ed for whatever |
00010f50  72 65 61 73 6f 6e 20 73  68 6f 75 6c 64 20 61 6c  |reason should al|
00010f60  73 6f 0a 61 63 6b 6e 6f  77 6c 65 64 67 65 20 52  |so.acknowledge R|
00010f70  69 73 63 20 55 73 65 72  27 73 20 63 6f 70 79 72  |isc User's copyr|
00010f80  69 67 68 74 20 6f 66 20  74 68 69 73 20 63 6f 64  |ight of this cod|
00010f90  65 2e 20 50 52 4f 43 73  68 65 6c 6c 5f 57 69 6e  |e. PROCshell_Win|
00010fa0  64 6f 77 42 72 69 6e 67  54 6f 54 6f 70 28 29 0a  |dowBringToTop().|
00010fb0  50 61 72 61 6d 73 20 3d  5c 3e 0a 20 20 20 20 20  |Params =\>.     |
00010fc0  20 20 20 20 69 6e 74 20  77 69 6e 64 6f 77 20 68  |    int window h|
00010fd0  61 6e 64 6c 65 20 74 6f  20 62 72 69 6e 67 20 74  |andle to bring t|
00010fe0  6f 20 74 6f 70 0a 0a 54  68 69 73 20 72 6f 75 74  |o top..This rout|
00010ff0  69 6e 65 20 63 61 75 73  65 73 20 61 20 77 69 6d  |ine causes a wim|
00011000  70 20 6d 65 73 73 61 67  65 20 74 6f 20 62 65 20  |p message to be |
00011010  73 65 6e 74 20 74 6f 0a  62 72 69 6e 67 20 61 20  |sent to.bring a |
00011020  77 69 6e 64 6f 77 20 74  6f 20 74 68 65 20 74 6f  |window to the to|
00011030  70 2e 20 59 6f 75 20 63  61 6e 6e 6f 74 20 75 73  |p. You cannot us|
00011040  65 20 74 68 69 73 0a 72  6f 75 74 69 6e 65 20 6f  |e this.routine o|
00011050  6e 20 77 69 6e 64 6f 77  73 20 6f 77 6e 65 64 20  |n windows owned |
00011060  62 79 20 79 6f 75 72 20  6f 77 6e 20 74 61 73 6b  |by your own task|
00011070  2c 20 62 75 74 0a 79 6f  75 20 63 61 6e 20 75 73  |, but.you can us|
00011080  65 20 3c 50 52 4f 43 73  68 65 6c 6c 5f 4f 70 65  |e <PROCshell_Ope|
00011090  6e 57 69 6e 64 6f 77 3e  20 69 6e 20 74 68 69 73  |nWindow> in this|
000110a0  20 63 61 73 65 2e 0a 0a  49 74 20 6d 61 79 20 74  | case...It may t|
000110b0  61 6b 65 20 73 65 76 65  72 61 6c 20 77 69 6d 70  |ake several wimp|
000110c0  20 70 6f 6c 6c 20 65 76  65 6e 74 73 20 62 65 66  | poll events bef|
000110d0  6f 72 65 20 74 68 65 0a  77 69 6e 64 6f 77 20 69  |ore the.window i|
000110e0  73 20 6f 70 65 6e 65 64  2c 20 68 6f 77 65 76 65  |s opened, howeve|
000110f0  72 2c 20 73 6f 20 79 6f  75 20 63 61 6e 6e 6f 74  |r, so you cannot|
00011100  20 61 73 73 75 6d 65 0a  69 74 20 69 73 20 61 63  | assume.it is ac|
00011110  74 75 61 6c 6c 79 20 6f  70 65 6e 20 69 6d 6d 65  |tually open imme|
00011120  64 69 61 74 65 6c 79 20  61 66 74 65 72 20 74 68  |diately after th|
00011130  69 73 20 63 61 6c 6c 2e  0a 0a 59 6f 75 20 63 61  |is call...You ca|
00011140  6e 20 75 73 65 20 3c 46  4e 73 68 65 6c 6c 5f 57  |n use <FNshell_W|
00011150  69 6e 64 6f 77 49 73 4f  6e 54 6f 70 3e 20 74 6f  |indowIsOnTop> to|
00011160  20 63 68 65 63 6b 20 74  68 65 0a 73 74 61 74 75  | check the.statu|
00011170  73 20 6f 66 20 74 68 65  20 77 69 6e 64 6f 77 20  |s of the window |
00011180  61 66 74 65 72 20 74 68  69 73 20 63 61 6c 6c 2e  |after this call.|
00011190  0a 0a 4c 69 62 72 61 72  79 20 47 72 6f 75 70 20  |..Library Group |
000111a0  3d 5c 3e 20 3c 57 69 6e  64 6f 77 73 3d 3e 4c 69  |=\> <Windows=>Li|
000111b0  62 47 72 6f 75 70 57 69  6e 64 6f 77 73 3e 46 4e  |bGroupWindows>FN|
000111c0  73 68 65 6c 6c 5f 57 69  6e 64 6f 77 49 73 4f 6e  |shell_WindowIsOn|
000111d0  54 6f 70 28 29 0a 50 61  72 61 6d 73 20 3d 3e 0a  |Top().Params =>.|
000111e0  20 20 20 20 20 20 20 20  20 69 6e 74 20 20 77 69  |         int  wi|
000111f0  6e 64 6f 77 20 68 61 6e  64 6c 65 0a 0a 20 20 20  |ndow handle..   |
00011200  20 20 20 20 5c 3c 3d 0a  20 20 20 20 20 20 20 20  |    \<=.        |
00011210  20 62 6f 6f 6c 20 54 52  55 45 20 69 66 20 77 69  | bool TRUE if wi|
00011220  6e 64 6f 77 20 69 73 20  6f 6e 20 74 6f 70 2c 20  |ndow is on top, |
00011230  6f 74 68 65 72 77 69 73  65 0a 20 20 20 20 20 20  |otherwise.      |
00011240  20 20 20 20 20 20 20 20  46 41 4c 53 45 0a 0a 54  |        FALSE..T|
00011250  68 69 73 20 66 75 6e 63  74 69 6f 6e 20 63 61 6e  |his function can|
00011260  20 62 65 20 75 73 65 64  20 74 6f 20 64 69 73 63  | be used to disc|
00011270  6f 76 65 72 20 69 66 20  74 68 65 20 67 69 76 65  |over if the give|
00011280  6e 0a 77 69 6e 64 6f 77  20 69 73 20 6f 6e 20 74  |n.window is on t|
00011290  6f 70 20 6f 66 20 74 68  65 20 73 74 61 63 6b 20  |op of the stack |
000112a0  28 69 2e 65 2e 20 63 6f  6d 70 6c 65 74 65 6c 79  |(i.e. completely|
000112b0  0a 75 6e 63 6f 76 65 72  65 64 29 2e 20 49 74 20  |.uncovered). It |
000112c0  69 73 20 65 73 70 65 63  69 61 6c 6c 79 20 75 73  |is especially us|
000112d0  65 66 75 6c 20 61 66 74  65 72 20 61 20 63 61 6c  |eful after a cal|
000112e0  6c 0a 74 6f 20 3c 50 52  4f 43 73 68 65 6c 6c 5f  |l.to <PROCshell_|
000112f0  57 69 6e 64 6f 77 42 72  69 6e 67 54 6f 54 6f 70  |WindowBringToTop|
00011300  3e 20 61 73 20 69 74 20  6d 61 79 20 74 61 6b 65  |> as it may take|
00011310  0a 73 65 76 65 72 61 6c  20 63 61 6c 6c 73 20 74  |.several calls t|
00011320  6f 20 57 69 6d 70 5f 50  6f 6c 6c 20 62 65 66 6f  |o Wimp_Poll befo|
00011330  72 65 20 74 68 65 20 77  69 6e 64 6f 77 20 69 73  |re the window is|
00011340  0a 62 72 6f 75 67 68 74  20 74 6f 20 74 68 65 20  |.brought to the |
00011350  74 6f 70 2e 20 54 68 65  20 77 69 6e 64 6f 77 20  |top. The window |
00011360  6d 61 79 20 62 65 6c 6f  6e 67 20 74 6f 20 61 6e  |may belong to an|
00011370  6f 74 68 65 72 0a 74 61  73 6b 2e 0a 0a 4c 69 62  |other.task...Lib|
00011380  72 61 72 79 20 47 72 6f  75 70 20 3d 5c 3e 20 3c  |rary Group =\> <|
00011390  57 69 6e 64 6f 77 73 3d  3e 4c 69 62 47 72 6f 75  |Windows=>LibGrou|
000113a0  70 57 69 6e 64 6f 77 73  3e 50 52 4f 43 73 68 65  |pWindows>PROCshe|
000113b0  6c 6c 5f 4d 65 6e 75 54  69 63 6b 28 29 0a 50 61  |ll_MenuTick().Pa|
000113c0  72 61 6d 73 20 3d 3e 0a  20 20 20 20 20 20 20 20  |rams =>.        |
000113d0  20 69 6e 74 20 6d 65 6e  75 20 6f 72 20 69 74 65  | int menu or ite|
000113e0  6d 20 68 61 6e 64 6c 65  0a 20 20 20 20 20 20 20  |m handle.       |
000113f0  20 20 69 6e 74 20 3c 73  74 61 74 65 3d 3e 6d 65  |  int <state=>me|
00011400  6e 75 74 69 63 6b 66 6c  61 67 73 3e 0a 0a 41 64  |nutickflags>..Ad|
00011410  64 73 20 6f 72 20 72 65  6d 6f 76 65 73 20 74 69  |ds or removes ti|
00011420  63 6b 73 20 66 6f 72 20  6d 65 6e 75 0a 69 74 65  |cks for menu.ite|
00011430  6d 73 2e 20 49 66 20 61  20 6d 65 6e 75 20 68 61  |ms. If a menu ha|
00011440  6e 64 6c 65 20 69 73 20  67 69 76 65 6e 0a 74 68  |ndle is given.th|
00011450  65 6e 20 61 6c 6c 20 69  74 65 6d 73 20 69 6e 20  |en all items in |
00011460  74 68 65 20 6d 65 6e 75  20 61 72 65 0a 74 69 63  |the menu are.tic|
00011470  6b 65 64 20 6f 72 20 6e  6f 74 20 74 69 63 6b 65  |ked or not ticke|
00011480  64 2e 0a 0a 53 65 65 20  61 6c 73 6f 20 3c 50 52  |d...See also <PR|
00011490  4f 43 73 68 65 6c 6c 5f  4d 65 6e 75 54 69 63 6b  |OCshell_MenuTick|
000114a0  4f 6e 6c 79 31 3e 2c 0a  20 20 20 20 20 20 20 20  |Only1>,.        |
000114b0  20 3c 50 52 4f 43 73 68  65 6c 6c 5f 4d 65 6e 75  | <PROCshell_Menu|
000114c0  54 69 63 6b 4f 6e 6c 79  32 3e 0a 0a 4c 69 62 72  |TickOnly2>..Libr|
000114d0  61 72 79 20 47 72 6f 75  70 20 3d 3e 20 3c 4d 65  |ary Group => <Me|
000114e0  6e 75 73 3d 3e 4c 69 62  47 72 6f 75 70 4d 65 6e  |nus=>LibGroupMen|
000114f0  75 73 3e 50 52 4f 43 73  68 65 6c 6c 5f 4d 65 6e  |us>PROCshell_Men|
00011500  75 53 68 61 64 65 28 29  0a 50 61 72 61 6d 73 20  |uShade().Params |
00011510  3d 3e 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |=>.         int |
00011520  6d 65 6e 75 20 6f 72 20  69 74 65 6d 20 68 61 6e  |menu or item han|
00011530  64 6c 65 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |dle.         int|
00011540  20 3c 73 74 61 74 65 3d  3e 6d 65 6e 75 73 68 61  | <state=>menusha|
00011550  64 65 66 6c 61 67 73 3e  0a 0a 53 68 61 64 65 73  |deflags>..Shades|
00011560  20 6d 65 6e 75 20 69 74  65 6d 73 2e 20 49 66 20  | menu items. If |
00011570  61 20 6d 65 6e 75 20 68  61 6e 64 6c 65 20 69 73  |a menu handle is|
00011580  0a 67 69 76 65 6e 20 74  68 65 6e 20 61 6c 6c 20  |.given then all |
00011590  69 74 65 6d 73 20 69 6e  20 74 68 65 20 6d 65 6e  |items in the men|
000115a0  75 20 61 72 65 0a 73 68  61 64 65 64 20 6f 72 20  |u are.shaded or |
000115b0  64 65 73 68 61 64 65 64  2e 0a 0a 4c 69 62 72 61  |deshaded...Libra|
000115c0  72 79 20 47 72 6f 75 70  20 3d 3e 20 3c 4d 65 6e  |ry Group => <Men|
000115d0  75 73 3d 3e 4c 69 62 47  72 6f 75 70 4d 65 6e 75  |us=>LibGroupMenu|
000115e0  73 3e 4d 65 6e 75 20 54  69 63 6b 20 53 74 61 74  |s>Menu Tick Stat|
000115f0  65 73 0a 54 68 65 20 73  74 61 74 65 20 69 73 20  |es.The state is |
00011600  30 20 66 6f 72 20 6e 6f  20 20 74 69 63 6b 2c 20  |0 for no  tick, |
00011610  6e 6f 6e 20 30 20 66 6f  72 20 61 20 74 69 63 6b  |non 0 for a tick|
00011620  2e 4d 65 6e 75 20 53 68  61 64 65 20 53 74 61 74  |.Menu Shade Stat|
00011630  65 73 0a 54 68 65 20 73  74 61 74 65 20 69 73 20  |es.The state is |
00011640  30 20 66 6f 72 20 6e 6f  20 73 68 61 64 69 6e 67  |0 for no shading|
00011650  2c 20 6e 6f 6e 20 30 20  66 6f 72 20 73 68 61 64  |, non 0 for shad|
00011660  69 6e 67 2e 53 6f 6d 65  20 43 6f 6d 6d 6f 6e 20  |ing.Some Common |
00011670  51 75 65 73 74 69 6f 6e  73 0a 57 68 79 20 64 6f  |Questions.Why do|
00011680  65 73 6e 27 74 20 61 20  64 72 61 67 20 62 6f 78  |esn't a drag box|
00011690  20 61 70 70 65 61 72 20  61 72 6f 75 6e 64 20 61  | appear around a|
000116a0  6e 20 69 63 6f 6e 20 65  76 65 6e 0a 74 68 6f 75  |n icon even.thou|
000116b0  67 68 20 49 20 68 61 76  65 20 73 65 74 20 74 68  |gh I have set th|
000116c0  65 20 69 63 6f 6e 20 74  6f 20 62 65 20 64 72 61  |e icon to be dra|
000116d0  67 61 62 6c 65 20 75 73  69 6e 67 20 61 0a 74 65  |gable using a.te|
000116e0  6d 70 6c 61 74 65 20 65  64 69 74 6f 72 3f 0a 0a  |mplate editor?..|
000116f0  20 20 54 68 69 73 20 69  73 20 62 65 63 61 75 73  |  This is becaus|
00011700  65 20 79 6f 75 20 68 61  76 65 20 6e 6f 74 20 61  |e you have not a|
00011710  74 74 61 63 68 65 64 20  61 6e 20 65 76 65 6e 74  |ttached an event|
00011720  20 68 61 6e 64 6c 65 72  0a 20 20 74 6f 20 64 65  | handler.  to de|
00011730  66 69 6e 65 20 77 68 61  74 20 68 61 70 70 65 6e  |fine what happen|
00011740  73 20 77 68 65 6e 20 74  68 65 20 62 75 74 74 6f  |s when the butto|
00011750  6e 20 69 73 20 72 65 6c  65 61 73 65 64 2e 20 49  |n is released. I|
00011760  66 0a 20 20 79 6f 75 20  61 74 74 61 63 68 20 61  |f.  you attach a|
00011770  20 64 72 61 67 20 68 61  6e 64 6c 65 72 20 77 69  | drag handler wi|
00011780  74 68 20 3c 50 52 4f 43  73 68 65 6c 6c 5f 41 74  |th <PROCshell_At|
00011790  74 61 63 68 44 61 74 61  4c 6f 61 64 3e 0a 20 20  |tachDataLoad>.  |
000117a0  66 6f 72 20 65 78 61 6d  70 6c 65 20 74 68 65 6e  |for example then|
000117b0  20 61 6c 6c 20 77 69 6c  6c 20 62 65 20 77 65 6c  | all will be wel|
000117c0  6c 2e 0a 0a 57 68 79 20  69 73 20 69 63 6f 6e 20  |l...Why is icon |
000117d0  30 20 69 6e 20 61 20 64  79 6e 61 6d 69 63 20 64  |0 in a dynamic d|
000117e0  69 61 6c 6f 67 20 62 6f  78 20 61 70 70 61 72 65  |ialog box appare|
000117f0  6e 74 6c 79 20 63 6c 69  63 6b 65 64 0a 6f 76 65  |ntly clicked.ove|
00011800  72 20 77 68 65 6e 20 74  68 65 20 52 45 54 55 52  |r when the RETUR|
00011810  4e 20 6b 65 79 20 69 73  20 70 72 65 73 73 65 64  |N key is pressed|
00011820  20 69 6e 20 74 68 65 20  6c 61 73 74 20 77 72 69  | in the last wri|
00011830  74 65 61 62 6c 65 0a 69  63 6f 6e 2c 20 72 65 73  |teable.icon, res|
00011840  75 6c 74 69 6e 67 20 69  6e 20 74 68 65 20 64 69  |ulting in the di|
00011850  61 6c 6f 67 20 62 6f 78  20 62 65 69 6e 67 20 63  |alog box being c|
00011860  6c 6f 73 65 64 3f 0a 0a  20 20 54 68 69 73 20 69  |losed?..  This i|
00011870  73 20 74 68 65 20 41 63  6f 72 6e 20 64 65 66 69  |s the Acorn defi|
00011880  6e 65 64 20 52 49 53 43  2d 4f 53 20 73 74 61 6e  |ned RISC-OS stan|
00011890  64 61 72 64 20 62 65 68  61 76 69 6f 75 72 2e 0a  |dard behaviour..|
000118a0  20 20 4e 6f 74 65 2c 20  68 6f 77 65 76 65 72 2c  |  Note, however,|
000118b0  20 74 68 61 74 20 61 20  62 75 67 20 69 6e 20 74  | that a bug in t|
000118c0  68 65 20 45 76 6e 74 53  68 65 6c 6c 20 6c 69 62  |he EvntShell lib|
000118d0  72 61 72 79 0a 20 20 63  6f 64 65 20 69 6e 20 76  |rary.  code in v|
000118e0  65 72 73 69 6f 6e 73 20  70 72 69 6f 72 20 74 6f  |ersions prior to|
000118f0  20 31 2e 30 35 20 63 61  75 73 65 64 20 74 68 69  | 1.05 caused thi|
00011900  73 20 62 65 68 61 76 69  6f 75 72 0a 20 20 77 69  |s behaviour.  wi|
00011910  74 68 20 27 53 74 61 74  69 63 27 20 77 69 6e 64  |th 'Static' wind|
00011920  6f 77 73 20 61 73 20 77  65 6c 6c 20 77 68 69 63  |ows as well whic|
00011930  68 20 77 61 73 20 6e 6f  74 20 77 68 61 74 20 77  |h was not what w|
00011940  61 73 0a 20 20 69 6e 74  65 6e 64 65 64 21 46 4e  |as.  intended!FN|
00011950  73 68 65 6c 6c 5f 57 69  6e 64 6f 77 48 61 73 54  |shell_WindowHasT|
00011960  69 74 6c 65 42 61 72 28  29 0a 50 61 72 61 6d 73  |itleBar().Params|
00011970  20 3d 3e 0a 20 20 20 20  20 20 20 20 20 69 6e 74  | =>.         int|
00011980  20 20 77 69 6e 64 6f 77  20 68 61 6e 64 6c 65 0a  |  window handle.|
00011990  0a 20 20 20 20 20 20 20  5c 3c 3d 0a 20 20 20 20  |.       \<=.    |
000119a0  20 20 20 20 20 62 6f 6f  6c 20 54 52 55 45 20 69  |     bool TRUE i|
000119b0  66 20 77 69 6e 64 6f 77  20 68 61 73 20 61 20 74  |f window has a t|
000119c0  69 74 6c 65 20 62 61 72  2c 20 6f 74 68 65 72 77  |itle bar, otherw|
000119d0  69 73 65 0a 20 20 20 20  20 20 20 20 20 20 20 20  |ise.            |
000119e0  20 20 46 41 4c 53 45 0a  0a 4c 69 62 72 61 72 79  |  FALSE..Library|
000119f0  20 47 72 6f 75 70 20 3d  5c 3e 20 3c 57 69 6e 64  | Group =\> <Wind|
00011a00  6f 77 73 3d 3e 4c 69 62  47 72 6f 75 70 57 69 6e  |ows=>LibGroupWin|
00011a10  64 6f 77 73 3e 46 4e 73  68 65 6c 6c 5f 57 69 6e  |dows>FNshell_Win|
00011a20  64 6f 77 47 65 74 54 69  74 6c 65 28 29 0a 50 61  |dowGetTitle().Pa|
00011a30  72 61 6d 73 20 3d 3e 0a  20 20 20 20 20 20 20 20  |rams =>.        |
00011a40  20 69 6e 74 20 77 69 6e  64 6f 77 20 68 61 6e 64  | int window hand|
00011a50  6c 65 0a 0a 20 20 20 20  20 20 20 5c 3c 3d 0a 20  |le..       \<=. |
00011a60  20 20 20 20 20 20 20 20  73 74 72 20 77 69 6e 64  |        str wind|
00011a70  6f 77 20 74 69 74 6c 65  20 28 6e 75 6c 6c 20 69  |ow title (null i|
00011a80  66 20 6e 6f 20 74 69 74  6c 65 29 0a 0a 4c 69 62  |f no title)..Lib|
00011a90  72 61 72 79 20 47 72 6f  75 70 20 3d 5c 3e 20 3c  |rary Group =\> <|
00011aa0  57 69 6e 64 6f 77 73 3d  3e 4c 69 62 47 72 6f 75  |Windows=>LibGrou|
00011ab0  70 57 69 6e 64 6f 77 73  3e 46 4e 73 68 65 6c 6c  |pWindows>FNshell|
00011ac0  5f 57 69 6e 64 6f 77 54  69 74 6c 65 42 75 66 66  |_WindowTitleBuff|
00011ad0  65 72 4c 65 6e 67 74 68  28 29 0a 50 61 72 61 6d  |erLength().Param|
00011ae0  73 20 3d 3e 0a 20 20 20  20 20 20 20 20 20 69 6e  |s =>.         in|
00011af0  74 20 77 69 6e 64 6f 77  20 68 61 6e 64 6c 65 0a  |t window handle.|
00011b00  0a 20 20 20 20 20 20 20  5c 3c 3d 0a 20 20 20 20  |.       \<=.    |
00011b10  20 20 20 20 20 69 6e 74  20 62 75 66 66 65 72 20  |     int buffer |
00011b20  6c 65 6e 67 74 68 20 28  31 32 20 69 66 20 74 69  |length (12 if ti|
00011b30  74 6c 65 20 69 73 20 6e  6f 74 0a 20 20 20 20 20  |tle is not.     |
00011b40  20 20 20 20 20 20 20 20  69 6e 64 69 72 65 63 74  |        indirect|
00011b50  65 64 29 0a 0a 4c 69 62  72 61 72 79 20 47 72 6f  |ed)..Library Gro|
00011b60  75 70 20 3d 5c 3e 20 3c  57 69 6e 64 6f 77 73 3d  |up =\> <Windows=|
00011b70  3e 4c 69 62 47 72 6f 75  70 57 69 6e 64 6f 77 73  |>LibGroupWindows|
00011b80  3e 46 4e 73 68 65 6c 6c  5f 57 69 6e 64 6f 77 49  |>FNshell_WindowI|
00011b90  73 4d 6f 76 65 61 62 6c  65 28 29 0a 50 61 72 61  |sMoveable().Para|
00011ba0  6d 73 20 3d 3e 0a 20 20  20 20 20 20 20 20 20 69  |ms =>.         i|
00011bb0  6e 74 20 20 77 69 6e 64  6f 77 20 68 61 6e 64 6c  |nt  window handl|
00011bc0  65 0a 0a 20 20 20 20 20  20 20 5c 3c 3d 0a 20 20  |e..       \<=.  |
00011bd0  20 20 20 20 20 20 20 62  6f 6f 6c 20 54 52 55 45  |       bool TRUE|
00011be0  20 69 66 20 77 69 6e 64  6f 77 20 69 73 20 6d 6f  | if window is mo|
00011bf0  76 65 61 62 6c 65 2c 20  6f 74 68 65 72 77 69 73  |veable, otherwis|
00011c00  65 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |e.              |
00011c10  46 41 4c 53 45 0a 0a 4c  69 62 72 61 72 79 20 47  |FALSE..Library G|
00011c20  72 6f 75 70 20 3d 5c 3e  20 3c 57 69 6e 64 6f 77  |roup =\> <Window|
00011c30  73 3d 3e 4c 69 62 47 72  6f 75 70 57 69 6e 64 6f  |s=>LibGroupWindo|
00011c40  77 73 3e 46 4e 73 68 65  6c 6c 5f 57 69 6e 64 6f  |ws>FNshell_Windo|
00011c50  77 49 73 41 50 61 6e 65  28 29 0a 50 61 72 61 6d  |wIsAPane().Param|
00011c60  73 20 3d 3e 0a 20 20 20  20 20 20 20 20 20 69 6e  |s =>.         in|
00011c70  74 20 20 77 69 6e 64 6f  77 20 68 61 6e 64 6c 65  |t  window handle|
00011c80  0a 0a 20 20 20 20 20 20  20 5c 3c 3d 0a 20 20 20  |..       \<=.   |
00011c90  20 20 20 20 20 20 62 6f  6f 6c 20 54 52 55 45 20  |      bool TRUE |
00011ca0  69 66 20 77 69 6e 64 6f  77 20 69 73 20 61 20 70  |if window is a p|
00011cb0  61 6e 65 2c 20 6f 74 68  65 72 77 69 73 65 0a 20  |ane, otherwise. |
00011cc0  20 20 20 20 20 20 20 20  20 20 20 20 20 46 41 4c  |             FAL|
00011cd0  53 45 0a 0a 4c 69 62 72  61 72 79 20 47 72 6f 75  |SE..Library Grou|
00011ce0  70 20 3d 5c 3e 20 3c 57  69 6e 64 6f 77 73 3d 3e  |p =\> <Windows=>|
00011cf0  4c 69 62 47 72 6f 75 70  57 69 6e 64 6f 77 73 3e  |LibGroupWindows>|
00011d00  46 4e 73 68 65 6c 6c 5f  57 69 6e 64 6f 77 49 73  |FNshell_WindowIs|
00011d10  4e 6f 74 42 6f 75 6e 64  65 64 28 29 0a 50 61 72  |NotBounded().Par|
00011d20  61 6d 73 20 3d 3e 0a 20  20 20 20 20 20 20 20 20  |ams =>.         |
00011d30  69 6e 74 20 20 77 69 6e  64 6f 77 20 68 61 6e 64  |int  window hand|
00011d40  6c 65 0a 0a 20 20 20 20  20 20 20 5c 3c 3d 0a 20  |le..       \<=. |
00011d50  20 20 20 20 20 20 20 20  62 6f 6f 6c 20 54 52 55  |        bool TRU|
00011d60  45 20 69 66 20 77 69 6e  64 6f 77 20 6d 61 79 20  |E if window may |
00011d70  6d 6f 76 65 20 6f 75 74  73 69 64 65 0a 20 20 20  |move outside.   |
00011d80  20 20 20 20 20 20 20 20  20 20 20 74 68 65 20 73  |           the s|
00011d90  63 72 65 65 6e 20 61 72  65 61 2c 20 6f 74 68 65  |creen area, othe|
00011da0  72 77 69 73 65 20 46 41  4c 53 45 0a 0a 4c 69 62  |rwise FALSE..Lib|
00011db0  72 61 72 79 20 47 72 6f  75 70 20 3d 5c 3e 20 3c  |rary Group =\> <|
00011dc0  57 69 6e 64 6f 77 73 3d  3e 4c 69 62 47 72 6f 75  |Windows=>LibGrou|
00011dd0  70 57 69 6e 64 6f 77 73  3e 46 4e 73 68 65 6c 6c  |pWindows>FNshell|
00011de0  5f 57 69 6e 64 6f 77 54  72 61 70 73 48 6f 74 4b  |_WindowTrapsHotK|
00011df0  65 79 73 28 29 0a 50 61  72 61 6d 73 20 3d 3e 0a  |eys().Params =>.|
00011e00  20 20 20 20 20 20 20 20  20 69 6e 74 20 20 77 69  |         int  wi|
00011e10  6e 64 6f 77 20 68 61 6e  64 6c 65 0a 0a 20 20 20  |ndow handle..   |
00011e20  20 20 20 20 5c 3c 3d 0a  20 20 20 20 20 20 20 20  |    \<=.        |
00011e30  20 62 6f 6f 6c 20 54 52  55 45 20 69 66 20 77 69  | bool TRUE if wi|
00011e40  6e 64 6f 77 20 74 72 61  70 73 20 68 6f 74 20 6b  |ndow traps hot k|
00011e50  65 79 73 2c 0a 20 20 20  20 20 20 20 20 20 20 20  |eys,.           |
00011e60  20 20 20 6f 74 68 65 72  77 69 73 65 20 46 41 4c  |   otherwise FAL|
00011e70  53 45 0a 0a 4c 69 62 72  61 72 79 20 47 72 6f 75  |SE..Library Grou|
00011e80  70 20 3d 5c 3e 20 3c 57  69 6e 64 6f 77 73 3d 3e  |p =\> <Windows=>|
00011e90  4c 69 62 47 72 6f 75 70  57 69 6e 64 6f 77 73 3e  |LibGroupWindows>|
00011ea0  46 4e 73 68 65 6c 6c 5f  57 69 6e 64 6f 77 48 61  |FNshell_WindowHa|
00011eb0  73 42 65 65 6e 54 6f 67  67 6c 65 64 28 29 0a 50  |sBeenToggled().P|
00011ec0  61 72 61 6d 73 20 3d 3e  0a 20 20 20 20 20 20 20  |arams =>.       |
00011ed0  20 20 69 6e 74 20 20 77  69 6e 64 6f 77 20 68 61  |  int  window ha|
00011ee0  6e 64 6c 65 0a 0a 20 20  20 20 20 20 20 5c 3c 3d  |ndle..       \<=|
00011ef0  0a 20 20 20 20 20 20 20  20 20 62 6f 6f 6c 20 54  |.         bool T|
00011f00  52 55 45 20 69 66 20 77  69 6e 64 6f 77 20 68 61  |RUE if window ha|
00011f10  73 20 62 65 65 6e 20 74  6f 67 67 6c 65 64 20 74  |s been toggled t|
00011f20  6f 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |o.              |
00011f30  66 75 6c 6c 20 73 69 7a  65 2c 20 6f 74 68 65 72  |full size, other|
00011f40  77 69 73 65 20 46 41 4c  53 45 0a 0a 4c 69 62 72  |wise FALSE..Libr|
00011f50  61 72 79 20 47 72 6f 75  70 20 3d 5c 3e 20 3c 57  |ary Group =\> <W|
00011f60  69 6e 64 6f 77 73 3d 3e  4c 69 62 47 72 6f 75 70  |indows=>LibGroup|
00011f70  57 69 6e 64 6f 77 73 3e  46 4e 73 68 65 6c 6c 5f  |Windows>FNshell_|
00011f80  57 69 6e 64 6f 77 48 61  73 49 6e 70 75 74 46 6f  |WindowHasInputFo|
00011f90  63 75 73 28 29 0a 50 61  72 61 6d 73 20 3d 3e 0a  |cus().Params =>.|
00011fa0  20 20 20 20 20 20 20 20  20 69 6e 74 20 20 77 69  |         int  wi|
00011fb0  6e 64 6f 77 20 68 61 6e  64 6c 65 0a 0a 20 20 20  |ndow handle..   |
00011fc0  20 20 20 20 5c 3c 3d 0a  20 20 20 20 20 20 20 20  |    \<=.        |
00011fd0  20 62 6f 6f 6c 20 54 52  55 45 20 69 66 20 77 69  | bool TRUE if wi|
00011fe0  6e 64 6f 77 20 68 61 73  20 74 68 65 20 69 6e 70  |ndow has the inp|
00011ff0  75 74 20 66 6f 63 75 73  2c 0a 20 20 20 20 20 20  |ut focus,.      |
00012000  20 20 20 20 20 20 20 20  6f 74 68 65 72 77 69 73  |        otherwis|
00012010  65 20 46 41 4c 53 45 0a  0a 4c 69 62 72 61 72 79  |e FALSE..Library|
00012020  20 47 72 6f 75 70 20 3d  5c 3e 20 3c 57 69 6e 64  | Group =\> <Wind|
00012030  6f 77 73 3d 3e 4c 69 62  47 72 6f 75 70 57 69 6e  |ows=>LibGroupWin|
00012040  64 6f 77 73 3e 46 4e 73  68 65 6c 6c 5f 57 69 6e  |dows>FNshell_Win|
00012050  64 6f 77 48 61 73 42 61  63 6b 49 63 6f 6e 28 29  |dowHasBackIcon()|
00012060  0a 50 61 72 61 6d 73 20  3d 3e 0a 20 20 20 20 20  |.Params =>.     |
00012070  20 20 20 20 69 6e 74 20  20 77 69 6e 64 6f 77 20  |    int  window |
00012080  68 61 6e 64 6c 65 0a 0a  20 20 20 20 20 20 20 5c  |handle..       \|
00012090  3c 3d 0a 20 20 20 20 20  20 20 20 20 62 6f 6f 6c  |<=.         bool|
000120a0  20 54 52 55 45 20 69 66  20 77 69 6e 64 6f 77 20  | TRUE if window |
000120b0  68 61 73 20 61 20 73 65  6e 64 20 74 6f 20 62 61  |has a send to ba|
000120c0  63 6b 20 69 63 6f 6e 2c  0a 20 20 20 20 20 20 20  |ck icon,.       |
000120d0  20 20 20 20 20 20 20 6f  74 68 65 72 77 69 73 65  |       otherwise|
000120e0  20 46 41 4c 53 45 0a 0a  4c 69 62 72 61 72 79 20  | FALSE..Library |
000120f0  47 72 6f 75 70 20 3d 5c  3e 20 3c 57 69 6e 64 6f  |Group =\> <Windo|
00012100  77 73 3d 3e 4c 69 62 47  72 6f 75 70 57 69 6e 64  |ws=>LibGroupWind|
00012110  6f 77 73 3e 46 4e 73 68  65 6c 6c 5f 57 69 6e 64  |ows>FNshell_Wind|
00012120  6f 77 48 61 73 43 6c 6f  73 65 49 63 6f 6e 28 29  |owHasCloseIcon()|
00012130  0a 50 61 72 61 6d 73 20  3d 3e 0a 20 20 20 20 20  |.Params =>.     |
00012140  20 20 20 20 69 6e 74 20  20 77 69 6e 64 6f 77 20  |    int  window |
00012150  68 61 6e 64 6c 65 0a 0a  20 20 20 20 20 20 20 5c  |handle..       \|
00012160  3c 3d 0a 20 20 20 20 20  20 20 20 20 62 6f 6f 6c  |<=.         bool|
00012170  20 54 52 55 45 20 69 66  20 77 69 6e 64 6f 77 20  | TRUE if window |
00012180  68 61 73 20 61 20 63 6c  6f 73 65 20 69 63 6f 6e  |has a close icon|
00012190  2c 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |,.              |
000121a0  6f 74 68 65 72 77 69 73  65 20 46 41 4c 53 45 0a  |otherwise FALSE.|
000121b0  0a 4c 69 62 72 61 72 79  20 47 72 6f 75 70 20 3d  |.Library Group =|
000121c0  5c 3e 20 3c 57 69 6e 64  6f 77 73 3d 3e 4c 69 62  |\> <Windows=>Lib|
000121d0  47 72 6f 75 70 57 69 6e  64 6f 77 73 3e 46 4e 73  |GroupWindows>FNs|
000121e0  68 65 6c 6c 5f 57 69 6e  64 6f 77 48 61 73 54 6f  |hell_WindowHasTo|
000121f0  67 67 6c 65 49 63 6f 6e  28 29 0a 50 61 72 61 6d  |ggleIcon().Param|
00012200  73 20 3d 3e 0a 20 20 20  20 20 20 20 20 20 69 6e  |s =>.         in|
00012210  74 20 20 77 69 6e 64 6f  77 20 68 61 6e 64 6c 65  |t  window handle|
00012220  0a 0a 20 20 20 20 20 20  20 5c 3c 3d 0a 20 20 20  |..       \<=.   |
00012230  20 20 20 20 20 20 62 6f  6f 6c 20 54 52 55 45 20  |      bool TRUE |
00012240  69 66 20 77 69 6e 64 6f  77 20 68 61 73 20 61 20  |if window has a |
00012250  74 6f 67 67 6c 65 20 69  63 6f 6e 2c 0a 20 20 20  |toggle icon,.   |
00012260  20 20 20 20 20 20 20 20  20 20 20 6f 74 68 65 72  |           other|
00012270  77 69 73 65 20 46 41 4c  53 45 0a 0a 4c 69 62 72  |wise FALSE..Libr|
00012280  61 72 79 20 47 72 6f 75  70 20 3d 5c 3e 20 3c 57  |ary Group =\> <W|
00012290  69 6e 64 6f 77 73 3d 3e  4c 69 62 47 72 6f 75 70  |indows=>LibGroup|
000122a0  57 69 6e 64 6f 77 73 3e  46 4e 73 68 65 6c 6c 5f  |Windows>FNshell_|
000122b0  57 69 6e 64 6f 77 48 61  73 56 53 63 72 6f 6c 6c  |WindowHasVScroll|
000122c0  42 61 72 28 29 0a 50 61  72 61 6d 73 20 3d 3e 0a  |Bar().Params =>.|
000122d0  20 20 20 20 20 20 20 20  20 69 6e 74 20 20 77 69  |         int  wi|
000122e0  6e 64 6f 77 20 68 61 6e  64 6c 65 0a 0a 20 20 20  |ndow handle..   |
000122f0  20 20 20 20 5c 3c 3d 0a  20 20 20 20 20 20 20 20  |    \<=.        |
00012300  20 62 6f 6f 6c 20 54 52  55 45 20 69 66 20 77 69  | bool TRUE if wi|
00012310  6e 64 6f 77 20 68 61 73  20 61 20 76 65 72 74 69  |ndow has a verti|
00012320  63 61 6c 20 73 63 72 6f  6c 6c 20 62 61 72 2c 0a  |cal scroll bar,.|
00012330  20 20 20 20 20 20 20 20  20 20 20 20 20 20 6f 74  |              ot|
00012340  68 65 72 77 69 73 65 20  46 41 4c 53 45 0a 0a 4c  |herwise FALSE..L|
00012350  69 62 72 61 72 79 20 47  72 6f 75 70 20 3d 5c 3e  |ibrary Group =\>|
00012360  20 3c 57 69 6e 64 6f 77  73 3d 3e 4c 69 62 47 72  | <Windows=>LibGr|
00012370  6f 75 70 57 69 6e 64 6f  77 73 3e 46 4e 73 68 65  |oupWindows>FNshe|
00012380  6c 6c 5f 57 69 6e 64 6f  77 48 61 73 48 53 63 72  |ll_WindowHasHScr|
00012390  6f 6c 6c 42 61 72 28 29  0a 50 61 72 61 6d 73 20  |ollBar().Params |
000123a0  3d 3e 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |=>.         int |
000123b0  20 77 69 6e 64 6f 77 20  68 61 6e 64 6c 65 0a 0a  | window handle..|
000123c0  20 20 20 20 20 20 20 5c  3c 3d 0a 20 20 20 20 20  |       \<=.     |
000123d0  20 20 20 20 62 6f 6f 6c  20 54 52 55 45 20 69 66  |    bool TRUE if|
000123e0  20 77 69 6e 64 6f 77 20  68 61 73 20 61 20 68 6f  | window has a ho|
000123f0  72 69 7a 6f 6e 74 61 6c  20 73 63 72 6f 6c 6c 20  |rizontal scroll |
00012400  62 61 72 2c 0a 20 20 20  20 20 20 20 20 20 20 20  |bar,.           |
00012410  20 20 20 6f 74 68 65 72  77 69 73 65 20 46 41 4c  |   otherwise FAL|
00012420  53 45 0a 0a 4c 69 62 72  61 72 79 20 47 72 6f 75  |SE..Library Grou|
00012430  70 20 3d 5c 3e 20 3c 57  69 6e 64 6f 77 73 3d 3e  |p =\> <Windows=>|
00012440  4c 69 62 47 72 6f 75 70  57 69 6e 64 6f 77 73 3e  |LibGroupWindows>|
00012450  46 4e 73 68 65 6c 6c 5f  57 69 6e 64 6f 77 48 61  |FNshell_WindowHa|
00012460  73 41 64 6a 75 73 74 53  69 7a 65 49 63 6f 6e 28  |sAdjustSizeIcon(|
00012470  29 0a 50 61 72 61 6d 73  20 3d 3e 0a 20 20 20 20  |).Params =>.    |
00012480  20 20 20 20 20 69 6e 74  20 20 77 69 6e 64 6f 77  |     int  window|
00012490  20 68 61 6e 64 6c 65 0a  0a 20 20 20 20 20 20 20  | handle..       |
000124a0  5c 3c 3d 0a 20 20 20 20  20 20 20 20 20 62 6f 6f  |\<=.         boo|
000124b0  6c 20 54 52 55 45 20 69  66 20 77 69 6e 64 6f 77  |l TRUE if window|
000124c0  20 68 61 73 20 61 6e 20  61 64 6a 75 73 74 20 73  | has an adjust s|
000124d0  69 7a 65 20 69 63 6f 6e  2c 0a 20 20 20 20 20 20  |ize icon,.      |
000124e0  20 20 20 20 20 20 20 20  6f 74 68 65 72 77 69 73  |        otherwis|
000124f0  65 20 46 41 4c 53 45 0a  0a 4c 69 62 72 61 72 79  |e FALSE..Library|
00012500  20 47 72 6f 75 70 20 3d  5c 3e 20 3c 57 69 6e 64  | Group =\> <Wind|
00012510  6f 77 73 3d 3e 4c 69 62  47 72 6f 75 70 57 69 6e  |ows=>LibGroupWin|
00012520  64 6f 77 73 3e 4d 61 69  6e 20 49 6e 64 65 78 0a  |dows>Main Index.|
00012530  23 54 61 62 6c 65 20 39  20 31 30 0a 3c 44 65 62  |#Table 9 10.<Deb|
00012540  75 67 20 20 20 20 3d 3e  4c 69 62 47 72 6f 75 70  |ug    =>LibGroup|
00012550  44 65 62 75 67 3e 0a 3c  44 72 61 77 20 20 20 20  |Debug>.<Draw    |
00012560  20 3d 3e 4c 69 62 47 72  6f 75 70 44 72 61 77 3e  | =>LibGroupDraw>|
00012570  0a 3c 45 76 65 6e 74 73  20 20 20 3d 3e 4c 69 62  |.<Events   =>Lib|
00012580  47 72 6f 75 70 45 76 65  6e 74 73 3e 0a 3c 46 69  |GroupEvents>.<Fi|
00012590  6c 65 73 20 20 20 20 3d  3e 4c 69 62 47 72 6f 75  |les    =>LibGrou|
000125a0  70 46 69 6c 65 73 3e 0a  3c 46 6f 6e 74 73 20 20  |pFiles>.<Fonts  |
000125b0  20 20 3d 3e 4c 69 62 47  72 6f 75 70 46 6f 6e 74  |  =>LibGroupFont|
000125c0  73 3e 0a 3c 49 63 6f 6e  73 20 20 20 20 3d 3e 4c  |s>.<Icons    =>L|
000125d0  69 62 47 72 6f 75 70 49  63 6f 6e 73 3e 0a 3c 4d  |ibGroupIcons>.<M|
000125e0  65 6d 6f 72 79 20 20 20  3d 3e 4c 69 62 47 72 6f  |emory   =>LibGro|
000125f0  75 70 4d 65 6d 6f 72 79  3e 0a 3c 4d 65 6e 75 73  |upMemory>.<Menus|
00012600  20 20 20 20 3d 3e 4c 69  62 47 72 6f 75 70 4d 65  |    =>LibGroupMe|
00012610  6e 75 73 3e 0a 3c 4d 65  73 73 61 67 65 73 20 3d  |nus>.<Messages =|
00012620  3e 4c 69 62 47 72 6f 75  70 4d 65 73 73 61 67 65  |>LibGroupMessage|
00012630  73 3e 0a 3c 4d 69 73 63  20 20 20 20 20 3d 3e 4c  |s>.<Misc     =>L|
00012640  69 62 47 72 6f 75 70 4d  69 73 63 3e 0a 3c 4d 6f  |ibGroupMisc>.<Mo|
00012650  75 73 65 20 20 20 20 3d  3e 4c 69 62 47 72 6f 75  |use    =>LibGrou|
00012660  70 4d 6f 75 73 65 3e 0a  3c 4f 53 20 20 20 20 20  |pMouse>.<OS     |
00012670  20 20 3d 3e 4c 69 62 47  72 6f 75 70 4f 53 3e 0a  |  =>LibGroupOS>.|
00012680  3c 50 72 69 6e 74 65 72  20 20 3d 3e 4c 69 62 47  |<Printer  =>LibG|
00012690  72 6f 75 70 50 72 69 6e  74 65 72 3e 0a 3c 53 68  |roupPrinter>.<Sh|
000126a0  65 6c 6c 20 20 20 20 3d  3e 4c 69 62 47 72 6f 75  |ell    =>LibGrou|
000126b0  70 53 68 65 6c 6c 3e 0a  3c 53 70 72 69 74 65 73  |pShell>.<Sprites|
000126c0  20 20 3d 3e 4c 69 62 47  72 6f 75 70 53 70 72 69  |  =>LibGroupSpri|
000126d0  74 65 73 3e 0a 3c 53 74  72 69 6e 67 73 20 20 3d  |tes>.<Strings  =|
000126e0  3e 4c 69 62 47 72 6f 75  70 53 74 72 69 6e 67 73  |>LibGroupStrings|
000126f0  3e 0a 3c 53 74 72 6f 6e  67 48 6c 70 3d 3e 4c 69  |>.<StrongHlp=>Li|
00012700  62 47 72 6f 75 70 48 65  6c 70 3e 0a 3c 57 69 6e  |bGroupHelp>.<Win|
00012710  64 6f 77 73 20 20 3d 3e  4c 69 62 47 72 6f 75 70  |dows  =>LibGroup|
00012720  57 69 6e 64 6f 77 73 3e  0a 0a 23 45 6e 64 54 61  |Windows>..#EndTa|
00012730  62 6c 65 50 52 4f 43 73  68 65 6c 6c 5f 44 6f 42  |blePROCshell_DoB|
00012740  61 63 6b 67 72 6f 75 6e  64 54 61 73 6b 0a 50 61  |ackgroundTask.Pa|
00012750  72 61 6d 73 20 3d 3e 0a  20 20 20 20 20 20 20 20  |rams =>.        |
00012760  20 4e 6f 6e 65 0a 0a 43  61 6c 6c 65 64 20 65 76  | None..Called ev|
00012770  65 72 79 74 69 6d 65 20  61 20 6e 75 6c 6c 20 72  |erytime a null r|
00012780  65 61 73 6f 6e 20 63 6f  64 65 20 69 73 20 72 65  |eason code is re|
00012790  63 65 69 76 65 64 2e 0a  0a 4c 69 62 72 61 72 79  |ceived...Library|
000127a0  20 47 72 6f 75 70 20 3d  3e 20 3c 45 76 65 6e 74  | Group => <Event|
000127b0  73 3d 3e 4c 69 62 47 72  6f 75 70 45 76 65 6e 74  |s=>LibGroupEvent|
000127c0  73 3e 50 52 4f 43 73 68  65 6c 6c 5f 48 61 6e 64  |s>PROCshell_Hand|
000127d0  6c 65 55 6e 6b 6e 6f 77  6e 4d 65 73 73 61 67 65  |leUnknownMessage|
000127e0  28 29 0a 50 61 72 61 6d  73 20 3d 3e 0a 20 20 20  |().Params =>.   |
000127f0  20 20 20 20 20 20 69 6e  74 20 61 64 64 72 65 73  |      int addres|
00012800  73 20 6f 66 20 3c 6d 65  73 73 61 67 65 20 62 6c  |s of <message bl|
00012810  6f 63 6b 3d 3e 73 77 69  2e 77 69 6d 70 5f 73 65  |ock=>swi.wimp_se|
00012820  6e 64 6d 65 73 73 61 67  65 32 3e 0a 0a 43 61 6c  |ndmessage2>..Cal|
00012830  6c 65 64 20 65 76 65 72  79 20 74 69 6d 65 20 61  |led every time a|
00012840  6e 20 75 6e 6b 6e 6f 77  6e 20 6d 65 73 73 61 67  |n unknown messag|
00012850  65 20 69 73 20 72 65 63  65 69 76 65 64 2e 0a 0a  |e is received...|
00012860  4c 69 62 72 61 72 79 20  47 72 6f 75 70 20 3d 3e  |Library Group =>|
00012870  20 3c 45 76 65 6e 74 73  3d 3e 4c 69 62 47 72 6f  | <Events=>LibGro|
00012880  75 70 45 76 65 6e 74 73  3e 46 4e 73 68 65 6c 6c  |upEvents>FNshell|
00012890  5f 57 69 6e 64 6f 77 49  73 4f 70 65 6e 28 29 0a  |_WindowIsOpen().|
000128a0  50 61 72 61 6d 73 20 3d  3e 0a 20 20 20 20 20 20  |Params =>.      |
000128b0  20 20 20 69 6e 74 20 20  77 69 6e 64 6f 77 20 68  |   int  window h|
000128c0  61 6e 64 6c 65 0a 0a 20  20 20 20 20 20 20 5c 3c  |andle..       \<|
000128d0  3d 0a 20 20 20 20 20 20  20 20 20 62 6f 6f 6c 20  |=.         bool |
000128e0  54 52 55 45 20 69 66 20  77 69 6e 64 6f 77 20 69  |TRUE if window i|
000128f0  73 20 6f 70 65 6e 2c 20  6f 74 68 65 72 77 69 73  |s open, otherwis|
00012900  65 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |e.              |
00012910  46 41 4c 53 45 0a 0a 4c  69 62 72 61 72 79 20 47  |FALSE..Library G|
00012920  72 6f 75 70 20 3d 5c 3e  20 3c 57 69 6e 64 6f 77  |roup =\> <Window|
00012930  73 3d 3e 4c 69 62 47 72  6f 75 70 57 69 6e 64 6f  |s=>LibGroupWindo|
00012940  77 73 3e 50 52 4f 43 73  68 65 6c 6c 5f 57 69 6e  |ws>PROCshell_Win|
00012950  64 6f 77 54 6f 67 67 6c  65 42 61 63 6b 49 63 6f  |dowToggleBackIco|
00012960  6e 28 29 0a 50 61 72 61  6d 73 20 3d 3e 0a 20 20  |n().Params =>.  |
00012970  20 20 20 20 20 20 20 69  6e 74 20 20 77 69 6e 64  |       int  wind|
00012980  6f 77 20 68 61 6e 64 6c  65 0a 0a 20 20 20 20 20  |ow handle..     |
00012990  20 20 5c 3c 3d 0a 20 20  20 20 20 20 20 20 20 69  |  \<=.         i|
000129a0  6e 74 20 3c 75 70 64 61  74 65 64 20 77 69 6e 64  |nt <updated wind|
000129b0  6f 77 20 68 61 6e 64 6c  65 3d 3e 75 70 64 61 74  |ow handle=>updat|
000129c0  65 77 69 6e 68 3e 0a 0a  41 64 64 73 20 61 20 27  |ewinh>..Adds a '|
000129d0  42 61 63 6b 20 69 63 6f  6e 27 20 74 6f 20 61 20  |Back icon' to a |
000129e0  77 69 6e 64 6f 77 20 69  66 20 69 74 20 64 6f 65  |window if it doe|
000129f0  73 6e 27 74 0a 68 61 76  65 20 6f 6e 65 2c 20 72  |sn't.have one, r|
00012a00  65 6d 6f 76 65 73 20 69  74 20 69 66 20 69 74 20  |emoves it if it |
00012a10  64 6f 65 73 2e 20 41 6c  73 6f 20 72 65 64 69 73  |does. Also redis|
00012a20  70 6c 61 79 73 0a 77 69  6e 64 6f 77 20 69 6e 20  |plays.window in |
00012a30  69 74 73 20 6e 65 77 20  73 74 61 74 65 20 69 66  |its new state if|
00012a40  20 69 74 20 69 73 20 6f  70 65 6e 2e 0a 0a 4c 69  | it is open...Li|
00012a50  62 72 61 72 79 20 47 72  6f 75 70 20 3d 5c 3e 20  |brary Group =\> |
00012a60  3c 57 69 6e 64 6f 77 73  3d 3e 4c 69 62 47 72 6f  |<Windows=>LibGro|
00012a70  75 70 57 69 6e 64 6f 77  73 3e 50 52 4f 43 73 68  |upWindows>PROCsh|
00012a80  65 6c 6c 5f 57 69 6e 64  6f 77 54 6f 67 67 6c 65  |ell_WindowToggle|
00012a90  43 6c 6f 73 65 49 63 6f  6e 28 29 0a 50 61 72 61  |CloseIcon().Para|
00012aa0  6d 73 20 3d 3e 0a 20 20  20 20 20 20 20 20 20 69  |ms =>.         i|
00012ab0  6e 74 20 20 77 69 6e 64  6f 77 20 68 61 6e 64 6c  |nt  window handl|
00012ac0  65 0a 0a 20 20 20 20 20  20 20 5c 3c 3d 0a 20 20  |e..       \<=.  |
00012ad0  20 20 20 20 20 20 20 69  6e 74 20 3c 75 70 64 61  |       int <upda|
00012ae0  74 65 64 20 77 69 6e 64  6f 77 20 68 61 6e 64 6c  |ted window handl|
00012af0  65 3d 3e 75 70 64 61 74  65 77 69 6e 68 3e 0a 0a  |e=>updatewinh>..|
00012b00  41 64 64 73 20 61 20 27  43 6c 6f 73 65 20 69 63  |Adds a 'Close ic|
00012b10  6f 6e 27 20 74 6f 20 61  20 77 69 6e 64 6f 77 20  |on' to a window |
00012b20  69 66 20 69 74 20 64 6f  65 73 6e 27 74 0a 68 61  |if it doesn't.ha|
00012b30  76 65 20 6f 6e 65 2c 20  72 65 6d 6f 76 65 73 20  |ve one, removes |
00012b40  69 74 20 69 66 20 69 74  20 64 6f 65 73 2e 20 41  |it if it does. A|
00012b50  6c 73 6f 20 72 65 64 69  73 70 6c 61 79 73 0a 77  |lso redisplays.w|
00012b60  69 6e 64 6f 77 20 69 6e  20 69 74 73 20 6e 65 77  |indow in its new|
00012b70  20 73 74 61 74 65 20 69  66 20 69 74 20 69 73 20  | state if it is |
00012b80  6f 70 65 6e 2e 0a 0a 4c  69 62 72 61 72 79 20 47  |open...Library G|
00012b90  72 6f 75 70 20 3d 5c 3e  20 3c 57 69 6e 64 6f 77  |roup =\> <Window|
00012ba0  73 3d 3e 4c 69 62 47 72  6f 75 70 57 69 6e 64 6f  |s=>LibGroupWindo|
00012bb0  77 73 3e 50 52 4f 43 73  68 65 6c 6c 5f 57 69 6e  |ws>PROCshell_Win|
00012bc0  64 6f 77 54 6f 67 67 6c  65 54 69 74 6c 65 42 61  |dowToggleTitleBa|
00012bd0  72 28 29 0a 50 61 72 61  6d 73 20 3d 3e 0a 20 20  |r().Params =>.  |
00012be0  20 20 20 20 20 20 20 69  6e 74 20 20 77 69 6e 64  |       int  wind|
00012bf0  6f 77 20 68 61 6e 64 6c  65 0a 0a 20 20 20 20 20  |ow handle..     |
00012c00  20 20 5c 3c 3d 0a 20 20  20 20 20 20 20 20 20 69  |  \<=.         i|
00012c10  6e 74 20 3c 75 70 64 61  74 65 64 20 77 69 6e 64  |nt <updated wind|
00012c20  6f 77 20 68 61 6e 64 6c  65 3d 3e 75 70 64 61 74  |ow handle=>updat|
00012c30  65 77 69 6e 68 3e 0a 0a  41 64 64 73 20 61 20 54  |ewinh>..Adds a T|
00012c40  69 74 6c 65 20 62 61 72  20 74 6f 20 61 20 77 69  |itle bar to a wi|
00012c50  6e 64 6f 77 20 69 66 20  69 74 20 64 6f 65 73 6e  |ndow if it doesn|
00012c60  27 74 20 6f 6e 65 2c 0a  72 65 6d 6f 76 65 73 20  |'t one,.removes |
00012c70  69 74 20 69 66 20 69 74  20 64 6f 65 73 2e 20 41  |it if it does. A|
00012c80  6c 73 6f 20 72 65 64 69  73 70 6c 61 79 73 20 77  |lso redisplays w|
00012c90  69 6e 64 6f 77 0a 69 6e  20 69 74 73 20 6e 65 77  |indow.in its new|
00012ca0  20 73 74 61 74 65 20 69  66 20 69 74 20 69 73 20  | state if it is |
00012cb0  6f 70 65 6e 2e 0a 0a 4c  69 62 72 61 72 79 20 47  |open...Library G|
00012cc0  72 6f 75 70 20 3d 5c 3e  20 3c 57 69 6e 64 6f 77  |roup =\> <Window|
00012cd0  73 3d 3e 4c 69 62 47 72  6f 75 70 57 69 6e 64 6f  |s=>LibGroupWindo|
00012ce0  77 73 3e 50 52 4f 43 73  68 65 6c 6c 5f 57 69 6e  |ws>PROCshell_Win|
00012cf0  64 6f 77 54 6f 67 67 6c  65 54 6f 67 67 6c 65 49  |dowToggleToggleI|
00012d00  63 6f 6e 28 29 0a 50 61  72 61 6d 73 20 3d 3e 0a  |con().Params =>.|
00012d10  20 20 20 20 20 20 20 20  20 69 6e 74 20 20 77 69  |         int  wi|
00012d20  6e 64 6f 77 20 68 61 6e  64 6c 65 0a 0a 20 20 20  |ndow handle..   |
00012d30  20 20 20 20 5c 3c 3d 0a  20 20 20 20 20 20 20 20  |    \<=.        |
00012d40  20 69 6e 74 20 3c 75 70  64 61 74 65 64 20 77 69  | int <updated wi|
00012d50  6e 64 6f 77 20 68 61 6e  64 6c 65 3d 3e 75 70 64  |ndow handle=>upd|
00012d60  61 74 65 77 69 6e 68 3e  0a 0a 41 64 64 73 20 61  |atewinh>..Adds a|
00012d70  20 27 54 6f 67 67 6c 65  20 73 69 7a 65 20 69 63  | 'Toggle size ic|
00012d80  6f 6e 27 20 20 74 6f 20  61 20 77 69 6e 64 6f 77  |on'  to a window|
00012d90  20 69 66 20 69 74 0a 64  6f 65 73 6e 27 74 20 6f  | if it.doesn't o|
00012da0  6e 65 2c 20 72 65 6d 6f  76 65 73 20 69 74 20 69  |ne, removes it i|
00012db0  66 20 69 74 20 64 6f 65  73 2e 20 41 6c 73 6f 0a  |f it does. Also.|
00012dc0  72 65 64 69 73 70 6c 61  79 73 20 77 69 6e 64 6f  |redisplays windo|
00012dd0  77 20 69 6e 20 69 74 73  20 6e 65 77 20 73 74 61  |w in its new sta|
00012de0  74 65 20 69 66 20 69 74  20 69 73 0a 6f 70 65 6e  |te if it is.open|
00012df0  2e 0a 0a 4c 69 62 72 61  72 79 20 47 72 6f 75 70  |...Library Group|
00012e00  20 3d 5c 3e 20 3c 57 69  6e 64 6f 77 73 3d 3e 4c  | =\> <Windows=>L|
00012e10  69 62 47 72 6f 75 70 57  69 6e 64 6f 77 73 3e 50  |ibGroupWindows>P|
00012e20  52 4f 43 73 68 65 6c 6c  5f 57 69 6e 64 6f 77 54  |ROCshell_WindowT|
00012e30  6f 67 67 6c 65 56 53 63  72 6f 6c 6c 42 61 72 28  |oggleVScrollBar(|
00012e40  29 0a 50 61 72 61 6d 73  20 3d 3e 0a 20 20 20 20  |).Params =>.    |
00012e50  20 20 20 20 20 69 6e 74  20 20 77 69 6e 64 6f 77  |     int  window|
00012e60  20 68 61 6e 64 6c 65 0a  0a 20 20 20 20 20 20 20  | handle..       |
00012e70  5c 3c 3d 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |\<=.         int|
00012e80  20 3c 75 70 64 61 74 65  64 20 77 69 6e 64 6f 77  | <updated window|
00012e90  20 68 61 6e 64 6c 65 3d  3e 75 70 64 61 74 65 77  | handle=>updatew|
00012ea0  69 6e 68 3e 0a 0a 41 64  64 73 20 61 20 76 65 72  |inh>..Adds a ver|
00012eb0  74 69 63 61 6c 20 73 63  72 6f 6c 6c 20 62 61 72  |tical scroll bar|
00012ec0  20 74 6f 20 61 20 77 69  6e 64 6f 77 20 69 66 0a  | to a window if.|
00012ed0  69 74 20 64 6f 65 73 6e  27 74 20 6f 6e 65 2c 20  |it doesn't one, |
00012ee0  72 65 6d 6f 76 65 73 20  69 74 20 69 66 20 69 74  |removes it if it|
00012ef0  20 64 6f 65 73 2e 20 41  6c 73 6f 0a 72 65 64 69  | does. Also.redi|
00012f00  73 70 6c 61 79 73 20 77  69 6e 64 6f 77 20 69 6e  |splays window in|
00012f10  20 69 74 73 20 6e 65 77  20 73 74 61 74 65 20 69  | its new state i|
00012f20  66 20 69 74 20 69 73 0a  6f 70 65 6e 2e 0a 0a 4c  |f it is.open...L|
00012f30  69 62 72 61 72 79 20 47  72 6f 75 70 20 3d 5c 3e  |ibrary Group =\>|
00012f40  20 3c 57 69 6e 64 6f 77  73 3d 3e 4c 69 62 47 72  | <Windows=>LibGr|
00012f50  6f 75 70 57 69 6e 64 6f  77 73 3e 50 52 4f 43 73  |oupWindows>PROCs|
00012f60  68 65 6c 6c 5f 57 69 6e  64 6f 77 54 6f 67 67 6c  |hell_WindowToggl|
00012f70  65 41 64 6a 75 73 74 53  69 7a 65 69 63 6f 6e 28  |eAdjustSizeicon(|
00012f80  29 0a 50 61 72 61 6d 73  20 3d 3e 0a 20 20 20 20  |).Params =>.    |
00012f90  20 20 20 20 20 69 6e 74  20 20 77 69 6e 64 6f 77  |     int  window|
00012fa0  20 68 61 6e 64 6c 65 0a  0a 20 20 20 20 20 20 20  | handle..       |
00012fb0  5c 3c 3d 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |\<=.         int|
00012fc0  20 3c 75 70 64 61 74 65  64 20 77 69 6e 64 6f 77  | <updated window|
00012fd0  20 68 61 6e 64 6c 65 3d  3e 75 70 64 61 74 65 77  | handle=>updatew|
00012fe0  69 6e 68 3e 0a 0a 41 64  64 73 20 61 20 27 41 64  |inh>..Adds a 'Ad|
00012ff0  6a 75 73 74 20 73 69 7a  65 20 69 63 6f 6e 27 20  |just size icon' |
00013000  74 6f 20 61 20 77 69 6e  64 6f 77 20 69 66 20 69  |to a window if i|
00013010  74 0a 64 6f 65 73 6e 27  74 20 6f 6e 65 2c 20 72  |t.doesn't one, r|
00013020  65 6d 6f 76 65 73 20 69  74 20 69 66 20 69 74 20  |emoves it if it |
00013030  64 6f 65 73 2e 20 41 6c  73 6f 0a 72 65 64 69 73  |does. Also.redis|
00013040  70 6c 61 79 73 20 77 69  6e 64 6f 77 20 69 6e 20  |plays window in |
00013050  69 74 73 20 6e 65 77 20  73 74 61 74 65 20 69 66  |its new state if|
00013060  20 69 74 20 69 73 0a 6f  70 65 6e 2e 0a 0a 4c 69  | it is.open...Li|
00013070  62 72 61 72 79 20 47 72  6f 75 70 20 3d 5c 3e 20  |brary Group =\> |
00013080  3c 57 69 6e 64 6f 77 73  3d 3e 4c 69 62 47 72 6f  |<Windows=>LibGro|
00013090  75 70 57 69 6e 64 6f 77  73 3e 50 52 4f 43 73 68  |upWindows>PROCsh|
000130a0  65 6c 6c 5f 57 69 6e 64  6f 77 54 6f 67 67 6c 65  |ell_WindowToggle|
000130b0  48 53 63 72 6f 6c 6c 42  61 72 28 29 0a 50 61 72  |HScrollBar().Par|
000130c0  61 6d 73 20 3d 3e 0a 20  20 20 20 20 20 20 20 20  |ams =>.         |
000130d0  69 6e 74 20 20 77 69 6e  64 6f 77 20 68 61 6e 64  |int  window hand|
000130e0  6c 65 0a 0a 20 20 20 20  20 20 20 5c 3c 3d 0a 20  |le..       \<=. |
000130f0  20 20 20 20 20 20 20 20  69 6e 74 20 3c 75 70 64  |        int <upd|
00013100  61 74 65 64 20 77 69 6e  64 6f 77 20 68 61 6e 64  |ated window hand|
00013110  6c 65 3d 3e 75 70 64 61  74 65 77 69 6e 68 3e 0a  |le=>updatewinh>.|
00013120  0a 41 64 64 73 20 61 20  68 6f 72 69 7a 6f 6e 74  |.Adds a horizont|
00013130  61 6c 20 73 63 72 6f 6c  6c 20 62 61 72 20 74 6f  |al scroll bar to|
00013140  20 61 20 77 69 6e 64 6f  77 20 69 66 0a 69 74 20  | a window if.it |
00013150  64 6f 65 73 6e 27 74 20  6f 6e 65 2c 20 72 65 6d  |doesn't one, rem|
00013160  6f 76 65 73 20 69 74 20  69 66 20 69 74 20 64 6f  |oves it if it do|
00013170  65 73 2e 20 41 6c 73 6f  0a 72 65 64 69 73 70 6c  |es. Also.redispl|
00013180  61 79 73 20 77 69 6e 64  6f 77 20 69 6e 20 69 74  |ays window in it|
00013190  73 20 6e 65 77 20 73 74  61 74 65 20 69 66 20 69  |s new state if i|
000131a0  74 20 69 73 0a 6f 70 65  6e 2e 0a 0a 4c 69 62 72  |t is.open...Libr|
000131b0  61 72 79 20 47 72 6f 75  70 20 3d 5c 3e 20 3c 57  |ary Group =\> <W|
000131c0  69 6e 64 6f 77 73 3d 3e  4c 69 62 47 72 6f 75 70  |indows=>LibGroup|
000131d0  57 69 6e 64 6f 77 73 3e  50 52 4f 43 73 68 65 6c  |Windows>PROCshel|
000131e0  6c 5f 48 65 61 70 4d 61  6e 61 67 65 72 49 6e 69  |l_HeapManagerIni|
000131f0  74 0a 50 61 72 61 6d 73  20 3d 3e 0a 20 20 20 20  |t.Params =>.    |
00013200  20 20 20 20 20 73 74 72  20 70 61 74 68 20 74 6f  |     str path to|
00013210  20 64 69 72 65 63 74 6f  72 79 20 63 6f 6e 74 61  | directory conta|
00013220  69 6e 69 6e 67 20 74 68  65 0a 20 20 20 20 20 20  |ining the.      |
00013230  20 20 20 20 20 20 20 27  68 65 61 70 63 6f 64 65  |       'heapcode|
00013240  27 20 66 69 6c 65 0a 20  20 20 20 20 20 20 20 20  |' file.         |
00013250  69 6e 74 20 61 64 64 72  65 73 73 20 6f 66 20 68  |int address of h|
00013260  65 61 70 20 6d 61 6e 61  67 65 72 20 77 6f 72 6b  |eap manager work|
00013270  73 70 61 63 65 0a 0a 54  68 69 73 20 72 6f 75 74  |space..This rout|
00013280  69 6e 65 20 6d 75 73 74  20 62 65 20 63 61 6c 6c  |ine must be call|
00013290  65 64 20 62 65 66 6f 72  65 20 50 52 4f 43 73 68  |ed before PROCsh|
000132a0  65 6c 6c 5f 49 6e 69 74  2e 0a 0a 4c 69 62 72 61  |ell_Init...Libra|
000132b0  72 79 20 47 72 6f 75 70  20 3d 3e 20 3c 4d 65 6d  |ry Group => <Mem|
000132c0  6f 72 79 3d 3e 4c 69 62  47 72 6f 75 70 4d 65 6d  |ory=>LibGroupMem|
000132d0  6f 72 79 3e 50 52 4f 43  73 68 65 6c 6c 5f 4d 65  |ory>PROCshell_Me|
000132e0  6e 75 50 75 74 44 61 74  61 28 29 0a 50 61 72 61  |nuPutData().Para|
000132f0  6d 73 20 3d 3e 0a 20 20  20 20 20 20 20 20 20 69  |ms =>.         i|
00013300  6e 74 20 6d 65 6e 75 20  68 61 6e 64 6c 65 0a 20  |nt menu handle. |
00013310  20 20 20 20 20 20 20 20  73 74 72 20 64 61 74 61  |        str data|
00013320  20 74 6f 20 77 72 69 74  65 20 69 6e 74 6f 20 6d  | to write into m|
00013330  65 6e 75 20 69 74 65 6d  0a 0a 54 68 69 73 20 72  |enu item..This r|
00013340  6f 75 74 69 6e 65 20 69  73 20 75 73 65 64 20 74  |outine is used t|
00013350  6f 20 61 6c 74 65 72 20  74 68 65 20 69 74 65 6d  |o alter the item|
00013360  73 20 6f 66 20 61 0a 6d  65 6e 75 20 77 68 65 6e  |s of a.menu when|
00013370  20 74 68 65 20 70 72 6f  67 72 61 6d 20 72 75 6e  | the program run|
00013380  73 2e 20 54 68 65 20 77  69 64 74 68 20 6f 66 20  |s. The width of |
00013390  74 68 65 0a 6d 65 6e 75  20 69 73 20 61 64 6a 75  |the.menu is adju|
000133a0  73 74 65 64 20 61 75 74  6f 6d 61 74 69 63 61 6c  |sted automatical|
000133b0  6c 79 2e 0a 0a 4c 69 62  72 61 72 79 20 47 72 6f  |ly...Library Gro|
000133c0  75 70 20 3d 3e 20 3c 4d  65 6e 75 73 3d 3e 4c 69  |up => <Menus=>Li|
000133d0  62 47 72 6f 75 70 4d 65  6e 75 73 3e 4d 65 6e 75  |bGroupMenus>Menu|
000133e0  20 53 74 72 69 6e 67 73  20 66 6f 72 20 50 52 4f  | Strings for PRO|
000133f0  43 73 68 65 6c 6c 5f 4d  65 6e 75 50 75 74 44 61  |Cshell_MenuPutDa|
00013400  74 61 28 29 0a 54 68 65  20 6d 65 6e 75 20 73 74  |ta().The menu st|
00013410  72 69 6e 67 20 69 73 20  74 68 65 20 74 69 74 6c  |ring is the titl|
00013420  65 20 6f 66 20 74 68 65  20 6d 65 6e 75 20 74 6f  |e of the menu to|
00013430  20 77 72 69 74 65 0a 74  68 65 20 64 61 74 61 20  | write.the data |
00013440  74 6f 2e 20 49 74 20 64  6f 65 73 20 6e 6f 74 20  |to. It does not |
00013450  68 61 76 65 20 74 6f 20  62 65 20 30 20 74 65 72  |have to be 0 ter|
00013460  6d 69 6e 61 74 65 64 2e  49 74 65 6d 20 4e 72 20  |minated.Item Nr |
00013470  66 6f 72 20 50 52 4f 43  73 68 65 6c 6c 5f 4d 65  |for PROCshell_Me|
00013480  6e 75 50 75 74 44 61 74  61 28 29 0a 54 68 65 20  |nuPutData().The |
00013490  66 69 72 73 74 20 69 74  65 6d 20 69 6e 20 61 20  |first item in a |
000134a0  6d 65 6e 75 20 69 73 20  6e 75 6d 62 65 72 65 64  |menu is numbered|
000134b0  20 30 2e 46 4e 73 68 65  6c 6c 5f 48 65 61 70 42  | 0.FNshell_HeapB|
000134c0  6c 6f 63 6b 45 78 69 73  74 73 28 29 0a 50 61 72  |lockExists().Par|
000134d0  61 6d 73 20 3d 3e 0a 20  20 20 20 20 20 20 20 20  |ams =>.         |
000134e0  69 6e 74 20 20 61 64 64  72 65 73 73 20 74 6f 20  |int  address to |
000134f0  63 68 65 63 6b 0a 0a 20  20 20 20 20 20 20 5c 3c  |check..       \<|
00013500  3d 0a 20 20 20 20 20 20  20 20 20 62 6f 6f 6c 20  |=.         bool |
00013510  54 52 55 45 20 6f 72 20  46 41 4c 53 45 0a 0a 54  |TRUE or FALSE..T|
00013520  68 69 73 20 72 6f 75 74  69 6e 65 20 72 65 74 75  |his routine retu|
00013530  72 6e 73 20 54 52 55 45  20 69 66 20 61 20 68 65  |rns TRUE if a he|
00013540  61 70 62 6c 6f 63 6b 20  69 73 20 70 72 65 73 65  |apblock is prese|
00013550  6e 74 0a 61 74 20 74 68  65 20 73 70 65 63 69 66  |nt.at the specif|
00013560  69 65 64 20 61 64 64 72  65 73 73 2c 20 46 41 4c  |ied address, FAL|
00013570  53 45 20 6f 74 68 65 72  77 69 73 65 2e 0a 0a 4c  |SE otherwise...L|
00013580  69 62 72 61 72 79 20 47  72 6f 75 70 20 3d 3e 20  |ibrary Group => |
00013590  3c 4d 65 6d 6f 72 79 3d  3e 4c 69 62 47 72 6f 75  |<Memory=>LibGrou|
000135a0  70 4d 65 6d 6f 72 79 3e  46 4e 73 68 65 6c 6c 5f  |pMemory>FNshell_|
000135b0  57 69 6e 64 6f 77 4c 6f  61 64 65 64 28 29 0a 50  |WindowLoaded().P|
000135c0  61 72 61 6d 73 20 3d 3e  0a 20 20 20 20 20 20 20  |arams =>.       |
000135d0  20 20 73 74 72 20 20 77  69 6e 64 6f 77 20 6e 61  |  str  window na|
000135e0  6d 65 20 28 6d 61 78 20  31 31 20 63 68 61 72 61  |me (max 11 chara|
000135f0  63 74 65 72 73 29 0a 0a  20 20 20 20 20 20 20 5c  |cters)..       \|
00013600  3c 3d 0a 20 20 20 20 20  20 20 20 20 62 6f 6f 6c  |<=.         bool|
00013610  20 54 52 55 45 20 69 66  20 74 65 6d 70 6c 61 74  | TRUE if templat|
00013620  65 20 69 73 20 6c 6f 61  64 65 64 2c 20 6f 74 68  |e is loaded, oth|
00013630  65 72 77 69 73 65 0a 20  20 20 20 20 20 20 20 20  |erwise.         |
00013640  20 20 20 20 20 46 41 4c  53 45 0a 0a 4c 69 62 72  |     FALSE..Libr|
00013650  61 72 79 20 47 72 6f 75  70 20 3d 3e 20 3c 57 69  |ary Group => <Wi|
00013660  6e 64 6f 77 73 3d 3e 4c  69 62 47 72 6f 75 70 57  |ndows=>LibGroupW|
00013670  69 6e 64 6f 77 73 3e 50  52 4f 43 73 68 65 6c 6c  |indows>PROCshell|
00013680  5f 4d 65 6d 46 69 6c 6c  28 29 0a 50 61 72 61 6d  |_MemFill().Param|
00013690  73 20 3d 3e 0a 20 20 20  20 20 20 20 20 20 69 6e  |s =>.         in|
000136a0  74 20 73 74 61 72 74 20  61 64 64 72 65 73 73 0a  |t start address.|
000136b0  20 20 20 20 20 20 20 20  20 69 6e 74 20 6e 75 6d  |         int num|
000136c0  62 65 72 20 6f 66 20 62  79 74 65 73 0a 20 20 20  |ber of bytes.   |
000136d0  20 20 20 20 20 20 69 6e  74 20 62 79 74 65 20 76  |      int byte v|
000136e0  61 6c 75 65 20 74 6f 20  66 69 6c 6c 20 77 69 74  |alue to fill wit|
000136f0  68 0a 0a 4c 69 62 72 61  72 79 20 47 72 6f 75 70  |h..Library Group|
00013700  20 3d 3e 20 3c 4d 65 6d  6f 72 79 3d 3e 4c 69 62  | => <Memory=>Lib|
00013710  47 72 6f 75 70 4d 65 6d  6f 72 79 3e 50 52 4f 43  |GroupMemory>PROC|
00013720  73 68 65 6c 6c 5f 41 74  74 61 63 68 53 75 62 4d  |shell_AttachSubM|
00013730  65 6e 75 28 29 0a 50 61  72 61 6d 73 20 3d 3e 0a  |enu().Params =>.|
00013740  20 20 20 20 20 20 20 20  20 69 6e 74 20 6d 65 6e  |         int men|
00013750  75 20 69 74 65 6d 20 68  61 6e 64 6c 65 0a 20 20  |u item handle.  |
00013760  20 20 20 20 20 20 20 69  6e 74 20 73 75 62 6d 65  |       int subme|
00013770  6e 75 20 6d 65 6e 75 20  68 61 6e 64 6c 65 0a 20  |nu menu handle. |
00013780  20 20 20 20 20 20 20 20  73 74 72 20 3c 66 75 6e  |        str <fun|
00013790  63 74 69 6f 6e 3d 3e 55  73 65 72 46 4e 31 38 3e  |ction=>UserFN18>|
000137a0  20 74 6f 20 63 61 6c 6c  20 77 68 65 6e 20 6d 65  | to call when me|
000137b0  6e 75 5f 77 61 72 6e 69  6e 67 0a 20 20 20 20 20  |nu_warning.     |
000137c0  20 20 20 20 20 20 20 20  6d 65 73 73 61 67 65 20  |        message |
000137d0  69 73 20 72 65 63 65 69  76 65 64 20 28 6f 70 74  |is received (opt|
000137e0  69 6f 6e 61 6c 2c 20 6d  61 79 0a 20 20 20 20 20  |ional, may.     |
000137f0  20 20 20 20 20 20 20 20  62 65 20 22 22 29 0a 0a  |        be "")..|
00013800  4c 69 62 72 61 72 79 20  47 72 6f 75 70 20 3d 3e  |Library Group =>|
00013810  20 3c 4d 65 6e 75 73 3d  3e 4c 69 62 47 72 6f 75  | <Menus=>LibGrou|
00013820  70 4d 65 6e 75 73 3e 2c  20 3c 45 76 65 6e 74 73  |pMenus>, <Events|
00013830  3d 3e 4c 69 62 47 72 6f  75 70 45 76 65 6e 74 73  |=>LibGroupEvents|
00013840  3e 50 52 4f 43 73 68 65  6c 6c 5f 41 74 74 61 63  |>PROCshell_Attac|
00013850  68 46 6f 6e 74 53 75 62  4d 65 6e 75 28 29 0a 50  |hFontSubMenu().P|
00013860  61 72 61 6d 73 20 3d 3e  0a 20 20 20 20 20 20 20  |arams =>.       |
00013870  20 20 69 6e 74 20 69 74  65 6d 20 68 61 6e 64 6c  |  int item handl|
00013880  65 0a 20 20 20 20 20 20  20 20 20 73 74 72 20 3c  |e.         str <|
00013890  66 75 6e 63 74 69 6f 6e  3d 3e 55 73 65 72 46 4e  |function=>UserFN|
000138a0  31 37 3e 20 74 6f 20 63  61 6c 6c 20 77 68 65 6e  |17> to call when|
000138b0  20 6d 65 6e 75 5f 77 61  72 6e 69 6e 67 0a 20 20  | menu_warning.  |
000138c0  20 20 20 20 20 20 20 20  20 20 20 6d 65 73 73 61  |           messa|
000138d0  67 65 20 69 73 20 72 65  63 65 69 76 65 64 20 28  |ge is received (|
000138e0  6f 70 74 69 6f 6e 61 6c  2c 20 6d 61 79 0a 20 20  |optional, may.  |
000138f0  20 20 20 20 20 20 20 20  20 20 20 62 65 20 22 22  |           be ""|
00013900  29 0a 0a 54 68 69 73 20  72 6f 75 74 69 6e 65 20  |)..This routine |
00013910  77 69 6c 6c 20 61 74 74  65 6d 70 74 20 74 6f 20  |will attempt to |
00013920  6c 6f 61 64 20 74 68 65  20 6e 65 63 65 73 73 61  |load the necessa|
00013930  72 79 0a 27 46 6f 6e 74  4d 65 6e 75 27 20 73 75  |ry.'FontMenu' su|
00013940  70 70 6f 72 74 20 6d 6f  64 75 6c 65 20 69 66 20  |pport module if |
00013950  69 74 20 69 73 20 6e 6f  74 20 61 6c 72 65 61 64  |it is not alread|
00013960  79 0a 6c 6f 61 64 65 64  2e 20 49 74 20 65 78 70  |y.loaded. It exp|
00013970  65 63 74 73 20 74 6f 20  66 69 6e 64 20 69 74 20  |ects to find it |
00013980  69 6e 20 74 68 65 0a 45  76 6e 74 53 68 65 6c 6c  |in the.EvntShell|
00013990  53 79 73 74 65 6d 24 50  61 74 68 20 28 75 73 75  |System$Path (usu|
000139a0  61 6c 6c 79 20 69 6e 20  21 53 68 65 6c 6c 53 79  |ally in !ShellSy|
000139b0  73 29 2e 0a 0a 4c 69 62  72 61 72 79 20 47 72 6f  |s)...Library Gro|
000139c0  75 70 20 3d 3e 20 3c 4d  65 6e 75 73 3d 3e 4c 69  |up => <Menus=>Li|
000139d0  62 47 72 6f 75 70 4d 65  6e 75 73 3e 2c 3c 46 6f  |bGroupMenus>,<Fo|
000139e0  6e 74 73 3d 3e 4c 69 62  47 72 6f 75 70 46 6f 6e  |nts=>LibGroupFon|
000139f0  74 73 3e 4a 6f 72 69 73  20 52 d6 6c 69 6e 67 0a  |ts>Joris R.ling.|
00013a00  4a 6f 72 69 73 20 52 d6  6c 69 6e 67 0a 4f 75 64  |Joris R.ling.Oud|
00013a10  65 73 74 72 61 61 74 20  31 38 36 0a 38 32 36 31  |estraat 186.8261|
00013a20  20 43 57 20 4b 61 6d 70  65 6e 0a 54 68 65 20 4e  | CW Kampen.The N|
00013a30  65 74 68 65 72 6c 61 6e  64 73 0a 0a 46 6f 72 20  |etherlands..For |
00013a40  74 68 65 20 27 46 6f 6e  74 4d 65 6e 75 27 20 6d  |the 'FontMenu' m|
00013a50  6f 64 75 6c 65 0a 77 68  69 63 68 20 61 6c 6c 6f  |odule.which allo|
00013a60  77 73 20 74 68 65 20 73  65 6e 73 69 62 6c 65 0a  |ws the sensible.|
00013a70  63 68 6f 6f 73 69 6e 67  20 6f 66 20 6f 75 74 6c  |choosing of outl|
00013a80  69 6e 65 20 66 6f 6e 74  0a 6e 61 6d 65 73 2e 55  |ine font.names.U|
00013a90  73 65 72 20 46 4e 20 28  50 52 4f 43 73 68 65 6c  |ser FN (PROCshel|
00013aa0  6c 5f 41 74 74 61 63 68  46 6f 6e 74 53 75 62 4d  |l_AttachFontSubM|
00013ab0  65 6e 75 29 20 0a 50 61  72 61 6d 73 20 3d 3e 20  |enu) .Params => |
00013ac0  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 77 69  |.         int wi|
00013ad0  6e 64 6f 77 20 68 61 6e  64 6c 65 0a 20 20 20 20  |ndow handle.    |
00013ae0  20 20 20 20 20 69 6e 74  20 69 63 6f 6e 20 68 61  |     int icon ha|
00013af0  6e 64 6c 65 0a 0a 20 20  20 20 20 20 20 5c 3c 3d  |ndle..       \<=|
00013b00  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 6a 75  |.         int ju|
00013b10  6e 6b 0a 0a 54 68 69 73  20 66 75 6e 63 74 69 6f  |nk..This functio|
00013b20  6e 20 63 61 6e 20 62 65  20 75 73 65 64 20 74 6f  |n can be used to|
00013b30  20 73 65 74 20 74 68 65  20 63 75 72 72 65 6e 74  | set the current|
00013b40  6c 79 0a 73 65 6c 65 63  74 65 64 20 66 6f 6e 74  |ly.selected font|
00013b50  20 69 6e 20 74 68 65 20  6d 65 6e 75 20 61 62 6f  | in the menu abo|
00013b60  75 74 20 74 6f 20 62 65  20 6f 70 65 6e 65 64 2e  |ut to be opened.|
00013b70  0a 55 73 65 20 3c 50 52  4f 43 73 68 65 6c 6c 5f  |.Use <PROCshell_|
00013b80  46 6f 6e 74 4d 65 6e 75  53 65 6c 65 63 74 46 6f  |FontMenuSelectFo|
00013b90  6e 74 3e 20 74 6f 20 64  6f 20 74 68 69 73 2e 20  |nt> to do this. |
00013ba0  4f 75 74 6c 69 6e 65 20  46 6f 6e 74 73 0a 54 68  |Outline Fonts.Th|
00013bb0  65 20 45 76 6e 74 53 68  65 6c 6c 20 4c 69 62 72  |e EvntShell Libr|
00013bc0  61 72 79 20 73 75 70 70  6f 72 74 73 20 4f 75 74  |ary supports Out|
00013bd0  6c 69 6e 65 20 46 6f 6e  74 73 20 69 6e 20 74 77  |line Fonts in tw|
00013be0  6f 20 77 61 79 73 20 61  74 20 74 68 65 0a 6d 6f  |o ways at the.mo|
00013bf0  6d 65 6e 74 2e 20 46 69  72 73 74 6c 79 20 3c 4a  |ment. Firstly <J|
00013c00  6f 72 69 73 20 52 6f 6c  69 6e 67 27 73 3d 3e 6a  |oris Roling's=>j|
00013c10  6f 72 69 73 3e 20 46 6f  6e 74 4d 65 6e 75 20 6d  |oris> FontMenu m|
00013c20  6f 64 75 6c 65 20 69 73  20 75 73 65 64 0a 74 6f  |odule is used.to|
00013c30  20 64 69 73 70 6c 61 79  20 61 20 6d 65 6e 75 20  | display a menu |
00013c40  6f 66 20 61 6c 6c 20 61  76 61 69 6c 61 62 6c 65  |of all available|
00013c50  20 66 6f 6e 74 73 20 6f  6e 20 74 68 65 20 73 79  | fonts on the sy|
00013c60  73 74 65 6d 2c 20 61 6e  64 0a 73 65 63 6f 6e 64  |stem, and.second|
00013c70  6c 79 20 74 68 65 20 77  69 6e 64 6f 77 20 74 65  |ly the window te|
00013c80  6d 70 6c 61 74 65 20 6c  6f 61 64 69 6e 67 20 72  |mplate loading r|
00013c90  6f 75 74 69 6e 65 20 61  6c 6c 6f 77 73 20 69 63  |outine allows ic|
00013ca0  6f 6e 73 20 61 6e 64 0a  77 69 6e 64 6f 77 20 74  |ons and.window t|
00013cb0  69 74 6c 65 73 20 74 6f  20 75 73 65 20 66 6f 6e  |itles to use fon|
00013cc0  74 73 2e 0a 0a 52 6f 75  74 69 6e 65 73 20 61 72  |ts...Routines ar|
00013cd0  65 20 70 72 6f 76 69 64  65 64 20 74 6f 20 61 74  |e provided to at|
00013ce0  74 61 63 68 20 61 20 66  6f 6e 74 20 6d 65 6e 75  |tach a font menu|
00013cf0  20 74 6f 20 61 6e 20 65  78 69 73 74 69 6e 67 20  | to an existing |
00013d00  6d 65 6e 75 0a 61 73 20  61 20 73 75 62 6d 65 6e  |menu.as a submen|
00013d10  75 20 28 3c 50 52 4f 43  73 68 65 6c 6c 5f 41 74  |u (<PROCshell_At|
00013d20  74 61 63 68 46 6f 6e 74  53 75 62 4d 65 6e 75 3e  |tachFontSubMenu>|
00013d30  29 2c 20 6f 72 20 74 6f  20 6f 70 65 6e 20 74 68  |), or to open th|
00013d40  65 20 66 6f 6e 74 0a 6d  65 6e 75 20 61 73 20 61  |e font.menu as a|
00013d50  20 6d 65 6e 75 20 69 6e  20 69 74 73 20 6f 77 6e  | menu in its own|
00013d60  20 72 69 67 68 74 20 28  3c 50 52 4f 43 73 68 65  | right (<PROCshe|
00013d70  6c 6c 5f 41 74 74 61 63  68 46 6f 6e 74 4d 65 6e  |ll_AttachFontMen|
00013d80  75 3e 29 2e 20 49 66 0a  74 68 65 20 75 73 65 72  |u>). If.the user|
00013d90  20 6d 61 6b 65 73 20 61  20 76 61 6c 69 64 20 66  | makes a valid f|
00013da0  6f 6e 74 20 73 65 6c 65  63 74 69 6f 6e 20 74 68  |ont selection th|
00013db0  65 20 66 6f 6e 74 20 6e  61 6d 65 20 63 61 6e 20  |e font name can |
00013dc0  62 65 0a 72 65 74 72 69  65 76 65 64 20 28 77 69  |be.retrieved (wi|
00013dd0  74 68 20 3c 46 4e 73 68  65 6c 6c 5f 46 6f 6e 74  |th <FNshell_Font|
00013de0  4d 65 6e 75 47 65 74 4c  61 73 74 53 65 6c 65 63  |MenuGetLastSelec|
00013df0  74 65 64 46 6f 6e 74 3e  29 20 66 6f 72 20 75 73  |tedFont>) for us|
00013e00  65 20 69 6e 0a 74 68 65  20 75 73 65 72 20 61 70  |e in.the user ap|
00013e10  70 6c 69 63 61 74 69 6f  6e 2e 20 43 68 61 6e 67  |plication. Chang|
00013e20  65 73 20 74 6f 20 74 68  65 20 46 6f 6e 74 24 50  |es to the Font$P|
00013e30  61 74 68 20 76 61 72 69  61 62 6c 65 20 73 75 63  |ath variable suc|
00013e40  68 20 61 73 0a 61 64 64  69 6e 67 20 6f 72 20 72  |h as.adding or r|
00013e50  65 6d 6f 76 69 6e 67 20  66 6f 6e 74 20 64 69 72  |emoving font dir|
00013e60  65 63 74 6f 72 69 65 73  20 61 72 65 20 64 65 74  |ectories are det|
00013e70  65 63 74 65 64 20 61 6e  64 20 74 68 65 20 66 6f  |ected and the fo|
00013e80  6e 74 20 6d 65 6e 75 0a  72 65 62 75 69 6c 74 20  |nt menu.rebuilt |
00013e90  61 73 20 6e 65 63 65 73  73 61 72 79 2e 0a 0a 49  |as necessary...I|
00013ea0  74 20 77 69 6c 6c 20 6e  6f 74 2c 20 68 6f 77 65  |t will not, howe|
00013eb0  76 65 72 2c 20 64 65 74  65 63 74 20 66 6f 6e 74  |ver, detect font|
00013ec0  73 20 62 65 69 6e 67 20  61 64 64 65 64 20 6f 72  |s being added or|
00013ed0  20 72 65 6d 6f 76 65 64  20 66 72 6f 6d 20 61 6e  | removed from an|
00013ee0  0a 65 78 69 73 74 69 6e  67 20 66 6f 6e 74 20 64  |.existing font d|
00013ef0  69 72 65 63 74 6f 72 79  20 77 68 69 6c 65 20 74  |irectory while t|
00013f00  68 65 20 45 76 6e 74 53  68 65 6c 6c 20 61 70 70  |he EvntShell app|
00013f10  6c 69 63 61 74 69 6f 6e  20 69 73 0a 72 75 6e 6e  |lication is.runn|
00013f20  69 6e 67 2e 20 49 74 20  61 70 70 65 61 72 73 20  |ing. It appears |
00013f30  74 68 61 74 20 61 20 72  65 2d 62 6f 6f 74 20 69  |that a re-boot i|
00013f40  73 20 72 65 71 75 69 72  65 64 20 74 6f 20 73 6f  |s required to so|
00013f50  72 74 20 74 68 69 6e 67  73 20 6f 75 74 0a 61 66  |rt things out.af|
00013f60  74 65 72 20 74 68 65 20  63 6f 6e 74 65 6e 74 73  |ter the contents|
00013f70  20 6f 66 20 74 68 65 20  66 6f 6e 74 20 64 69 72  | of the font dir|
00013f80  65 63 74 6f 72 69 65 73  20 68 61 76 65 20 63 68  |ectories have ch|
00013f90  61 6e 67 65 64 2e 20 4f  68 20 77 65 6c 6c 2c 0a  |anged. Oh well,.|
00013fa0  69 74 20 73 65 65 6d 73  20 74 68 61 74 20 61 20  |it seems that a |
00013fb0  6c 6f 74 20 6f 66 20 6f  74 68 65 72 20 61 70 70  |lot of other app|
00013fc0  6c 69 63 61 74 69 6f 6e  73 20 63 61 6e 27 74 20  |lications can't |
00013fd0  63 6f 70 65 20 77 69 74  68 20 74 68 69 73 0a 65  |cope with this.e|
00013fe0  69 74 68 65 72 21 0a 0a  54 68 65 20 46 6f 6e 74  |ither!..The Font|
00013ff0  4d 65 6e 75 20 6d 6f 64  75 6c 65 20 63 72 65 61  |Menu module crea|
00014000  74 65 73 20 61 20 6d 65  6e 75 20 69 6e 20 74 68  |tes a menu in th|
00014010  65 20 72 65 6c 6f 63 61  74 61 62 6c 65 20 6d 6f  |e relocatable mo|
00014020  64 75 6c 65 20 61 72 65  61 0a 77 68 69 63 68 20  |dule area.which |
00014030  69 73 20 73 68 61 72 65  64 20 62 65 74 77 65 65  |is shared betwee|
00014040  6e 20 61 6c 6c 20 61 70  70 6c 69 63 61 74 69 6f  |n all applicatio|
00014050  6e 73 20 77 69 73 68 69  6e 67 20 74 6f 20 75 73  |ns wishing to us|
00014060  65 20 69 74 2e 20 41 73  20 61 0a 66 6f 6e 74 20  |e it. As a.font |
00014070  6d 65 6e 75 20 70 6f 74  65 6e 74 69 61 6c 6c 79  |menu potentially|
00014080  20 74 61 6b 65 73 20 75  70 20 61 20 6c 6f 74 20  | takes up a lot |
00014090  6f 66 20 73 70 61 63 65  20 74 68 69 73 20 69 73  |of space this is|
000140a0  20 61 20 76 65 72 79 0a  65 66 66 69 63 69 65 6e  | a very.efficien|
000140b0  74 20 77 61 79 20 6f 66  20 68 61 6e 64 6c 69 6e  |t way of handlin|
000140c0  67 20 69 74 2c 20 65 73  70 65 63 69 61 6c 6c 79  |g it, especially|
000140d0  20 61 73 20 74 68 65 20  6d 65 6e 75 20 69 73 20  | as the menu is |
000140e0  6c 61 69 64 20 6f 75 74  0a 73 6f 20 74 68 61 74  |laid out.so that|
000140f0  20 69 74 20 69 73 20 65  61 73 69 65 72 20 74 6f  | it is easier to|
00014100  20 75 73 65 20 74 68 61  6e 20 61 20 73 74 72 61  | use than a stra|
00014110  69 67 68 74 20 6c 69 73  74 20 6f 66 20 66 6f 6e  |ight list of fon|
00014120  74 73 2e 0a 0a 41 20 68  65 6c 70 20 73 79 73 74  |ts...A help syst|
00014130  65 6d 20 63 6f 6e 74 61  69 6e 69 6e 67 20 74 68  |em containing th|
00014140  65 20 66 75 6c 6c 20 3c  46 6f 6e 74 4d 65 6e 75  |e full <FontMenu|
00014150  20 64 6f 63 75 6d 65 6e  74 69 6f 6e 3d 3e 46 6f  | documention=>Fo|
00014160  6e 74 4d 65 6e 75 2e 24  3e 20 69 73 0a 73 75 70  |ntMenu.$> is.sup|
00014170  70 6c 69 65 64 20 77 69  74 68 20 74 68 65 20 45  |plied with the E|
00014180  76 6e 74 53 68 65 6c 6c  20 6c 69 62 72 61 72 79  |vntShell library|
00014190  20 61 73 20 69 74 20 69  73 20 61 20 72 65 71 75  | as it is a requ|
000141a0  69 72 65 6d 65 6e 74 20  74 68 61 74 0a 74 68 65  |irement that.the|
000141b0  20 74 68 65 20 6d 6f 64  75 6c 65 20 61 6e 64 20  | the module and |
000141c0  69 74 73 20 64 6f 63 75  6d 65 6e 74 61 74 69 6f  |its documentatio|
000141d0  6e 20 6d 75 73 74 20 62  65 20 73 75 70 70 6c 69  |n must be suppli|
000141e0  65 64 20 74 6f 67 65 74  68 65 72 2e 0a 48 6f 77  |ed together..How|
000141f0  65 76 65 72 2c 20 69 74  20 69 73 20 75 6e 6c 69  |ever, it is unli|
00014200  6b 65 6c 79 20 74 68 61  74 20 74 68 65 20 53 57  |kely that the SW|
00014210  49 73 20 70 72 6f 76 69  64 65 64 20 62 79 20 74  |Is provided by t|
00014220  68 65 20 6d 6f 64 75 6c  65 20 77 69 6c 6c 0a 6e  |he module will.n|
00014230  65 65 64 20 74 6f 20 62  65 20 63 61 6c 6c 65 64  |eed to be called|
00014240  20 62 79 20 74 68 65 20  75 73 65 72 20 61 70 70  | by the user app|
00014250  6c 69 63 61 74 69 6f 6e  20 61 73 20 74 68 65 20  |lication as the |
00014260  6c 69 62 72 61 72 79 20  63 6f 64 65 0a 70 65 72  |library code.per|
00014270  66 6f 72 6d 73 20 74 68  65 20 6e 65 63 65 73 73  |forms the necess|
00014280  61 72 79 20 61 63 74 69  6f 6e 73 2e 0a 0a 54 68  |ary actions...Th|
00014290  65 20 65 78 61 6d 70 6c  65 20 61 70 70 6c 69 63  |e example applic|
000142a0  61 74 69 6f 6e 20 21 52  65 64 72 61 77 20 64 65  |ation !Redraw de|
000142b0  6d 6f 6e 73 74 72 61 74  65 73 20 74 68 65 20 75  |monstrates the u|
000142c0  73 65 20 6f 66 0a 74 68  65 73 65 20 72 6f 75 74  |se of.these rout|
000142d0  69 6e 65 73 2e 4f 75 74  6c 69 6e 65 20 46 6f 6e  |ines.Outline Fon|
000142e0  74 73 0a 3c 41 74 74 61  63 68 46 6f 6e 74 53 75  |ts.<AttachFontSu|
000142f0  62 4d 65 6e 75 20 20 20  20 20 20 20 20 20 20 3d  |bMenu          =|
00014300  3e 50 52 4f 43 73 68 65  6c 6c 5f 41 74 74 61 63  |>PROCshell_Attac|
00014310  68 46 6f 6e 74 53 75 62  4d 65 6e 75 3e 0a 3c 46  |hFontSubMenu>.<F|
00014320  6f 6e 74 4d 65 6e 75 47  65 74 4c 61 73 74 53 65  |ontMenuGetLastSe|
00014330  6c 65 63 74 65 64 46 6f  6e 74 3d 3e 46 4e 73 68  |lectedFont=>FNsh|
00014340  65 6c 6c 5f 46 6f 6e 74  4d 65 6e 75 47 65 74 4c  |ell_FontMenuGetL|
00014350  61 73 74 53 65 6c 65 63  74 65 64 46 6f 6e 74 3e  |astSelectedFont>|
00014360  0a 3c 46 6f 6e 74 4d 65  6e 75 53 65 6c 65 63 74  |.<FontMenuSelect|
00014370  46 6f 6e 74 20 20 20 20  20 20 20 20 20 3d 3e 50  |Font         =>P|
00014380  52 4f 43 73 68 65 6c 6c  5f 46 6f 6e 74 4d 65 6e  |ROCshell_FontMen|
00014390  75 53 65 6c 65 63 74 46  6f 6e 74 3e 50 52 4f 43  |uSelectFont>PROC|
000143a0  73 68 65 6c 6c 5f 46 6f  6e 74 4d 65 6e 75 53 65  |shell_FontMenuSe|
000143b0  6c 65 63 74 46 6f 6e 74  28 29 0a 50 61 72 61 6d  |lectFont().Param|
000143c0  73 20 3d 3e 0a 20 20 20  20 20 20 20 20 20 73 74  |s =>.         st|
000143d0  72 20 6e 61 6d 65 20 6f  66 20 66 6f 6e 74 20 74  |r name of font t|
000143e0  6f 20 73 65 6c 65 63 74  0a 0a 54 68 65 20 66 6f  |o select..The fo|
000143f0  6e 74 20 6e 61 6d 65 20  69 73 20 75 73 65 64 20  |nt name is used |
00014400  62 79 20 74 68 65 20 6c  69 62 72 61 72 79 20 72  |by the library r|
00014410  6f 75 74 69 6e 65 73 0a  74 6f 20 64 65 63 69 64  |outines.to decid|
00014420  65 20 77 68 69 63 68 20  66 6f 6e 74 20 6e 61 6d  |e which font nam|
00014430  65 20 74 6f 20 73 65 6c  65 63 74 20 77 68 65 6e  |e to select when|
00014440  20 74 68 65 0a 66 6f 6e  74 20 6d 65 6e 75 20 6f  | the.font menu o|
00014450  70 65 6e 73 2e 20 41 73  20 74 68 65 20 73 61 6d  |pens. As the sam|
00014460  65 20 66 6f 6e 74 20 6d  65 6e 75 20 63 61 6e 20  |e font menu can |
00014470  62 65 0a 75 73 65 64 20  62 79 20 64 69 66 66 65  |be.used by diffe|
00014480  72 65 6e 74 20 61 70 70  6c 69 63 61 74 69 6f 6e  |rent application|
00014490  73 20 69 74 20 69 73 20  69 6d 70 6f 72 74 61 6e  |s it is importan|
000144a0  74 0a 74 6f 20 73 65 74  20 74 68 69 73 20 75 70  |t.to set this up|
000144b0  20 6a 75 73 74 20 62 65  66 6f 72 65 20 74 68 65  | just before the|
000144c0  20 6d 65 6e 75 20 6f 70  65 6e 73 2e 0a 0a 4c 69  | menu opens...Li|
000144d0  62 72 61 72 79 20 47 72  6f 75 70 20 3d 3e 20 3c  |brary Group => <|
000144e0  46 6f 6e 74 73 3d 3e 4c  69 62 47 72 6f 75 70 46  |Fonts=>LibGroupF|
000144f0  6f 6e 74 73 3e 46 4e 73  68 65 6c 6c 5f 46 6f 6e  |onts>FNshell_Fon|
00014500  74 4d 65 6e 75 47 65 74  4c 61 73 74 53 65 6c 65  |tMenuGetLastSele|
00014510  63 74 65 64 46 6f 6e 74  0a 50 61 72 61 6d 73 20  |ctedFont.Params |
00014520  3d 3e 0a 20 20 20 20 20  20 20 20 20 4e 6f 6e 65  |=>.         None|
00014530  0a 0a 20 20 20 20 20 20  20 5c 3c 3d 0a 20 20 20  |..       \<=.   |
00014540  20 20 20 20 20 20 73 74  72 20 66 6f 6e 74 20 6e  |      str font n|
00014550  61 6d 65 20 28 63 6f 75  6c 64 20 62 65 20 22 22  |ame (could be ""|
00014560  29 0a 0a 54 68 69 73 20  72 6f 75 74 69 6e 65 20  |)..This routine |
00014570  73 68 6f 75 6c 64 20 62  65 20 75 73 65 64 20 69  |should be used i|
00014580  6e 20 74 68 65 20 66 75  6e 63 74 69 6f 6e 0a 63  |n the function.c|
00014590  61 6c 6c 65 64 20 77 68  65 6e 20 61 20 6d 65 6e  |alled when a men|
000145a0  75 5f 73 65 6c 65 63 74  20 65 76 65 6e 74 20 68  |u_select event h|
000145b0  61 73 20 6f 63 63 75 72  72 65 64 20 74 6f 0a 64  |as occurred to.d|
000145c0  69 73 63 6f 76 65 72 20  69 66 20 66 6f 6e 74 20  |iscover if font |
000145d0  6d 65 6e 75 20 73 65 6c  65 63 74 69 6f 6e 20 68  |menu selection h|
000145e0  61 73 20 62 65 65 6e 20  6d 61 64 65 2c 0a 61 6e  |as been made,.an|
000145f0  64 20 69 66 20 73 6f 20  74 68 65 20 6e 61 6d 65  |d if so the name|
00014600  20 6f 66 20 74 68 65 20  66 6f 6e 74 2e 0a 0a 49  | of the font...I|
00014610  66 20 6e 6f 20 76 61 6c  69 64 20 66 6f 6e 74 20  |f no valid font |
00014620  6d 65 6e 75 20 73 65 6c  65 63 74 69 6f 6e 20 68  |menu selection h|
00014630  61 73 20 62 65 65 6e 20  6d 61 64 65 0a 74 68 65  |as been made.the|
00014640  20 66 75 6e 63 74 69 6f  6e 20 77 69 6c 6c 20 72  | function will r|
00014650  65 74 75 72 6e 20 22 22  20 61 6e 64 20 6e 6f 20  |eturn "" and no |
00014660  61 63 74 69 6f 6e 20 73  68 6f 75 6c 64 0a 62 65  |action should.be|
00014670  20 74 61 6b 65 6e 2e 0a  0a 4c 69 62 72 61 72 79  | taken...Library|
00014680  20 47 72 6f 75 70 20 3d  3e 20 3c 46 6f 6e 74 73  | Group => <Fonts|
00014690  3d 3e 4c 69 62 47 72 6f  75 70 46 6f 6e 74 73 3e  |=>LibGroupFonts>|
000146a0  50 52 4f 43 73 68 65 6c  6c 5f 49 63 6f 6e 44 65  |PROCshell_IconDe|
000146b0  6c 65 74 65 28 29 0a 50  61 72 61 6d 73 20 3d 3e  |lete().Params =>|
000146c0  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 77 69  |.         int wi|
000146d0  6e 64 6f 77 20 68 61 6e  64 6c 65 0a 20 20 20 20  |ndow handle.    |
000146e0  20 20 20 20 20 69 6e 74  20 69 63 6f 6e 20 68 61  |     int icon ha|
000146f0  6e 64 6c 65 0a 0a 54 68  69 73 20 63 61 6c 6c 20  |ndle..This call |
00014700  66 72 65 65 73 20 61 6e  79 20 6d 65 6d 6f 72 79  |frees any memory|
00014710  20 75 73 65 64 20 66 6f  72 20 69 6e 64 69 72 65  | used for indire|
00014720  63 74 65 64 20 64 61 74  61 0a 61 6e 64 20 76 61  |cted data.and va|
00014730  6c 69 64 61 74 69 6f 6e  20 73 74 72 69 6e 67 73  |lidation strings|
00014740  2e 20 54 68 65 20 77 69  6e 64 6f 77 20 61 72 65  |. The window are|
00014750  61 20 63 6f 76 65 72 65  64 20 62 79 0a 74 68 65  |a covered by.the|
00014760  20 69 63 6f 6e 20 28 69  6e 63 6c 75 64 69 6e 67  | icon (including|
00014770  20 61 6e 79 20 33 44 20  62 6f 72 64 65 72 73 29  | any 3D borders)|
00014780  20 69 73 20 6e 6f 74 20  72 65 64 72 61 77 6e 2e  | is not redrawn.|
00014790  0a 55 73 65 20 3c 50 52  4f 43 73 68 65 6c 6c 5f  |.Use <PROCshell_|
000147a0  49 63 6f 6e 44 65 6c 65  74 65 32 3e 20 74 6f 20  |IconDelete2> to |
000147b0  64 65 6c 65 74 65 20 74  68 65 20 69 63 6f 6e 20  |delete the icon |
000147c0  61 6e 64 0a 72 65 64 72  61 77 20 74 68 65 20 77  |and.redraw the w|
000147d0  69 6e 64 6f 77 20 61 72  65 61 2e 0a 0a 4c 69 62  |indow area...Lib|
000147e0  72 61 72 79 20 47 72 6f  75 70 20 3d 3e 20 3c 49  |rary Group => <I|
000147f0  63 6f 6e 73 3d 3e 4c 69  62 47 72 6f 75 70 49 63  |cons=>LibGroupIc|
00014800  6f 6e 73 3e 50 52 4f 43  73 68 65 6c 6c 5f 41 74  |ons>PROCshell_At|
00014810  74 61 63 68 46 6f 6e 74  4d 65 6e 75 28 29 0a 50  |tachFontMenu().P|
00014820  61 72 61 6d 73 20 3d 3e  0a 20 20 20 20 20 20 20  |arams =>.       |
00014830  20 20 73 74 72 20 6d 65  6e 75 20 73 74 72 69 6e  |  str menu strin|
00014840  67 0a 20 20 20 20 20 20  20 20 20 73 74 72 20 3c  |g.         str <|
00014850  66 75 6e 63 74 69 6f 6e  3d 3e 55 73 65 72 46 4e  |function=>UserFN|
00014860  31 39 3e 20 74 6f 20 63  61 6c 6c 20 77 68 65 6e  |19> to call when|
00014870  20 6d 65 6e 75 5f 73 65  6c 65 63 74 0a 20 20 20  | menu_select.   |
00014880  20 20 20 20 20 20 20 20  20 20 65 76 65 6e 74 20  |          event |
00014890  6f 63 63 75 72 73 20 28  6f 70 74 69 6f 6e 61 6c  |occurs (optional|
000148a0  2c 20 6d 61 79 20 62 65  20 22 22 29 0a 0a 55 73  |, may be "")..Us|
000148b0  65 20 74 68 69 73 20 72  6f 75 74 69 6e 65 20 74  |e this routine t|
000148c0  6f 20 61 74 74 61 63 68  20 74 68 65 20 46 6f 6e  |o attach the Fon|
000148d0  74 4d 65 6e 75 20 74 6f  20 61 6e 20 69 63 6f 6e  |tMenu to an icon|
000148e0  20 6f 72 0a 61 20 77 69  6e 64 6f 77 2e 20 41 74  | or.a window. At|
000148f0  74 61 63 68 20 74 68 65  20 46 6f 6e 74 4d 65 6e  |tach the FontMen|
00014900  75 20 74 6f 20 61 6e 20  65 78 69 73 74 69 6e 67  |u to an existing|
00014910  20 6d 65 6e 75 0a 73 74  72 75 63 74 75 72 65 20  | menu.structure |
00014920  77 69 74 68 20 3c 50 52  4f 43 73 68 65 6c 6c 5f  |with <PROCshell_|
00014930  41 74 74 61 63 68 46 6f  6e 74 53 75 62 4d 65 6e  |AttachFontSubMen|
00014940  75 3e 2e 0a 0a 54 68 69  73 20 72 6f 75 74 69 6e  |u>...This routin|
00014950  65 20 77 69 6c 6c 20 61  74 74 65 6d 70 74 20 74  |e will attempt t|
00014960  6f 20 6c 6f 61 64 20 74  68 65 20 6e 65 63 65 73  |o load the neces|
00014970  73 61 72 79 0a 27 46 6f  6e 74 4d 65 6e 75 27 20  |sary.'FontMenu' |
00014980  73 75 70 70 6f 72 74 20  6d 6f 64 75 6c 65 20 69  |support module i|
00014990  66 20 69 74 20 69 73 20  6e 6f 74 20 61 6c 72 65  |f it is not alre|
000149a0  61 64 79 0a 6c 6f 61 64  65 64 2e 20 49 74 20 65  |ady.loaded. It e|
000149b0  78 70 65 63 74 73 20 74  6f 20 66 69 6e 64 20 69  |xpects to find i|
000149c0  74 20 69 6e 20 74 68 65  0a 45 76 6e 74 53 68 65  |t in the.EvntShe|
000149d0  6c 6c 53 79 73 74 65 6d  24 50 61 74 68 20 28 75  |llSystem$Path (u|
000149e0  73 75 61 6c 6c 79 20 69  6e 20 21 53 68 65 6c 6c  |sually in !Shell|
000149f0  53 79 73 29 2e 0a 0a 4c  69 62 72 61 72 79 20 47  |Sys)...Library G|
00014a00  72 6f 75 70 20 3d 3e 20  3c 4d 65 6e 75 73 3d 3e  |roup => <Menus=>|
00014a10  4c 69 62 47 72 6f 75 70  4d 65 6e 75 73 3e 2c 3c  |LibGroupMenus>,<|
00014a20  46 6f 6e 74 73 3d 3e 4c  69 62 47 72 6f 75 70 46  |Fonts=>LibGroupF|
00014a30  6f 6e 74 73 3e 55 73 65  72 20 46 4e 20 28 50 52  |onts>User FN (PR|
00014a40  4f 43 73 68 65 6c 6c 5f  41 74 74 61 63 68 46 6f  |OCshell_AttachFo|
00014a50  6e 74 4d 65 6e 75 29 20  0a 50 61 72 61 6d 73 20  |ntMenu) .Params |
00014a60  3d 3e 20 0a 20 20 20 20  20 20 20 20 20 73 74 72  |=> .         str|
00014a70  20 73 65 6c 65 63 74 69  6f 6e 20 73 74 72 69 6e  | selection strin|
00014a80  67 0a 0a 20 20 20 20 20  20 20 5c 3c 3d 0a 20 20  |g..       \<=.  |
00014a90  20 20 20 20 20 20 20 69  6e 74 20 6a 75 6e 6b 0a  |       int junk.|
00014aa0  0a 54 68 69 73 20 66 75  6e 63 74 69 6f 6e 20 63  |.This function c|
00014ab0  61 6e 20 62 65 20 75 73  65 64 20 74 6f 20 64 69  |an be used to di|
00014ac0  73 63 6f 76 65 72 20 74  68 65 20 6e 61 6d 65 0a  |scover the name.|
00014ad0  6f 66 20 74 68 65 20 66  6f 6e 74 20 28 69 66 20  |of the font (if |
00014ae0  61 6e 79 29 20 74 68 61  74 20 68 61 73 20 62 65  |any) that has be|
00014af0  65 6e 20 73 65 6c 65 63  74 65 64 20 69 6e 0a 74  |en selected in.t|
00014b00  68 65 20 46 6f 6e 74 4d  65 6e 75 2e 20 55 73 65  |he FontMenu. Use|
00014b10  20 3c 46 4e 73 68 65 6c  6c 5f 46 6f 6e 74 4d 65  | <FNshell_FontMe|
00014b20  6e 75 47 65 74 4c 61 73  74 53 65 6c 65 63 74 65  |nuGetLastSelecte|
00014b30  64 46 6f 6e 74 3e 0a 66  6f 72 20 74 68 69 73 2e  |dFont>.for this.|
00014b40  55 70 64 61 74 65 64 20  57 69 6e 64 6f 77 20 48  |Updated Window H|
00014b50  61 6e 64 6c 65 73 0a 41  73 20 74 68 69 73 20 72  |andles.As this r|
00014b60  6f 75 74 69 6e 65 20 64  65 6c 65 74 65 73 20 61  |outine deletes a|
00014b70  6e 64 20 72 65 63 72 65  61 74 65 73 20 74 68 65  |nd recreates the|
00014b80  20 77 69 6e 64 6f 77 0a  69 74 20 69 73 20 70 6f  | window.it is po|
00014b90  73 73 69 62 6c 65 20 74  68 61 74 20 74 68 65 20  |ssible that the |
00014ba0  57 49 4d 50 20 77 69 6c  6c 20 61 6c 6c 6f 63 61  |WIMP will alloca|
00014bb0  74 65 20 61 20 6e 65 77  0a 77 69 6e 64 6f 77 20  |te a new.window |
00014bc0  68 61 6e 64 6c 65 2e 20  54 68 65 20 45 76 6e 74  |handle. The Evnt|
00014bd0  53 68 65 6c 6c 20 6c 69  62 72 61 72 79 20 77 69  |Shell library wi|
00014be0  6c 6c 20 64 65 74 65 63  74 0a 74 68 69 73 20 61  |ll detect.this a|
00014bf0  6e 64 20 75 70 64 61 74  65 20 74 68 65 20 72 65  |nd update the re|
00014c00  67 69 73 74 65 72 65 64  20 65 76 65 6e 74 73 20  |gistered events |
00014c10  61 73 20 6e 65 63 65 73  73 61 72 79 2e 0a 0a 54  |as necessary...T|
00014c20  68 65 20 75 73 65 72 20  61 70 70 6c 69 63 61 74  |he user applicat|
00014c30  69 6f 6e 20 6d 75 73 74  20 6e 6f 74 65 20 61 6e  |ion must note an|
00014c40  64 20 75 73 65 20 74 68  65 20 6e 65 77 0a 68 61  |d use the new.ha|
00014c50  6e 64 6c 65 20 69 74 73  65 6c 66 2c 20 68 6f 77  |ndle itself, how|
00014c60  65 76 65 72 21 46 4e 73  68 65 6c 6c 5f 49 63 6f  |ever!FNshell_Ico|
00014c70  6e 4d 6f 76 65 28 29 0a  50 61 72 61 6d 73 20 3d  |nMove().Params =|
00014c80  3e 0a 20 20 20 20 20 20  20 20 20 69 6e 74 20 77  |>.         int w|
00014c90  69 6e 64 6f 77 20 68 61  6e 64 6c 65 20 20 0a 20  |indow handle  . |
00014ca0  20 20 20 20 20 20 20 20  69 6e 74 20 69 63 6f 6e  |        int icon|
00014cb0  20 68 61 6e 64 6c 65 0a  20 20 20 20 20 20 20 20  | handle.        |
00014cc0  20 69 6e 74 20 6d 69 6e  20 78 20 63 6f 6f 72 64  | int min x coord|
00014cd0  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 6d 69  |.         int mi|
00014ce0  6e 20 79 20 63 6f 6f 72  64 0a 20 20 20 20 20 20  |n y coord.      |
00014cf0  20 20 20 69 6e 74 20 6d  61 78 20 78 20 63 6f 6f  |   int max x coo|
00014d00  72 64 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |rd.         int |
00014d10  6d 61 79 20 79 20 63 6f  6f 72 64 0a 0a 20 20 20  |may y coord..   |
00014d20  20 20 20 20 5c 3c 3d 0a  20 20 20 20 20 20 20 20  |    \<=.        |
00014d30  20 69 6e 74 20 69 63 6f  6e 20 68 61 6e 64 6c 65  | int icon handle|
00014d40  0a 0a 41 6c 6c 6f 77 73  20 74 68 65 20 72 65 64  |..Allows the red|
00014d50  65 66 69 6e 69 74 69 6f  6e 20 6f 66 20 61 6e 20  |efinition of an |
00014d60  69 63 6f 6e 27 73 20 62  6f 75 6e 64 69 6e 67 0a  |icon's bounding.|
00014d70  62 6f 78 2e 20 41 73 20  74 68 65 20 69 63 6f 6e  |box. As the icon|
00014d80  20 68 61 73 20 74 6f 20  62 65 20 64 65 6c 65 74  | has to be delet|
00014d90  65 64 20 61 6e 64 20 74  68 65 6e 0a 72 65 63 72  |ed and then.recr|
00014da0  65 61 74 65 64 20 69 74  20 72 65 74 75 72 6e 73  |eated it returns|
00014db0  20 74 68 65 20 6e 65 77  20 69 63 6f 6e 20 68 61  | the new icon ha|
00014dc0  6e 64 6c 65 20 28 77 68  69 63 68 0a 73 68 6f 75  |ndle (which.shou|
00014dd0  6c 64 20 62 65 20 74 68  65 20 73 61 6d 65 20 61  |ld be the same a|
00014de0  73 20 74 68 65 20 6f 6c  64 20 68 61 6e 64 6c 65  |s the old handle|
00014df0  29 2e 20 54 68 65 20 69  63 6f 6e 0a 69 73 20 72  |). The icon.is r|
00014e00  65 64 72 61 77 6e 20 61  66 74 65 72 20 72 65 73  |edrawn after res|
00014e10  69 7a 69 6e 67 2c 20 74  61 6b 69 6e 67 20 61 63  |izing, taking ac|
00014e20  63 6f 75 6e 74 20 6f 66  20 61 6e 79 0a 33 44 20  |count of any.3D |
00014e30  62 6f 72 64 65 72 73 2e  0a 0a 4c 69 62 72 61 72  |borders...Librar|
00014e40  79 20 47 72 6f 75 70 20  3d 3e 20 3c 49 63 6f 6e  |y Group => <Icon|
00014e50  73 3d 3e 4c 69 62 47 72  6f 75 70 49 63 6f 6e 73  |s=>LibGroupIcons|
00014e60  3e 46 4e 73 68 65 6c 6c  5f 49 63 6f 6e 4d 6f 76  |>FNshell_IconMov|
00014e70  65 32 28 29 0a 50 61 72  61 6d 73 20 3d 3e 0a 20  |e2().Params =>. |
00014e80  20 20 20 20 20 20 20 20  69 6e 74 20 77 69 6e 64  |        int wind|
00014e90  6f 77 20 68 61 6e 64 6c  65 20 20 0a 20 20 20 20  |ow handle  .    |
00014ea0  20 20 20 20 20 69 6e 74  20 69 63 6f 6e 20 68 61  |     int icon ha|
00014eb0  6e 64 6c 65 0a 20 20 20  20 20 20 20 20 20 69 6e  |ndle.         in|
00014ec0  74 20 78 20 64 69 73 70  6c 61 63 65 6d 65 6e 74  |t x displacement|
00014ed0  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 79 20  |.         int y |
00014ee0  64 69 73 70 6c 61 63 65  6d 65 6e 74 0a 0a 20 20  |displacement..  |
00014ef0  20 20 20 20 20 5c 3c 3d  0a 20 20 20 20 20 20 20  |     \<=.       |
00014f00  20 20 69 6e 74 20 69 63  6f 6e 20 68 61 6e 64 6c  |  int icon handl|
00014f10  65 0a 0a 41 6c 6c 6f 77  73 20 61 6e 20 69 63 6f  |e..Allows an ico|
00014f20  6e 20 74 6f 20 62 65 20  6d 6f 76 65 64 20 61 72  |n to be moved ar|
00014f30  6f 75 6e 64 20 74 68 65  20 77 69 6e 64 6f 77 2e  |ound the window.|
00014f40  0a 41 73 20 74 68 65 20  69 63 6f 6e 20 68 61 73  |.As the icon has|
00014f50  20 74 6f 20 62 65 20 64  65 6c 65 74 65 64 20 61  | to be deleted a|
00014f60  6e 64 20 74 68 65 6e 0a  72 65 63 72 65 61 74 65  |nd then.recreate|
00014f70  64 20 69 74 20 72 65 74  75 72 6e 73 20 74 68 65  |d it returns the|
00014f80  20 6e 65 77 20 69 63 6f  6e 20 68 61 6e 64 6c 65  | new icon handle|
00014f90  20 28 77 68 69 63 68 0a  73 68 6f 75 6c 64 20 62  | (which.should b|
00014fa0  65 20 74 68 65 20 73 61  6d 65 20 61 73 20 74 68  |e the same as th|
00014fb0  65 20 6f 6c 64 20 68 61  6e 64 6c 65 29 2e 20 54  |e old handle). T|
00014fc0  68 65 20 69 63 6f 6e 0a  69 73 20 72 65 64 72 61  |he icon.is redra|
00014fd0  77 6e 20 61 66 74 65 72  20 6d 6f 76 69 6e 67 2c  |wn after moving,|
00014fe0  20 74 61 6b 69 6e 67 20  61 63 63 6f 75 6e 74 20  | taking account |
00014ff0  6f 66 20 61 6e 79 0a 33  44 20 62 6f 72 64 65 72  |of any.3D border|
00015000  73 2e 0a 0a 53 65 65 20  61 6c 73 6f 20 3c 46 4e  |s...See also <FN|
00015010  73 68 65 6c 6c 5f 49 63  6f 6e 4d 6f 76 65 3e 0a  |shell_IconMove>.|
00015020  0a 4c 69 62 72 61 72 79  20 47 72 6f 75 70 20 3d  |.Library Group =|
00015030  3e 20 3c 49 63 6f 6e 73  3d 3e 4c 69 62 47 72 6f  |> <Icons=>LibGro|
00015040  75 70 49 63 6f 6e 73 3e  50 52 4f 43 73 68 65 6c  |upIcons>PROCshel|
00015050  6c 5f 49 63 6f 6e 44 65  6c 65 74 65 32 28 29 0a  |l_IconDelete2().|
00015060  50 61 72 61 6d 73 20 3d  3e 0a 20 20 20 20 20 20  |Params =>.      |
00015070  20 20 20 69 6e 74 20 77  69 6e 64 6f 77 20 68 61  |   int window ha|
00015080  6e 64 6c 65 0a 20 20 20  20 20 20 20 20 20 69 6e  |ndle.         in|
00015090  74 20 69 63 6f 6e 20 68  61 6e 64 6c 65 0a 0a 54  |t icon handle..T|
000150a0  68 69 73 20 63 61 6c 6c  20 66 72 65 65 73 20 61  |his call frees a|
000150b0  6e 79 20 6d 65 6d 6f 72  79 20 75 73 65 64 20 66  |ny memory used f|
000150c0  6f 72 20 69 6e 64 69 72  65 63 74 65 64 20 64 61  |or indirected da|
000150d0  74 61 0a 61 6e 64 20 76  61 6c 69 64 61 74 69 6f  |ta.and validatio|
000150e0  6e 20 73 74 72 69 6e 67  73 2e 20 54 68 65 20 77  |n strings. The w|
000150f0  69 6e 64 6f 77 20 61 72  65 61 20 63 6f 76 65 72  |indow area cover|
00015100  65 64 20 62 79 0a 74 68  65 20 69 63 6f 6e 20 28  |ed by.the icon (|
00015110  69 6e 63 6c 75 64 69 6e  67 20 61 6e 79 20 33 44  |including any 3D|
00015120  20 62 6f 72 64 65 72 73  29 20 69 73 20 72 65 64  | borders) is red|
00015130  72 61 77 6e 2e 0a 0a 57  68 65 6e 20 61 20 6c 61  |rawn...When a la|
00015140  72 67 65 20 6e 75 6d 62  65 72 20 6f 66 20 69 63  |rge number of ic|
00015150  6f 6e 73 20 61 72 65 20  74 6f 20 62 65 20 64 65  |ons are to be de|
00015160  6c 65 74 65 64 20 69 74  20 69 73 0a 62 65 74 74  |leted it is.bett|
00015170  65 72 20 74 6f 20 75 73  65 20 3c 50 52 4f 43 73  |er to use <PROCs|
00015180  68 65 6c 6c 5f 49 63 6f  6e 44 65 6c 65 74 65 3e  |hell_IconDelete>|
00015190  20 61 6e 64 20 74 68 65  6e 20 72 65 64 72 61 77  | and then redraw|
000151a0  0a 74 68 65 20 77 69 6e  64 6f 77 20 61 66 74 65  |.the window afte|
000151b0  72 77 61 72 64 73 20 61  73 20 74 68 69 73 20 77  |rwards as this w|
000151c0  69 6c 6c 20 62 65 20 71  75 69 63 6b 65 72 2e 0a  |ill be quicker..|
000151d0  0a 4c 69 62 72 61 72 79  20 47 72 6f 75 70 20 3d  |.Library Group =|
000151e0  3e 20 3c 49 63 6f 6e 73  3d 3e 4c 69 62 47 72 6f  |> <Icons=>LibGro|
000151f0  75 70 49 63 6f 6e 73 3e  50 52 4f 43 73 68 65 6c  |upIcons>PROCshel|
00015200  6c 5f 49 63 6f 6e 44 65  73 65 6c 65 63 74 41 6c  |l_IconDeselectAl|
00015210  6c 28 29 0a 50 61 72 61  6d 73 20 3d 3e 20 20 20  |l().Params =>   |
00015220  20 20 20 20 20 20 0a 20  20 20 20 20 20 20 20 20  |      .         |
00015230  69 6e 74 20 77 69 6e 64  6f 77 20 68 61 6e 64 6c  |int window handl|
00015240  65 20 20 20 20 20 20 20  20 20 0a 0a 44 65 73 65  |e         ..Dese|
00015250  6c 65 63 74 73 20 61 6c  6c 20 6f 66 20 74 68 65  |lects all of the|
00015260  20 69 63 6f 6e 73 20 63  6f 6e 74 61 69 6e 65 64  | icons contained|
00015270  0a 69 6e 20 74 68 65 20  73 70 65 63 69 66 69 65  |.in the specifie|
00015280  64 20 77 69 6e 64 6f 77  2e 0a 0a 4c 69 62 72 61  |d window...Libra|
00015290  72 79 20 47 72 6f 75 70  20 3d 3e 20 3c 49 63 6f  |ry Group => <Ico|
000152a0  6e 73 3d 3e 4c 69 62 47  72 6f 75 70 49 63 6f 6e  |ns=>LibGroupIcon|
000152b0  73 3e 50 52 4f 43 73 68  65 6c 6c 5f 49 63 6f 6e  |s>PROCshell_Icon|
000152c0  53 65 6c 65 63 74 41 6c  6c 28 29 0a 50 61 72 61  |SelectAll().Para|
000152d0  6d 73 20 3d 3e 20 20 20  20 20 20 20 20 20 0a 20  |ms =>         . |
000152e0  20 20 20 20 20 20 20 20  69 6e 74 20 77 69 6e 64  |        int wind|
000152f0  6f 77 20 68 61 6e 64 6c  65 20 20 20 20 20 20 20  |ow handle       |
00015300  20 20 0a 0a 53 65 6c 65  63 74 73 20 61 6c 6c 20  |  ..Selects all |
00015310  6f 66 20 74 68 65 20 69  63 6f 6e 73 20 63 6f 6e  |of the icons con|
00015320  74 61 69 6e 65 64 0a 69  6e 20 74 68 65 20 73 70  |tained.in the sp|
00015330  65 63 69 66 69 65 64 20  77 69 6e 64 6f 77 2e 0a  |ecified window..|
00015340  0a 4c 69 62 72 61 72 79  20 47 72 6f 75 70 20 3d  |.Library Group =|
00015350  3e 20 3c 49 63 6f 6e 73  3d 3e 4c 69 62 47 72 6f  |> <Icons=>LibGro|
00015360  75 70 49 63 6f 6e 73 3e  46 4e 73 68 65 6c 6c 5f  |upIcons>FNshell_|
00015370  49 63 6f 6e 47 65 74 43  6f 6d 6d 61 6e 64 28 29  |IconGetCommand()|
00015380  0a 50 61 72 61 6d 73 20  3d 3e 0a 20 20 20 20 20  |.Params =>.     |
00015390  20 20 20 20 69 6e 74 20  70 6f 69 6e 74 65 72 20  |    int pointer |
000153a0  74 6f 20 76 61 6c 69 64  61 74 69 6f 6e 20 73 74  |to validation st|
000153b0  72 69 6e 67 0a 20 20 20  20 20 20 20 20 20 73 74  |ring.         st|
000153c0  72 20 76 61 6c 69 64 61  74 69 6f 6e 20 63 6f 6d  |r validation com|
000153d0  6d 61 6e 64 0a 20 20 20  20 20 20 20 20 20 0a 20  |mand.         . |
000153e0  20 20 20 20 20 20 5c 3c  3d 0a 20 20 20 20 20 20  |      \<=.      |
000153f0  20 20 20 73 74 72 20 63  6f 6d 6d 61 6e 64 20 73  |   str command s|
00015400  74 72 69 6e 67 0a 0a 53  65 65 20 61 6c 73 6f 20  |tring..See also |
00015410  3c 46 4e 73 68 65 6c 6c  5f 49 63 6f 6e 47 65 74  |<FNshell_IconGet|
00015420  56 61 6c 69 64 61 74 69  6f 6e 3e 2e 0a 0a 4c 69  |Validation>...Li|
00015430  62 72 61 72 79 20 47 72  6f 75 70 20 3d 3e 20 3c  |brary Group => <|
00015440  49 63 6f 6e 73 3d 3e 4c  69 62 47 72 6f 75 70 49  |Icons=>LibGroupI|
00015450  63 6f 6e 73 3e 44 61 74  61 4c 6f 61 64 20 27 4e  |cons>DataLoad 'N|
00015460  6f 20 4c 6f 61 64 27 20  66 6c 61 67 0a 46 41 4c  |o Load' flag.FAL|
00015470  53 45 20 3d 20 64 61 74  61 20 66 69 6c 65 20 69  |SE = data file i|
00015480  73 20 6c 6f 61 64 65 64  20 69 6e 20 61 20 68 65  |s loaded in a he|
00015490  61 70 20 62 6c 6f 63 6b  20 61 6e 64 0a 20 20 20  |ap block and.   |
000154a0  20 20 20 20 20 74 68 65  20 6e 61 6d 65 20 61 6e  |     the name an|
000154b0  64 20 61 64 64 72 65 73  73 20 69 73 20 72 65 74  |d address is ret|
000154c0  75 72 6e 65 64 20 74 6f  20 74 68 65 0a 20 20 20  |urned to the.   |
000154d0  20 20 20 20 20 75 73 65  72 20 61 70 70 6c 69 63  |     user applic|
000154e0  61 74 69 6f 6e 2e 0a 0a  54 52 55 45 20 20 3d 20  |ation...TRUE  = |
000154f0  6f 6e 6c 79 20 74 68 65  20 64 61 74 61 20 66 69  |only the data fi|
00015500  6c 65 20 6e 61 6d 65 20  61 6e 64 20 74 79 70 65  |le name and type|
00015510  20 69 73 0a 20 20 20 20  20 20 20 20 72 65 74 75  | is.        retu|
00015520  72 6e 65 64 20 74 6f 20  74 68 65 20 75 73 65 72  |rned to the user|
00015530  20 61 70 70 6c 69 63 61  74 69 6f 6e 2e 0a 0a 54  | application...T|
00015540  68 69 73 20 66 6c 61 67  20 69 73 20 70 72 6f 76  |his flag is prov|
00015550  69 64 65 64 20 66 6f 72  20 6d 61 78 69 6d 75 6d  |ided for maximum|
00015560  20 66 6c 65 78 69 62 69  6c 69 74 79 0a 77 68 65  | flexibility.whe|
00015570  6e 20 64 65 61 6c 69 6e  67 20 77 69 74 68 20 64  |n dealing with d|
00015580  72 61 67 20 6c 6f 61 64  73 2e 20 57 68 65 6e 20  |rag loads. When |
00015590  79 6f 75 20 61 72 65 0a  63 6f 6e 76 65 72 74 69  |you are.converti|
000155a0  6e 67 20 61 6e 20 65 78  69 73 74 69 6e 67 20 70  |ng an existing p|
000155b0  72 6f 67 72 61 6d 20 74  6f 20 72 75 6e 20 75 6e  |rogram to run un|
000155c0  64 65 72 20 74 68 65 0a  45 76 6e 74 53 68 65 6c  |der the.EvntShel|
000155d0  6c 20 73 79 73 74 65 6d  20 79 6f 75 20 6d 61 79  |l system you may|
000155e0  20 61 6c 72 65 61 64 79  20 68 61 76 65 20 61 20  | already have a |
000155f0  77 6f 72 6b 69 6e 67 0a  6c 6f 61 64 20 72 6f 75  |working.load rou|
00015600  74 69 6e 65 2e 20 49 6e  20 74 68 69 73 20 63 61  |tine. In this ca|
00015610  73 65 20 73 65 74 20 74  68 65 20 66 6c 61 67 20  |se set the flag |
00015620  74 6f 20 54 52 55 45 0a  61 6e 64 20 77 68 65 6e  |to TRUE.and when|
00015630  20 61 20 64 72 61 67 20  6c 6f 61 64 20 6f 63 63  | a drag load occ|
00015640  75 72 73 20 79 6f 75 72  20 61 70 70 6c 69 63 61  |urs your applica|
00015650  74 69 6f 6e 20 77 69 6c  6c 0a 62 65 20 74 6f 6c  |tion will.be tol|
00015660  64 20 74 68 65 20 66 69  6c 65 6e 61 6d 65 2c 20  |d the filename, |
00015670  77 68 69 63 68 20 6d 61  79 20 74 68 65 6e 20 62  |which may then b|
00015680  65 20 6c 6f 61 64 65 64  0a 61 6e 64 20 70 72 6f  |e loaded.and pro|
00015690  63 65 73 73 65 64 20 61  73 20 72 65 71 75 69 72  |cessed as requir|
000156a0  65 64 2e 0a 0a 57 68 65  6e 20 74 68 69 73 20 66  |ed...When this f|
000156b0  6c 61 67 20 69 73 20 46  41 4c 53 45 20 74 68 65  |lag is FALSE the|
000156c0  20 6c 69 62 72 61 72 79  20 72 6f 75 74 69 6e 65  | library routine|
000156d0  73 20 77 69 6c 6c 0a 72  65 73 65 72 76 65 20 61  |s will.reserve a|
000156e0  20 6d 65 6d 6f 72 79 20  62 6c 6f 63 6b 20 66 6f  | memory block fo|
000156f0  72 20 74 68 65 20 66 69  6c 65 20 61 6e 64 20 6c  |r the file and l|
00015700  6f 61 64 20 69 74 0a 61  75 74 6f 6d 61 74 69 63  |oad it.automatic|
00015710  61 6c 6c 79 2e 0a 0a 46  6f 72 20 74 68 65 20 74  |ally...For the t|
00015720  65 63 68 6e 69 63 61 6c  20 6f 66 20 79 6f 75 20  |echnical of you |
00015730  6f 75 74 20 74 68 65 72  65 20 74 68 65 20 6c 69  |out there the li|
00015740  62 72 61 72 79 0a 73 74  6f 72 65 73 20 74 68 65  |brary.stores the|
00015750  20 73 74 61 74 75 73 20  6f 66 20 74 68 65 20 6e  | status of the n|
00015760  6f 20 6c 6f 61 64 20 66  6c 61 67 20 69 6e 20 74  |o load flag in t|
00015770  68 65 20 74 6f 70 0a 62  69 74 20 6f 66 20 74 68  |he top.bit of th|
00015780  65 20 66 69 6c 65 74 79  70 65 20 6e 75 6d 62 65  |e filetype numbe|
00015790  72 2e 20 54 68 69 73 20  77 69 6c 6c 20 65 6e 64  |r. This will end|
000157a0  20 69 6e 20 74 65 61 72  73 0a 77 68 65 6e 20 52  | in tears.when R|
000157b0  49 53 43 2d 4f 53 20 34  20 63 6f 6d 65 73 20 6f  |ISC-OS 4 comes o|
000157c0  75 74 2e 2e 2e 43 79 20  42 6f 6f 6b 65 72 0a 46  |ut...Cy Booker.F|
000157d0  6f 72 20 76 61 72 69 6f  75 73 20 68 65 6c 70 66  |or various helpf|
000157e0  75 6c 20 73 75 67 67 65  73 74 69 6f 6e 73 20 61  |ul suggestions a|
000157f0  6e 64 20 69 6e 66 6f 72  6d 61 74 69 6f 6e 20 74  |nd information t|
00015800  68 61 74 0a 61 6c 6c 6f  77 65 64 20 6d 65 20 74  |hat.allowed me t|
00015810  6f 20 61 64 64 20 73 65  70 65 72 61 74 65 20 6d  |o add seperate m|
00015820  65 73 73 61 67 65 20 66  69 6c 65 73 20 66 6f 72  |essage files for|
00015830  20 6c 69 62 72 61 72 79  0a 6d 65 73 73 61 67 65  | library.message|
00015840  73 2c 20 61 6e 64 20 73  75 70 70 6f 72 74 20 66  |s, and support f|
00015850  6f 72 20 44 72 61 67 41  53 70 72 69 74 65 20 61  |or DragASprite a|
00015860  6e 64 20 74 68 65 20 6e  65 77 0a 62 6f 6f 74 20  |nd the new.boot |
00015870  6d 65 73 73 61 67 65 20  75 6e 64 65 72 20 52 49  |message under RI|
00015880  53 43 2d 4f 53 20 33 2e  50 72 69 6e 74 65 72 0a  |SC-OS 3.Printer.|
00015890  3c 50 72 69 6e 74 65 72  4f 6e 4c 69 6e 65 3d 3e  |<PrinterOnLine=>|
000158a0  46 4e 73 68 65 6c 6c 5f  50 72 69 6e 74 65 72 4f  |FNshell_PrinterO|
000158b0  6e 4c 69 6e 65 3e 46 4e  73 68 65 6c 6c 5f 50 72  |nLine>FNshell_Pr|
000158c0  69 6e 74 65 72 4f 6e 4c  69 6e 65 0a 50 61 72 61  |interOnLine.Para|
000158d0  6d 73 0a 20 20 20 20 20  20 3d 3e 0a 20 20 20 20  |ms.      =>.    |
000158e0  20 20 20 20 4e 6f 6e 65  0a 0a 20 20 20 20 20 20  |    None..      |
000158f0  5c 3c 3d 0a 20 20 20 20  20 20 20 20 62 6f 6f 6c  |\<=.        bool|
00015900  20 54 52 55 45 20 69 66  20 70 72 69 6e 74 65 72  | TRUE if printer|
00015910  20 69 73 20 6f 6e 6c 69  6e 65 2c 20 6f 74 68 65  | is online, othe|
00015920  72 77 69 73 65 0a 20 20  20 20 20 20 20 20 20 20  |rwise.          |
00015930  20 20 20 46 41 4c 53 45  0a 0a 54 68 69 73 20 72  |   FALSE..This r|
00015940  6f 75 74 69 6e 65 20 68  61 73 20 62 65 65 6e 20  |outine has been |
00015950  74 65 73 74 65 64 20 6f  6e 20 52 49 53 43 2d 4f  |tested on RISC-O|
00015960  53 20 33 2e 31 20 61 6e  64 0a 73 68 6f 75 6c 64  |S 3.1 and.should|
00015970  20 61 6c 73 6f 20 77 6f  72 6b 20 6f 6e 20 65 61  | also work on ea|
00015980  72 6c 69 65 72 20 76 65  72 73 69 6f 6e 73 2e 20  |rlier versions. |
00015990  46 72 6f 6d 20 52 69 73  63 0a 55 73 65 72 20 4d  |From Risc.User M|
000159a0  61 72 63 68 20 31 39 39  33 20 70 61 67 65 20 34  |arch 1993 page 4|
000159b0  33 2e 0a 0a 4c 69 62 72  61 72 79 20 47 72 6f 75  |3...Library Grou|
000159c0  70 20 3d 3e 20 3c 50 72  69 6e 74 65 72 3d 3e 4c  |p => <Printer=>L|
000159d0  69 62 47 72 6f 75 70 50  72 69 6e 74 65 72 3e 50  |ibGroupPrinter>P|
000159e0  52 4f 43 73 68 65 6c 6c  5f 41 74 74 61 63 68 42  |ROCshell_AttachB|
000159f0  75 6d 70 48 61 6e 64 6c  65 72 28 29 0a 50 61 72  |umpHandler().Par|
00015a00  61 6d 73 20 3d 3e 20 20  20 20 20 0a 20 20 20 20  |ams =>     .    |
00015a10  20 20 20 20 20 69 6e 74  20 20 77 69 6e 64 6f 77  |     int  window|
00015a20  20 68 61 6e 64 6c 65 0a  20 20 20 20 20 20 20 20  | handle.        |
00015a30  20 69 6e 74 20 20 69 63  6f 6e 20 68 61 6e 64 6c  | int  icon handl|
00015a40  65 20 28 64 69 73 70 6c  61 79 20 76 61 6c 75 65  |e (display value|
00015a50  29 0a 20 20 20 20 20 20  20 20 20 69 6e 74 20 20  |).         int  |
00015a60  69 63 6f 6e 20 68 61 6e  64 6c 65 20 28 69 6e 63  |icon handle (inc|
00015a70  72 65 6d 65 6e 74 20 76  61 6c 75 65 29 0a 20 20  |rement value).  |
00015a80  20 20 20 20 20 20 20 69  6e 74 20 20 69 63 6f 6e  |       int  icon|
00015a90  20 68 61 6e 64 6c 65 20  28 64 65 63 72 65 6d 65  | handle (decreme|
00015aa0  6e 74 20 76 61 6c 75 65  29 0a 20 20 20 20 20 20  |nt value).      |
00015ab0  20 20 20 69 6e 74 20 20  6c 6f 77 65 72 20 6c 69  |   int  lower li|
00015ac0  6d 69 74 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |mit.         int|
00015ad0  20 20 75 70 70 65 72 20  6c 69 6d 69 74 0a 20 20  |  upper limit.  |
00015ae0  20 20 20 20 20 20 20 69  6e 74 20 20 73 74 65 70  |       int  step|
00015af0  0a 20 20 20 20 20 20 20  20 20 62 6f 6f 6c 20 77  |.         bool w|
00015b00  72 61 70 20 66 6c 61 67  0a 20 20 20 20 20 20 20  |rap flag.       |
00015b10  20 20 73 74 72 20 20 3c  66 75 6e 63 74 69 6f 6e  |  str  <function|
00015b20  20 6e 61 6d 65 3d 3e 55  73 65 72 46 4e 32 30 3e  | name=>UserFN20>|
00015b30  20 28 63 61 6e 20 62 65  20 22 22 29 0a 20 20 20  | (can be "").   |
00015b40  20 20 20 20 20 20 73 74  72 20 20 3c 66 75 6e 63  |      str  <func|
00015b50  74 69 6f 6e 20 6e 61 6d  65 3d 3e 55 73 65 72 46  |tion name=>UserF|
00015b60  4e 32 31 3e 20 28 63 61  6e 20 62 65 20 22 22 29  |N21> (can be "")|
00015b70  0a 0a 42 75 6d 70 20 69  63 6f 6e 73 20 61 72 65  |..Bump icons are|
00015b80  20 74 68 65 20 61 72 72  6f 77 73 20 74 68 61 74  | the arrows that|
00015b90  20 61 6c 6c 6f 77 20 79  6f 75 20 74 6f 20 61 6c  | allow you to al|
00015ba0  74 65 72 20 74 68 65 0a  76 61 6c 75 65 20 64 69  |ter the.value di|
00015bb0  73 70 6c 61 79 65 64 20  69 6e 20 61 6e 20 69 63  |splayed in an ic|
00015bc0  6f 6e 20 28 75 73 75 61  6c 6c 79 20 6e 6f 74 20  |on (usually not |
00015bd0  6e 6f 74 20 6e 65 63 65  73 73 61 72 69 6c 79 0a  |not necessarily.|
00015be0  61 20 77 72 69 74 61 62  6c 65 20 6f 6e 65 29 0a  |a writable one).|
00015bf0  0a 4c 69 62 72 61 72 79  20 47 72 6f 75 70 20 3d  |.Library Group =|
00015c00  3e 20 3c 45 76 65 6e 74  73 3d 3e 4c 69 62 47 72  |> <Events=>LibGr|
00015c10  6f 75 70 45 76 65 6e 74  73 3e 55 73 65 72 20 46  |oupEvents>User F|
00015c20  4e 20 28 50 52 4f 43 73  68 65 6c 6c 5f 41 74 74  |N (PROCshell_Att|
00015c30  61 63 68 42 75 6d 70 48  61 6e 64 6c 65 72 29 0a  |achBumpHandler).|
00015c40  50 61 72 61 6d 73 20 3d  3e 20 0a 20 20 20 20 20  |Params => .     |
00015c50  20 20 20 20 69 6e 74 20  76 61 6c 75 65 0a 0a 20  |    int value.. |
00015c60  20 20 20 20 20 20 5c 3c  3d 0a 20 20 20 20 20 20  |      \<=.      |
00015c70  20 20 20 73 74 72 20 63  6f 6e 76 65 72 74 65 64  |   str converted|
00015c80  20 76 61 6c 75 65 0a 0a  54 68 69 73 20 66 75 6e  | value..This fun|
00015c90  63 74 69 6f 6e 20 69 73  20 63 61 6c 6c 65 64 20  |ction is called |
00015ca0  62 65 66 6f 72 65 20 74  68 65 20 6e 65 77 20 76  |before the new v|
00015cb0  61 6c 75 65 0a 69 73 20  70 6c 61 63 65 64 20 69  |alue.is placed i|
00015cc0  6e 20 74 68 65 20 64 69  73 70 6c 61 79 20 69 63  |n the display ic|
00015cd0  6f 6e 2e 20 0a 0a 41 6e  20 65 78 61 6d 70 6c 65  |on. ..An example|
00015ce0  20 77 6f 75 6c 64 20 62  65 20 63 6f 6e 76 65 72  | would be conver|
00015cf0  74 69 6e 67 20 61 6e 20  69 6e 74 65 67 65 72 0a  |ting an integer.|
00015d00  76 61 6c 75 65 20 74 6f  20 74 68 65 20 66 6f 72  |value to the for|
00015d10  6d 61 74 20 30 68 30 30  20 28 69 2e 65 20 68 6f  |mat 0h00 (i.e ho|
00015d20  75 72 73 20 61 6e 64 20  6d 69 6e 73 29 2e 0a 0a  |urs and mins)...|
00015d30  44 45 46 20 46 4e 5f 64  69 73 5f 66 6e 28 76 61  |DEF FN_dis_fn(va|
00015d40  6c 25 29 0a 3d 53 54 52  24 28 76 61 6c 25 44 49  |l%).=STR$(val%DI|
00015d50  56 36 30 29 2b 22 68 22  2b 52 49 47 48 54 24 28  |V60)+"h"+RIGHT$(|
00015d60  22 30 30 22 2b 53 54 52  24 28 76 61 6c 25 4d 4f  |"00"+STR$(val%MO|
00015d70  44 36 30 29 2c 32 29 0a  0a 53 65 65 20 74 68 65  |D60),2)..See the|
00015d80  20 21 56 42 61 73 65 32  20 64 65 6d 6f 20 61 70  | !VBase2 demo ap|
00015d90  70 2e 55 73 65 72 20 46  4e 20 28 50 52 4f 43 73  |p.User FN (PROCs|
00015da0  68 65 6c 6c 5f 41 74 74  61 63 68 42 75 6d 70 48  |hell_AttachBumpH|
00015db0  61 6e 64 6c 65 72 29 0a  50 61 72 61 6d 73 20 3d  |andler).Params =|
00015dc0  3e 20 0a 20 20 20 20 20  20 20 20 20 73 74 72 20  |> .         str |
00015dd0  76 61 6c 75 65 20 74 6f  20 64 65 63 6f 64 65 0a  |value to decode.|
00015de0  0a 20 20 20 20 20 20 20  5c 3c 3d 0a 20 20 20 20  |.       \<=.    |
00015df0  20 20 20 20 20 69 6e 74  20 63 6f 6e 76 65 72 74  |     int convert|
00015e00  65 64 20 76 61 6c 75 65  0a 0a 54 68 69 73 20 66  |ed value..This f|
00015e10  75 6e 63 74 69 6f 6e 20  69 73 20 63 61 6c 6c 65  |unction is calle|
00015e20  64 20 62 65 66 6f 72 65  20 74 68 65 20 6e 65 77  |d before the new|
00015e30  20 76 61 6c 75 65 0a 69  73 20 70 6c 61 63 65 64  | value.is placed|
00015e40  20 69 6e 20 74 68 65 20  64 69 73 70 6c 61 79 20  | in the display |
00015e50  69 63 6f 6e 2e 0a 0a 41  6e 20 65 78 61 6d 70 6c  |icon...An exampl|
00015e60  65 20 77 6f 75 6c 64 20  62 65 20 63 6f 6e 76 65  |e would be conve|
00015e70  72 74 69 6e 67 20 61 20  73 74 72 69 6e 67 20 22  |rting a string "|
00015e80  30 68 30 30 22 0a 62 61  63 6b 20 74 6f 20 61 6e  |0h00".back to an|
00015e90  20 69 6e 74 65 67 65 72  20 76 61 6c 75 65 2e 0a  | integer value..|
00015ea0  0a 44 45 46 20 46 4e 5f  64 65 63 6f 64 65 5f 64  |.DEF FN_decode_d|
00015eb0  69 73 28 76 61 6c 24 29  0a 3d 56 41 4c 28 76 61  |is(val$).=VAL(va|
00015ec0  6c 24 29 2a 36 30 2b 56  41 4c 28 52 49 47 48 54  |l$)*60+VAL(RIGHT|
00015ed0  24 28 76 61 6c 24 2c 32  29 29 0a 0a 53 65 65 20  |$(val$,2))..See |
00015ee0  74 68 65 20 21 56 42 61  73 65 32 20 64 65 6d 6f  |the !VBase2 demo|
00015ef0  20 61 70 70 46 4e 73 68  65 6c 6c 5f 57 69 6e 64  | appFNshell_Wind|
00015f00  6f 77 53 65 74 53 70 72  69 74 65 41 72 65 61 28  |owSetSpriteArea(|
00015f10  29 0a 50 61 72 61 6d 73  20 3d 3e 0a 20 20 20 20  |).Params =>.    |
00015f20  20 20 20 20 20 69 6e 74  20 77 69 6e 64 6f 77 20  |     int window |
00015f30  68 61 6e 64 6c 65 0a 20  20 20 20 20 20 20 20 20  |handle.         |
00015f40  69 6e 74 20 61 64 64 72  65 73 73 20 6f 66 20 73  |int address of s|
00015f50  70 72 69 74 65 20 61 72  65 61 0a 0a 20 20 20 20  |prite area..    |
00015f60  20 20 20 5c 3c 3d 0a 20  20 20 20 20 20 20 20 20  |   \<=.         |
00015f70  69 6e 74 20 77 69 6e 64  6f 77 20 68 61 6e 64 6c  |int window handl|
00015f80  65 0a 0a 4c 69 62 72 61  72 79 20 47 72 6f 75 70  |e..Library Group|
00015f90  20 3d 5c 3e 20 3c 57 69  6e 64 6f 77 73 3d 3e 4c  | =\> <Windows=>L|
00015fa0  69 62 47 72 6f 75 70 57  69 6e 64 6f 77 73 3e 55  |ibGroupWindows>U|
00015fb0  73 65 72 20 46 4e 20 28  50 52 4f 43 73 68 65 6c  |ser FN (PROCshel|
00015fc0  6c 5f 41 74 74 61 63 68  44 72 61 67 29 20 0a 50  |l_AttachDrag) .P|
00015fd0  61 72 61 6d 73 20 3d 3e  20 0a 20 20 20 20 20 20  |arams => .      |
00015fe0  20 20 20 69 6e 74 20 77  69 6e 64 6f 77 20 68 61  |   int window ha|
00015ff0  6e 64 6c 65 20 6f 76 65  72 20 77 68 69 63 68 20  |ndle over which |
00016000  64 72 61 67 0a 20 20 20  20 20 20 20 20 20 20 20  |drag.           |
00016010  20 20 73 74 61 72 74 65  64 0a 20 20 20 20 20 20  |  started.      |
00016020  20 20 20 69 6e 74 20 69  63 6f 6e 20 68 61 6e 64  |   int icon hand|
00016030  6c 65 20 6f 76 65 72 20  77 68 69 63 68 20 64 72  |le over which dr|
00016040  61 67 20 77 61 73 0a 20  20 20 20 20 20 20 20 20  |ag was.         |
00016050  20 20 20 20 73 74 61 72  74 65 64 20 28 2d 31 20  |    started (-1 |
00016060  66 6f 72 20 6e 6f 20 69  63 6f 6e 29 50 52 4f 43  |for no icon)PROC|
00016070  73 68 65 6c 6c 5f 49 63  6f 6e 53 65 74 42 75 74  |shell_IconSetBut|
00016080  74 6f 6e 54 79 70 65 28  29 0a 50 61 72 61 6d 73  |tonType().Params|
00016090  20 3d 3e 20 20 20 20 20  20 20 20 20 20 20 0a 20  | =>           . |
000160a0  20 20 20 20 20 20 20 20  69 6e 74 20 77 69 6e 64  |        int wind|
000160b0  6f 77 20 68 61 6e 64 6c  65 20 20 20 20 20 20 20  |ow handle       |
000160c0  20 20 20 20 0a 20 20 20  20 20 20 20 20 20 69 6e  |    .         in|
000160d0  74 20 69 63 6f 6e 20 68  61 6e 64 6c 65 20 0a 20  |t icon handle . |
000160e0  20 20 20 20 20 20 20 20  69 6e 74 20 3c 62 75 74  |        int <but|
000160f0  74 6f 6e 20 74 79 70 65  3d 3e 53 57 49 2e 57 69  |ton type=>SWI.Wi|
00016100  6d 70 5f 69 63 6f 6e 62  75 74 74 6f 6e 3e 0a 0a  |mp_iconbutton>..|
00016110  41 6e 20 65 72 72 6f 72  20 69 73 20 67 65 6e 65  |An error is gene|
00016120  72 61 74 65 64 20 69 66  20 74 68 65 20 62 75 74  |rated if the but|
00016130  74 6f 6e 0a 74 79 70 65  20 69 73 20 6f 75 74 73  |ton.type is outs|
00016140  69 64 65 20 74 68 65 20  72 61 6e 67 65 20 30 2d  |ide the range 0-|
00016150  31 31 2c 31 34 2d 31 35  2e 0a 0a 4c 69 62 72 61  |11,14-15...Libra|
00016160  72 79 20 47 72 6f 75 70  20 3d 3e 20 3c 49 63 6f  |ry Group => <Ico|
00016170  6e 73 3d 3e 4c 69 62 47  72 6f 75 70 49 63 6f 6e  |ns=>LibGroupIcon|
00016180  73 3e 50 52 4f 43 73 68  65 6c 6c 5f 49 63 6f 6e  |s>PROCshell_Icon|
00016190  53 65 74 45 53 47 28 29  0a 50 61 72 61 6d 73 20  |SetESG().Params |
000161a0  3d 3e 20 20 20 20 20 20  20 20 20 20 20 0a 20 20  |=>           .  |
000161b0  20 20 20 20 20 20 20 69  6e 74 20 77 69 6e 64 6f  |       int windo|
000161c0  77 20 68 61 6e 64 6c 65  20 20 20 20 20 20 20 20  |w handle        |
000161d0  20 20 20 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |   .         int|
000161e0  20 69 63 6f 6e 20 68 61  6e 64 6c 65 20 0a 20 20  | icon handle .  |
000161f0  20 20 20 20 20 20 20 69  6e 74 20 45 78 63 6c 75  |       int Exclu|
00016200  73 69 76 65 20 53 65 6c  65 63 74 69 6f 6e 20 47  |sive Selection G|
00016210  72 6f 75 70 0a 20 20 20  20 20 20 20 20 20 20 20  |roup.           |
00016220  20 20 6e 75 6d 62 65 72  0a 0a 41 6e 20 65 72 72  |  number..An err|
00016230  6f 72 20 69 73 20 67 65  6e 65 72 61 74 65 64 20  |or is generated |
00016240  69 66 20 74 68 65 20 65  73 67 0a 6e 75 6d 62 65  |if the esg.numbe|
00016250  72 20 69 73 20 6f 75 74  73 69 64 65 20 74 68 65  |r is outside the|
00016260  20 72 61 6e 67 65 20 30  2d 33 31 2e 0a 0a 4c 69  | range 0-31...Li|
00016270  62 72 61 72 79 20 47 72  6f 75 70 20 3d 3e 20 3c  |brary Group => <|
00016280  49 63 6f 6e 73 3d 3e 4c  69 62 47 72 6f 75 70 49  |Icons=>LibGroupI|
00016290  63 6f 6e 73 3e 50 52 4f  43 73 68 65 6c 6c 5f 49  |cons>PROCshell_I|
000162a0  63 6f 6e 53 65 74 54 65  78 74 28 29 0a 50 61 72  |conSetText().Par|
000162b0  61 6d 73 20 3d 3e 20 20  20 20 20 20 20 20 20 20  |ams =>          |
000162c0  20 0a 20 20 20 20 20 20  20 20 20 69 6e 74 20 20  | .         int  |
000162d0  77 69 6e 64 6f 77 20 68  61 6e 64 6c 65 20 20 20  |window handle   |
000162e0  20 20 20 20 20 20 20 20  0a 20 20 20 20 20 20 20  |        .       |
000162f0  20 20 69 6e 74 20 20 69  63 6f 6e 20 68 61 6e 64  |  int  icon hand|
00016300  6c 65 20 0a 20 20 20 20  20 20 20 20 20 62 6f 6f  |le .         boo|
00016310  6c 20 73 74 61 74 65 20  28 30 20 74 6f 20 63 6c  |l state (0 to cl|
00016320  65 61 72 20 74 65 78 74  20 62 69 74 2c 0a 20 20  |ear text bit,.  |
00016330  20 20 20 20 20 20 20 20  20 20 20 20 6e 6f 6e 20  |            non |
00016340  30 20 74 6f 20 73 65 74  20 69 74 29 0a 0a 4c 69  |0 to set it)..Li|
00016350  62 72 61 72 79 20 47 72  6f 75 70 20 3d 3e 20 3c  |brary Group => <|
00016360  49 63 6f 6e 73 3d 3e 4c  69 62 47 72 6f 75 70 49  |Icons=>LibGroupI|
00016370  63 6f 6e 73 3e 50 52 4f  43 73 68 65 6c 6c 5f 49  |cons>PROCshell_I|
00016380  63 6f 6e 53 65 74 53 70  72 69 74 65 28 29 0a 50  |conSetSprite().P|
00016390  61 72 61 6d 73 20 3d 3e  20 20 20 20 20 20 20 20  |arams =>        |
000163a0  20 20 20 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |   .         int|
000163b0  20 20 77 69 6e 64 6f 77  20 68 61 6e 64 6c 65 20  |  window handle |
000163c0  20 20 20 20 20 20 20 20  20 20 0a 20 20 20 20 20  |          .     |
000163d0  20 20 20 20 69 6e 74 20  20 69 63 6f 6e 20 68 61  |    int  icon ha|
000163e0  6e 64 6c 65 20 0a 20 20  20 20 20 20 20 20 20 62  |ndle .         b|
000163f0  6f 6f 6c 20 73 74 61 74  65 20 28 30 20 74 6f 20  |ool state (0 to |
00016400  63 6c 65 61 72 20 73 70  72 69 74 65 20 62 69 74  |clear sprite bit|
00016410  2c 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |,.              |
00016420  6e 6f 6e 20 30 20 74 6f  20 73 65 74 20 69 74 29  |non 0 to set it)|
00016430  0a 0a 4c 69 62 72 61 72  79 20 47 72 6f 75 70 20  |..Library Group |
00016440  3d 3e 20 3c 49 63 6f 6e  73 3d 3e 4c 69 62 47 72  |=> <Icons=>LibGr|
00016450  6f 75 70 49 63 6f 6e 73  3e 50 52 4f 43 73 68 65  |oupIcons>PROCshe|
00016460  6c 6c 5f 49 63 6f 6e 53  65 74 42 6f 72 64 65 72  |ll_IconSetBorder|
00016470  28 29 0a 50 61 72 61 6d  73 20 3d 3e 20 20 20 20  |().Params =>    |
00016480  20 20 20 20 20 20 20 0a  20 20 20 20 20 20 20 20  |       .        |
00016490  20 69 6e 74 20 20 77 69  6e 64 6f 77 20 68 61 6e  | int  window han|
000164a0  64 6c 65 20 20 20 20 20  20 20 20 20 20 20 0a 20  |dle           . |
000164b0  20 20 20 20 20 20 20 20  69 6e 74 20 20 69 63 6f  |        int  ico|
000164c0  6e 20 68 61 6e 64 6c 65  20 0a 20 20 20 20 20 20  |n handle .      |
000164d0  20 20 20 62 6f 6f 6c 20  61 63 74 69 6f 6e 20 28  |   bool action (|
000164e0  30 20 74 6f 20 63 6c 65  61 72 20 62 6f 72 64 65  |0 to clear borde|
000164f0  72 20 62 69 74 2c 0a 20  20 20 20 20 20 20 20 20  |r bit,.         |
00016500  20 20 20 20 20 6e 6f 6e  20 30 20 74 6f 20 73 65  |     non 0 to se|
00016510  74 20 69 74 29 0a 0a 4c  69 62 72 61 72 79 20 47  |t it)..Library G|
00016520  72 6f 75 70 20 3d 3e 20  3c 49 63 6f 6e 73 3d 3e  |roup => <Icons=>|
00016530  4c 69 62 47 72 6f 75 70  49 63 6f 6e 73 3e 50 52  |LibGroupIcons>PR|
00016540  4f 43 73 68 65 6c 6c 5f  49 63 6f 6e 53 65 74 48  |OCshell_IconSetH|
00016550  43 65 6e 74 72 65 64 28  29 0a 50 61 72 61 6d 73  |Centred().Params|
00016560  20 3d 3e 20 20 20 20 20  20 20 20 20 20 20 0a 20  | =>           . |
00016570  20 20 20 20 20 20 20 20  69 6e 74 20 20 77 69 6e  |        int  win|
00016580  64 6f 77 20 68 61 6e 64  6c 65 20 20 20 20 20 20  |dow handle      |
00016590  20 20 20 20 20 0a 20 20  20 20 20 20 20 20 20 69  |     .         i|
000165a0  6e 74 20 20 69 63 6f 6e  20 68 61 6e 64 6c 65 20  |nt  icon handle |
000165b0  0a 20 20 20 20 20 20 20  20 20 62 6f 6f 6c 20 73  |.         bool s|
000165c0  74 61 74 65 20 28 30 20  74 6f 20 63 6c 65 61 72  |tate (0 to clear|
000165d0  20 68 6f 72 69 7a 6f 6e  74 61 6c 6c 79 0a 20 20  | horizontally.  |
000165e0  20 20 20 20 20 20 20 20  20 20 20 20 63 65 6e 74  |            cent|
000165f0  72 65 64 20 62 69 74 2c  20 6e 6f 6e 20 30 20 74  |red bit, non 0 t|
00016600  6f 20 73 65 74 20 69 74  29 0a 20 20 20 20 20 20  |o set it).      |
00016610  20 20 20 20 20 20 20 20  0a 0a 4c 69 62 72 61 72  |        ..Librar|
00016620  79 20 47 72 6f 75 70 20  3d 3e 20 3c 49 63 6f 6e  |y Group => <Icon|
00016630  73 3d 3e 4c 69 62 47 72  6f 75 70 49 63 6f 6e 73  |s=>LibGroupIcons|
00016640  3e 50 52 4f 43 73 68 65  6c 6c 5f 49 63 6f 6e 53  |>PROCshell_IconS|
00016650  65 74 56 43 65 6e 74 72  65 64 28 29 0a 50 61 72  |etVCentred().Par|
00016660  61 6d 73 20 3d 3e 20 20  20 20 20 20 20 20 20 20  |ams =>          |
00016670  20 0a 20 20 20 20 20 20  20 20 20 69 6e 74 20 20  | .         int  |
00016680  77 69 6e 64 6f 77 20 68  61 6e 64 6c 65 20 20 20  |window handle   |
00016690  20 20 20 20 20 20 20 20  0a 20 20 20 20 20 20 20  |        .       |
000166a0  20 20 69 6e 74 20 20 69  63 6f 6e 20 68 61 6e 64  |  int  icon hand|
000166b0  6c 65 20 0a 20 20 20 20  20 20 20 20 20 62 6f 6f  |le .         boo|
000166c0  6c 20 73 74 61 74 65 20  28 30 20 74 6f 20 63 6c  |l state (0 to cl|
000166d0  65 61 72 20 76 65 72 74  69 63 61 6c 6c 79 0a 20  |ear vertically. |
000166e0  20 20 20 20 20 20 20 20  20 20 20 20 20 63 65 6e  |             cen|
000166f0  74 72 65 64 20 62 69 74  2c 20 6e 6f 6e 20 30 20  |tred bit, non 0 |
00016700  74 6f 20 73 65 74 20 69  74 29 0a 20 20 20 20 20  |to set it).     |
00016710  20 20 20 20 20 20 20 20  20 0a 0a 4c 69 62 72 61  |         ..Libra|
00016720  72 79 20 47 72 6f 75 70  20 3d 3e 20 3c 49 63 6f  |ry Group => <Ico|
00016730  6e 73 3d 3e 4c 69 62 47  72 6f 75 70 49 63 6f 6e  |ns=>LibGroupIcon|
00016740  73 3e 50 52 4f 43 73 68  65 6c 6c 5f 49 63 6f 6e  |s>PROCshell_Icon|
00016750  53 65 74 46 69 6c 6c 65  64 28 29 0a 50 61 72 61  |SetFilled().Para|
00016760  6d 73 20 3d 3e 20 20 20  20 20 20 20 20 20 20 20  |ms =>           |
00016770  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 20 77  |.         int  w|
00016780  69 6e 64 6f 77 20 68 61  6e 64 6c 65 20 20 20 20  |indow handle    |
00016790  20 20 20 20 20 20 20 0a  20 20 20 20 20 20 20 20  |       .        |
000167a0  20 69 6e 74 20 20 69 63  6f 6e 20 68 61 6e 64 6c  | int  icon handl|
000167b0  65 20 0a 20 20 20 20 20  20 20 20 20 62 6f 6f 6c  |e .         bool|
000167c0  20 73 74 61 74 65 20 28  30 20 74 6f 20 63 6c 65  | state (0 to cle|
000167d0  61 72 20 66 69 6c 6c 65  64 0a 20 20 20 20 20 20  |ar filled.      |
000167e0  20 20 20 20 20 20 20 20  62 69 74 2c 20 6e 6f 6e  |        bit, non|
000167f0  20 30 20 74 6f 20 73 65  74 20 69 74 29 0a 20 20  | 0 to set it).  |
00016800  20 20 20 20 20 20 20 20  20 20 20 20 0a 0a 4c 69  |            ..Li|
00016810  62 72 61 72 79 20 47 72  6f 75 70 20 3d 3e 20 3c  |brary Group => <|
00016820  49 63 6f 6e 73 3d 3e 4c  69 62 47 72 6f 75 70 49  |Icons=>LibGroupI|
00016830  63 6f 6e 73 3e 50 52 4f  43 73 68 65 6c 6c 5f 49  |cons>PROCshell_I|
00016840  63 6f 6e 53 65 74 52 69  67 68 74 4a 75 73 74 28  |conSetRightJust(|
00016850  29 0a 50 61 72 61 6d 73  20 3d 3e 20 20 20 20 20  |).Params =>     |
00016860  20 20 20 20 20 20 0a 20  20 20 20 20 20 20 20 20  |      .         |
00016870  69 6e 74 20 20 77 69 6e  64 6f 77 20 68 61 6e 64  |int  window hand|
00016880  6c 65 20 20 20 20 20 20  20 20 20 20 20 0a 20 20  |le           .  |
00016890  20 20 20 20 20 20 20 69  6e 74 20 20 69 63 6f 6e  |       int  icon|
000168a0  20 68 61 6e 64 6c 65 20  0a 20 20 20 20 20 20 20  | handle .       |
000168b0  20 20 62 6f 6f 6c 20 61  63 74 69 6f 6e 20 28 30  |  bool action (0|
000168c0  20 74 6f 20 63 6c 65 61  72 20 72 69 67 68 74 0a  | to clear right.|
000168d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 6a 75  |              ju|
000168e0  73 74 69 66 69 65 64 20  62 69 74 2c 20 6e 6f 6e  |stified bit, non|
000168f0  20 30 20 74 6f 0a 20 20  20 20 20 20 20 20 20 20  | 0 to.          |
00016900  20 20 20 20 73 65 74 20  69 74 29 0a 20 20 20 20  |    set it).    |
00016910  20 20 20 20 20 20 20 20  20 20 0a 4c 69 62 72 61  |          .Libra|
00016920  72 79 20 47 72 6f 75 70  20 3d 3e 20 3c 49 63 6f  |ry Group => <Ico|
00016930  6e 73 3d 3e 4c 69 62 47  72 6f 75 70 49 63 6f 6e  |ns=>LibGroupIcon|
00016940  73 3e 46 4e 73 68 65 6c  6c 5f 53 74 72 6f 6e 67  |s>FNshell_Strong|
00016950  48 6c 70 49 73 41 76 61  69 6c 61 62 6c 65 0a 50  |HlpIsAvailable.P|
00016960  61 72 61 6d 73 20 3d 3e  0a 20 20 20 20 20 20 20  |arams =>.       |
00016970  20 20 4e 6f 6e 65 0a 20  20 20 20 20 20 20 5c 3c  |  None.       \<|
00016980  3d 0a 20 20 20 20 20 20  20 20 20 62 6f 6f 6c 20  |=.         bool |
00016990  54 52 55 45 20 69 66 20  53 74 72 6f 6e 67 48 65  |TRUE if StrongHe|
000169a0  6c 70 24 44 69 72 20 69  73 20 64 65 66 69 6e 65  |lp$Dir is define|
000169b0  64 2c 0a 20 20 20 20 20  20 20 20 20 20 20 20 20  |d,.             |
000169c0  20 6f 74 68 65 72 77 69  73 65 20 46 41 4c 53 45  | otherwise FALSE|
000169d0  0a 20 20 20 20 20 20 20  20 20 20 20 20 20 20 0a  |.              .|
000169e0  55 73 65 64 20 74 6f 20  63 68 65 63 6b 20 74 68  |Used to check th|
000169f0  61 74 20 53 74 72 6f 6e  67 48 6c 70 20 69 73 20  |at StrongHlp is |
00016a00  69 6e 73 74 61 6c 6c 65  64 0a 6f 6e 20 74 68 65  |installed.on the|
00016a10  20 73 79 73 74 65 6d 2e  20 54 68 69 73 20 63 61  | system. This ca|
00016a20  6c 6c 20 63 61 6e 20 62  65 20 75 73 65 64 20 74  |ll can be used t|
00016a30  6f 20 73 68 61 64 65 0a  61 20 27 48 65 6c 70 27  |o shade.a 'Help'|
00016a40  20 6d 65 6e 75 20 69 74  65 6d 20 69 66 20 53 74  | menu item if St|
00016a50  72 6f 6e 67 48 6c 70 20  68 61 73 20 6e 6f 74 20  |rongHlp has not |
00016a60  62 65 65 6e 20 73 65 65  6e 0a 62 79 20 74 68 65  |been seen.by the|
00016a70  20 46 69 6c 65 72 2c 20  6f 72 20 69 66 20 69 74  | Filer, or if it|
00016a80  20 69 73 20 6e 6f 74 20  61 76 61 69 6c 61 62 6c  | is not availabl|
00016a90  65 2e 0a 0a 3c 45 78 61  6d 70 6c 65 20 63 6f 64  |e...<Example cod|
00016aa0  65 2e 2e 2e 3d 3e 45 78  5f 53 74 72 6f 6e 67 48  |e...=>Ex_StrongH|
00016ab0  6c 70 49 73 41 76 61 69  6c 61 62 6c 65 3e 0a 0a  |lpIsAvailable>..|
00016ac0  4c 69 62 72 61 72 79 20  47 72 6f 75 70 20 3d 3e  |Library Group =>|
00016ad0  20 3c 53 74 72 6f 6e 67  48 6c 70 3d 3e 4c 69 62  | <StrongHlp=>Lib|
00016ae0  47 72 6f 75 70 48 65 6c  70 3e 45 78 61 6d 70 6c  |GroupHelp>Exampl|
00016af0  65 20 63 6f 64 65 20 28  53 74 72 6f 6e 67 48 6c  |e code (StrongHl|
00016b00  70 49 73 41 76 61 69 6c  61 62 6c 65 29 0a 53 68  |pIsAvailable).Sh|
00016b10  61 64 65 20 6d 65 6e 75  20 69 74 65 6d 20 77 69  |ade menu item wi|
00016b20  74 68 20 74 68 65 20 68  61 6e 64 6c 65 20 48 6c  |th the handle Hl|
00016b30  70 49 74 65 6d 25 20 69  66 20 53 74 72 6f 6e 67  |pItem% if Strong|
00016b40  48 6c 70 0a 69 73 20 6e  6f 74 20 61 76 61 69 6c  |Hlp.is not avail|
00016b50  61 62 6c 65 3a 0a 0a 20  20 3c 50 52 4f 43 73 68  |able:..  <PROCsh|
00016b60  65 6c 6c 5f 4d 65 6e 75  53 68 61 64 65 3e 28 48  |ell_MenuShade>(H|
00016b70  6c 70 49 74 65 6d 25 2c  28 3c 46 4e 73 68 65 6c  |lpItem%,(<FNshel|
00016b80  6c 5f 53 74 72 6f 6e 67  48 6c 70 49 73 41 76 61  |l_StrongHlpIsAva|
00016b90  69 6c 61 62 6c 65 3e 3d  30 29 29 45 78 61 6d 70  |ilable>=0))Examp|
00016ba0  6c 65 20 43 6f 64 65 20  28 49 63 6f 6e 62 61 72  |le Code (Iconbar|
00016bb0  29 0a 50 6c 61 63 65 20  61 20 73 70 72 69 74 65  |).Place a sprite|
00016bc0  20 63 61 6c 6c 65 64 20  22 21 4d 79 41 70 70 22  | called "!MyApp"|
00016bd0  20 6f 6e 20 74 68 65 20  72 69 67 68 74 20 73 69  | on the right si|
00016be0  64 65 20 6f 66 20 74 68  65 20 69 63 6f 6e 62 61  |de of the iconba|
00016bf0  72 20 77 69 74 68 0a 74  68 65 20 74 65 78 74 20  |r with.the text |
00016c00  22 46 72 65 64 22 20 62  65 6c 6f 77 20 69 74 20  |"Fred" below it |
00016c10  61 6e 64 20 61 74 74 61  63 68 20 74 68 65 20 6d  |and attach the m|
00016c20  65 6e 75 20 77 69 74 68  20 74 68 65 20 68 61 6e  |enu with the han|
00016c30  64 6c 65 0a 27 4d 65 6e  75 48 61 6e 64 6c 65 5f  |dle.'MenuHandle_|
00016c40  49 63 6f 6e 42 61 72 25  27 3a 0a 0a 73 69 63 6f  |IconBar%':..sico|
00016c50  6e 3d 46 4e 73 68 65 6c  6c 5f 49 63 6f 6e 62 61  |n=FNshell_Iconba|
00016c60  72 28 2d 31 2c 22 21 4d  79 41 70 70 22 2c 22 46  |r(-1,"!MyApp","F|
00016c70  72 65 64 22 2c 31 32 30  2c 4d 65 6e 75 48 61 6e  |red",120,MenuHan|
00016c80  64 6c 65 5f 49 63 6f 6e  42 61 72 25 2c 30 2c 30  |dle_IconBar%,0,0|
00016c90  2c 30 29 4d 65 6e 75 57  72 69 74 61 62 6c 65 20  |,0)MenuWritable |
00016ca0  53 74 61 74 65 73 0a 54  68 65 20 73 74 61 74 65  |States.The state|
00016cb0  20 69 73 20 30 20 66 6f  72 20 6e 6f 6e 20 77 72  | is 0 for non wr|
00016cc0  69 74 61 62 6c 65 2c 20  6e 6f 6e 20 30 0a 66 6f  |itable, non 0.fo|
00016cd0  72 20 77 72 69 74 61 62  6c 65 2e 50 52 4f 43 73  |r writable.PROCs|
00016ce0  68 65 6c 6c 5f 4d 65 6e  75 57 72 69 74 61 62 6c  |hell_MenuWritabl|
00016cf0  65 28 29 0a 50 61 72 61  6d 73 20 3d 3e 0a 20 20  |e().Params =>.  |
00016d00  20 20 20 20 20 20 20 69  6e 74 20 6d 65 6e 75 20  |       int menu |
00016d10  6f 72 20 6d 65 6e 75 20  69 74 65 6d 20 68 61 6e  |or menu item han|
00016d20  64 6c 65 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |dle.         int|
00016d30  20 3c 73 74 61 74 65 3d  3e 6d 65 6e 75 77 72 69  | <state=>menuwri|
00016d40  74 65 66 6c 61 67 73 3e  0a 20 20 20 20 20 20 20  |teflags>.       |
00016d50  20 20 69 6e 74 20 73 69  7a 65 20 6f 66 20 69 6e  |  int size of in|
00016d60  64 69 72 65 63 74 65 64  20 62 75 66 66 65 72 0a  |directed buffer.|
00016d70  20 20 20 20 20 20 20 20  20 73 74 72 20 3c 76 61  |         str <va|
00016d80  6c 69 64 61 74 69 6f 6e  20 73 74 72 69 6e 67 3d  |lidation string=|
00016d90  3e 53 57 49 2e 57 69 6d  70 5f 76 61 6c 69 64 61  |>SWI.Wimp_valida|
00016da0  74 69 6f 6e 73 74 72 69  6e 67 3e 0a 0a 4d 61 6b  |tionstring>..Mak|
00016db0  65 73 20 74 68 65 20 67  69 76 65 6e 20 6d 65 6e  |es the given men|
00016dc0  75 20 69 74 65 6d 20 77  72 69 74 61 62 6c 65 20  |u item writable |
00016dd0  6f 72 20 6e 6f 6e 20 77  72 69 74 61 62 6c 65 0a  |or non writable.|
00016de0  64 65 70 65 6e 64 69 6e  67 20 6f 6e 20 74 68 65  |depending on the|
00016df0  20 73 74 61 74 65 20 70  61 72 61 6d 65 74 65 72  | state parameter|
00016e00  2e 20 49 66 20 61 20 6d  65 6e 75 20 68 61 6e 64  |. If a menu hand|
00016e10  6c 65 0a 69 73 20 67 69  76 65 6e 20 74 68 65 6e  |le.is given then|
00016e20  20 61 6c 6c 20 69 74 65  6d 73 20 69 6e 20 74 68  | all items in th|
00016e30  65 20 6d 65 6e 75 20 61  72 65 20 6d 61 64 65 0a  |e menu are made.|
00016e40  77 72 69 74 61 62 6c 65  20 6f 72 20 6e 6f 6e 20  |writable or non |
00016e50  77 72 69 74 61 62 6c 65  2e 0a 0a 4c 69 62 72 61  |writable...Libra|
00016e60  72 79 20 47 72 6f 75 70  20 3d 3e 20 3c 4d 65 6e  |ry Group => <Men|
00016e70  75 73 3d 3e 4c 69 62 47  72 6f 75 70 4d 65 6e 75  |us=>LibGroupMenu|
00016e80  73 3e 50 52 4f 43 73 68  65 6c 6c 5f 4d 65 6e 75  |s>PROCshell_Menu|
00016e90  44 6f 74 74 65 64 28 29  0a 50 61 72 61 6d 73 20  |Dotted().Params |
00016ea0  3d 3e 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |=>.         int |
00016eb0  6d 65 6e 75 20 6f 72 20  6d 65 6e 75 20 69 74 65  |menu or menu ite|
00016ec0  6d 20 68 61 6e 64 6c 65  0a 20 20 20 20 20 20 20  |m handle.       |
00016ed0  20 20 69 6e 74 20 3c 73  74 61 74 65 3d 3e 6d 65  |  int <state=>me|
00016ee0  6e 75 64 6f 74 66 6c 61  67 73 3e 0a 0a 41 64 64  |nudotflags>..Add|
00016ef0  73 20 6f 72 20 72 65 6d  6f 76 65 73 20 61 20 64  |s or removes a d|
00016f00  6f 74 74 65 64 20 6c 69  6e 65 20 66 72 6f 6d 20  |otted line from |
00016f10  62 65 6c 6f 77 0a 74 68  65 20 67 69 76 65 6e 20  |below.the given |
00016f20  6d 65 6e 75 20 69 74 65  6d 2e 20 49 66 20 61 20  |menu item. If a |
00016f30  6d 65 6e 75 20 68 61 6e  64 6c 65 20 69 73 0a 67  |menu handle is.g|
00016f40  69 76 65 6e 20 69 6e 73  74 65 61 64 20 61 6c 6c  |iven instead all|
00016f50  20 69 74 65 6d 73 20 69  6e 20 74 68 65 20 6d 65  | items in the me|
00016f60  6e 75 20 61 72 65 0a 65  66 66 65 63 74 65 64 2e  |nu are.effected.|
00016f70  0a 0a 4c 69 62 72 61 72  79 20 47 72 6f 75 70 20  |..Library Group |
00016f80  3d 3e 20 3c 4d 65 6e 75  73 3d 3e 4c 69 62 47 72  |=> <Menus=>LibGr|
00016f90  6f 75 70 4d 65 6e 75 73  3e 4d 65 6e 75 44 6f 74  |oupMenus>MenuDot|
00016fa0  74 65 64 20 53 74 61 74  65 73 0a 54 68 65 20 73  |ted States.The s|
00016fb0  74 61 74 65 20 69 73 20  30 20 66 6f 72 20 6e 6f  |tate is 0 for no|
00016fc0  20 64 6f 74 74 65 64 20  6c 69 6e 65 2c 20 6e 6f  | dotted line, no|
00016fd0  6e 20 30 0a 66 6f 72 20  61 20 6c 69 6e 65 2e 46  |n 0.for a line.F|
00016fe0  4e 73 68 65 6c 6c 5f 4d  65 6e 75 4e 65 77 28 29  |Nshell_MenuNew()|
00016ff0  0a 50 61 72 61 6d 73 20  3d 3e 0a 20 20 20 20 20  |.Params =>.     |
00017000  20 20 20 20 73 74 72 20  6d 65 6e 75 20 74 69 74  |    str menu tit|
00017010  6c 65 0a 0a 20 20 20 20  20 20 20 5c 3c 3d 0a 20  |le..       \<=. |
00017020  20 20 20 20 20 20 20 20  69 6e 74 20 6d 65 6e 75  |        int menu|
00017030  20 68 61 6e 64 6c 65 0a  20 20 20 20 20 20 20 20  | handle.        |
00017040  20 0a 43 72 65 61 74 65  73 20 61 20 6e 65 77 20  | .Creates a new |
00017050  6d 65 6e 75 20 77 69 74  68 20 74 68 65 20 67 69  |menu with the gi|
00017060  76 65 6e 20 74 69 74 6c  65 2e 0a 0a 4c 69 62 72  |ven title...Libr|
00017070  61 72 79 20 47 72 6f 75  70 20 3e 20 3c 4d 65 6e  |ary Group > <Men|
00017080  75 73 3d 3e 4c 69 62 47  72 6f 75 70 4d 65 6e 75  |us=>LibGroupMenu|
00017090  73 3e 46 4e 73 68 65 6c  6c 5f 4d 65 6e 75 41 64  |s>FNshell_MenuAd|
000170a0  64 28 29 0a 50 61 72 61  6d 73 20 3d 3e 0a 20 20  |d().Params =>.  |
000170b0  20 20 20 20 20 20 20 69  6e 74 20 6d 65 6e 75 20  |       int menu |
000170c0  6f 72 20 6d 65 6e 75 20  69 74 65 6d 20 68 61 6e  |or menu item han|
000170d0  64 6c 65 0a 20 20 20 20  20 20 20 20 20 73 74 72  |dle.         str|
000170e0  20 74 65 78 74 20 66 6f  72 20 6d 65 6e 75 20 69  | text for menu i|
000170f0  74 65 6d 0a 20 20 20 20  20 20 20 20 20 73 74 72  |tem.         str|
00017100  20 3c 66 75 6e 63 74 69  6f 6e 20 6e 61 6d 65 3d  | <function name=|
00017110  3e 55 73 65 72 46 4e 31  31 3e 0a 0a 20 20 20 20  |>UserFN11>..    |
00017120  20 20 20 5c 3c 3d 0a 20  20 20 20 20 20 20 20 20  |   \<=.         |
00017130  69 6e 74 20 6d 65 6e 75  20 69 74 65 6d 20 68 61  |int menu item ha|
00017140  6e 64 6c 65 0a 20 20 20  20 20 20 20 20 20 0a 41  |ndle.         .A|
00017150  64 64 73 20 61 20 6e 65  77 20 69 74 65 6d 20 74  |dds a new item t|
00017160  6f 20 61 6e 20 65 78 69  73 74 69 6e 67 20 6d 65  |o an existing me|
00017170  6e 75 2e 20 49 66 20 61  20 6d 65 6e 75 0a 68 61  |nu. If a menu.ha|
00017180  6e 64 6c 65 20 69 73 20  67 69 76 65 6e 20 74 68  |ndle is given th|
00017190  65 6e 20 74 68 65 20 6e  65 77 20 69 74 65 6d 20  |en the new item |
000171a0  69 73 20 61 64 64 65 64  20 74 6f 0a 74 68 65 20  |is added to.the |
000171b0  65 6e 64 20 6f 66 20 74  68 65 20 6d 65 6e 75 2c  |end of the menu,|
000171c0  20 69 66 20 61 6e 20 69  74 65 6d 20 68 61 6e 64  | if an item hand|
000171d0  6c 65 20 69 73 20 67 69  76 65 6e 0a 74 68 65 20  |le is given.the |
000171e0  6e 65 77 20 69 74 65 6d  20 69 73 20 61 64 64 65  |new item is adde|
000171f0  64 20 62 65 66 6f 72 65  20 74 68 65 20 65 78 69  |d before the exi|
00017200  73 74 69 6e 67 20 69 74  65 6d 2e 0a 0a 4c 69 62  |sting item...Lib|
00017210  72 61 72 79 20 47 72 6f  75 70 20 3e 20 3c 4d 65  |rary Group > <Me|
00017220  6e 75 73 3d 3e 4c 69 62  47 72 6f 75 70 4d 65 6e  |nus=>LibGroupMen|
00017230  75 73 3e 55 73 65 72 20  46 4e 20 28 46 4e 73 68  |us>User FN (FNsh|
00017240  65 6c 6c 5f 4d 65 6e 75  41 64 64 29 0a 50 61 72  |ell_MenuAdd).Par|
00017250  61 6d 73 20 3d 3e 20 0a  20 20 20 20 20 20 20 20  |ams => .        |
00017260  20 69 6e 74 20 6d 65 6e  75 20 3c 64 65 63 6f 64  | int menu <decod|
00017270  65 20 62 6c 6f 63 6b 3d  3e 6d 65 6e 75 64 65 63  |e block=>menudec|
00017280  6f 64 65 62 6c 6b 3e 4d  65 6e 75 20 64 65 63 6f  |odeblk>Menu deco|
00017290  64 65 20 62 6c 6f 63 6b  0a 62 6c 6b 2b 30 30 20  |de block.blk+00 |
000172a0  70 6f 73 69 74 69 6f 6e  20 6f 66 20 73 65 6c 65  |position of sele|
000172b0  63 74 65 64 20 6d 65 6e  75 20 69 74 65 6d 20 69  |cted menu item i|
000172c0  6e 20 6d 65 6e 75 20 28  73 74 61 72 74 69 6e 67  |n menu (starting|
000172d0  20 66 72 6f 6d 20 30 29  0a 62 6c 6b 2b 30 34 20  | from 0).blk+04 |
000172e0  70 6f 69 6e 74 65 72 20  74 6f 20 73 65 6c 65 63  |pointer to selec|
000172f0  74 65 64 20 69 74 65 6d  20 64 61 74 61 0a 62 6c  |ted item data.bl|
00017300  6b 2b 30 38 20 73 65 6c  65 63 74 65 64 20 69 74  |k+08 selected it|
00017310  65 6d 20 68 61 6e 64 6c  65 20 6f 72 20 7a 65 72  |em handle or zer|
00017320  6f 20 69 66 20 69 74 65  6d 20 77 61 73 20 63 72  |o if item was cr|
00017330  65 61 74 65 64 20 77 69  74 68 6f 75 74 20 4d 65  |eated without Me|
00017340  6e 75 55 74 69 6c 73 0a  62 6c 6b 2b 31 32 20 70  |nuUtils.blk+12 p|
00017350  6f 69 6e 74 65 72 20 74  6f 20 74 65 78 74 20 73  |ointer to text s|
00017360  74 72 69 6e 67 20 6f 66  20 73 65 6c 65 63 74 65  |tring of selecte|
00017370  64 20 69 74 65 6d 0a 62  6c 6b 2b 31 36 20 70 6f  |d item.blk+16 po|
00017380  73 69 74 69 6f 6e 20 6f  66 20 70 61 72 65 6e 74  |sition of parent|
00017390  20 6d 65 6e 75 20 69 74  65 6d 20 69 6e 20 6d 65  | menu item in me|
000173a0  6e 75 20 28 73 74 61 72  74 69 6e 67 20 66 72 6f  |nu (starting fro|
000173b0  6d 20 30 29 0a 62 6c 6b  2b 32 30 20 70 6f 69 6e  |m 0).blk+20 poin|
000173c0  74 65 72 20 74 6f 20 70  61 72 65 6e 74 20 69 74  |ter to parent it|
000173d0  65 6d 20 64 61 74 61 0a  62 6c 6b 2b 32 34 20 70  |em data.blk+24 p|
000173e0  61 72 65 6e 74 20 69 74  65 6d 20 68 61 6e 64 6c  |arent item handl|
000173f0  65 20 6f 72 20 7a 65 72  6f 20 69 66 20 69 74 65  |e or zero if ite|
00017400  6d 20 77 61 73 20 63 72  65 61 74 65 64 20 77 69  |m was created wi|
00017410  74 68 6f 75 74 20 4d 65  6e 75 55 74 69 6c 73 0a  |thout MenuUtils.|
00017420  62 6c 6b 2b 32 38 20 70  6f 69 6e 74 65 72 20 74  |blk+28 pointer t|
00017430  6f 20 74 65 78 74 20 73  74 72 69 6e 67 20 6f 66  |o text string of|
00017440  20 70 61 72 65 6e 74 20  69 74 65 6d 20 50 52 4f  | parent item PRO|
00017450  43 73 68 65 6c 6c 5f 4d  65 6e 75 54 69 63 6b 4f  |Cshell_MenuTickO|
00017460  6e 6c 79 31 28 29 0a 50  61 72 61 6d 73 20 3d 3e  |nly1().Params =>|
00017470  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 6d 65  |.         int me|
00017480  6e 75 20 68 61 6e 64 6c  65 0a 20 20 20 20 20 20  |nu handle.      |
00017490  20 20 20 69 6e 74 20 70  6f 73 69 74 69 6f 6e 20  |   int position |
000174a0  6f 66 20 69 74 65 6d 20  69 6e 20 6d 65 6e 75 0a  |of item in menu.|
000174b0  0a 54 69 63 6b 73 20 6f  6e 6c 79 20 74 68 65 20  |.Ticks only the |
000174c0  69 74 65 6d 20 67 69 76  65 6e 20 62 79 20 74 68  |item given by th|
000174d0  65 20 6d 65 6e 75 20 68  61 6e 64 6c 65 0a 61 6e  |e menu handle.an|
000174e0  64 20 74 68 65 20 70 6f  73 69 74 69 6f 6e 20 6f  |d the position o|
000174f0  66 20 74 68 65 20 69 74  65 6d 2e 20 54 68 69 73  |f the item. This|
00017500  20 63 61 6c 6c 20 69 73  0a 70 72 6f 76 69 64 65  | call is.provide|
00017510  64 20 66 6f 72 20 77 68  65 6e 20 79 6f 75 20 64  |d for when you d|
00017520  6f 6e 27 74 20 6b 6e 6f  77 20 74 68 65 20 68 61  |on't know the ha|
00017530  6e 64 6c 65 0a 6f 66 20  74 68 65 20 6d 65 6e 75  |ndle.of the menu|
00017540  20 69 74 65 6d 2e 0a 0a  53 65 65 20 61 6c 73 6f  | item...See also|
00017550  20 3c 50 52 4f 43 73 68  65 6c 6c 5f 4d 65 6e 75  | <PROCshell_Menu|
00017560  54 69 63 6b 4f 6e 6c 79  32 3e 0a 0a 4c 69 62 72  |TickOnly2>..Libr|
00017570  61 72 79 20 47 72 6f 75  70 20 3d 3e 20 3c 4d 65  |ary Group => <Me|
00017580  6e 75 73 3d 3e 4c 69 62  47 72 6f 75 70 4d 65 6e  |nus=>LibGroupMen|
00017590  75 73 3e 46 4e 73 68 65  6c 6c 5f 4d 65 6e 75 54  |us>FNshell_MenuT|
000175a0  69 63 6b 4f 6e 6c 79 32  28 29 0a 50 61 72 61 6d  |ickOnly2().Param|
000175b0  73 20 3d 3e 0a 20 20 20  20 20 20 20 20 20 69 6e  |s =>.         in|
000175c0  74 20 6d 65 6e 75 20 69  74 65 6d 20 68 61 6e 64  |t menu item hand|
000175d0  6c 65 0a 0a 54 69 63 6b  73 20 6f 6e 6c 79 20 74  |le..Ticks only t|
000175e0  68 65 20 69 74 65 6d 20  67 69 76 65 6e 20 62 79  |he item given by|
000175f0  20 74 68 65 20 6d 65 6e  75 20 69 74 65 6d 0a 68  | the menu item.h|
00017600  61 6e 64 6c 65 2e 0a 0a  53 65 65 20 61 6c 73 6f  |andle...See also|
00017610  20 3c 50 52 4f 43 73 68  65 6c 6c 5f 4d 65 6e 75  | <PROCshell_Menu|
00017620  54 69 63 6b 4f 6e 6c 79  31 3e 0a 0a 4c 69 62 72  |TickOnly1>..Libr|
00017630  61 72 79 20 47 72 6f 75  70 20 3d 3e 20 3c 4d 65  |ary Group => <Me|
00017640  6e 75 73 3d 3e 4c 69 62  47 72 6f 75 70 4d 65 6e  |nus=>LibGroupMen|
00017650  75 73 3e 50 52 4f 43 73  68 65 6c 6c 5f 4d 65 6e  |us>PROCshell_Men|
00017660  75 43 6f 6c 6f 75 72 73  28 29 0a 50 61 72 61 6d  |uColours().Param|
00017670  73 20 3d 3e 0a 20 20 20  20 20 20 20 20 20 69 6e  |s =>.         in|
00017680  74 20 6d 65 6e 75 20 69  74 65 6d 20 68 61 6e 64  |t menu item hand|
00017690  6c 65 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |le.         int |
000176a0  66 6f 72 65 67 72 6f 75  6e 64 20 63 6f 6c 6f 75  |foreground colou|
000176b0  72 0a 20 20 20 20 20 20  20 20 20 69 6e 74 20 62  |r.         int b|
000176c0  61 63 6b 67 72 6f 75 6e  64 20 63 6f 6c 6f 75 72  |ackground colour|
000176d0  0a 0a 53 65 74 73 20 74  68 65 20 66 6f 72 65 67  |..Sets the foreg|
000176e0  72 6f 75 6e 64 20 61 6e  64 20 62 61 63 6b 67 72  |round and backgr|
000176f0  6f 75 6e 64 20 63 6f 6c  6f 75 72 73 0a 6f 66 20  |ound colours.of |
00017700  74 68 65 20 69 74 65 6d  20 67 69 76 65 6e 2e 0a  |the item given..|
00017710  0a 4c 69 62 72 61 72 79  20 47 72 6f 75 70 20 3e  |.Library Group >|
00017720  20 3c 4d 65 6e 75 73 3d  3e 4c 69 62 47 72 6f 75  | <Menus=>LibGrou|
00017730  70 4d 65 6e 75 73 3e 41  6c 65 78 20 50 65 74 72  |pMenus>Alex Petr|
00017740  6f 76 20 0a 20 20 20 20  52 55 53 53 49 41 0a 20  |ov .    RUSSIA. |
00017750  20 20 20 31 31 35 35 34  31 0a 20 20 20 20 4d 6f  |   115541.    Mo|
00017760  73 63 6f 77 0a 20 20 20  20 4b 61 76 6b 61 7a 73  |scow.    Kavkazs|
00017770  6b 79 20 62 6f 75 6c 65  76 61 72 64 2c 20 32 39  |ky boulevard, 29|
00017780  0a 20 20 20 20 42 6c 64  2e 20 31 2c 20 46 6c 61  |.    Bld. 1, Fla|
00017790  74 20 31 30 37 0a 20 20  20 20 41 6c 65 78 20 50  |t 107.    Alex P|
000177a0  65 74 72 6f 76 20 20 20  20 0a 0a 45 2d 6d 61 69  |etrov    ..E-mai|
000177b0  6c 3a 20 41 50 65 74 72  6f 76 40 6d 69 73 69 73  |l: APetrov@misis|
000177c0  2e 6d 73 6b 2e 73 75 0a  20 20 20 20 20 20 20 20  |.msk.su.        |
000177d0  41 50 65 74 72 6f 76 40  61 72 6d 2e 6d 73 6b 2e  |APetrov@arm.msk.|
000177e0  73 75 0a 20 20 20 20 20  20 20 0a 46 49 44 4f 20  |su.       .FIDO |
000177f0  3a 20 20 32 3a 35 30 32  30 2f 31 30 34 2e 31 33  |:  2:5020/104.13|
00017800  0a 0a 20 70 68 6f 6e 65  3a 20 2b 37 20 30 39 35  |.. phone: +7 095|
00017810  20 33 32 32 20 32 30 39  38 0a 20 66 61 78 20 20  | 322 2098. fax  |
00017820  3a 20 2b 37 20 30 39 35  20 32 33 36 20 38 33 35  |: +7 095 236 835|
00017830  30 0a 0a 41 75 74 68 6f  72 20 6f 66 20 74 68 65  |0..Author of the|
00017840  20 4d 65 6e 75 55 74 69  6c 73 20 6d 6f 64 75 6c  | MenuUtils modul|
00017850  65 0a 77 68 69 63 68 20  70 72 6f 76 69 64 65 73  |e.which provides|
00017860  20 74 68 65 20 6d 65 6e  75 20 68 61 6e 64 6c 69  | the menu handli|
00017870  6e 67 2e 50 52 4f 43 73  68 65 6c 6c 5f 49 63 6f  |ng.PROCshell_Ico|
00017880  6e 53 65 74 55 6e 73 65  6c 65 63 74 61 62 6c 65  |nSetUnselectable|
00017890  28 29 0a 50 61 72 61 6d  73 20 3d 3e 20 20 20 20  |().Params =>    |
000178a0  20 20 20 20 20 20 20 0a  20 20 20 20 20 20 20 20  |       .        |
000178b0  20 69 6e 74 20 20 77 69  6e 64 6f 77 20 68 61 6e  | int  window han|
000178c0  64 6c 65 20 20 20 20 20  20 20 20 20 20 20 0a 20  |dle           . |
000178d0  20 20 20 20 20 20 20 20  69 6e 74 20 20 69 63 6f  |        int  ico|
000178e0  6e 20 68 61 6e 64 6c 65  20 0a 20 20 20 20 20 20  |n handle .      |
000178f0  20 20 20 62 6f 6f 6c 20  73 74 61 74 65 20 28 30  |   bool state (0|
00017900  20 74 6f 20 6d 61 6b 65  20 69 63 6f 6e 20 73 65  | to make icon se|
00017910  6c 65 63 74 61 62 6c 65  2c 0a 20 20 20 20 20 20  |lectable,.      |
00017920  20 20 20 20 20 20 20 20  6e 6f 6e 20 30 20 74 6f  |        non 0 to|
00017930  20 6d 61 6b 65 20 69 74  20 75 6e 73 65 6c 65 63  | make it unselec|
00017940  74 61 62 6c 65 29 0a 0a  54 68 69 73 20 63 61 6c  |table)..This cal|
00017950  6c 20 69 73 20 75 73 65  64 20 74 6f 20 6d 61 6b  |l is used to mak|
00017960  65 20 69 63 6f 6e 73 20  75 6e 73 65 6c 65 63 74  |e icons unselect|
00017970  61 62 6c 65 0a 28 69 2e  65 2e 20 67 72 65 79 65  |able.(i.e. greye|
00017980  64 20 6f 75 74 29 20 64  65 70 65 6e 64 69 6e 67  |d out) depending|
00017990  20 6f 6e 20 74 68 65 20  76 61 6c 75 65 20 6f 66  | on the value of|
000179a0  0a 74 68 65 20 73 74 61  74 65 20 66 6c 61 67 2e  |.the state flag.|
000179b0  20 49 66 20 74 68 65 20  69 63 6f 6e 20 63 6f 6e  | If the icon con|
000179c0  74 61 69 6e 73 20 74 68  65 20 63 61 72 65 74 0a  |tains the caret.|
000179d0  77 68 65 6e 20 69 74 20  69 73 20 6d 61 64 65 20  |when it is made |
000179e0  75 6e 73 65 6c 65 63 74  61 62 6c 65 2c 20 74 68  |unselectable, th|
000179f0  65 20 63 61 72 65 74 20  69 73 20 6c 6f 73 74 2e  |e caret is lost.|
00017a00  0a 0a 4c 69 62 72 61 72  79 20 47 72 6f 75 70 20  |..Library Group |
00017a10  3d 3e 20 3c 49 63 6f 6e  73 3d 3e 4c 69 62 47 72  |=> <Icons=>LibGr|
00017a20  6f 75 70 49 63 6f 6e 73  3e 50 52 4f 43 73 68 65  |oupIcons>PROCshe|
00017a30  6c 6c 5f 49 63 6f 6e 53  65 74 53 65 6c 65 63 74  |ll_IconSetSelect|
00017a40  65 64 28 29 0a 50 61 72  61 6d 73 20 3d 3e 20 20  |ed().Params =>  |
00017a50  20 20 20 20 20 20 20 0a  20 20 20 20 20 20 20 20  |       .        |
00017a60  20 69 6e 74 20 20 77 69  6e 64 6f 77 20 68 61 6e  | int  window han|
00017a70  64 6c 65 0a 20 20 20 20  20 20 20 20 20 69 6e 74  |dle.         int|
00017a80  20 20 69 63 6f 6e 20 68  61 6e 64 6c 65 0a 20 20  |  icon handle.  |
00017a90  20 20 20 20 20 20 20 62  6f 6f 6c 20 73 74 61 74  |       bool stat|
00017aa0  65 20 28 30 20 66 6f 72  20 64 65 73 65 6c 65 63  |e (0 for deselec|
00017ab0  74 65 64 2c 20 6e 6f 6e  20 30 0a 20 20 20 20 20  |ted, non 0.     |
00017ac0  20 20 20 20 20 20 20 20  20 66 6f 72 20 73 65 6c  |         for sel|
00017ad0  65 63 74 65 64 29 0a 0a  54 68 69 73 20 63 61 6c  |ected)..This cal|
00017ae0  6c 20 69 73 20 75 73 65  64 20 74 6f 20 73 65 6c  |l is used to sel|
00017af0  65 63 74 20 6f 72 20 64  65 73 65 6c 65 63 74 20  |ect or deselect |
00017b00  69 63 6f 6e 73 0a 64 65  70 65 6e 64 69 6e 67 20  |icons.depending |
00017b10  6f 6e 20 74 68 65 20 76  61 6c 75 65 20 6f 66 20  |on the value of |
00017b20  74 68 65 20 73 74 61 74  65 20 66 6c 61 67 0a 0a  |the state flag..|
00017b30  4c 69 62 72 61 72 79 20  47 72 6f 75 70 20 3d 3e  |Library Group =>|
00017b40  20 3c 49 63 6f 6e 73 3d  3e 4c 69 62 47 72 6f 75  | <Icons=>LibGrou|
00017b50  70 49 63 6f 6e 73 3e 4d  65 6d 6f 72 79 20 4d 61  |pIcons>Memory Ma|
00017b60  6e 61 67 65 6d 65 6e 74  20 0a 41 20 63 72 75 63  |nagement .A cruc|
00017b70  69 61 6c 20 65 6c 65 6d  65 6e 74 20 6f 66 20 74  |ial element of t|
00017b80  68 65 20 45 76 65 6e 74  53 68 65 6c 6c 20 6c 69  |he EventShell li|
00017b90  62 72 61 72 79 20 69 73  20 74 68 65 20 75 73 65  |brary is the use|
00017ba0  20 6f 66 20 6d 65 6d 6f  72 79 20 0a 6d 61 6e 61  | of memory .mana|
00017bb0  67 65 6d 65 6e 74 20 72  6f 75 74 69 6e 65 73 20  |gement routines |
00017bc0  6f 72 69 67 69 6e 61 6c  6c 79 20 70 75 62 6c 69  |originally publi|
00017bd0  73 68 65 64 20 69 6e 20  52 69 73 63 20 55 73 65  |shed in Risc Use|
00017be0  72 20 6d 61 67 61 7a 69  6e 65 20 0a 61 6e 64 20  |r magazine .and |
00017bf0  75 73 65 64 20 77 69 74  68 20 70 65 72 6d 69 73  |used with permis|
00017c00  73 69 6f 6e 2e 20 4d 61  6e 79 20 6c 69 62 72 61  |sion. Many libra|
00017c10  72 79 20 72 6f 75 74 69  6e 65 73 20 72 65 71 75  |ry routines requ|
00017c20  69 72 65 20 73 6f 6d 65  20 0a 6d 65 6d 6f 72 79  |ire some .memory|
00017c30  20 77 6f 72 6b 73 70 61  63 65 20 61 6e 64 20 74  | workspace and t|
00017c40  68 65 79 20 6f 62 74 61  69 6e 20 74 68 69 73 20  |hey obtain this |
00017c50  62 79 20 63 61 6c 6c 69  6e 67 20 0a 46 4e 73 68  |by calling .FNsh|
00017c60  65 6c 6c 5f 48 65 61 70  42 6c 6f 63 6b 46 65 74  |ell_HeapBlockFet|
00017c70  63 68 28 62 79 74 65 73  5f 72 65 71 75 69 72 65  |ch(bytes_require|
00017c80  64 29 20 77 68 69 63 68  20 72 65 74 75 72 6e 73  |d) which returns|
00017c90  20 74 68 65 20 61 64 64  72 65 73 73 20 0a 6f 66  | the address .of|
00017ca0  20 74 68 65 20 61 6c 6c  6f 63 61 74 65 64 20 6d  | the allocated m|
00017cb0  65 6d 6f 72 79 20 61 6e  64 20 72 65 6c 65 61 73  |emory and releas|
00017cc0  65 20 69 74 20 77 68 65  6e 20 74 68 65 79 20 61  |e it when they a|
00017cd0  72 65 20 66 69 6e 69 73  68 65 64 20 0a 77 69 74  |re finished .wit|
00017ce0  68 20 50 52 4f 43 73 68  65 6c 6c 5f 48 65 61 70  |h PROCshell_Heap|
00017cf0  42 6c 6f 63 6b 52 65 74  75 72 6e 2e 20 0a 0a 54  |BlockReturn. ..T|
00017d00  68 69 73 20 69 73 20 76  69 74 61 6c 20 66 6f 72  |his is vital for|
00017d10  20 61 76 6f 69 64 69 6e  67 20 27 73 69 64 65 20  | avoiding 'side |
00017d20  65 66 66 65 63 74 73 27  20 63 61 75 73 65 64 20  |effects' caused |
00017d30  62 79 20 75 73 69 6e 67  20 74 68 65 20 0a 73 61  |by using the .sa|
00017d40  6d 65 20 62 6c 6f 63 6b  20 6f 66 20 6d 65 6d 6f  |me block of memo|
00017d50  72 79 20 66 6f 72 20 64  69 66 66 65 72 65 6e 74  |ry for different|
00017d60  20 70 75 72 70 6f 73 65  73 20 61 73 20 6d 6f 73  | purposes as mos|
00017d70  74 20 57 49 4d 50 20 70  72 6f 67 72 61 6d 73 20  |t WIMP programs |
00017d80  0a 74 65 6e 64 20 74 6f  20 64 6f 2e 20 45 71 75  |.tend to do. Equ|
00017d90  61 6c 6c 79 20 69 6d 70  6f 72 74 61 6e 74 20 69  |ally important i|
00017da0  73 20 74 68 65 20 66 61  63 74 20 74 68 61 74 20  |s the fact that |
00017db0  61 73 20 74 68 65 20 72  6f 75 74 69 6e 65 73 20  |as the routines |
00017dc0  0a 61 72 65 20 77 72 69  74 74 65 6e 20 69 6e 20  |.are written in |
00017dd0  41 52 4d 20 63 6f 64 65  20 74 68 65 79 20 61 72  |ARM code they ar|
00017de0  65 20 65 78 74 72 65 6d  65 6c 79 20 66 61 73 74  |e extremely fast|
00017df0  2e 20 0a 0a 41 6e 6f 74  68 65 72 20 70 6f 69 6e  |. ..Another poin|
00017e00  74 20 74 6f 20 6e 6f 74  65 20 69 73 20 74 68 61  |t to note is tha|
00017e10  74 20 74 68 69 73 20 6d  65 6d 6f 72 79 20 69 73  |t this memory is|
00017e20  20 63 6c 61 69 6d 65 64  20 66 72 6f 6d 20 74 68  | claimed from th|
00017e30  65 20 0a 63 75 72 72 65  6e 74 20 77 69 6d 70 20  |e .current wimp |
00017e40  73 6c 6f 74 20 61 6e 64  20 6e 6f 74 20 74 68 65  |slot and not the|
00017e50  20 52 4d 41 20 28 52 65  6c 6f 63 61 74 61 62 6c  | RMA (Relocatabl|
00017e60  65 20 4d 6f 64 75 6c 65  20 41 72 65 61 29 2e 20  |e Module Area). |
00017e70  54 68 69 73 20 0a 65 6e  73 75 72 65 73 20 74 68  |This .ensures th|
00017e80  61 74 20 61 6c 6c 20 6f  66 20 74 68 65 20 6d 65  |at all of the me|
00017e90  6d 6f 72 79 20 63 6c 61  69 6d 65 64 20 62 79 20  |mory claimed by |
00017ea0  74 68 65 20 61 70 70 6c  69 63 61 74 69 6f 6e 20  |the application |
00017eb0  69 73 20 0a 72 65 6c 65  61 73 65 64 20 62 61 63  |is .released bac|
00017ec0  6b 20 74 6f 20 74 68 65  20 66 72 65 65 20 70 6f  |k to the free po|
00017ed0  6f 6c 20 77 68 65 6e 20  74 68 65 20 61 70 70 6c  |ol when the appl|
00017ee0  69 63 61 74 69 6f 6e 20  71 75 69 74 73 20 2d 20  |ication quits - |
00017ef0  74 68 69 73 20 0a 69 73  20 6e 6f 74 20 74 68 65  |this .is not the|
00017f00  20 63 61 73 65 20 69 66  20 6d 65 6d 6f 72 79 20  | case if memory |
00017f10  69 73 20 63 6c 61 69 6d  65 64 20 66 72 6f 6d 20  |is claimed from |
00017f20  74 68 65 20 52 4d 41 2e  20 49 74 20 69 73 20 6f  |the RMA. It is o|
00017f30  6e 6c 79 20 0a 70 6f 73  73 69 62 6c 65 20 74 6f  |nly .possible to|
00017f40  20 72 65 63 6c 61 69 6d  20 52 4d 41 20 6d 65 6d  | reclaim RMA mem|
00017f50  6f 72 79 20 69 66 20 74  68 65 20 66 72 65 65 20  |ory if the free |
00017f60  73 70 61 63 65 20 69 73  20 61 74 20 74 68 65 20  |space is at the |
00017f70  74 6f 70 20 6f 66 20 0a  74 68 65 20 52 4d 41 20  |top of .the RMA |
00017f80  77 68 69 63 68 20 6c 65  61 64 73 20 74 6f 20 74  |which leads to t|
00017f90  68 65 20 52 4d 41 20 61  6c 6c 6f 63 61 74 69 6f  |he RMA allocatio|
00017fa0  6e 20 67 72 61 64 75 61  6c 6c 79 20 67 72 6f 77  |n gradually grow|
00017fb0  69 6e 67 20 61 73 20 0a  79 6f 75 20 72 75 6e 20  |ing as .you run |
00017fc0  61 6e 64 20 71 75 69 74  20 61 70 70 6c 69 63 61  |and quit applica|
00017fd0  74 69 6f 6e 73 2e 20 0a  0a 55 6e 66 6f 72 74 75  |tions. ..Unfortu|
00017fe0  6e 61 74 65 6c 79 20 28  69 6e 20 74 68 65 20 61  |nately (in the a|
00017ff0  75 74 68 6f 72 73 20 76  69 65 77 21 29 20 74 68  |uthors view!) th|
00018000  65 20 4d 65 6e 75 55 74  69 6c 73 20 6d 6f 64 75  |e MenuUtils modu|
00018010  6c 65 20 75 73 65 73 20  0a 74 68 65 20 52 4d 41  |le uses .the RMA|
00018020  20 66 6f 72 20 73 74 6f  72 61 67 65 20 6f 66 20  | for storage of |
00018030  69 6e 64 69 72 65 63 74  65 64 20 64 61 74 61 20  |indirected data |
00018040  61 6e 64 20 6d 65 6e 75  20 73 74 72 75 63 74 75  |and menu structu|
00018050  72 65 73 2e 20 0a 48 6f  70 65 66 75 6c 6c 79 20  |res. .Hopefully |
00018060  74 68 69 73 20 64 61 74  61 20 67 65 74 73 20 70  |this data gets p|
00018070  75 74 20 69 6e 20 61 6e  79 20 73 6d 61 6c 6c 20  |ut in any small |
00018080  61 76 61 69 6c 61 62 6c  65 20 62 6c 6f 63 6b 73  |available blocks|
00018090  20 73 6f 20 0a 74 68 61  74 20 74 68 65 20 52 4d  | so .that the RM|
000180a0  41 20 61 6c 6c 6f 63 61  74 69 6f 6e 20 64 6f 65  |A allocation doe|
000180b0  73 20 6e 6f 74 20 69 6e  63 72 65 61 73 65 2e 20  |s not increase. |
000180c0  0a 0a 59 6f 75 20 61 72  65 20 73 74 72 6f 6e 67  |..You are strong|
000180d0  6c 79 20 61 64 76 69 73  65 64 20 74 6f 20 75 73  |ly advised to us|
000180e0  65 20 74 68 65 20 73 75  70 70 6c 69 65 64 20 6d  |e the supplied m|
000180f0  65 6d 6f 72 79 20 6d 61  6e 61 67 65 6d 65 6e 74  |emory management|
00018100  20 0a 72 6f 75 74 69 6e  65 73 20 69 6e 20 74 68  | .routines in th|
00018110  65 20 75 73 65 72 20 61  70 70 6c 69 63 61 74 69  |e user applicati|
00018120  6f 6e 20 73 68 6f 75 6c  64 20 79 6f 75 20 72 65  |on should you re|
00018130  71 75 69 72 65 20 73 74  6f 72 61 67 65 20 66 6f  |quire storage fo|
00018140  72 20 0a 64 61 74 61 2c  20 6f 72 20 74 65 6d 70  |r .data, or temp|
00018150  6f 72 61 72 79 20 62 6c  6f 63 6b 73 20 66 6f 72  |orary blocks for|
00018160  20 75 73 65 20 77 69 74  68 20 53 57 49 20 63 61  | use with SWI ca|
00018170  6c 6c 73 20 66 6f 72 20  65 78 61 6d 70 6c 65 2e  |lls for example.|
00018180  20 54 68 65 20 0a 74 69  6d 65 20 70 65 6e 61 6c  | The .time penal|
00018190  74 79 20 66 6f 72 20 64  6f 69 6e 67 20 74 68 69  |ty for doing thi|
000181a0  73 20 69 73 20 76 65 72  79 20 73 6d 61 6c 6c 20  |s is very small |
000181b0  61 6e 64 20 69 6e 20 61  6e 79 20 63 61 73 65 20  |and in any case |
000181c0  72 65 73 75 6c 74 73 20  0a 69 6e 20 61 20 6d 6f  |results .in a mo|
000181d0  72 65 20 72 65 6c 69 61  62 6c 65 20 61 6e 64 20  |re reliable and |
000181e0  65 61 73 69 65 72 20 74  6f 20 6d 61 69 6e 74 61  |easier to mainta|
000181f0  69 6e 20 61 70 70 6c 69  63 61 74 69 6f 6e 2e 20  |in application. |
00018200  52 65 73 46 69 6e 64 20  0a 54 68 65 20 45 76 6e  |ResFind .The Evn|
00018210  74 53 68 65 6c 6c 20 6c  69 62 72 61 72 79 20 6e  |tShell library n|
00018220  6f 77 20 73 75 70 70 6f  72 74 73 20 52 65 73 46  |ow supports ResF|
00018230  69 6e 64 20 77 68 69 63  68 20 61 6c 6c 6f 77 73  |ind which allows|
00018240  20 74 68 65 20 0a 73 65  6c 65 63 74 69 6f 6e 20  | the .selection |
00018250  6f 66 20 74 68 65 20 64  65 73 69 72 65 64 20 6c  |of the desired l|
00018260  61 6e 67 75 61 67 65 20  66 6f 72 20 6d 65 73 73  |anguage for mess|
00018270  61 67 65 20 66 69 6c 65  73 20 65 74 63 20 6d 75  |age files etc mu|
00018280  63 68 20 0a 65 61 73 69  65 72 2e 20 42 72 69 65  |ch .easier. Brie|
00018290  66 6c 79 20 65 78 70 6c  61 69 6e 65 64 20 69 74  |fly explained it|
000182a0  20 63 68 65 63 6b 73 20  74 68 65 20 63 75 72 72  | checks the curr|
000182b0  65 6e 74 6c 79 20 63 6f  6e 66 69 67 75 72 65 64  |ently configured|
000182c0  20 0a 6c 61 6e 67 75 61  67 65 20 6f 66 20 74 68  | .language of th|
000182d0  65 20 63 6f 6d 70 75 74  65 72 20 69 74 20 69 73  |e computer it is|
000182e0  20 72 75 6e 6e 69 6e 67  20 6f 6e 20 61 6e 64 20  | running on and |
000182f0  73 65 74 73 20 75 70 20  61 20 70 61 74 68 20 74  |sets up a path t|
00018300  6f 20 0a 74 68 65 20 72  65 73 6f 75 72 63 65 20  |o .the resource |
00018310  66 69 6c 65 73 2e 20 54  68 69 73 20 77 6f 75 6c  |files. This woul|
00018320  64 20 6e 6f 72 6d 61 6c  6c 79 20 62 65 20 5c 3c  |d normally be \<|
00018330  41 70 70 24 44 69 72 3e  2e 52 65 73 6f 75 72 63  |App$Dir>.Resourc|
00018340  65 73 2e 55 4b 0a 66 6f  72 20 61 20 55 4b 20 63  |es.UK.for a UK c|
00018350  6f 6e 66 69 67 75 72 65  64 20 63 6f 6d 70 75 74  |onfigured comput|
00018360  65 72 2c 20 6f 72 20 5c  3c 41 70 70 24 44 69 72  |er, or \<App$Dir|
00018370  3e 2e 52 65 73 6f 75 72  63 65 73 2e 47 65 72 6d  |>.Resources.Germ|
00018380  61 6e 79 20 66 6f 72 20  0a 61 20 47 65 72 6d 61  |any for .a Germa|
00018390  6e 20 6f 6e 65 2e 20 0a  0a 41 70 70 42 75 69 6c  |n one. ..AppBuil|
000183a0  64 20 6e 6f 77 20 6f 66  66 65 72 73 20 74 6f 20  |d now offers to |
000183b0  70 6c 61 63 65 20 74 68  65 20 72 65 73 6f 75 72  |place the resour|
000183c0  63 65 73 20 69 6e 20 74  68 65 20 61 70 70 72 6f  |ces in the appro|
000183d0  70 72 69 61 74 65 20 0a  64 69 72 65 63 74 6f 72  |priate .director|
000183e0  69 65 73 20 66 6f 72 20  79 6f 75 20 77 68 65 6e  |ies for you when|
000183f0  20 79 6f 75 20 63 72 65  61 74 65 20 61 20 6e 65  | you create a ne|
00018400  77 20 61 70 70 6c 69 63  61 74 69 6f 6e 2c 20 61  |w application, a|
00018410  6e 64 20 74 6f 20 70 6c  61 63 65 20 0a 61 20 63  |nd to place .a c|
00018420  61 6c 6c 20 74 6f 20 52  65 73 46 69 6e 64 20 69  |all to ResFind i|
00018430  6e 20 74 68 65 20 21 52  75 6e 20 66 69 6c 65 2e  |n the !Run file.|
00018440  20 0a 0a 55 73 69 6e 67  20 52 65 73 46 69 6e 64  | ..Using ResFind|
00018450  20 69 73 20 6f 70 74 69  6f 6e 61 6c 20 61 6e 64  | is optional and|
00018460  20 45 76 6e 74 53 68 65  6c 6c 20 61 70 70 6c 69  | EvntShell appli|
00018470  63 61 74 69 6f 6e 73 20  77 69 6c 6c 20 0a 66 75  |cations will .fu|
00018480  6e 63 74 69 6f 6e 20 65  71 75 61 6c 6c 79 20 77  |nction equally w|
00018490  65 6c 6c 20 69 66 20 79  6f 75 20 64 6f 6e 27 74  |ell if you don't|
000184a0  20 75 73 65 20 69 74 2e  20 49 74 20 64 6f 65 73  | use it. It does|
000184b0  20 6d 61 6b 65 20 74 68  65 20 0a 70 72 6f 64 75  | make the .produ|
000184c0  63 74 69 6f 6e 20 6f 66  20 61 70 70 6c 69 63 61  |ction of applica|
000184d0  74 69 6f 6e 73 20 74 68  61 74 20 63 61 6e 20 62  |tions that can b|
000184e0  65 20 65 61 73 69 6c 79  20 75 73 65 64 20 69 6e  |e easily used in|
000184f0  20 61 6e 79 20 63 6f 75  6e 74 72 79 20 0a 6d 75  | any country .mu|
00018500  63 68 20 65 61 73 69 65  72 2c 20 68 6f 77 65 76  |ch easier, howev|
00018510  65 72 2c 20 61 6e 64 20  74 68 69 73 20 73 68 6f  |er, and this sho|
00018520  75 6c 64 20 62 65 20 65  6e 63 6f 75 72 61 67 65  |uld be encourage|
00018530  64 2e 20 4d 6f 73 74 20  6f 66 20 74 68 65 20 0a  |d. Most of the .|
00018540  70 72 6f 67 72 61 6d 6d  69 6e 67 20 74 6f 6f 6c  |programming tool|
00018550  73 20 61 6e 64 20 6d 6f  64 75 6c 65 73 20 75 73  |s and modules us|
00018560  65 64 20 64 75 72 69 6e  67 20 74 68 65 20 64 65  |ed during the de|
00018570  76 65 6c 6f 70 6d 65 6e  74 20 6f 66 20 74 68 69  |velopment of thi|
00018580  73 20 0a 6c 69 62 72 61  72 79 20 77 65 72 65 20  |s .library were |
00018590  77 72 69 74 74 65 6e 20  6f 75 74 73 69 64 65 20  |written outside |
000185a0  74 68 65 20 55 4b 2e 20  0a 0a 54 68 65 20 61 75  |the UK. ..The au|
000185b0  74 68 6f 72 20 77 6f 75  6c 64 20 61 70 70 72 65  |thor would appre|
000185c0  63 69 61 74 65 20 68 65  6c 70 20 69 6e 20 74 72  |ciate help in tr|
000185d0  61 6e 73 6c 61 74 69 6e  67 20 74 68 65 20 53 68  |anslating the Sh|
000185e0  65 6c 6c 4d 73 67 73 20  0a 66 69 6c 65 20 61 6e  |ellMsgs .file an|
000185f0  64 20 74 68 65 20 64 6f  63 75 6d 65 6e 74 61 74  |d the documentat|
00018600  69 6f 6e 20 69 6e 74 6f  20 6f 74 68 65 72 20 6c  |ion into other l|
00018610  61 6e 67 75 61 67 65 73  2e 20 0a 0a 52 65 73 46  |anguages. ..ResF|
00018620  69 6e 64 20 69 73 20 63  6f 70 79 72 69 67 68 74  |ind is copyright|
00018630  20 4f 6c 61 66 20 4b 72  75 6d 6e 6f 77 20 61 6e  | Olaf Krumnow an|
00018640  64 20 48 65 72 62 65 72  74 20 7a 75 72 20 4e 65  |d Herbert zur Ne|
00018650  64 64 65 6e 20 6f 66 20  74 68 65 0a 47 65 72 6d  |dden of the.Germ|
00018660  61 6e 20 41 72 63 68 69  6d 65 64 65 73 20 47 72  |an Archimedes Gr|
00018670  6f 75 70 20 28 47 41 47  29 2e 0a 0a 54 68 65 20  |oup (GAG)...The |
00018680  66 75 6c 6c 20 52 65 73  46 69 6e 64 20 64 6f 63  |full ResFind doc|
00018690  75 6d 65 6e 74 61 74 69  6f 6e 20 73 75 70 70 6c  |umentation suppl|
000186a0  69 65 64 20 77 69 74 68  20 74 68 65 20 6c 69 62  |ied with the lib|
000186b0  72 61 72 79 20 63 6f 6e  74 61 69 6e 73 20 0a 66  |rary contains .f|
000186c0  75 72 74 68 65 72 20 64  65 74 61 69 6c 73 20 6f  |urther details o|
000186d0  6e 20 68 6f 77 20 69 74  20 77 6f 72 6b 73 20 61  |n how it works a|
000186e0  6e 64 20 74 68 65 20 61  64 76 61 6e 74 61 67 65  |nd the advantage|
000186f0  73 20 74 6f 20 62 65 20  67 61 69 6e 65 64 20 0a  |s to be gained .|
00018700  62 79 20 75 73 69 6e 67  20 69 74 2e 20 41 73 20  |by using it. As |
00018710  61 20 74 61 73 74 65 72  2c 20 68 65 72 65 20 69  |a taster, here i|
00018720  73 20 74 68 65 20 70 61  72 74 20 6f 66 20 74 68  |s the part of th|
00018730  65 20 64 6f 63 75 6d 65  6e 74 61 74 69 6f 6e 20  |e documentation |
00018740  0a 69 6e 74 65 6e 64 65  64 20 74 6f 20 62 65 20  |.intended to be |
00018750  64 69 73 74 72 69 62 75  74 65 64 20 77 69 74 68  |distributed with|
00018760  20 61 70 70 6c 69 63 61  74 69 6f 6e 73 20 75 73  | applications us|
00018770  69 6e 67 20 52 65 73 46  69 6e 64 2e 0a 0a 28 42  |ing ResFind...(B|
00018780  61 73 65 20 66 6f 72 20  74 68 65 20 61 70 70 6c  |ase for the appl|
00018790  69 63 61 74 69 6f 6e 27  73 20 64 6f 63 75 6d 65  |ication's docume|
000187a0  6e 74 61 74 69 6f 6e 20  2d 20 70 6c 65 61 73 65  |ntation - please|
000187b0  20 72 65 70 6c 61 63 65  0a 5c 3c 50 72 6f 67 4e  | replace.\<ProgN|
000187c0  61 6d 65 3e 20 62 79 20  74 68 65 20 6e 61 6d 65  |ame> by the name|
000187d0  20 6f 66 20 79 6f 75 72  20 61 70 70 6c 69 63 61  | of your applica|
000187e0  74 69 6f 6e 20 77 69 74  68 6f 75 74 20 74 68 65  |tion without the|
000187f0  20 21 29 0a 0a 21 5c 3c  50 72 6f 67 4e 61 6d 65  | !)..!\<ProgName|
00018800  3e 20 61 64 61 70 74 73  20 61 75 74 6f 6d 61 74  |> adapts automat|
00018810  69 63 61 6c 6c 79 20 74  6f 20 74 68 65 20 63 6f  |ically to the co|
00018820  6e 66 69 67 75 72 65 64  20 6c 61 6e 67 75 61 67  |nfigured languag|
00018830  65 20 69 66 0a 74 68 65  20 63 6f 72 72 65 73 70  |e if.the corresp|
00018840  6f 6e 64 69 6e 67 20 6d  65 73 73 61 67 65 73 20  |onding messages |
00018850  65 74 63 2e 20 61 72 65  20 61 76 61 69 6c 61 62  |etc. are availab|
00018860  6c 65 2e 20 46 6f 72 20  74 68 69 73 20 70 75 72  |le. For this pur|
00018870  70 6f 73 65 0a 61 20 52  65 73 6f 75 72 63 65 73  |pose.a Resources|
00018880  20 64 69 72 65 63 74 6f  72 79 20 69 73 20 63 6f  | directory is co|
00018890  6e 74 61 69 6e 65 64 20  69 6e 20 74 68 65 20 61  |ntained in the a|
000188a0  70 70 6c 69 63 61 74 69  6f 6e 20 69 6e 20 77 68  |pplication in wh|
000188b0  69 63 68 0a 61 20 73 75  62 64 69 72 65 63 74 6f  |ich.a subdirecto|
000188c0  72 79 20 66 6f 72 20 65  61 63 68 20 6c 61 6e 67  |ry for each lang|
000188d0  75 61 67 65 20 73 75 70  70 6f 72 74 65 64 20 72  |uage supported r|
000188e0  65 73 69 64 65 73 2e 20  49 66 20 74 68 65 0a 6c  |esides. If the.l|
000188f0  61 6e 67 75 61 67 65 20  79 6f 75 20 6e 65 65 64  |anguage you need|
00018900  20 69 73 6e 27 74 20 69  6e 20 74 68 65 72 65 2c  | isn't in there,|
00018910  20 70 6c 65 61 73 65 20  66 65 65 6c 20 66 72 65  | please feel fre|
00018920  65 20 74 6f 20 64 75 70  6c 69 63 61 74 65 0a 61  |e to duplicate.a|
00018930  6e 79 20 6f 66 20 74 68  65 73 65 20 6c 61 6e 67  |ny of these lang|
00018940  75 61 67 65 20 64 69 72  65 63 74 6f 72 69 65 73  |uage directories|
00018950  20 61 6e 64 20 74 72 61  6e 73 6c 61 74 65 20 74  | and translate t|
00018960  68 65 20 63 6f 6e 74 65  6e 74 73 2e 0a 0a 57 68  |he contents...Wh|
00018970  65 6e 20 79 6f 75 20 72  75 6e 20 74 68 65 20 70  |en you run the p|
00018980  72 6f 67 72 61 6d 20 61  20 75 74 69 6c 69 74 79  |rogram a utility|
00018990  20 63 61 6c 6c 65 64 20  52 65 73 46 69 6e 64 20  | called ResFind |
000189a0  69 73 20 63 61 6c 6c 65  64 0a 77 68 69 63 68 20  |is called.which |
000189b0  72 65 61 64 73 20 74 68  65 20 6c 61 6e 67 75 61  |reads the langua|
000189c0  67 65 20 79 6f 75 72 20  63 6f 6d 70 75 74 65 72  |ge your computer|
000189d0  20 69 73 20 63 6f 6e 66  69 67 75 72 65 64 20 74  | is configured t|
000189e0  6f 20 61 6e 64 20 74 68  65 6e 0a 6c 6f 6f 6b 73  |o and then.looks|
000189f0  20 66 6f 72 20 74 68 65  20 63 6f 72 72 65 73 70  | for the corresp|
00018a00  6f 6e 64 69 6e 67 20 6c  61 6e 67 75 61 67 65 20  |onding language |
00018a10  64 69 72 65 63 74 6f 72  79 2e 20 49 66 20 74 68  |directory. If th|
00018a20  69 73 20 66 61 69 6c 73  0a 74 68 65 20 70 72 6f  |is fails.the pro|
00018a30  67 72 61 6d 20 77 69 6c  6c 20 72 75 6e 20 69 6e  |gram will run in|
00018a40  20 45 6e 67 6c 69 73 68  20 28 55 4b 29 2e 20 42  | English (UK). B|
00018a50  79 20 73 65 74 74 69 6e  67 20 73 65 76 65 72 61  |y setting severa|
00018a60  6c 20 73 79 73 74 65 6d  0a 76 61 72 69 61 62 6c  |l system.variabl|
00018a70  65 73 20 28 62 65 73 74  20 64 6f 6e 65 20 69 6e  |es (best done in|
00018a80  20 79 6f 75 72 20 73 79  73 74 65 6d 27 73 20 21  | your system's !|
00018a90  42 6f 6f 74 20 66 69 6c  65 29 20 79 6f 75 20 63  |Boot file) you c|
00018aa0  61 6e 20 63 68 61 6e 67  65 0a 74 68 65 20 6c 61  |an change.the la|
00018ab0  6e 67 75 61 67 65 20 6c  6f 6f 6b 65 64 20 66 6f  |nguage looked fo|
00018ac0  72 2e 20 57 69 74 68 20  74 68 69 73 20 79 6f 75  |r. With this you|
00018ad0  20 63 61 6e 20 6d 61 6b  65 20 73 75 72 65 20 61  | can make sure a|
00018ae0  20 70 72 6f 67 72 61 6d  0a 72 75 6e 73 20 69 6e  | program.runs in|
00018af0  20 61 20 63 65 72 74 61  69 6e 20 6c 61 6e 67 75  | a certain langu|
00018b00  61 67 65 2c 20 65 2e 67  2e 20 74 6f 20 61 76 6f  |age, e.g. to avo|
00018b10  69 64 20 61 20 77 65 69  72 64 20 74 72 61 6e 73  |id a weird trans|
00018b20  6c 61 74 69 6f 6e 2e 0a  46 75 72 74 68 65 72 6d  |lation..Furtherm|
00018b30  6f 72 65 20 69 74 20 69  73 20 70 6f 73 73 69 62  |ore it is possib|
00018b40  6c 65 20 74 6f 20 6e 61  6d 65 20 73 65 76 65 72  |le to name sever|
00018b50  61 6c 20 6c 61 6e 67 75  61 67 65 73 20 79 6f 75  |al languages you|
00018b60  20 70 72 65 66 65 72 0a  74 6f 20 45 6e 67 6c 69  | prefer.to Engli|
00018b70  73 68 2e 0a 0a 54 68 69  73 20 69 73 20 63 6f 6e  |sh...This is con|
00018b80  74 72 6f 6c 6c 65 64 20  62 79 20 74 68 72 65 65  |trolled by three|
00018b90  20 73 79 73 74 65 6d 20  76 61 72 69 61 62 6c 65  | system variable|
00018ba0  73 3a 0a 0a 5c 3c 50 72  6f 67 4e 61 6d 65 3e 24  |s:..\<ProgName>$|
00018bb0  4c 61 6e 67 75 61 67 65  2c 20 52 65 73 46 69 6e  |Language, ResFin|
00018bc0  64 24 4c 61 6e 67 75 61  67 65 73 50 72 65 66 20  |d$LanguagesPref |
00018bd0  61 6e 64 0a 52 65 73 46  69 6e 64 24 4c 61 6e 67  |and.ResFind$Lang|
00018be0  75 61 67 65 73 24 53 75  66 66 2e 0a 0a 57 68 65  |uages$Suff...Whe|
00018bf0  6e 20 72 75 6e 6e 69 6e  67 20 74 68 65 20 61 70  |n running the ap|
00018c00  70 6c 69 63 61 74 69 6f  6e 20 52 65 73 46 69 6e  |plication ResFin|
00018c10  64 20 6c 6f 6f 6b 73 20  66 6f 72 20 74 68 65 20  |d looks for the |
00018c20  66 69 72 73 74 20 6c 61  6e 67 75 61 67 65 0a 73  |first language.s|
00018c30  75 70 70 6f 72 74 65 64  20 61 6c 6f 6e 67 20 74  |upported along t|
00018c40  68 65 20 66 6f 6c 6c 6f  77 69 6e 67 20 6c 69 73  |he following lis|
00018c50  74 20 6f 66 20 6c 61 6e  67 75 61 67 65 73 3a 0a  |t of languages:.|
00018c60  0a 20 20 31 2e 20 43 6f  6e 74 65 6e 74 73 20 6f  |.  1. Contents o|
00018c70  66 20 74 68 65 20 76 61  72 69 61 62 6c 65 20 5c  |f the variable \|
00018c80  3c 50 72 6f 67 4e 61 6d  65 3e 24 4c 61 6e 67 75  |<ProgName>$Langu|
00018c90  61 67 65 0a 20 20 32 2e  20 43 6f 6e 74 65 6e 74  |age.  2. Content|
00018ca0  73 20 6f 66 20 74 68 65  20 76 61 72 69 61 62 6c  |s of the variabl|
00018cb0  65 20 52 65 73 46 69 6e  64 24 4c 61 6e 67 75 61  |e ResFind$Langua|
00018cc0  67 65 73 50 72 65 66 0a  20 20 33 2e 20 54 68 65  |gesPref.  3. The|
00018cd0  20 63 6f 6e 66 69 67 75  72 65 64 20 6c 61 6e 67  | configured lang|
00018ce0  75 61 67 65 0a 20 20 34  2e 20 43 6f 6e 74 65 6e  |uage.  4. Conten|
00018cf0  74 73 20 6f 66 20 74 68  65 20 76 61 72 69 61 62  |ts of the variab|
00018d00  6c 65 20 52 65 73 46 69  6e 64 24 4c 61 6e 67 75  |le ResFind$Langu|
00018d10  61 67 65 73 53 75 66 66  0a 20 20 35 2e 20 55 4b  |agesSuff.  5. UK|
00018d20  0a 0a 54 61 6b 65 20 61  20 4e 6f 72 77 65 67 69  |..Take a Norwegi|
00018d30  61 6e 20 75 73 65 72 20  66 6f 72 20 65 78 61 6d  |an user for exam|
00018d40  70 6c 65 20 28 6c 6f 74  73 20 6f 66 20 67 72 65  |ple (lots of gre|
00018d50  61 74 20 70 72 6f 67 72  61 6d 73 20 63 6f 6d 65  |at programs come|
00018d60  0a 66 72 6f 6d 20 74 68  65 72 65 29 20 77 68 6f  |.from there) who|
00018d70  73 65 20 63 6f 6d 70 75  74 65 72 20 69 73 20 63  |se computer is c|
00018d80  6f 6e 66 69 67 75 72 65  64 20 74 6f 20 27 4e 6f  |onfigured to 'No|
00018d90  72 77 61 79 27 2e 20 53  69 6e 63 65 0a 74 68 69  |rway'. Since.thi|
00018da0  73 20 6c 61 6e 67 75 61  67 65 20 69 73 6e 27 74  |s language isn't|
00018db0  20 74 6f 6f 20 63 6f 6d  6d 6f 6e 20 69 6e 20 45  | too common in E|
00018dc0  75 72 6f 70 65 20 6d 6f  73 74 20 70 72 6f 67 72  |urope most progr|
00018dd0  61 6d 73 20 77 6f 6e 27  74 0a 73 75 70 70 6f 72  |ams won't.suppor|
00018de0  74 20 69 74 20 2d 20 65  78 63 65 70 74 20 66 6f  |t it - except fo|
00018df0  72 20 4e 6f 72 77 65 67  69 61 6e 20 6f 6e 65 73  |r Norwegian ones|
00018e00  2e 20 42 75 74 20 6f 75  72 20 75 73 65 72 20 69  |. But our user i|
00018e10  73 20 70 72 65 74 74 79  0a 67 6f 6f 64 20 69 6e  |s pretty.good in|
00018e20  20 47 65 72 6d 61 6e 20  61 6e 64 20 46 72 65 6e  | German and Fren|
00018e30  63 68 20 62 75 74 20 6e  6f 74 20 74 6f 6f 20 66  |ch but not too f|
00018e40  6f 6e 64 20 6f 66 20 45  6e 67 6c 69 73 68 2e 20  |ond of English. |
00018e50  54 68 65 72 65 66 6f 72  65 0a 68 65 20 70 72 65  |Therefore.he pre|
00018e60  66 65 72 73 20 74 68 65  73 65 20 6c 61 6e 67 75  |fers these langu|
00018e70  61 67 65 73 20 74 6f 20  55 4b 20 61 6e 64 20 77  |ages to UK and w|
00018e80  6f 75 6c 64 20 74 68 75  73 20 70 75 74 20 74 68  |ould thus put th|
00018e90  65 20 66 6f 6c 6c 6f 77  69 6e 67 0a 6c 69 6e 65  |e following.line|
00018ea0  20 69 6e 20 68 69 73 20  73 79 73 74 65 6d 27 73  | in his system's|
00018eb0  20 21 42 6f 6f 74 20 66  69 6c 65 3a 0a 0a 2a 53  | !Boot file:..*S|
00018ec0  65 74 20 52 65 73 46 69  6e 64 24 4c 61 6e 67 75  |et ResFind$Langu|
00018ed0  61 67 65 73 53 75 66 66  20 47 65 72 6d 61 6e 79  |agesSuff Germany|
00018ee0  2c 46 72 61 6e 63 65 0a  0a 52 75 6e 6e 69 6e 67  |,France..Running|
00018ef0  20 61 6e 20 61 70 70 6c  69 63 61 74 69 6f 6e 73  | an applications|
00018f00  20 28 73 75 63 68 20 61  73 20 74 68 69 73 20 6f  | (such as this o|
00018f10  6e 65 29 20 75 73 69 6e  67 20 52 65 73 46 69 6e  |ne) using ResFin|
00018f20  64 20 74 68 65 20 6c 69  73 74 0a 6f 66 20 6c 61  |d the list.of la|
00018f30  6e 67 75 61 67 65 73 20  6c 6f 6f 6b 65 64 20 66  |nguages looked f|
00018f40  6f 72 20 69 73 20 27 4e  6f 72 77 61 79 2c 47 65  |or is 'Norway,Ge|
00018f50  72 6d 61 6e 79 2c 46 72  61 6e 63 65 2c 55 4b 27  |rmany,France,UK'|
00018f60  2e 0a 0a 49 6e 20 63 61  73 65 20 74 68 69 73 20  |...In case this |
00018f70  75 73 65 72 20 68 61 73  20 61 6e 20 61 70 70 6c  |user has an appl|
00018f80  69 63 61 74 69 6f 6e 20  63 61 6c 6c 65 64 20 21  |ication called !|
00018f90  50 65 74 65 20 73 75 70  70 6f 72 74 69 6e 67 20  |Pete supporting |
00018fa0  74 68 65 0a 6c 61 6e 67  75 61 67 65 20 27 48 75  |the.language 'Hu|
00018fb0  6d 6f 72 6f 75 73 27 20  74 68 65 20 6c 69 6e 65  |morous' the line|
00018fc0  3a 0a 0a 2a 53 65 74 20  50 65 74 65 24 4c 61 6e  |:..*Set Pete$Lan|
00018fd0  67 75 61 67 65 20 48 75  6d 6f 72 6f 75 73 0a 0a  |guage Humorous..|
00018fe0  69 6e 20 74 68 65 20 21  42 6f 6f 74 20 66 69 6c  |in the !Boot fil|
00018ff0  65 20 6d 61 6b 65 73 20  73 75 72 65 20 21 50 65  |e makes sure !Pe|
00019000  74 65 20 77 69 6c 6c 20  72 75 6e 20 68 75 6d 6f  |te will run humo|
00019010  72 6f 75 73 2e 4f 6c 61  66 20 4b 72 75 6d 6e 6f  |rous.Olaf Krumno|
00019020  77 0a 4f 6c 61 66 20 4b  72 75 6d 6e 6f 77 0a 41  |w.Olaf Krumnow.A|
00019030  75 67 75 73 74 2d 42 65  62 65 6c 2d 53 74 72 61  |ugust-Bebel-Stra|
00019040  73 73 65 20 31 30 32 63  0a 44 2d 32 31 30 32 39  |sse 102c.D-21029|
00019050  20 48 61 6d 62 75 72 67  20 38 30 0a 47 65 72 6d  | Hamburg 80.Germ|
00019060  61 6e 79 0a 0a 28 2b 34  39 20 34 30 29 20 37 20  |any..(+49 40) 7 |
00019070  32 31 20 39 32 20 38 37  0a 0a 43 6f 2d 41 75 74  |21 92 87..Co-Aut|
00019080  68 6f 72 20 6f 66 20 52  65 73 46 69 6e 64 2c 0a  |hor of ResFind,.|
00019090  61 20 73 79 73 74 65 6d  20 66 6f 72 20 73 65 6c  |a system for sel|
000190a0  65 63 74 69 6e 67 0a 72  65 73 6f 75 72 63 65 20  |ecting.resource |
000190b0  66 69 6c 65 73 20 69 6e  20 74 68 65 0a 61 70 70  |files in the.app|
000190c0  72 6f 70 72 69 61 74 65  20 6c 61 6e 67 75 61 67  |ropriate languag|
000190d0  65 2e 48 65 72 62 65 72  74 20 7a 75 72 20 4e 65  |e.Herbert zur Ne|
000190e0  64 64 65 6e 0a 48 65 72  62 65 72 74 20 7a 75 72  |dden.Herbert zur|
000190f0  20 4e 65 64 64 65 6e 0a  41 6c 74 65 20 4c 61 6e  | Nedden.Alte Lan|
00019100  64 73 74 72 61 73 73 65  20 32 31 0a 44 2d 32 32  |dstrasse 21.D-22|
00019110  39 36 32 20 53 69 65 6b  0a 47 65 72 6d 61 6e 79  |962 Siek.Germany|
00019120  0a 0a 28 2b 34 39 20 34  31 20 30 37 29 20 39 39  |..(+49 41 07) 99|
00019130  20 30 30 0a 0a 43 6f 2d  41 75 74 68 6f 72 20 6f  | 00..Co-Author o|
00019140  66 20 52 65 73 46 69 6e  64 2c 0a 61 20 73 79 73  |f ResFind,.a sys|
00019150  74 65 6d 20 66 6f 72 20  73 65 6c 65 63 74 69 6e  |tem for selectin|
00019160  67 0a 72 65 73 6f 75 72  63 65 20 66 69 6c 65 73  |g.resource files|
00019170  20 69 6e 20 74 68 65 0a  61 70 70 72 6f 70 72 69  | in the.appropri|
00019180  61 74 65 20 6c 61 6e 67  75 61 67 65 2e 50 52 4f  |ate language.PRO|
00019190  43 73 68 65 6c 6c 5f 41  74 74 61 63 68 50 72 65  |Cshell_AttachPre|
000191a0  51 75 69 74 48 61 6e 64  6c 65 72 28 29 0a 50 61  |QuitHandler().Pa|
000191b0  72 61 6d 73 20 3d 3e 0a  20 20 20 20 20 20 20 20  |rams =>.        |
000191c0  20 73 74 72 20 3c 66 75  6e 63 74 69 6f 6e 20 6e  | str <function n|
000191d0  61 6d 65 3d 3e 55 73 65  72 46 4e 32 33 3e 0a 0a  |ame=>UserFN23>..|
000191e0  52 65 67 69 73 74 65 72  73 20 61 20 66 75 6e 63  |Registers a func|
000191f0  74 69 6f 6e 20 6e 61 6d  65 20 74 6f 20 62 65 20  |tion name to be |
00019200  63 61 6c 6c 65 64 20 77  68 65 6e 20 61 20 0a 50  |called when a .P|
00019210  72 65 51 75 69 74 20 6d  65 73 73 61 67 65 20 69  |reQuit message i|
00019220  73 20 72 65 63 65 69 76  65 64 2e 20 54 68 69 73  |s received. This|
00019230  20 67 69 76 65 73 20 74  68 65 0a 61 70 70 6c 69  | gives the.appli|
00019240  63 61 74 69 6f 6e 20 61  20 63 68 61 6e 63 65 20  |cation a chance |
00019250  74 6f 20 73 61 76 65 20  64 61 74 61 20 6f 72 20  |to save data or |
00019260  61 62 6f 72 74 0a 74 68  65 20 73 68 75 74 64 6f  |abort.the shutdo|
00019270  77 6e 2e 0a 0a 54 68 69  73 20 6d 65 73 73 61 67  |wn...This messag|
00019280  65 20 69 73 20 69 73 73  75 65 64 20 77 68 65 6e  |e is issued when|
00019290  20 74 68 65 20 74 61 73  6b 20 69 73 20 71 75 69  | the task is qui|
000192a0  74 0a 66 72 6f 6d 20 74  68 65 20 54 61 73 6b 20  |t.from the Task |
000192b0  4d 61 6e 61 67 65 72 2c  20 6f 72 20 77 68 65 6e  |Manager, or when|
000192c0  20 43 54 52 4c 2d 53 48  49 46 54 2d 46 31 32 0a  | CTRL-SHIFT-F12.|
000192d0  69 73 20 70 72 65 73 73  65 64 20 28 75 6e 64 65  |is pressed (unde|
000192e0  72 20 52 49 53 43 20 4f  53 20 33 29 2e 0a 0a 4c  |r RISC OS 3)...L|
000192f0  69 62 72 61 72 79 20 47  72 6f 75 70 20 3d 3e 20  |ibrary Group => |
00019300  3c 45 76 65 6e 74 73 3d  3e 4c 69 62 47 72 6f 75  |<Events=>LibGrou|
00019310  70 45 76 65 6e 74 73 3e  55 73 65 72 20 46 4e 20  |pEvents>User FN |
00019320  28 50 52 4f 43 73 68 65  6c 6c 5f 41 74 74 61 63  |(PROCshell_Attac|
00019330  68 50 72 65 51 75 69 74  48 61 6e 64 6c 65 72 29  |hPreQuitHandler)|
00019340  0a 50 61 72 61 6d 73 20  3d 3e 20 0a 20 20 20 20  |.Params => .    |
00019350  20 20 20 20 20 4e 6f 6e  65 20 0a 0a 20 20 20 20  |     None ..    |
00019360  20 20 20 5c 3c 3d 0a 20  20 20 20 20 20 20 20 20  |   \<=.         |
00019370  62 6f 6f 6c 20 6e 6f 6e  20 30 20 74 6f 20 61 6c  |bool non 0 to al|
00019380  6c 6f 77 20 71 75 69 74  2c 20 30 20 74 6f 0a 20  |low quit, 0 to. |
00019390  20 20 20 20 20 20 20 20  20 20 20 20 20 63 61 6e  |             can|
000193a0  63 65 6c 20 71 75 69 74  0a 0a 54 68 69 73 20 66  |cel quit..This f|
000193b0  75 6e 63 74 69 6f 6e 20  69 73 20 63 61 6c 6c 65  |unction is calle|
000193c0  64 20 77 68 65 6e 20 61  20 50 72 65 51 75 69 74  |d when a PreQuit|
000193d0  0a 6d 65 73 73 61 67 65  20 69 73 20 72 65 63 65  |.message is rece|
000193e0  69 76 65 64 2e 50 52 4f  43 73 68 65 6c 6c 5f 41  |ived.PROCshell_A|
000193f0  74 74 61 63 68 43 6c 6f  73 65 57 69 6e 64 6f 77  |ttachCloseWindow|
00019400  48 61 6e 64 6c 65 72 28  29 0a 50 61 72 61 6d 73  |Handler().Params|
00019410  20 3d 3e 0a 20 20 20 20  20 20 20 20 20 69 6e 74  | =>.         int|
00019420  20 77 69 6e 64 6f 77 20  68 61 6e 64 6c 65 0a 20  | window handle. |
00019430  20 20 20 20 20 20 20 20  73 74 72 20 3c 66 75 6e  |        str <fun|
00019440  63 74 69 6f 6e 20 6e 61  6d 65 3d 3e 55 73 65 72  |ction name=>User|
00019450  46 4e 32 35 3e 0a 0a 52  65 67 69 73 74 65 72 73  |FN25>..Registers|
00019460  20 61 20 66 75 6e 63 74  69 6f 6e 20 6e 61 6d 65  | a function name|
00019470  20 74 6f 20 62 65 20 63  61 6c 6c 65 64 20 77 68  | to be called wh|
00019480  65 6e 20 61 6e 20 0a 43  6c 6f 73 65 57 69 6e 64  |en an .CloseWind|
00019490  6f 77 20 6d 65 73 73 61  67 65 20 69 73 20 72 65  |ow message is re|
000194a0  63 65 69 76 65 64 2e 20  54 68 69 73 20 69 73 20  |ceived. This is |
000194b0  75 73 65 66 75 6c 0a 74  6f 20 70 72 65 76 65 6e  |useful.to preven|
000194c0  74 20 74 68 65 20 77 69  6e 64 6f 77 20 63 6c 6f  |t the window clo|
000194d0  73 69 6e 67 20 69 66 20  73 6f 20 64 6f 69 6e 67  |sing if so doing|
000194e0  0a 77 6f 75 6c 64 20 69  6e 76 6f 6c 76 65 20 6c  |.would involve l|
000194f0  6f 73 73 20 6f 66 20 64  61 74 61 2e 0a 0a 54 68  |oss of data...Th|
00019500  69 73 20 6d 65 73 73 61  67 65 20 69 73 20 69 73  |is message is is|
00019510  73 75 65 64 20 77 68 65  6e 20 74 68 65 20 77 69  |sued when the wi|
00019520  6e 64 6f 77 20 63 6c 6f  73 65 0a 69 63 6f 6e 20  |ndow close.icon |
00019530  69 73 20 63 6c 69 63 6b  65 64 20 6f 6e 2e 0a 0a  |is clicked on...|
00019540  4c 69 62 72 61 72 79 20  47 72 6f 75 70 20 3d 3e  |Library Group =>|
00019550  20 3c 45 76 65 6e 74 73  3d 3e 4c 69 62 47 72 6f  | <Events=>LibGro|
00019560  75 70 45 76 65 6e 74 73  3e 50 52 4f 43 73 68 65  |upEvents>PROCshe|
00019570  6c 6c 5f 41 74 74 61 63  68 4f 70 65 6e 57 69 6e  |ll_AttachOpenWin|
00019580  64 6f 77 48 61 6e 64 6c  65 72 28 29 0a 50 61 72  |dowHandler().Par|
00019590  61 6d 73 20 3d 3e 0a 20  20 20 20 20 20 20 20 20  |ams =>.         |
000195a0  69 6e 74 20 77 69 6e 64  6f 77 20 68 61 6e 64 6c  |int window handl|
000195b0  65 0a 20 20 20 20 20 20  20 20 20 73 74 72 20 3c  |e.         str <|
000195c0  66 75 6e 63 74 69 6f 6e  20 6e 61 6d 65 3d 3e 55  |function name=>U|
000195d0  73 65 72 46 4e 32 34 3e  0a 0a 52 65 67 69 73 74  |serFN24>..Regist|
000195e0  65 72 73 20 61 20 66 75  6e 63 74 69 6f 6e 20 6e  |ers a function n|
000195f0  61 6d 65 20 74 6f 20 62  65 20 63 61 6c 6c 65 64  |ame to be called|
00019600  20 77 68 65 6e 20 61 6e  20 0a 4f 70 65 6e 57 69  | when an .OpenWi|
00019610  6e 64 6f 77 20 6d 65 73  73 61 67 65 20 69 73 20  |ndow message is |
00019620  72 65 63 65 69 76 65 64  2e 20 54 68 69 73 20 69  |received. This i|
00019630  73 20 75 73 65 66 75 6c  0a 73 6f 20 74 68 61 74  |s useful.so that|
00019640  20 74 68 65 20 61 70 70  6c 69 63 61 74 69 6f 6e  | the application|
00019650  20 63 61 6e 20 73 65 74  20 61 20 66 6c 61 67 20  | can set a flag |
00019660  74 6f 0a 61 76 6f 69 64  20 64 6f 69 6e 67 20 77  |to.avoid doing w|
00019670  69 6e 64 6f 77 20 72 65  64 72 61 77 73 20 77 68  |indow redraws wh|
00019680  69 6c 65 20 74 68 65 20  77 69 6e 64 6f 77 20 69  |ile the window i|
00019690  73 0a 63 6c 6f 73 65 64  20 66 6f 72 20 65 78 61  |s.closed for exa|
000196a0  6d 70 6c 65 2e 0a 0a 54  68 69 73 20 6d 65 73 73  |mple...This mess|
000196b0  61 67 65 20 69 73 20 69  73 73 75 65 64 20 77 68  |age is issued wh|
000196c0  65 6e 20 74 68 65 20 77  69 6e 64 6f 77 20 69 73  |en the window is|
000196d0  0a 64 72 61 67 67 65 64  20 61 72 6f 75 6e 64 20  |.dragged around |
000196e0  74 68 65 20 73 63 72 65  65 6e 20 61 73 20 77 65  |the screen as we|
000196f0  6c 6c 20 61 73 20 77 68  65 6e 0a 74 68 65 20 70  |ll as when.the p|
00019700  72 6f 67 72 61 6d 20 6f  70 65 6e 73 20 74 68 65  |rogram opens the|
00019710  20 77 69 6e 64 6f 77 2e  20 59 6f 75 20 73 68 6f  | window. You sho|
00019720  75 6c 64 20 61 76 6f 69  64 0a 64 6f 69 6e 67 20  |uld avoid.doing |
00019730  74 69 6d 65 20 63 6f 6e  73 75 6d 69 6e 67 20 73  |time consuming s|
00019740  74 75 66 66 20 69 6e 20  74 68 65 20 66 75 6e 63  |tuff in the func|
00019750  74 69 6f 6e 20 74 68 61  74 0a 69 73 20 63 61 6c  |tion that.is cal|
00019760  6c 65 64 20 74 68 65 72  65 66 6f 72 65 2e 0a 0a  |led therefore...|
00019770  4c 69 62 72 61 72 79 20  47 72 6f 75 70 20 3d 3e  |Library Group =>|
00019780  20 3c 45 76 65 6e 74 73  3d 3e 4c 69 62 47 72 6f  | <Events=>LibGro|
00019790  75 70 45 76 65 6e 74 73  3e 55 73 65 72 20 46 4e  |upEvents>User FN|
000197a0  20 28 50 52 4f 43 73 68  65 6c 6c 5f 41 74 74 61  | (PROCshell_Atta|
000197b0  63 68 4f 70 65 6e 57 69  6e 64 6f 77 48 61 6e 64  |chOpenWindowHand|
000197c0  6c 65 72 29 0a 50 61 72  61 6d 73 20 3d 3e 20 0a  |ler).Params => .|
000197d0  20 20 20 20 20 20 20 20  20 4e 6f 6e 65 20 0a 0a  |         None ..|
000197e0  20 20 20 20 20 20 20 5c  3c 3d 0a 20 20 20 20 20  |       \<=.     |
000197f0  20 20 20 20 62 6f 6f 6c  20 30 20 74 6f 20 64 69  |    bool 0 to di|
00019800  73 61 6c 6c 6f 77 20 6f  70 65 6e 2c 20 6e 6f 6e  |sallow open, non|
00019810  20 30 20 74 6f 0a 20 20  20 20 20 20 20 20 20 20  | 0 to.          |
00019820  20 20 20 20 6f 70 65 6e  55 73 65 72 20 46 4e 20  |    openUser FN |
00019830  28 50 52 4f 43 73 68 65  6c 6c 5f 41 74 74 61 63  |(PROCshell_Attac|
00019840  68 43 6c 6f 73 65 57 69  6e 64 6f 77 48 61 6e 64  |hCloseWindowHand|
00019850  6c 65 72 29 0a 50 61 72  61 6d 73 20 3d 3e 20 0a  |ler).Params => .|
00019860  20 20 20 20 20 20 20 20  20 4e 6f 6e 65 20 0a 0a  |         None ..|
00019870  20 20 20 20 20 20 20 5c  3c 3d 0a 20 20 20 20 20  |       \<=.     |
00019880  20 20 20 20 62 6f 6f 6c  20 30 20 74 6f 20 64 69  |    bool 0 to di|
00019890  73 61 6c 6c 6f 77 20 63  6c 6f 73 65 2c 20 6e 6f  |sallow close, no|
000198a0  6e 20 30 20 74 6f 0a 20  20 20 20 20 20 20 20 20  |n 0 to.         |
000198b0  20 20 20 20 20 63 6c 6f  73 65 48 65 6c 70 20 6f  |     closeHelp o|
000198c0  6e 20 45 76 6e 74 53 68  65 6c 6c 0a 23 49 6e 64  |n EvntShell.#Ind|
000198d0  65 6e 74 20 35 0a 23 53  70 72 69 74 65 20 30 2c  |ent 5.#Sprite 0,|
000198e0  30 20 21 73 68 65 6c 6c  73 79 73 0a 20 20 45 76  |0 !shellsys.  Ev|
000198f0  6e 74 53 68 65 6c 6c 0a  20 20 20 76 20 31 2e 32  |ntShell.   v 1.2|
00019900  30 0a 23 49 6e 64 65 6e  74 20 30 0a 2d 2d 2d 2d  |0.#Indent 0.----|
00019910  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
00019920  2d 0a 20 20 2a 20 3c 4c  69 63 65 6e 63 65 20 20  |-.  * <Licence  |
00019930  20 20 20 20 3e 20 2a 0a  20 20 2a 20 3c 49 6e 74  |    > *.  * <Int|
00019940  72 6f 64 75 63 74 69 6f  6e 20 3d 3e 49 6e 74 72  |roduction =>Intr|
00019950  6f 3e 20 2a 0a 20 20 2a  20 3c 55 73 65 72 20 47  |o> *.  * <User G|
00019960  75 69 64 65 20 20 20 3d  3e 67 75 69 64 65 3e 20  |uide   =>guide> |
00019970  2a 0a 20 20 2a 20 3c 43  72 65 64 69 74 73 20 20  |*.  * <Credits  |
00019980  20 20 20 20 3e 20 2a 0a  0a 20 20 2a 20 3c 4c 69  |    > *..  * <Li|
00019990  62 72 61 72 79 20 44 6f  63 73 20 3d 3e 6d 61 69  |brary Docs =>mai|
000199a0  6e 70 61 67 65 3e 20 2a  4c 69 63 65 6e 63 65 0a  |npage> *Licence.|
000199b0  54 68 69 73 20 61 70 70  6c 69 63 61 74 69 6f 6e  |This application|
000199c0  20 69 73 20 73 75 70 70  6c 69 65 64 20 66 72 65  | is supplied fre|
000199d0  65 20 74 6f 20 65 76 65  72 79 6f 6e 65 20 27 61  |e to everyone 'a|
000199e0  73 20 69 73 27 2c 20 49  20 0a 64 6f 20 6e 6f 74  |s is', I .do not|
000199f0  20 67 69 76 65 20 61 6e  79 20 67 75 61 72 61 6e  | give any guaran|
00019a00  74 65 65 20 74 68 61 74  20 69 74 20 69 73 20 66  |tee that it is f|
00019a10  72 65 65 20 6f 66 20 62  75 67 73 2c 20 6f 72 20  |ree of bugs, or |
00019a20  0a 73 75 70 70 6c 79 20  61 6e 79 20 77 61 72 72  |.supply any warr|
00019a30  61 6e 74 79 20 61 62 6f  75 74 20 69 74 73 20 73  |anty about its s|
00019a40  75 69 74 61 62 69 6c 69  74 79 20 66 6f 72 20 75  |uitability for u|
00019a50  73 65 2e 20 48 6f 77 65  76 65 72 20 0a 69 66 20  |se. However .if |
00019a60  74 68 65 72 65 20 61 72  65 20 61 6e 79 20 70 72  |there are any pr|
00019a70  6f 62 6c 65 6d 73 20 77  69 74 68 20 69 74 20 61  |oblems with it a|
00019a80  6e 64 20 79 6f 75 20 6e  6f 74 69 66 79 20 6d 65  |nd you notify me|
00019a90  20 6f 66 20 0a 74 68 65  6d 20 74 68 65 6e 20 49  | of .them then I|
00019aa0  20 77 69 6c 6c 20 64 6f  20 6d 79 20 62 65 73 74  | will do my best|
00019ab0  20 74 6f 20 72 65 63 74  69 66 79 20 74 68 65 6d  | to rectify them|
00019ac0  20 67 69 76 65 6e 20 74  68 65 20 74 69 6d 65 20  | given the time |
00019ad0  0a 61 6e 64 20 74 68 65  20 61 62 69 6c 69 74 79  |.and the ability|
00019ae0  2e 20 0a 0a 59 6f 75 20  61 72 65 20 6d 61 79 20  |. ..You are may |
00019af0  67 69 76 65 20 74 68 69  73 20 61 70 70 6c 69 63  |give this applic|
00019b00  61 74 69 6f 6e 20 74 6f  20 61 6e 79 6f 6e 65 2c  |ation to anyone,|
00019b10  20 76 69 61 20 61 6e 79  20 0a 6d 65 64 69 75 6d  | via any .medium|
00019b20  2c 20 73 6f 20 6c 6f 6e  67 20 61 73 20 3a 2d 20  |, so long as :- |
00019b30  0a 0a 31 29 20 49 74 20  69 73 20 64 65 6c 69 76  |..1) It is deliv|
00019b40  65 72 65 64 20 77 69 74  68 20 41 4c 4c 20 74 68  |ered with ALL th|
00019b50  65 20 73 75 70 70 6c 69  65 64 20 66 69 6c 65 73  |e supplied files|
00019b60  20 61 6e 64 20 0a 20 20  20 75 6e 61 6c 74 65 72  | and .   unalter|
00019b70  65 64 20 28 65 78 63 65  70 74 20 21 52 75 6e 20  |ed (except !Run |
00019b80  61 6e 64 20 21 42 6f 6f  74 29 2e 20 0a 0a 32 29  |and !Boot). ..2)|
00019b90  20 49 74 20 69 73 20 6e  6f 74 20 73 75 70 70 6c  | It is not suppl|
00019ba0  69 65 64 20 6f 6e 20 61  20 64 69 73 63 20 79 6f  |ied on a disc yo|
00019bb0  75 20 61 72 65 20 63 68  61 72 67 69 6e 67 20 66  |u are charging f|
00019bc0  6f 72 20 0a 20 20 20 28  65 78 63 65 70 74 20 66  |or .   (except f|
00019bd0  6f 72 20 6d 65 64 69 61  20 61 6e 64 20 70 6f 73  |or media and pos|
00019be0  74 61 67 65 20 63 6f 73  74 73 29 2e 20 0a 0a 59  |tage costs). ..Y|
00019bf0  6f 75 20 68 61 76 65 20  70 65 72 6d 69 73 73 69  |ou have permissi|
00019c00  6f 6e 20 74 6f 20 75 73  65 20 61 6e 79 20 70 61  |on to use any pa|
00019c10  72 74 20 6f 72 20 74 68  65 20 77 68 6f 6c 65 20  |rt or the whole |
00019c20  0a 61 70 70 6c 69 63 61  74 69 6f 6e 20 69 6e 20  |.application in |
00019c30  61 20 70 72 6f 6a 65 63  74 20 79 6f 75 20 69 6e  |a project you in|
00019c40  74 65 6e 64 20 74 6f 20  70 6c 61 63 65 20 69 6e  |tend to place in|
00019c50  20 74 68 65 20 70 75 62  6c 69 63 20 0a 64 6f 6d  | the public .dom|
00019c60  61 69 6e 2c 20 61 73 20  6c 6f 6e 67 20 61 73 20  |ain, as long as |
00019c70  49 20 61 6d 20 66 75 6c  6c 79 20 63 72 65 64 69  |I am fully credi|
00019c80  74 65 64 2e 20 49 66 20  79 6f 75 20 77 69 73 68  |ted. If you wish|
00019c90  20 74 6f 20 75 73 65 20  0a 74 68 65 73 65 20 72  | to use .these r|
00019ca0  6f 75 74 69 6e 65 73 20  69 6e 20 61 20 70 72 6f  |outines in a pro|
00019cb0  67 72 61 6d 20 74 68 61  74 20 69 73 20 66 6f 72  |gram that is for|
00019cc0  20 73 61 6c 65 20 28 66  6f 72 20 68 6f 77 65 76  | sale (for howev|
00019cd0  65 72 20 0a 6d 75 63 68  20 61 6e 64 20 66 6f 72  |er .much and for|
00019ce0  20 77 68 61 74 65 76 65  72 20 72 65 61 73 6f 6e  | whatever reason|
00019cf0  73 29 20 6f 72 20 72 65  6c 65 61 73 65 64 20 61  |s) or released a|
00019d00  73 20 63 6f 70 79 72 69  67 68 74 20 0a 6d 61 74  |s copyright .mat|
00019d10  65 72 69 61 6c 20 74 68  65 6e 20 6d 79 20 65 78  |erial then my ex|
00019d20  70 72 65 73 73 20 70 65  72 6d 69 73 73 69 6f 6e  |press permission|
00019d30  20 69 6e 20 77 72 69 74  69 6e 67 20 6d 75 73 74  | in writing must|
00019d40  20 62 65 20 0a 6f 62 74  61 69 6e 65 64 2e 20 49  | be .obtained. I|
00019d50  20 6d 61 69 6e 74 61 69  6e 20 63 6f 70 79 72 69  | maintain copyri|
00019d60  67 68 74 20 6f 6e 20 61  6c 6c 20 74 68 65 20 6d  |ght on all the m|
00019d70  61 74 65 72 69 61 6c 20  0a 73 75 70 70 6c 69 65  |aterial .supplie|
00019d80  64 20 61 6e 64 20 72 65  73 65 72 76 65 20 74 68  |d and reserve th|
00019d90  65 20 72 69 67 68 74 20  74 6f 20 61 6d 65 6e 64  |e right to amend|
00019da0  20 74 68 65 73 65 20 63  6f 6e 64 69 74 69 6f 6e  | these condition|
00019db0  73 20 0a 69 6e 20 63 61  73 65 73 20 77 68 65 72  |s .in cases wher|
00019dc0  65 20 49 20 64 65 65 6d  20 6d 69 73 75 73 65 2e  |e I deem misuse.|
00019dd0  20 0a 0a 43 6f 6d 70 6c  61 69 6e 74 73 2c 20 73  | ..Complaints, s|
00019de0  75 67 67 65 73 74 69 6f  6e 73 2c 20 76 61 73 74  |uggestions, vast|
00019df0  20 73 75 6d 73 20 6f 66  20 6d 6f 6e 65 79 20 65  | sums of money e|
00019e00  74 63 20 74 6f 20 74 68  65 20 0a 61 75 74 68 6f  |tc to the .autho|
00019e10  72 3a 2d 20 0a 0a 50 61  75 6c 20 48 6f 62 62 73  |r:- ..Paul Hobbs|
00019e20  0a 52 68 65 69 6e 70 66  61 6c 7a 73 74 72 61 73  |.Rheinpfalzstras|
00019e30  73 65 20 32 0a 38 35 30  34 39 20 49 6e 67 6f 6c  |se 2.85049 Ingol|
00019e40  73 74 61 64 74 0a 47 65  72 6d 61 6e 79 53 70 72  |stadt.GermanySpr|
00019e50  69 74 65 73 0a 3c 53 70  72 69 74 65 41 72 65 61  |ites.<SpriteArea|
00019e60  4c 6f 61 64 3d 3e 46 4e  73 68 65 6c 6c 5f 53 70  |Load=>FNshell_Sp|
00019e70  72 69 74 65 41 72 65 61  4c 6f 61 64 3e 0a 3c 53  |riteAreaLoad>.<S|
00019e80  70 72 69 74 65 41 72 65  61 53 61 76 65 3d 3e 50  |priteAreaSave=>P|
00019e90  52 4f 43 73 68 65 6c 6c  5f 53 70 72 69 74 65 41  |ROCshell_SpriteA|
00019ea0  72 65 61 53 61 76 65 3e  0a 3c 53 70 72 69 74 65  |reaSave>.<Sprite|
00019eb0  47 65 74 50 74 72 20 20  3d 3e 46 4e 73 68 65 6c  |GetPtr  =>FNshel|
00019ec0  6c 5f 53 70 72 69 74 65  47 65 74 50 74 72 3e 0a  |l_SpriteGetPtr>.|
00019ed0  3c 53 70 72 69 74 65 52  65 6e 61 6d 65 20 20 3d  |<SpriteRename  =|
00019ee0  3e 50 52 4f 43 73 68 65  6c 6c 5f 53 70 72 69 74  |>PROCshell_Sprit|
00019ef0  65 52 65 6e 61 6d 65 3e  46 4e 73 68 65 6c 6c 5f  |eRename>FNshell_|
00019f00  53 70 72 69 74 65 41 72  65 61 4c 6f 61 64 28 29  |SpriteAreaLoad()|
00019f10  0a 50 61 72 61 6d 73 20  3d 3e 0a 20 20 20 20 20  |.Params =>.     |
00019f20  20 20 20 20 73 74 72 20  66 69 6c 65 20 6e 61 6d  |    str file nam|
00019f30  65 20 6f 66 20 73 70 72  69 74 65 20 66 69 6c 65  |e of sprite file|
00019f40  0a 20 20 20 20 20 20 20  5c 3c 3d 0a 20 20 20 20  |.       \<=.    |
00019f50  20 20 20 20 20 69 6e 74  20 61 64 64 72 65 73 73  |     int address|
00019f60  20 6f 66 20 6c 6f 61 64  65 64 20 66 69 6c 65 20  | of loaded file |
00019f70  0a 0a 4c 69 62 72 61 72  79 20 47 72 6f 75 70 20  |..Library Group |
00019f80  3d 3e 20 3c 53 70 72 69  74 65 73 3d 3e 4c 69 62  |=> <Sprites=>Lib|
00019f90  47 72 6f 75 70 53 70 72  69 74 65 73 3e 50 52 4f  |GroupSprites>PRO|
00019fa0  43 73 68 65 6c 6c 5f 53  70 72 69 74 65 41 72 65  |Cshell_SpriteAre|
00019fb0  61 53 61 76 65 28 29 0a  50 61 72 61 6d 73 20 3d  |aSave().Params =|
00019fc0  3e 0a 20 20 20 20 20 20  20 20 20 69 6e 74 20 61  |>.         int a|
00019fd0  64 64 72 65 73 73 20 6f  66 20 73 70 72 69 74 65  |ddress of sprite|
00019fe0  61 72 65 61 20 28 61 73  20 72 65 74 75 72 6e 65  |area (as returne|
00019ff0  64 0a 20 20 20 20 20 20  20 20 20 20 20 20 20 62  |d.             b|
0001a000  79 20 3c 46 4e 73 68 65  6c 6c 5f 53 70 72 69 74  |y <FNshell_Sprit|
0001a010  65 41 72 65 61 4c 6f 61  64 3e 29 0a 20 20 20 20  |eAreaLoad>).    |
0001a020  20 20 20 20 20 73 74 72  20 66 69 6c 65 20 6e 61  |     str file na|
0001a030  6d 65 0a 0a 4c 69 62 72  61 72 79 20 47 72 6f 75  |me..Library Grou|
0001a040  70 20 3d 3e 20 3c 53 70  72 69 74 65 73 3d 3e 4c  |p => <Sprites=>L|
0001a050  69 62 47 72 6f 75 70 53  70 72 69 74 65 73 3e 46  |ibGroupSprites>F|
0001a060  4e 73 68 65 6c 6c 5f 53  70 72 69 74 65 47 65 74  |Nshell_SpriteGet|
0001a070  50 74 72 28 29 0a 50 61  72 61 6d 73 20 3d 3e 0a  |Ptr().Params =>.|
0001a080  20 20 20 20 20 20 20 20  20 69 6e 74 20 61 64 64  |         int add|
0001a090  72 65 73 73 20 6f 66 20  73 70 72 69 74 65 61 72  |ress of spritear|
0001a0a0  65 61 20 28 61 73 20 72  65 74 75 72 6e 65 64 0a  |ea (as returned.|
0001a0b0  20 20 20 20 20 20 20 20  20 20 20 20 20 62 79 20  |             by |
0001a0c0  3c 46 4e 73 68 65 6c 6c  5f 53 70 72 69 74 65 41  |<FNshell_SpriteA|
0001a0d0  72 65 61 4c 6f 61 64 3e  29 0a 20 20 20 20 20 20  |reaLoad>).      |
0001a0e0  20 20 20 73 74 72 20 6e  61 6d 65 20 6f 66 20 73  |   str name of s|
0001a0f0  70 72 69 74 65 0a 20 20  20 20 20 20 20 5c 3c 3d  |prite.       \<=|
0001a100  0a 20 20 20 20 20 20 20  20 20 69 6e 74 20 70 6f  |.         int po|
0001a110  69 6e 74 65 72 20 74 6f  20 73 70 72 69 74 65 0a  |inter to sprite.|
0001a120  0a 54 68 69 73 20 63 61  6c 6c 20 69 73 20 75 73  |.This call is us|
0001a130  65 64 20 74 6f 20 67 65  74 20 61 20 70 6f 69 6e  |ed to get a poin|
0001a140  74 65 72 20 74 6f 20 61  20 73 70 72 69 74 65 0a  |ter to a sprite.|
0001a150  74 68 61 74 20 63 61 6e  20 62 65 20 70 61 73 73  |that can be pass|
0001a160  65 64 20 74 6f 20 6f 74  68 65 72 20 72 6f 75 74  |ed to other rout|
0001a170  69 6e 65 73 2e 0a 0a 4c  69 62 72 61 72 79 20 47  |ines...Library G|
0001a180  72 6f 75 70 20 3d 3e 20  3c 53 70 72 69 74 65 73  |roup => <Sprites|
0001a190  3d 3e 4c 69 62 47 72 6f  75 70 53 70 72 69 74 65  |=>LibGroupSprite|
0001a1a0  73 3e 50 52 4f 43 73 68  65 6c 6c 5f 53 70 72 69  |s>PROCshell_Spri|
0001a1b0  74 65 52 65 6e 61 6d 65  28 29 0a 50 61 72 61 6d  |teRename().Param|
0001a1c0  73 20 3d 3e 0a 20 20 20  20 20 20 20 20 20 69 6e  |s =>.         in|
0001a1d0  74 20 61 64 64 72 65 73  73 20 6f 66 20 73 70 72  |t address of spr|
0001a1e0  69 74 65 61 72 65 61 20  28 61 73 20 72 65 74 75  |itearea (as retu|
0001a1f0  72 6e 65 64 0a 20 20 20  20 20 20 20 20 20 20 20  |rned.           |
0001a200  20 20 62 79 20 3c 46 4e  73 68 65 6c 6c 5f 53 70  |  by <FNshell_Sp|
0001a210  72 69 74 65 41 72 65 61  4c 6f 61 64 3e 0a 20 20  |riteAreaLoad>.  |
0001a220  20 20 20 20 20 20 20 73  74 72 20 6f 6c 64 20 6e  |       str old n|
0001a230  61 6d 65 20 6f 66 20 73  70 72 69 74 65 0a 20 20  |ame of sprite.  |
0001a240  20 20 20 20 20 20 20 73  74 72 20 6e 65 77 20 6e  |       str new n|
0001a250  61 6d 65 20 6f 66 20 73  70 72 69 74 65 0a 0a 4c  |ame of sprite..L|
0001a260  69 62 72 61 72 79 20 47  72 6f 75 70 20 3d 3e 20  |ibrary Group => |
0001a270  3c 53 70 72 69 74 65 73  3d 3e 4c 69 62 47 72 6f  |<Sprites=>LibGro|
0001a280  75 70 53 70 72 69 74 65  73 3e 55 73 65 72 20 46  |upSprites>User F|
0001a290  4e 20 28 50 52 4f 43 73  68 65 6c 6c 5f 41 74 74  |N (PROCshell_Att|
0001a2a0  61 63 68 53 75 62 4d 65  6e 75 29 20 0a 50 61 72  |achSubMenu) .Par|
0001a2b0  61 6d 73 20 3d 3e 20 0a  20 20 20 20 20 20 20 20  |ams => .        |
0001a2c0  20 69 6e 74 20 77 69 6e  64 6f 77 20 68 61 6e 64  | int window hand|
0001a2d0  6c 65 0a 20 20 20 20 20  20 20 20 20 69 6e 74 20  |le.         int |
0001a2e0  69 63 6f 6e 20 68 61 6e  64 6c 65 0a 20 20 20 20  |icon handle.    |
0001a2f0  20 20 20 5c 3c 3d 0a 20  20 20 20 20 20 20 20 20  |   \<=.         |
0001a300  69 6e 74 20 6a 75 6e 6b  50 52 4f 43 73 68 65 6c  |int junkPROCshel|
0001a310  6c 5f 49 63 6f 6e 53 65  74 4c 65 66 74 4a 75 73  |l_IconSetLeftJus|
0001a320  74 28 29 0a 50 61 72 61  6d 73 20 3d 3e 20 20 20  |t().Params =>   |
0001a330  20 20 20 20 20 20 20 20  0a 20 20 20 20 20 20 20  |        .       |
0001a340  20 20 69 6e 74 20 20 77  69 6e 64 6f 77 20 68 61  |  int  window ha|
0001a350  6e 64 6c 65 20 20 20 20  20 20 20 20 20 20 20 0a  |ndle           .|
0001a360  20 20 20 20 20 20 20 20  20 69 6e 74 20 20 69 63  |         int  ic|
0001a370  6f 6e 20 68 61 6e 64 6c  65 20 0a 0a 4c 69 62 72  |on handle ..Libr|
0001a380  61 72 79 20 47 72 6f 75  70 20 3d 3e 20 3c 49 63  |ary Group => <Ic|
0001a390  6f 6e 73 3d 3e 4c 69 62  47 72 6f 75 70 49 63 6f  |ons=>LibGroupIco|
0001a3a0  6e 73 3e 46 4e 73 68 65  6c 6c 5f 4f 53 43 68 65  |ns>FNshell_OSChe|
0001a3b0  63 6b 56 65 72 73 69 6f  6e 28 29 0a 50 61 72 61  |ckVersion().Para|
0001a3c0  6d 73 20 3d 3e 0a 20 20  20 20 20 20 20 20 20 72  |ms =>.         r|
0001a3d0  65 61 6c 20 76 65 72 73  69 6f 6e 20 6e 72 20 72  |eal version nr r|
0001a3e0  65 71 75 69 72 65 64 0a  0a 20 20 20 20 20 20 20  |equired..       |
0001a3f0  5c 3c 3d 0a 20 20 20 20  20 20 20 20 20 62 6f 6f  |\<=.         boo|
0001a400  6c 20 54 52 55 45 20 6f  72 20 46 41 4c 53 45 0a  |l TRUE or FALSE.|
0001a410  0a 55 73 65 20 74 68 69  73 20 72 6f 75 74 69 6e  |.Use this routin|
0001a420  65 20 74 6f 20 63 68 65  63 6b 20 77 68 65 74 68  |e to check wheth|
0001a430  65 72 20 52 49 53 43 0a  4f 53 20 33 20 69 73 20  |er RISC.OS 3 is |
0001a440  69 6e 73 74 61 6c 6c 65  64 20 66 6f 72 20 65 78  |installed for ex|
0001a450  61 6d 70 6c 65 2e 20 54  68 65 0a 72 6f 75 74 69  |ample. The.routi|
0001a460  6e 65 20 72 65 74 75 72  6e 73 20 46 41 4c 53 45  |ne returns FALSE|
0001a470  20 69 66 20 74 68 65 20  4f 53 20 76 65 72 73 69  | if the OS versi|
0001a480  6f 6e 0a 72 65 71 75 65  73 74 65 64 20 28 6f 72  |on.requested (or|
0001a490  20 61 20 6c 61 74 65 72  20 76 65 72 73 69 6f 6e  | a later version|
0001a4a0  29 20 69 73 20 6e 6f 74  0a 66 6f 75 6e 64 2e 0a  |) is not.found..|
0001a4b0  0a 4c 69 62 72 61 72 79  20 47 72 6f 75 70 20 3d  |.Library Group =|
0001a4c0  3e 20 3c 4f 53 3d 3e 4c  69 62 47 72 6f 75 70 4f  |> <OS=>LibGroupO|
0001a4d0  53 3e 46 4e 73 68 65 6c  6c 5f 4f 53 43 68 65 63  |S>FNshell_OSChec|
0001a4e0  6b 4d 6f 64 75 6c 65 56  65 72 73 69 6f 6e 28 29  |kModuleVersion()|
0001a4f0  0a 50 61 72 61 6d 73 20  3d 3e 0a 20 20 20 20 20  |.Params =>.     |
0001a500  20 20 20 20 73 74 72 20  20 6d 6f 64 75 6c 65 20  |    str  module |
0001a510  6e 61 6d 65 0a 20 20 20  20 20 20 20 20 20 72 65  |name.         re|
0001a520  61 6c 20 76 65 72 73 69  6f 6e 20 6e 72 20 72 65  |al version nr re|
0001a530  71 75 69 72 65 64 0a 0a  20 20 20 20 20 20 20 5c  |quired..       \|
0001a540  3c 3d 0a 20 20 20 20 20  20 20 20 20 62 6f 6f 6c  |<=.         bool|
0001a550  20 54 52 55 45 20 6f 72  20 46 41 4c 53 45 0a 0a  | TRUE or FALSE..|
0001a560  55 73 65 20 74 68 69 73  20 72 6f 75 74 69 6e 65  |Use this routine|
0001a570  20 74 6f 20 63 68 65 63  6b 20 77 68 65 74 68 65  | to check whethe|
0001a580  72 20 61 0a 63 65 72 74  61 69 6e 20 76 65 72 73  |r a.certain vers|
0001a590  69 6f 6e 20 28 6f 72 20  6c 61 74 65 72 29 20 6f  |ion (or later) o|
0001a5a0  66 20 61 20 73 70 65 63  69 66 69 63 0a 6d 6f 64  |f a specific.mod|
0001a5b0  75 6c 65 20 69 73 20 69  6e 73 74 61 6c 6c 65 64  |ule is installed|
0001a5c0  2e 0a 0a 4c 69 62 72 61  72 79 20 47 72 6f 75 70  |...Library Group|
0001a5d0  20 3d 3e 20 3c 4f 53 3d  3e 4c 69 62 47 72 6f 75  | => <OS=>LibGrou|
0001a5e0  70 4f 53 3e                                       |pOS>|
0001a5e4