OSDN Git Service

バージョンを1.9b33に更新
[kcd/KCD.git] / KCD / WindowManager.swift
index 6715458..c2e5ddf 100644 (file)
@@ -8,27 +8,6 @@
 
 import Cocoa
 
-private extension Selector {
-    
-    static let showHideHistory = #selector(WindowManager.showHideHistory(_:))
-    static let showHideSlotItemWindow = #selector(WindowManager.showHideSlotItemWindow(_:))
-    static let showHideUpgradableShipWindow = #selector(WindowManager.showHideUpgradableShipWindow(_:))
-    static let showHideScreenshotListWindow = #selector(WindowManager.showHideScreenshotListWindow(_:))
-    static let showHideAirBaseInfoWindow = #selector(WindowManager.showHideAirBaseInfoWindow(_:))
-    static let showHidePreferencePanle = #selector(WindowManager.showHidePreferencePanle(_:))
-    static let openNewBrowser = #selector(WindowManager.openNewBrowser(_:))
-    static let selectBookmark = #selector(WindowManager.selectBookmark(_:))
-    static let showWindowAduster = #selector(WindowManager.showWindowAduster(_:))
-    
-    static let showShipWindow = #selector(WindowManager.showShipWindow(_:))
-    static let showEquipmentWindow = #selector(WindowManager.showEquipmentWindow(_:))
-    static let showMapWindow = #selector(WindowManager.showMapWindow(_:))
-    static let showOwnershipShipWindow = #selector(WindowManager.showOwnershipShipWindow(_:))
-    
-    static let saveDocument = #selector(WindowManager.saveDocument(_:))
-    static let openDocument = #selector(WindowManager.openDocument(_:))
-}
-
 final class WindowManager {
     
     private let browserWindowController = BroserWindowController()
@@ -115,7 +94,6 @@ final class WindowManager {
     }()
     
     private var browserWindowControllers: [ExternalBrowserWindowController] = []
-    private var updaters: [() -> Void] = []
     private var logedJSONViewWindowController: JSONViewWindowController?
     
     var canSaveLog: Bool {
@@ -132,7 +110,7 @@ final class WindowManager {
     
     func prepair() {
         
-        _ = BookmarkManager.shared()
+        _ = BookmarkManager.shared
         _ = screenshotListWindowController
         
         browserWindowController.showWindow(nil)
@@ -144,19 +122,14 @@ final class WindowManager {
         browserWindowControllers.append(browser)
         browser.window?.makeKeyAndOrderFront(nil)
         
-        var token: NSObjectProtocol! = nil
-        
-        token = NotificationCenter.default
-            .addObserver(forName: NSWindow.willCloseNotification,
-                         object: browser.window,
-                         queue: nil) { [unowned self] notification in
-                            
-                            NotificationCenter.default.removeObserver(token)
-                            if let obj = notification.object as? NSWindow,
-                                let index = self.browserWindowControllers.index(where: { $0.window == obj }) {
-                                
-                                self.browserWindowControllers.remove(at: index)
-                            }
+        NotificationCenter.default
+            .addObserverOnce(forName: NSWindow.willCloseNotification, object: browser.window, queue: nil) { [unowned self] notification in
+                
+                if let obj = notification.object as? NSWindow,
+                    let index = self.browserWindowControllers.index(where: { $0.window == obj }) {
+                    
+                    self.browserWindowControllers.remove(at: index)
+                }
         }
         
         return browser
@@ -263,10 +236,9 @@ extension WindowManager {
         
         panel.begin {
             
-            guard $0 == .OK,
-                let url = panel.url,
-                let array = self.jsonViewWindowController?.commands
-                else { return }
+            guard $0 == .OK else { return }
+            guard let url = panel.url else { return }
+            guard let array = self.jsonViewWindowController?.commands else { return }
             
             let data = NSKeyedArchiver.archivedData(withRootObject: array)
             
@@ -275,7 +247,8 @@ extension WindowManager {
                 try data.write(to: url)
                 
             } catch {
-                print("Can not write to \(url)")
+                
+                Logger.shared.log("Can not write to \(url)")
             }
         }
     }
@@ -290,16 +263,14 @@ extension WindowManager {
         
         panel.begin {
             
-            guard $0 == .OK,
-                let url = panel.url
-                else { return }
+            guard $0 == .OK else { return }
+            guard let url = panel.url else { return }
             
             do {
                 
                 let data = try Data(contentsOf: url)
                 let array = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data)
-                guard let commands = array as? [[String: Any]]
-                    else { return }
+                guard let commands = array as? [[String: Any]] else { return }
                 
                 self.logedJSONViewWindowController = JSONViewWindowController()
                 self.logedJSONViewWindowController?.commands = commands
@@ -308,7 +279,7 @@ extension WindowManager {
                 
             } catch {
                 
-                print("Can not load \(url)")
+                Logger.shared.log("Can not load \(url)")
             }
         }
     }
@@ -332,58 +303,64 @@ extension WindowManager {
         guard let action = menuItem.action else { return false }
         
         switch action {
-        case Selector.showHideHistory:
+            
+        case #selector(WindowManager.showHideHistory(_:)):
             setTitle(menuItem,
                      historyWindowController.window,
-                     NSLocalizedString("Show History", comment: "Show History"),
-                     NSLocalizedString("Hide History", comment: "Hide History"))
+                     LocalizedStrings.showHistory.string,
+                     LocalizedStrings.hideHistory.string)
             return true
             
-        case Selector.showHideSlotItemWindow:
+        case #selector(WindowManager.showHideSlotItemWindow(_:)):
             setTitle(menuItem,
                      slotItemWindowController.window,
-                     NSLocalizedString("Show Slot Item", comment: "Show Slot Item"),
-                     NSLocalizedString("Hide Slot Item", comment: "Hide Slot Item"))
+                     LocalizedStrings.showSlotItem.string,
+                     LocalizedStrings.hideSlotItem.string)
             return true
             
-        case Selector.showHideUpgradableShipWindow:
+        case #selector(WindowManager.showHideUpgradableShipWindow(_:)):
             setTitle(menuItem,
                      upgradableShipWindowController.window,
-                     NSLocalizedString("Show Upgradable Ships", comment: "Show Upgradable Ships"),
-                     NSLocalizedString("Hide Upgradable Ships", comment: "Hide Upgradable Ships"))
+                     LocalizedStrings.showUpgradableShips.string,
+                     LocalizedStrings.hideUpgradableShips.string)
             return true
             
-        case Selector.showHideScreenshotListWindow:
+        case #selector(WindowManager.showHideScreenshotListWindow(_:)):
             setTitle(menuItem,
                      screenshotListWindowController.window,
-                     NSLocalizedString("Show Screenshot List", comment: "Show Screenshot List"),
-                     NSLocalizedString("Hide Screenshot List", comment: "Hide Screenshot List"))
+                     LocalizedStrings.showScreenshotList.string,
+                     LocalizedStrings.hideScreenshotList.string)
             return true
             
-        case Selector.showHideAirBaseInfoWindow:
+        case #selector(WindowManager.showHideAirBaseInfoWindow(_:)):
             setTitle(menuItem,
                      airBaseWindowController.window,
-                     NSLocalizedString("Show Air Base Info", comment: "Show Air Base Info"),
-                     NSLocalizedString("Hide Air Base Info", comment: "Hide Air Base Info"))
+                     LocalizedStrings.showAirbaseInfo.string,
+                     LocalizedStrings.hideAirbaseInfo.string)
             return true
             
-        case Selector.showHidePreferencePanle:
+        case #selector(WindowManager.showHidePreferencePanle(_:)):
             return true
             
-        case Selector.openNewBrowser:
+        case #selector(WindowManager.openNewBrowser(_:)):
             return true
             
-        case Selector.selectBookmark:
+        case #selector(WindowManager.selectBookmark(_:)):
             return true
             
-        case Selector.showWindowAduster:
+        case #selector(WindowManager.showWindowAduster(_:)):
             return true
             
-        case Selector.showShipWindow, Selector.showEquipmentWindow,
-             Selector.showMapWindow, Selector.showOwnershipShipWindow:
+        case #selector(WindowManager.showShipWindow(_:)),
+             #selector(WindowManager.showEquipmentWindow(_:)),
+             #selector(WindowManager.showMapWindow(_:)),
+             #selector(WindowManager.showOwnershipShipWindow(_:)):
+            
             return true
             
-        case Selector.saveDocument, Selector.openDocument:
+        case #selector(WindowManager.saveDocument(_:)),
+             #selector(WindowManager.openDocument(_:)):
+            
             return canSaveLog
             
         default: