OSDN Git Service

不要となっていたプロパティを削除
[kcd/KCD.git] / KCD / WindowManager.swift
index 6715458..bef02a3 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()
@@ -38,6 +17,7 @@ final class WindowManager {
     
         let vc = JSONViewWindowController()
         vc.showWindow(nil)
+        
         return vc
     }()
     #else
@@ -49,6 +29,7 @@ final class WindowManager {
     
         let vc = UITestWindowController()
         vc.showWindow(nil)
+        
         return vc
     }()
     #else
@@ -102,7 +83,7 @@ final class WindowManager {
     private lazy var shipMDWindowController: ShipMasterDetailWindowController = {
         
         ShipMasterDetailWindowController()
-    } ()
+    }()
     
     private lazy var equipmentWindowController: EquipmentWindowController = {
         
@@ -115,7 +96,6 @@ final class WindowManager {
     }()
     
     private var browserWindowControllers: [ExternalBrowserWindowController] = []
-    private var updaters: [() -> Void] = []
     private var logedJSONViewWindowController: JSONViewWindowController?
     
     var canSaveLog: Bool {
@@ -125,14 +105,17 @@ final class WindowManager {
     
     var isMainWindowMostFront: Bool {
         
-        guard let window = browserWindowController.window else { return false }
+        guard let window = browserWindowController.window else {
+            
+            return false
+        }
         
         return isFrontMostWindow(window)
     }
     
     func prepair() {
         
-        _ = BookmarkManager.shared()
+        _ = BookmarkManager.shared
         _ = screenshotListWindowController
         
         browserWindowController.showWindow(nil)
@@ -144,28 +127,18 @@ 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
     }
-    
-    func registerScreenshot(_ image: NSBitmapImageRep, fromOnScreen: NSRect) {
-        
-        screenshotListWindowController.registerScreenshot(image, fromOnScreen: fromOnScreen)
-    }
 }
 
 // MARK: - IBActions
@@ -178,7 +151,10 @@ extension WindowManager {
     
     private func makeFrontOrOrderOut(_ window: NSWindow?) {
         
-        guard let window = window else { return }
+        guard let window = window else {
+            
+            return
+        }
         
         isFrontMostWindow(window) ? window.orderOut(nil) : window.makeKeyAndOrderFront(nil)
     }
@@ -263,10 +239,18 @@ 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 +259,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 +275,23 @@ 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,14 +300,17 @@ extension WindowManager {
                 
             } catch {
                 
-                print("Can not load \(url)")
+                Logger.shared.log("Can not load \(url)")
             }
         }
     }
     
-    private func setTitle(_ menuItem: NSMenuItem, _ window: NSWindow?, _ showLabel: String, _ hideLabel: String) {
+    private func setTitle(to menuItem: NSMenuItem, frontWindow window: NSWindow?, show showLabel: String, hide hideLabel: String) {
         
-        guard let window = window else { return }
+        guard let window = window else {
+            
+            return
+        }
         
         if isFrontMostWindow(window) {
             
@@ -329,64 +324,88 @@ extension WindowManager {
     
     func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
         
-        guard let action = menuItem.action else { return false }
+        guard let action = menuItem.action else {
+            
+            return false
+        }
         
         switch action {
-        case Selector.showHideHistory:
-            setTitle(menuItem,
-                     historyWindowController.window,
-                     NSLocalizedString("Show History", comment: "Show History"),
-                     NSLocalizedString("Hide History", comment: "Hide History"))
+            
+        case #selector(WindowManager.showHideHistory(_:)):
+            
+            setTitle(to: menuItem,
+                     frontWindow: historyWindowController.window,
+                     show: LocalizedStrings.showHistory.string,
+                     hide: LocalizedStrings.hideHistory.string)
+            
             return true
             
-        case Selector.showHideSlotItemWindow:
-            setTitle(menuItem,
-                     slotItemWindowController.window,
-                     NSLocalizedString("Show Slot Item", comment: "Show Slot Item"),
-                     NSLocalizedString("Hide Slot Item", comment: "Hide Slot Item"))
+        case #selector(WindowManager.showHideSlotItemWindow(_:)):
+            
+            setTitle(to: menuItem,
+                     frontWindow: slotItemWindowController.window,
+                     show: LocalizedStrings.showSlotItem.string,
+                     hide: LocalizedStrings.hideSlotItem.string)
+            
             return true
             
-        case Selector.showHideUpgradableShipWindow:
-            setTitle(menuItem,
-                     upgradableShipWindowController.window,
-                     NSLocalizedString("Show Upgradable Ships", comment: "Show Upgradable Ships"),
-                     NSLocalizedString("Hide Upgradable Ships", comment: "Hide Upgradable Ships"))
+        case #selector(WindowManager.showHideUpgradableShipWindow(_:)):
+            
+            setTitle(to: menuItem,
+                     frontWindow: upgradableShipWindowController.window,
+                     show: LocalizedStrings.showUpgradableShips.string,
+                     hide: LocalizedStrings.hideUpgradableShips.string)
+            
             return true
             
-        case Selector.showHideScreenshotListWindow:
-            setTitle(menuItem,
-                     screenshotListWindowController.window,
-                     NSLocalizedString("Show Screenshot List", comment: "Show Screenshot List"),
-                     NSLocalizedString("Hide Screenshot List", comment: "Hide Screenshot List"))
+        case #selector(WindowManager.showHideScreenshotListWindow(_:)):
+            
+            setTitle(to: menuItem,
+                     frontWindow: screenshotListWindowController.window,
+                     show: LocalizedStrings.showScreenshotList.string,
+                     hide: LocalizedStrings.hideScreenshotList.string)
+            
             return true
             
-        case Selector.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"))
+        case #selector(WindowManager.showHideAirBaseInfoWindow(_:)):
+            
+            setTitle(to: menuItem,
+                     frontWindow: airBaseWindowController.window,
+                     show: LocalizedStrings.showAirbaseInfo.string,
+                     hide: 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:
+            
             return false
         }
     }