diff --git a/AVRsack/ASApplication.swift b/AVRsack/ASApplication.swift index 54fd56f..c845dd3 100644 --- a/AVRsack/ASApplication.swift +++ b/AVRsack/ASApplication.swift @@ -29,14 +29,14 @@ class ASApplication: NSObject, NSApplicationDelegate, NSMenuDelegate { let workSpace = NSWorkspace.shared() let userDefaults = UserDefaults.standard let appDefaultsURL = Bundle.main.url(forResource: "Defaults", withExtension: "plist")! - var appDefaults = NSDictionary(contentsOf: appDefaultsURL) as! [String: AnyObject] + var appDefaults = NSDictionary(contentsOf: appDefaultsURL) as! [String: Any] // // Add dynamic app defaults // if let arduinoPath = workSpace.urlForApplication(withBundleIdentifier: "cc.arduino.Arduino")?.path { appDefaults["Arduino"] = arduinoPath } - var sketchbooks = [NSString]() + var sketchbooks = [String]() for doc in fileManager.urls(for: .documentDirectory, in: .userDomainMask) { sketchbooks.append(doc.appendingPathComponent("Arduino").path) sketchbooks.append(doc.appendingPathComponent("AVRSack").path) @@ -180,7 +180,7 @@ class ASApplication: NSObject, NSApplicationDelegate, NSMenuDelegate { } } - class func newProjectLocation(documentWindow: NSWindow?, message: String, completion: (URL) -> ()) { + class func newProjectLocation(documentWindow: NSWindow?, message: String, completion: @escaping (URL) -> ()) { let savePanel = NSSavePanel() savePanel.allowedFileTypes = [kUTTypeFolder as String] savePanel.message = message @@ -200,14 +200,14 @@ class ASApplication: NSObject, NSApplicationDelegate, NSMenuDelegate { } @IBAction func goToHelpPage(_ sender: AnyObject) { - let helpString: String + let helpString: CFString switch sender.tag { case 0: - helpString = "license.html" + helpString = "license.html" as CFString default: abort() } - let locBookName = Bundle.main.object(forInfoDictionaryKey: "CFBundleHelpBookName") as! String + let locBookName = Bundle.main.object(forInfoDictionaryKey: "CFBundleHelpBookName") as! CFString AHGotoPage(locBookName, helpString, nil) } diff --git a/AVRsack/ASBuilder.swift b/AVRsack/ASBuilder.swift index 82917bf..79ce185 100644 --- a/AVRsack/ASBuilder.swift +++ b/AVRsack/ASBuilder.swift @@ -10,15 +10,15 @@ import Foundation class ASBuilder { var dir = URL(fileURLWithPath: "/") - var task : Task? + var task : Process? var continuation: (()->())? var termination : AnyObject? init() { - termination = NotificationCenter.default.addObserver(forName: Task.didTerminateNotification, + termination = NotificationCenter.default.addObserver(forName: Process.didTerminateNotification, object: nil, queue: nil, using: { (notification: Notification) in - if notification.object as? Task == self.task { + if notification.object as? Process == self.task { if self.task!.terminationStatus == 0 { if let cont = self.continuation { self.continuation = nil @@ -52,7 +52,7 @@ class ASBuilder { func buildProject(board: String, files: ASFileTree) { let toolChain = (NSApplication.shared().delegate as! ASApplication).preferences.toolchainPath - task = Task() + task = Process() task!.currentDirectoryPath = dir.path task!.launchPath = Bundle.main.path(forResource: "BuildProject", ofType: "")! @@ -111,7 +111,7 @@ class ASBuilder { let interactive = mode == .Interactive let portPath = ASSerial.fileName(forPort: port) let toolChain = (NSApplication.shared().delegate as! ASApplication).preferences.toolchainPath - task = Task() + task = Process() task!.currentDirectoryPath = dir.path task!.launchPath = toolChain+"/bin/avrdude" @@ -182,7 +182,7 @@ class ASBuilder { needPhase2 = true } if needPhase2 { - let task2 = Task() + let task2 = Process() task2.currentDirectoryPath = dir.path task2.launchPath = toolChain+"/bin/avrdude" task2.arguments = loaderArgs @@ -242,7 +242,7 @@ class ASBuilder { func disassembleProject(board: String) { let toolChain = (NSApplication.shared().delegate as! ASApplication).preferences.toolchainPath - task = Task() + task = Process() task!.currentDirectoryPath = dir.path task!.launchPath = toolChain+"/bin/avr-objdump" diff --git a/AVRsack/ASFileTree.swift b/AVRsack/ASFileTree.swift index 115895e..5b9a413 100644 --- a/AVRsack/ASFileTree.swift +++ b/AVRsack/ASFileTree.swift @@ -69,7 +69,7 @@ class ASFileNode : Equatable { closure(self) } - func propertyList(rootPath: String) -> Dictionary { + func propertyList(rootPath: String) -> Dictionary { return [:] } @@ -127,7 +127,7 @@ class ASFileGroup : ASFileNode { private let kChildrenKey = "Children" private let kExpandedKey = "Expanded" - private var kNodeType : String { return kNodeTypeGroup } + fileprivate var kNodeType : String { return kNodeTypeGroup } override init(name: String = "") { self.children = [] @@ -155,11 +155,11 @@ class ASFileGroup : ASFileNode { } } - func childrenPropertyList(rootPath: String) -> [AnyObject] { + func childrenPropertyList(rootPath: String) -> [Any] { return children.map() { (node) in node.propertyList(rootPath: rootPath) } } - override func propertyList(rootPath: String) -> Dictionary { + override func propertyList(rootPath: String) -> Dictionary { return [kTypeKey: kNodeType, kNameKey: name, kExpandedKey: expanded, kChildrenKey: childrenPropertyList(rootPath: rootPath)] } @@ -174,7 +174,7 @@ class ASFileGroup : ASFileNode { } class ASProject : ASFileGroup { - override private var kNodeType : String { return kNodeTypeProject } + override fileprivate var kNodeType : String { return kNodeTypeProject } override init(name: String = "") { super.init(name: name) @@ -259,7 +259,7 @@ class ASFileItem : ASFileNode { return resComp.joined(separator: "/") } - override func propertyList(rootPath: String) -> Dictionary { + override func propertyList(rootPath: String) -> Dictionary { return [kTypeKey: kNodeTypeFile, kKindKey: type.rawValue, kPathKey: relativePath(relativeTo: rootPath)] } @@ -283,7 +283,7 @@ class ASFileItem : ASFileNode { } override func revision() -> String? { - let task = Task() + let task = Process() task.launchPath = Bundle.main.path(forResource: "FileRevision", ofType: "")! let outputPipe = Pipe() task.standardOutput = outputPipe @@ -319,7 +319,7 @@ class ASFileTree : NSObject, NSOutlineViewDataSource { func apply(closure: (ASFileNode) -> ()) { root.apply(closure: closure) } - func propertyList() -> AnyObject { + func propertyList() -> Any { return root.propertyList(rootPath: projectPath()) } func readPropertyList(prop: Dictionary) { @@ -330,14 +330,14 @@ class ASFileTree : NSObject, NSOutlineViewDataSource { } // MARK: Outline Data Source - func outlineView(_ outlineView: NSOutlineView, numberOfChildrenOfItem item: AnyObject?) -> Int { + func outlineView(_ outlineView: NSOutlineView, numberOfChildrenOfItem item: Any?) -> Int { if item == nil { return 4 } else { return (item as! ASFileGroup).children.count } } - func outlineView(_ outlineView: NSOutlineView, child index: Int, ofItem item: AnyObject?) -> AnyObject { + func outlineView(_ outlineView: NSOutlineView, child index: Int, ofItem item: Any?) -> Any { if item == nil { switch index { case 1: @@ -354,15 +354,15 @@ class ASFileTree : NSObject, NSOutlineViewDataSource { return group.children[index] } } - func outlineView(_ outlineView: NSOutlineView, isItemExpandable item: AnyObject) -> Bool { + func outlineView(_ outlineView: NSOutlineView, isItemExpandable item: Any) -> Bool { return item is ASFileGroup } - func outlineView(_ outlineView: NSOutlineView, objectValueFor tableColumn: NSTableColumn?, byItem item: AnyObject?) -> AnyObject? { + func outlineView(_ outlineView: NSOutlineView, objectValueFor tableColumn: NSTableColumn?, byItem item: Any?) -> Any? { return (item as! ASFileNode).nodeName() } let kLocalReorderPasteboardType = "ASFilePasteboardType" - func outlineView(_ outlineView: NSOutlineView, writeItems items: [AnyObject], to pasteboard: NSPasteboard) -> Bool { + private func outlineView(_ outlineView: NSOutlineView, writeItems items: [AnyObject], to pasteboard: NSPasteboard) -> Bool { dragged = items as! [ASFileNode] pasteboard.declareTypes([kLocalReorderPasteboardType], owner: self) pasteboard.setData(Data(), forType: kLocalReorderPasteboardType) @@ -378,7 +378,7 @@ class ASFileTree : NSObject, NSOutlineViewDataSource { return itemIsDescendentOfDrag(outlineView: outlineView, item: outlineView.parent(forItem: item) as! ASFileNode) } } - func outlineView(_ outlineView: NSOutlineView, validateDrop info: NSDraggingInfo, proposedItem item: AnyObject?, proposedChildIndex index: Int) -> NSDragOperation { + func outlineView(_ outlineView: NSOutlineView, validateDrop info: NSDraggingInfo, proposedItem item: Any?, proposedChildIndex index: Int) -> NSDragOperation { if info.draggingPasteboard().availableType(from: [kLocalReorderPasteboardType]) == nil { return [] // Only allow reordering drags } @@ -400,7 +400,7 @@ class ASFileTree : NSObject, NSOutlineViewDataSource { } return NSDragOperation.generic } - func outlineView(_ outlineView: NSOutlineView, acceptDrop info: NSDraggingInfo, item: AnyObject?, childIndex insertAtIndex: Int) -> Bool { + func outlineView(_ outlineView: NSOutlineView, acceptDrop info: NSDraggingInfo, item: Any?, childIndex insertAtIndex: Int) -> Bool { var insertAtIndex = insertAtIndex let parent : ASFileGroup = (item as? ASFileGroup) ?? root if insertAtIndex == NSOutlineViewDropOnItemIndex { diff --git a/AVRsack/ASHardware.swift b/AVRsack/ASHardware.swift index 96d0cfc..193e28c 100644 --- a/AVRsack/ASHardware.swift +++ b/AVRsack/ASHardware.swift @@ -13,7 +13,7 @@ typealias ASProperties = [String: ASPropertyEntry] extension NSMenu { func addSortedChoices(choices:[ASPropertyEntry], target: AnyObject, selector: Selector) { - for choice in choices.sorted(by: { $0["name"] < $1["name"] }) { + for choice in choices.sorted(by: { $0["name"]! < $1["name"]! }) { let item = self.addItem(withTitle: choice["name"]!, action: selector, keyEquivalent: "") item.target = target } diff --git a/AVRsack/ASPreferences.swift b/AVRsack/ASPreferences.swift index e24e34f..87a96c1 100644 --- a/AVRsack/ASPreferences.swift +++ b/AVRsack/ASPreferences.swift @@ -86,7 +86,7 @@ class ASPreferences: NSWindowController, NSOpenSavePanelDelegate { }) } - func panel(_ sender: AnyObject, shouldEnable url: URL) -> Bool { + func panel(_ sender: Any, shouldEnable url: URL) -> Bool { let gccPath = url.appendingPathComponent("bin/avr-gcc") return FileManager.default.fileExists(atPath: gccPath.path) } diff --git a/AVRsack/ASProjDoc.swift b/AVRsack/ASProjDoc.swift index 1dab09d..47f7778 100644 --- a/AVRsack/ASProjDoc.swift +++ b/AVRsack/ASProjDoc.swift @@ -176,7 +176,7 @@ class ASProjDoc: NSDocument, NSOutlineViewDelegate, NSMenuDelegate, NSOpenSavePa kPortKey: port, kRecentBoardsKey: recentBoards, kRecentProgrammersKey: recentProgrammers - ] + ] as [String : Any] return try PropertyListSerialization.data(fromPropertyList: data, format:.xml, options:0) } @@ -238,7 +238,7 @@ class ASProjDoc: NSDocument, NSOutlineViewDelegate, NSMenuDelegate, NSOpenSavePa updateChangeCount(.changeCleared) } - override func duplicate(_ sender: AnyObject?) { + override func duplicate(_ sender: Any?) { let app = NSApplication.shared().delegate as! ASApplication app.openTemplate(template: fileURL!.deletingLastPathComponent(), fromReadOnly:false) } @@ -301,7 +301,7 @@ class ASProjDoc: NSDocument, NSOutlineViewDelegate, NSMenuDelegate, NSOpenSavePa // MARK: Printing - override func print(withSettings printSettings: [String : AnyObject], showPrintPanel: Bool, delegate: AnyObject?, didPrint didPrintSelector: Selector?, contextInfo: UnsafeMutablePointer?) { + override func print(withSettings printSettings: [String : Any], showPrintPanel: Bool, delegate: Any?, didPrint didPrintSelector: Selector?, contextInfo: UnsafeMutableRawPointer?) { printingDone = { () -> () in InvokeCallback(delegate, didPrintSelector, contextInfo); @@ -395,7 +395,7 @@ class ASProjDoc: NSDocument, NSOutlineViewDelegate, NSMenuDelegate, NSOpenSavePa let pageNoAttr = [ NSFontAttributeName: pageNoFont, NSForegroundColorAttributeName: NSColor.white, - NSStrokeWidthAttributeName: -5.0] + NSStrokeWidthAttributeName: -5.0] as [String : Any] let pageNoStr = "\(pageNo)" let pageNoSize = pageNoStr.size(withAttributes: pageNoAttr) let pageNoAt = NSPoint( @@ -478,20 +478,20 @@ class ASProjDoc: NSDocument, NSOutlineViewDelegate, NSMenuDelegate, NSOpenSavePa group.expanded = false updateChangeCount(.changeDone) } - func outlineView(_ outlineView: NSOutlineView, willDisplayCell cell: AnyObject, for tableColumn: NSTableColumn?, item: AnyObject) { - if let textCell = cell as? NSTextFieldCell { + func outlineView(_ outlineView: NSOutlineView, willDisplayCell cell: Any, for tableColumn: NSTableColumn?, item: Any) { + if let textCell = cell as? NSTextFieldCell, let item = item as? ASFileNode { textCell.textColor = NSColor.black if item === files.root || item === files.buildLog || item === files.uploadLog || item === files.disassembly { textCell.font = NSFont.boldSystemFont(ofSize: 13.0) } else { textCell.font = NSFont.systemFont(ofSize: 13.0) - if !(item as! ASFileNode).exists() { + if !item.exists() { textCell.textColor = NSColor.red } } } } - func outlineView(_ outlineView: NSOutlineView, shouldTrackCell cell: NSCell, for tableColumn: NSTableColumn?, item: AnyObject) -> Bool { + func outlineView(_ outlineView: NSOutlineView, shouldTrackCell cell: NSCell, for tableColumn: NSTableColumn?, item: Any) -> Bool { return outlineView.isRowSelected(outlineView.row(forItem: item)) } @@ -559,7 +559,7 @@ class ASProjDoc: NSDocument, NSOutlineViewDelegate, NSMenuDelegate, NSOpenSavePa } - func panel(_ panel:AnyObject, shouldEnable url:URL) -> Bool { + func panel(_ panel:Any, shouldEnable url:URL) -> Bool { guard let values = try? url.resourceValues(forKeys: [.fileResourceIdentifierKey]), let resourceID = values.fileResourceIdentifier else { diff --git a/AVRsack/ASSerialWin.swift b/AVRsack/ASSerialWin.swift index df3b07c..5f0fbcb 100644 --- a/AVRsack/ASSerialWin.swift +++ b/AVRsack/ASSerialWin.swift @@ -15,6 +15,7 @@ class ASSerialWin: NSWindowController { @IBOutlet weak var inputLine : NSTextField! @IBOutlet weak var logView : ACEView! + var portDefaults = [String: Any]() var baudRate : Int = 9600 { didSet(oldRate) { if portHandle != nil { @@ -41,9 +42,8 @@ class ASSerialWin: NSWindowController { dynamic var portHandle : FileHandle? var currentTheme : ACETheme = .xcode var fontSize : UInt = 12 - var portDefaults = [String: AnyObject]() var shouldReconnect = false - dynamic var task : Task? + dynamic var task : Process? class func showWindowWithPort(port: String) { if let existing = serialInstances[port] { @@ -54,7 +54,7 @@ class ASSerialWin: NSWindowController { newInstance.showWindow(self) } } - class func showWindowWithPort(port: String, task: Task, speed: Int) { + class func showWindowWithPort(port: String, task: Process, speed: Int) { if let existing = serialInstances[port] { existing.showWindowWithTask(task: task, speed:speed) } else { @@ -116,10 +116,10 @@ class ASSerialWin: NSWindowController { } } }) - termination = NotificationCenter.default.addObserver(forName: Task.didTerminateNotification, + termination = NotificationCenter.default.addObserver(forName: Process.didTerminateNotification, object: nil, queue: nil, using: { (notification: Notification) in - if notification.object as? Task == self.task { + if notification.object as? Process == self.task { self.task = nil self.portHandle = nil } @@ -182,7 +182,7 @@ class ASSerialWin: NSWindowController { portHandle?.write(data) } - func showWindowWithTask(task: Task, speed:Int) { + func showWindowWithTask(task: Process, speed:Int) { if portHandle != nil { connect(self) }