diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj index 19fd4ff96..a48c72781 100644 --- a/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj +++ b/OSBindings/Mac/Clock Signal.xcodeproj/project.pbxproj @@ -2438,12 +2438,12 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0800; + LastUpgradeCheck = 0900; ORGANIZATIONNAME = "Thomas Harte"; TargetAttributes = { 4BB73E9D1B587A5100552FC2 = { CreatedOnToolsVersion = 7.0; - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; SystemCapabilities = { com.apple.Sandbox = { enabled = 1; @@ -2452,12 +2452,12 @@ }; 4BB73EB11B587A5100552FC2 = { CreatedOnToolsVersion = 7.0; - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; TestTargetID = 4BB73E9D1B587A5100552FC2; }; 4BB73EBC1B587A5100552FC2 = { CreatedOnToolsVersion = 7.0; - LastSwiftMigration = 0800; + LastSwiftMigration = 0900; TestTargetID = 4BB73E9D1B587A5100552FC2; }; }; @@ -3064,14 +3064,20 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -3099,6 +3105,7 @@ ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; }; name = Debug; }; @@ -3110,14 +3117,20 @@ CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; CLANG_WARN_CONSTANT_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; @@ -3138,6 +3151,7 @@ MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; }; name = Release; }; @@ -3166,7 +3180,8 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Clock Signal/ClockSignal-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; }; name = Debug; }; @@ -3194,7 +3209,8 @@ PRODUCT_BUNDLE_IDENTIFIER = "TH.Clock-Signal"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Clock Signal/ClockSignal-Bridging-Header.h"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; }; name = Release; }; @@ -3210,7 +3226,8 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Clock SignalTests/Bridges/Clock SignalTests-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Clock Signal.app/Contents/MacOS/Clock Signal"; }; name = Debug; @@ -3226,7 +3243,8 @@ PRODUCT_BUNDLE_IDENTIFIER = "TH.Clock-SignalTests"; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Clock SignalTests/Bridges/Clock SignalTests-Bridging-Header.h"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Clock Signal.app/Contents/MacOS/Clock Signal"; }; name = Release; @@ -3239,7 +3257,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "TH.Clock-SignalUITests"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; TEST_TARGET_NAME = "Clock Signal"; USES_XCTRUNNER = YES; }; @@ -3253,7 +3272,8 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = "TH.Clock-SignalUITests"; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 3.0; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; TEST_TARGET_NAME = "Clock Signal"; USES_XCTRUNNER = YES; }; diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal.xcscheme b/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal.xcscheme index 6609a35c0..8aeaaf6bc 100644 --- a/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal.xcscheme +++ b/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal.xcscheme @@ -1,6 +1,6 @@ @@ -71,6 +72,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + language = "" launchStyle = "0" useCustomWorkingDirectory = "NO" ignoresPersistentStateOnLaunch = "NO" diff --git a/OSBindings/Mac/Clock Signal/Documents/Atari2600OptionsPanel.swift b/OSBindings/Mac/Clock Signal/Documents/Atari2600OptionsPanel.swift index 7f343a200..e00c7ba0a 100644 --- a/OSBindings/Mac/Clock Signal/Documents/Atari2600OptionsPanel.swift +++ b/OSBindings/Mac/Clock Signal/Documents/Atari2600OptionsPanel.swift @@ -24,9 +24,9 @@ class Atari2600OptionsPanel: MachinePanel { } fileprivate func pushSwitchValues() { - atari2600.colourButton = colourButton.state == NSOnState - atari2600.leftPlayerDifficultyButton = leftPlayerDifficultyButton.state == NSOnState - atari2600.rightPlayerDifficultyButton = rightPlayerDifficultyButton.state == NSOnState + atari2600.colourButton = colourButton.state == .on + atari2600.leftPlayerDifficultyButton = leftPlayerDifficultyButton.state == .on + atari2600.rightPlayerDifficultyButton = rightPlayerDifficultyButton.state == .on } @IBAction func optionWasPressed(_ sender: NSButton!) { diff --git a/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift b/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift index 46a191fcd..4949e9989 100644 --- a/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift +++ b/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift @@ -40,8 +40,8 @@ class MachineDocument: fileprivate var audioQueue: CSAudioQueue! = nil fileprivate var bestEffortUpdater: CSBestEffortUpdater! - override var windowNibName: String? { - return "MachineDocument" + override var windowNibName: NSNib.Name? { + return NSNib.Name(rawValue: "MachineDocument") } override func windowControllerDidLoadNib(_ aController: NSWindowController) { @@ -114,7 +114,7 @@ class MachineDocument: analysis.apply(to: self.machine) if let optionsPanelNibName = analysis.optionsPanelNibName { - Bundle.main.loadNibNamed(optionsPanelNibName, owner: self, topLevelObjects: nil) + Bundle.main.loadNibNamed(NSNib.Name(rawValue: optionsPanelNibName), owner: self, topLevelObjects: nil) self.optionsPanel.machine = self.machine showOptions(self) } @@ -131,8 +131,8 @@ class MachineDocument: // MARK: the pasteboard func paste(_ sender: AnyObject!) { - let pasteboard = NSPasteboard.general() - if let string = pasteboard.string(forType: NSPasteboardTypeString) { + let pasteboard = NSPasteboard.general + if let string = pasteboard.string(forType: .string) { self.machine.paste(string) } } diff --git a/OSBindings/Mac/Clock Signal/Documents/MachinePanel.swift b/OSBindings/Mac/Clock Signal/Documents/MachinePanel.swift index ff3dbc826..3e38a050c 100644 --- a/OSBindings/Mac/Clock Signal/Documents/MachinePanel.swift +++ b/OSBindings/Mac/Clock Signal/Documents/MachinePanel.swift @@ -24,7 +24,7 @@ class MachinePanel: NSPanel { @IBOutlet var fastLoadingButton: NSButton? @IBAction func setFastLoading(_ sender: NSButton!) { if let fastLoadingMachine = machine as? CSFastLoading { - let useFastLoadingHack = sender.state == NSOnState + let useFastLoadingHack = sender.state == .on fastLoadingMachine.useFastLoadingHack = useFastLoadingHack UserDefaults.standard.set(useFastLoadingHack, forKey: fastLoadingUserDefaultsKey) } @@ -39,7 +39,7 @@ class MachinePanel: NSPanel { if let fastLoadingMachine = machine as? CSFastLoading { let useFastLoadingHack = standardUserDefaults.bool(forKey: self.fastLoadingUserDefaultsKey) fastLoadingMachine.useFastLoadingHack = useFastLoadingHack - self.fastLoadingButton?.state = useFastLoadingHack ? NSOnState : NSOffState + self.fastLoadingButton?.state = useFastLoadingHack ? .on : .off } } } diff --git a/OSBindings/Mac/Clock Signal/Documents/ZX8081OptionsPanel.swift b/OSBindings/Mac/Clock Signal/Documents/ZX8081OptionsPanel.swift index 541abfc84..a3b754c9a 100644 --- a/OSBindings/Mac/Clock Signal/Documents/ZX8081OptionsPanel.swift +++ b/OSBindings/Mac/Clock Signal/Documents/ZX8081OptionsPanel.swift @@ -18,7 +18,7 @@ class ZX8081OptionsPanel: MachinePanel { get { return prefixedUserDefaultsKey("automaticTapeMotorControl") } } @IBAction func setAutomaticTapeMotorConrol(_ sender: NSButton!) { - let isEnabled = sender.state == NSOnState + let isEnabled = sender.state == .on UserDefaults.standard.set(isEnabled, forKey: self.automaticTapeMotorControlDefaultsKey) self.playOrPauseTapeButton.isEnabled = !isEnabled self.zx8081.useAutomaticTapeMotorControl = isEnabled @@ -42,7 +42,7 @@ class ZX8081OptionsPanel: MachinePanel { ]) let automaticTapeMotorControlIsEnabled = standardUserDefaults.bool(forKey: self.automaticTapeMotorControlDefaultsKey) - self.automaticTapeMotorControlButton.state = automaticTapeMotorControlIsEnabled ? NSOnState : NSOffState + self.automaticTapeMotorControlButton.state = automaticTapeMotorControlIsEnabled ? .on : .off self.playOrPauseTapeButton.isEnabled = !automaticTapeMotorControlIsEnabled self.zx8081.useAutomaticTapeMotorControl = automaticTapeMotorControlIsEnabled }