From 285a288c802a2346a3a21af8b742d3bb582b11a3 Mon Sep 17 00:00:00 2001
From: Thomas Harte <thomas.harte@gmail.com>
Date: Sun, 7 Aug 2016 21:48:09 -0400
Subject: [PATCH] Switched to two cycles of options loading, meaning that they
 get set before files are inserted. Might need some further work?

---
 Machines/Commodore/Vic-20/Vic20.hpp                       | 2 ++
 .../Mac/Clock Signal/Documents/ElectronDocument.swift     | 4 ++--
 .../Mac/Clock Signal/Documents/MachineDocument.swift      | 4 ++--
 OSBindings/Mac/Clock Signal/Documents/Vic20Document.swift | 8 +++++---
 4 files changed, 11 insertions(+), 7 deletions(-)

diff --git a/Machines/Commodore/Vic-20/Vic20.hpp b/Machines/Commodore/Vic-20/Vic20.hpp
index bb7bea522..e51c5b8f0 100644
--- a/Machines/Commodore/Vic-20/Vic20.hpp
+++ b/Machines/Commodore/Vic-20/Vic20.hpp
@@ -310,6 +310,8 @@ class Machine:
 		// Disk
 		std::shared_ptr<::Commodore::C1540::Machine> _c1540;
 		void install_disk_rom();
+
+		// Autoload string
 };
 
 }
diff --git a/OSBindings/Mac/Clock Signal/Documents/ElectronDocument.swift b/OSBindings/Mac/Clock Signal/Documents/ElectronDocument.swift
index 2790a44e4..e2981da95 100644
--- a/OSBindings/Mac/Clock Signal/Documents/ElectronDocument.swift	
+++ b/OSBindings/Mac/Clock Signal/Documents/ElectronDocument.swift	
@@ -66,7 +66,7 @@ class ElectronDocument: MachineDocument {
 	}
 
 	// MARK: IBActions
-	@IBOutlet var displayTypeButton: NSPopUpButton!
+	@IBOutlet var displayTypeButton: NSPopUpButton?
 	@IBAction func setDisplayType(sender: NSPopUpButton!) {
 		electron.useTelevisionOutput = (sender.indexOfSelectedItem == 1)
 		NSUserDefaults.standardUserDefaults().setInteger(sender.indexOfSelectedItem, forKey: self.displayTypeUserDefaultsKey)
@@ -82,6 +82,6 @@ class ElectronDocument: MachineDocument {
 
 		let displayType = standardUserDefaults.integerForKey(self.displayTypeUserDefaultsKey)
 		electron.useTelevisionOutput = (displayType == 1)
-		self.displayTypeButton.selectItemAtIndex(displayType)
+		self.displayTypeButton?.selectItemAtIndex(displayType)
 	}
 }
diff --git a/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift b/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift
index 3c9d8b6cd..64969d0e5 100644
--- a/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift	
+++ b/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift	
@@ -185,7 +185,7 @@ class MachineDocument:
 		}
 	}
 
-	@IBOutlet var fastLoadingButton: NSButton!
+	@IBOutlet var fastLoadingButton: NSButton?
 	@IBAction func setFastLoading(sender: NSButton!) {
 		if let fastLoadingMachine = machine as? CSFastLoading {
 			let useFastLoadingHack = sender.state == NSOnState
@@ -203,7 +203,7 @@ class MachineDocument:
 		if let fastLoadingMachine = machine as? CSFastLoading {
 			let useFastLoadingHack = standardUserDefaults.boolForKey(self.fastLoadingUserDefaultsKey)
 			fastLoadingMachine.useFastLoadingHack = useFastLoadingHack
-			self.fastLoadingButton.state = useFastLoadingHack ? NSOnState : NSOffState
+			self.fastLoadingButton?.state = useFastLoadingHack ? NSOnState : NSOffState
 		}
 	}
 }
diff --git a/OSBindings/Mac/Clock Signal/Documents/Vic20Document.swift b/OSBindings/Mac/Clock Signal/Documents/Vic20Document.swift
index 71f00230d..7ad6b8c32 100644
--- a/OSBindings/Mac/Clock Signal/Documents/Vic20Document.swift	
+++ b/OSBindings/Mac/Clock Signal/Documents/Vic20Document.swift	
@@ -35,6 +35,8 @@ class Vic20Document: MachineDocument {
 		if let drive = dataForResource("1540", ofType: "bin", inDirectory: "ROMImages/Commodore1540") {
 			vic20.setDriveROM(drive)
 		}
+
+		establishStoredOptions()
 	}
 
 	override class func autosavesInPlace() -> Bool {
@@ -67,14 +69,14 @@ class Vic20Document: MachineDocument {
 		vic20.setPRG(data)
 	}
 
-	@IBOutlet var loadAutomaticallyButton: NSButton!
+	@IBOutlet var loadAutomaticallyButton: NSButton?
 	var autoloadingUserDefaultsKey: String {
 		get { return prefixedUserDefaultsKey("autoload") }
 	}
 	@IBAction func setShouldLoadAutomatically(sender: NSButton!) {
 		let loadAutomatically = sender.state == NSOnState
 		vic20.shouldLoadAutomatically = loadAutomatically
-		self.loadAutomaticallyButton.state = loadAutomatically ? NSOnState : NSOffState
+		NSUserDefaults.standardUserDefaults().setBool(loadAutomatically, forKey: self.autoloadingUserDefaultsKey)
 	}
 	override func establishStoredOptions() {
 		super.establishStoredOptions()
@@ -86,6 +88,6 @@ class Vic20Document: MachineDocument {
 
 		let loadAutomatically = standardUserDefaults.boolForKey(self.autoloadingUserDefaultsKey)
 		vic20.shouldLoadAutomatically = loadAutomatically
-		self.loadAutomaticallyButton.state = loadAutomatically ? NSOnState : NSOffState
+		self.loadAutomaticallyButton?.state = loadAutomatically ? NSOnState : NSOffState
 	}
 }