|===========================================================================|
| !Run file for !Director
| (C) The RISC OS Director Developers 2015
|===========================================================================|

RMEnsure UtilityModule 3.60 Error RISC OS 3.60 or later required for Director

WimpSlot -min 64K -max 64K

If "<Director$Dir>" = "" Then Set Run$Path <Run$Path>,<Obey$Dir>.Utils.
If "<Director$Dir>" = "" Then If "<Choices$Path>" <> "" Then Set Run$Path <Run$Path>,Choices:Director.Utils.
Set Director$Dir <Obey$Dir>

If "<Choices$Path>" <> "" Then SetMacro Director$Path Choices:Director.,<Director$Dir>.
If "<Choices$Write>" <> "" Then Set Director$Write <Choices$Write>.Director

If "<Director$Path>"  = "" Then Set Director$Path <Director$Dir>.
If "<Director$Write>" = "" Then Set Director$Write <Director$Dir>
/Director:Menus.Internal.Install

Set Director$AddSprites <AddSprites$Control>
Set AddSprites$Control Off

If "<Boot$OSVersion>" < "500" Then IconSprites <Director$Dir>.!Sprites Else IconSprites <Director$Dir>.5Sprites

Set AddSprites$Control <Director$AddSprites>
If "<AddSprites$Control>" = "" then unset AddSprites$Control
Unset Director$AddSprites
Set AddSprites$Small On

|---------------------------------------------------------------------------|
| Load 32-bit modules for the supplied C programs
|---------------------------------------------------------------------------|

RMEnsure UtilityModule 5.00 If "<System$Path>" = "" Then Error 0 I haven't seen !System. Please open a directory display with this application and try again.
RMEnsure UtilityModule 3.70 RMEnsure CallASWI 0.02 RMLoad System:Modules.CallASWI
RMEnsure FPEmulator 4.03 RMLoad System:Modules.FPEmulator
RMEnsure SharedCLibrary 5.17 RMLoad System:Modules.CLib

|---------------------------------------------------------------------------|
| Kill off previous incarnation
| (Done like this so the dying module can complaining without interfering with
| the new version)
|---------------------------------------------------------------------------|

SetEval Director$Kill 1
RMEnsure Director 0.00 SetEval Director$Kill 0
If Director$Kill Then If "<Director$AtExit$Memoriser>" <> "" Then DirectorDo <Director$AtExit$Memoriser>
If Director$Kill Then RMKill Director

|---------------------------------------------------------------------------|
| Setup Scrap
|---------------------------------------------------------------------------|

If "<Wimp$ScrapDir>" = "" Then Error 0 I haven't seen !Scrap. Please open a directory display with this application and try again.
If Director$Kill Then IfThereIs <Wimp$ScrapDir>.Director "x wipe <Wimp$ScrapDir>.Director ~C~VFR"
CDir <Wimp$ScrapDir>.Director
Set Director$AtExit$Scrap X wipe |<Wimp$ScrapDir>.Director.* ~C~VFR
Unset Director$Kill

|---------------------------------------------------------------------------|
| Load utilities
|-----------------------------------------------------------------------------|

RMEnsure SWIModule 1.00 RMLoad Director:Utils.SWIModule
|RMEnsure CommandBASIC 0.02 RMLoad Director:Utils.CmndBASIC

|-------------------------------------------------------------------------|
| Set up the resources
|---------------------------------------------------------------------------|

WimpSlot -min 32k -max 32k
Run <Director$Dir>.Resources.ResFind Director Director$Resources

|---------------------------------------------------------------------------|
| Find out what version of RISC OS we're running on
|---------------------------------------------------------------------------|

WimpSlot -min 32k -max 32k
Run <Director$Dir>.Utils.ModVersion UtilityModule Director$OSVersion

|---------------------------------------------------------------------------|
| Load the module and start the task
|---------------------------------------------------------------------------|

IfThereIs -Not <Director$Resources>Messages "Error 0 Unable to find Messages file"
IfThereIs -Not <Director$Resources>Templates "Error 0 Unable to find Templates file"
If "<Director$Debug>" =  "" Then WimpTask Director:Director
If "<Director$Debug>" <> "" Then WimpTask Director:DirectorD

|---------------------------------------------------------------------------|
| Setup the system variables that Castle want us to
|---------------------------------------------------------------------------|

Set Director$Running Yes
Set Director$AtExit$Running Unset Director$Running

|---------------------------------------------------------------------------|
| Load in menu definitions
|---------------------------------------------------------------------------|

If "<Director$Init>" <> "" Then IfThereIs -not Director:Menus.User.<Director$Init> "Unset Director$Init"
If "<Director$Init>" = "" Then If "<Machine$Name>" <> "" Then IfThereIs Director:Menus.User.<Machine$Name> "Set Director$Init <Machine$Name>"
If "<Director$Init>" = "" Then If "<Inet$HostName>" <> "" Then IfThereIs Director:Menus.User.<Inet$HostName> "Set Director$Init <Inet$HostName>"
If "<Director$Init>" = "" Then Set Director$Init Default

IfThereIs Director:Menus.AutoRun.!!SetVars "DirectorObey Director:Menus.AutoRun.!!SetVars"

Wimptask Repeat IconSprites  <Director$Dir>.Menus.AutoRun -Type Sprite
WimpTask Repeat DirectorObey <Director$Dir>.Menus.AutoRun -Type Obey
IfThereIs <Director$Dir>.Menus.AutoRun.Obey "WimpTask Repeat Obey <Director$Dir>.Menus.AutoRun.Obey -Type Obey"

If "<Choices$Path>" <> "" Then IfThereIs Choices:Director.Menus.AutoRun "WimpTask Repeat IconSprites Choices:Director.Menus.AutoRun -Type Sprite"
If "<Choices$Path>" <> "" Then IfThereIs Choices:Director.Menus.AutoRun "WimpTask Repeat DirectorObey Choices:Director.Menus.AutoRun -Type Obey"
If "<Choices$Path>" <> "" Then IfThereIs Choices:Director.Menus.AutoRun.Obey "WimpTask Repeat Obey Choices:Director.Menus.AutoRun.Obey -Type Obey"

WimpTask DirectorDo DirectorObey Director:Menus.User.<Director$Init>

If <Director$MenuProcessing> <> 0 Then /Director:Apps.!Announce 0 Warning: After loading, MenuProcessing was <Director$MenuProcessing>.
MenuProcessing Smash
