OSDN Git Service

Merge branch 'master' into convertToSwift
authormasakih <masakih@users.sourceforge.jp>
Thu, 22 Dec 2016 13:18:38 +0000 (22:18 +0900)
committermasakih <masakih@users.sourceforge.jp>
Thu, 22 Dec 2016 13:18:38 +0000 (22:18 +0900)
29 files changed:
KCD.xcodeproj/project.pbxproj
KCD/Base.lproj/HMHistoryWindowController.xib
KCD/Base.lproj/HMPreferencePanelController.xib
KCD/Base.lproj/HMProgressPanel.xib
KCD/Base.lproj/HMUpgradableShipsWindowController.xib
KCD/HMAppDelegate.m
KCD/HMCoreDataManager.h
KCD/HMGameViewController.m
KCD/HMHistoryItemCleaner.h [deleted file]
KCD/HMHistoryItemCleaner.m [deleted file]
KCD/HMHistoryItemCleaner.swift [new file with mode: 0644]
KCD/HMHistoryWindowController.h [deleted file]
KCD/HMHistoryWindowController.m [deleted file]
KCD/HMHistoryWindowController.swift [new file with mode: 0644]
KCD/HMPreferencePanelController.h [deleted file]
KCD/HMPreferencePanelController.m [deleted file]
KCD/HMPreferencePanelController.swift [new file with mode: 0644]
KCD/HMProgressPanel.h [deleted file]
KCD/HMProgressPanel.m [deleted file]
KCD/HMProgressPanel.swift [new file with mode: 0644]
KCD/HMSlotItemWindowController.h [deleted file]
KCD/HMSlotItemWindowController.m [deleted file]
KCD/HMSlotItemWindowController.swift [new file with mode: 0644]
KCD/HMUpgradableShipsWindowController.h [deleted file]
KCD/HMUpgradableShipsWindowController.m [deleted file]
KCD/HMUpgradableShipsWindowController.swift [new file with mode: 0644]
KCD/HMUpgradeShipExcludeColorTransformer.m
KCD/HistoryWindowTouchBar.xib
KCD/KCD-Bridging-Header.h [new file with mode: 0644]

index f994a03..adc0f06 100644 (file)
@@ -13,7 +13,6 @@
                F4131ECF190F5C08004F7F9A /* HMStoreCreateSlotItemHistoryCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4131ECE190F5C08004F7F9A /* HMStoreCreateSlotItemHistoryCommand.m */; };
                F4131ED5190F63D8004F7F9A /* HMUpdateSlotItemCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4131ED4190F63D8004F7F9A /* HMUpdateSlotItemCommand.m */; };
                F4131ED8190FA08D004F7F9A /* HMDestroyItem2Command.m in Sources */ = {isa = PBXBuildFile; fileRef = F4131ED7190FA08D004F7F9A /* HMDestroyItem2Command.m */; };
-               F4131EDC190FEBCC004F7F9A /* HMSlotItemWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F4131EDA190FEBCC004F7F9A /* HMSlotItemWindowController.m */; };
                F4131EDE190FEBDB004F7F9A /* HMSlotItemWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4131EE0190FEBDB004F7F9A /* HMSlotItemWindowController.xib */; };
                F4131EE61910318F004F7F9A /* HMMasterSlotItemEquipTypeCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4131EE51910318F004F7F9A /* HMMasterSlotItemEquipTypeCommand.m */; };
                F4131EE91911445F004F7F9A /* HMSlotItemEquipTypeTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = F4131EE81911445F004F7F9A /* HMSlotItemEquipTypeTransformer.m */; };
@@ -38,7 +37,6 @@
                F4268034195332A000B2C27F /* HMPowerUpCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4268033195332A000B2C27F /* HMPowerUpCommand.m */; };
                F42680371957000200B2C27F /* HMTimerCountFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = F42680361957000200B2C27F /* HMTimerCountFormatter.m */; };
                F42CBB231D1F967F004C2AE2 /* HMHistoryMarkTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = F42CBB221D1F967F004C2AE2 /* HMHistoryMarkTransformer.m */; };
-               F42CBB261D21583C004C2AE2 /* HMHistoryItemCleaner.m in Sources */ = {isa = PBXBuildFile; fileRef = F42CBB251D21583C004C2AE2 /* HMHistoryItemCleaner.m */; };
                F431E9761DF3AC1C00FB56AE /* HMSetActionCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F431E9751DF3AC1C00FB56AE /* HMSetActionCommand.m */; };
                F431E9791DF3CD1B00FB56AE /* HMActinKindTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = F431E9781DF3CD1B00FB56AE /* HMActinKindTransformer.m */; };
                F431E97C1DF3D2E100FB56AE /* HMAreaNameTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = F431E97B1DF3D2E100FB56AE /* HMAreaNameTransformer.m */; };
@@ -74,6 +72,8 @@
                F4513EF318B991F800073552 /* HMMemberBasicCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4513EF218B991F800073552 /* HMMemberBasicCommand.m */; };
                F4513EF618B9F29800073552 /* HMMemberShipCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4513EF518B9F29800073552 /* HMMemberShipCommand.m */; };
                F4513EFA18BB699700073552 /* HMShipWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F4513EF818BB699700073552 /* HMShipWindowController.m */; };
+               F45F3BE11E067A870009434E /* HMHistoryItemCleaner.swift in Sources */ = {isa = PBXBuildFile; fileRef = F45F3BE01E067A870009434E /* HMHistoryItemCleaner.swift */; };
+               F45F3BE31E06A60A0009434E /* HMUpgradableShipsWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F45F3BE21E06A60A0009434E /* HMUpgradableShipsWindowController.swift */; };
                F4649FC91DBC51EF0097AEBF /* HMScreenshotListViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4649FCB1DBC51EF0097AEBF /* HMScreenshotListViewController.xib */; };
                F4649FCE1DBC52600097AEBF /* HMScreenshotDetailViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4649FD01DBC52600097AEBF /* HMScreenshotDetailViewController.xib */; };
                F4649FD31DBC52A50097AEBF /* HMScreenshotEditorViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4649FD51DBC52A50097AEBF /* HMScreenshotEditorViewController.xib */; };
                F495462E1B1894DD00E0D8D0 /* Bookmark.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = F495462C1B1894DD00E0D8D0 /* Bookmark.xcdatamodeld */; };
                F49546311B18991300E0D8D0 /* HMBookmarkDataStore.m in Sources */ = {isa = PBXBuildFile; fileRef = F49546301B18991300E0D8D0 /* HMBookmarkDataStore.m */; };
                F49546351B19924D00E0D8D0 /* HMBookmarkListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F49546331B19924D00E0D8D0 /* HMBookmarkListViewController.m */; };
-               F49688641B3AFE4900D3CEDE /* HMProgressPanel.m in Sources */ = {isa = PBXBuildFile; fileRef = F49688621B3AFE4900D3CEDE /* HMProgressPanel.m */; };
                F49688671B3EA16800D3CEDE /* RemoveDatabaseFileAndRestart.app in Resources */ = {isa = PBXBuildFile; fileRef = F49688661B3EA16800D3CEDE /* RemoveDatabaseFileAndRestart.app */; };
                F49828FC1902A226000D6BBE /* HMStrokeTextFieldCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F49828FB1902A226000D6BBE /* HMStrokeTextFieldCell.m */; };
                F499E8901B5D4E7F00189029 /* HMPortNotifyCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F499E88F1B5D4E7F00189029 /* HMPortNotifyCommand.m */; };
                F4A3AD8819B6149D00FDBF80 /* HMNyukyoStartCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4A3AD8719B6149D00FDBF80 /* HMNyukyoStartCommand.m */; };
                F4A3AD8B19B9BE7A00FDBF80 /* HMMaskSelectView.m in Sources */ = {isa = PBXBuildFile; fileRef = F4A3AD8A19B9BE7A00FDBF80 /* HMMaskSelectView.m */; };
                F4A3AD8E19BB220000FDBF80 /* HMMaskInfomation.m in Sources */ = {isa = PBXBuildFile; fileRef = F4A3AD8D19BB220000FDBF80 /* HMMaskInfomation.m */; };
-               F4A3AD9219BDDD8E00FDBF80 /* HMPreferencePanelController.m in Sources */ = {isa = PBXBuildFile; fileRef = F4A3AD9019BDDD8E00FDBF80 /* HMPreferencePanelController.m */; };
                F4A3AD9419BDDE5500FDBF80 /* HMPreferencePanelController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4A3AD9619BDDE5500FDBF80 /* HMPreferencePanelController.xib */; };
                F4A5D32B1CD9CAA70024A6F0 /* HMBorderTextField.m in Sources */ = {isa = PBXBuildFile; fileRef = F4A5D32A1CD9CAA70024A6F0 /* HMBorderTextField.m */; };
                F4A9B8D41B975029005786C2 /* SlotItemShortName.plist in Resources */ = {isa = PBXBuildFile; fileRef = F4A9B8D21B975029005786C2 /* SlotItemShortName.plist */; };
                F4AA0607192E3B6200844688 /* HMMapStartCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4AA0606192E3B6200844688 /* HMMapStartCommand.m */; };
                F4AA060D1930E69200844688 /* HMMidnightBattleCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4AA060C1930E69200844688 /* HMMidnightBattleCommand.m */; };
                F4AA06101931869E00844688 /* HMBattleResultCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4AA060F1931869E00844688 /* HMBattleResultCommand.m */; };
+               F4AC136D1E0802C000851147 /* HMPreferencePanelController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4AC136C1E0802C000851147 /* HMPreferencePanelController.swift */; };
+               F4AC136F1E0963DB00851147 /* HMProgressPanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4AC136E1E0963DB00851147 /* HMProgressPanel.swift */; };
+               F4AC13711E096A7B00851147 /* HMHistoryWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4AC13701E096A7B00851147 /* HMHistoryWindowController.swift */; };
                F4B1E30819C73B6A00805879 /* HMSuppliesCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B1E30419C73B6A00805879 /* HMSuppliesCell.m */; };
                F4B1E30919C73B6A00805879 /* HMSuppliesView.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B1E30619C73B6A00805879 /* HMSuppliesView.m */; };
                F4B1E30C19D1C06900805879 /* HMHokyuChargeCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B1E30B19D1C06900805879 /* HMHokyuChargeCommand.m */; };
                F4B37EF019FADFC9002F371A /* HMIgnoreZeroTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B37EEF19FADFC9002F371A /* HMIgnoreZeroTransformer.m */; };
                F4B37EF319FBBBED002F371A /* HMRemodelSlotCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B37EF219FBBBED002F371A /* HMRemodelSlotCommand.m */; };
                F4B37EF619FBE801002F371A /* HMRemodelSlotItemCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B37EF519FBE801002F371A /* HMRemodelSlotItemCommand.m */; };
-               F4B37EFD19FC8D98002F371A /* HMUpgradableShipsWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B37EFB19FC8D98002F371A /* HMUpgradableShipsWindowController.m */; };
                F4B37EFF19FC8DCC002F371A /* HMUpgradableShipsWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4B37F0119FC8DCC002F371A /* HMUpgradableShipsWindowController.xib */; };
                F4B3DBCA18DDB9170011B4FC /* HMCreateSlotItemCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B3DBC918DDB9170011B4FC /* HMCreateSlotItemCommand.m */; };
                F4B3DC1B18DEAB5E0011B4FC /* HMKaihatuHistory.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B3DC1A18DEAB5E0011B4FC /* HMKaihatuHistory.m */; };
                F4B3DC2118DECF570011B4FC /* HMTSVSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B3DC2018DECF570011B4FC /* HMTSVSupport.m */; };
                F4B3DC2718DF2F360011B4FC /* HMKenzoMark.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B3DC2618DF2F360011B4FC /* HMKenzoMark.m */; };
                F4B3DC2A18DF31400011B4FC /* HMCreateShipCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B3DC2918DF31400011B4FC /* HMCreateShipCommand.m */; };
-               F4B3DC2E18E07B680011B4FC /* HMHistoryWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F4B3DC2C18E07B680011B4FC /* HMHistoryWindowController.m */; };
                F4B3DC3018E5C81E0011B4FC /* HMHistoryWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4B3DC3218E5C81E0011B4FC /* HMHistoryWindowController.xib */; };
                F4B3DC3318E5C8520011B4FC /* HMShipViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4B3DC3518E5C8520011B4FC /* HMShipViewController.xib */; };
                F4B3DC3618E5C8650011B4FC /* HMShipWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F4B3DC3818E5C8650011B4FC /* HMShipWindowController.xib */; };
                F4C6687D1C545E3800601AFB /* HMMapWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F4C6687B1C545E3800601AFB /* HMMapWindowController.m */; };
                F4C668881C60F5F200601AFB /* HMRepairListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F4C668861C60F5F200601AFB /* HMRepairListViewController.m */; };
                F4C86B921C1C445D00F260FE /* HMUpgradeShipExcludeColorTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = F4C86B911C1C445D00F260FE /* HMUpgradeShipExcludeColorTransformer.m */; };
+               F4D05BC61E0ABD6800688D66 /* HMSlotItemWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4D05BC51E0ABD6800688D66 /* HMSlotItemWindowController.swift */; };
                F4D2CBC218AD0E1A000EBC59 /* HMMasterSTypeCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4D2CBC118AD0E1A000EBC59 /* HMMasterSTypeCommand.m */; };
                F4D2CBC518AE2AE2000EBC59 /* HMCompositCommand.m in Sources */ = {isa = PBXBuildFile; fileRef = F4D2CBC418AE2AE2000EBC59 /* HMCompositCommand.m */; };
                F4D2CBC818B0555A000EBC59 /* HMKCManagedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = F4D2CBC718B0555A000EBC59 /* HMKCManagedObject.m */; };
                F4131ED4190F63D8004F7F9A /* HMUpdateSlotItemCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMUpdateSlotItemCommand.m; sourceTree = "<group>"; };
                F4131ED6190FA08D004F7F9A /* HMDestroyItem2Command.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMDestroyItem2Command.h; sourceTree = "<group>"; };
                F4131ED7190FA08D004F7F9A /* HMDestroyItem2Command.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMDestroyItem2Command.m; sourceTree = "<group>"; };
-               F4131ED9190FEBCC004F7F9A /* HMSlotItemWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMSlotItemWindowController.h; sourceTree = "<group>"; };
-               F4131EDA190FEBCC004F7F9A /* HMSlotItemWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMSlotItemWindowController.m; sourceTree = "<group>"; };
                F4131EE41910318F004F7F9A /* HMMasterSlotItemEquipTypeCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMMasterSlotItemEquipTypeCommand.h; sourceTree = "<group>"; };
                F4131EE51910318F004F7F9A /* HMMasterSlotItemEquipTypeCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMMasterSlotItemEquipTypeCommand.m; sourceTree = "<group>"; };
                F4131EE71911445F004F7F9A /* HMSlotItemEquipTypeTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMSlotItemEquipTypeTransformer.h; sourceTree = "<group>"; };
                F42CBB201D1ED41D004C2AE2 /* LocalData 3.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "LocalData 3.xcdatamodel"; sourceTree = "<group>"; };
                F42CBB211D1F967F004C2AE2 /* HMHistoryMarkTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMHistoryMarkTransformer.h; sourceTree = "<group>"; };
                F42CBB221D1F967F004C2AE2 /* HMHistoryMarkTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMHistoryMarkTransformer.m; sourceTree = "<group>"; };
-               F42CBB241D21583C004C2AE2 /* HMHistoryItemCleaner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMHistoryItemCleaner.h; sourceTree = "<group>"; };
-               F42CBB251D21583C004C2AE2 /* HMHistoryItemCleaner.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMHistoryItemCleaner.m; sourceTree = "<group>"; };
                F431E9741DF3AC1C00FB56AE /* HMSetActionCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMSetActionCommand.h; sourceTree = "<group>"; };
                F431E9751DF3AC1C00FB56AE /* HMSetActionCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMSetActionCommand.m; sourceTree = "<group>"; };
                F431E9771DF3CD1B00FB56AE /* HMActinKindTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMActinKindTransformer.h; sourceTree = "<group>"; };
                F4513EF518B9F29800073552 /* HMMemberShipCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMMemberShipCommand.m; sourceTree = "<group>"; };
                F4513EF718BB699700073552 /* HMShipWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMShipWindowController.h; sourceTree = "<group>"; };
                F4513EF818BB699700073552 /* HMShipWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMShipWindowController.m; sourceTree = "<group>"; };
+               F45F3BDD1E0679D80009434E /* KCD-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "KCD-Bridging-Header.h"; sourceTree = "<group>"; };
+               F45F3BE01E067A870009434E /* HMHistoryItemCleaner.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HMHistoryItemCleaner.swift; sourceTree = "<group>"; };
+               F45F3BE21E06A60A0009434E /* HMUpgradableShipsWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HMUpgradableShipsWindowController.swift; sourceTree = "<group>"; };
                F4649FC81DBC51A90097AEBF /* zh-Hant-TW */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant-TW"; path = "zh-Hant-TW.lproj/HMScreenshotListWindowController.strings"; sourceTree = "<group>"; };
                F4649FCD1DBC51F30097AEBF /* zh-Hant-TW */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant-TW"; path = "zh-Hant-TW.lproj/HMScreenshotListViewController.strings"; sourceTree = "<group>"; };
                F4649FD21DBC52630097AEBF /* zh-Hant-TW */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant-TW"; path = "zh-Hant-TW.lproj/HMScreenshotDetailViewController.strings"; sourceTree = "<group>"; };
                F49546301B18991300E0D8D0 /* HMBookmarkDataStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMBookmarkDataStore.m; sourceTree = "<group>"; };
                F49546321B19924D00E0D8D0 /* HMBookmarkListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMBookmarkListViewController.h; sourceTree = "<group>"; };
                F49546331B19924D00E0D8D0 /* HMBookmarkListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMBookmarkListViewController.m; sourceTree = "<group>"; };
-               F49688611B3AFE4900D3CEDE /* HMProgressPanel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMProgressPanel.h; sourceTree = "<group>"; };
-               F49688621B3AFE4900D3CEDE /* HMProgressPanel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMProgressPanel.m; sourceTree = "<group>"; };
                F49688661B3EA16800D3CEDE /* RemoveDatabaseFileAndRestart.app */ = {isa = PBXFileReference; lastKnownFileType = wrapper.application; path = RemoveDatabaseFileAndRestart.app; sourceTree = "<group>"; };
                F497F6231D5B7CCA00A8F609 /* zh-Hant-TW */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant-TW"; path = "zh-Hant-TW.lproj/MainMenu.strings"; sourceTree = "<group>"; };
                F497F63A1D5B7CE300A8F609 /* zh-Hant-TW */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; name = "zh-Hant-TW"; path = "zh-Hant-TW.lproj/Makefile"; sourceTree = "<group>"; };
                F4A3AD8A19B9BE7A00FDBF80 /* HMMaskSelectView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMMaskSelectView.m; sourceTree = "<group>"; };
                F4A3AD8C19BB220000FDBF80 /* HMMaskInfomation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMMaskInfomation.h; sourceTree = "<group>"; };
                F4A3AD8D19BB220000FDBF80 /* HMMaskInfomation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMMaskInfomation.m; sourceTree = "<group>"; };
-               F4A3AD8F19BDDD8D00FDBF80 /* HMPreferencePanelController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMPreferencePanelController.h; sourceTree = "<group>"; };
-               F4A3AD9019BDDD8E00FDBF80 /* HMPreferencePanelController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMPreferencePanelController.m; sourceTree = "<group>"; };
                F4A5D3291CD9CAA70024A6F0 /* HMBorderTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMBorderTextField.h; sourceTree = "<group>"; };
                F4A5D32A1CD9CAA70024A6F0 /* HMBorderTextField.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMBorderTextField.m; sourceTree = "<group>"; };
                F4A9B8D31B975029005786C2 /* ja */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = ja; path = ja.lproj/SlotItemShortName.plist; sourceTree = "<group>"; };
                F4AA060C1930E69200844688 /* HMMidnightBattleCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMMidnightBattleCommand.m; sourceTree = "<group>"; };
                F4AA060E1931869E00844688 /* HMBattleResultCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMBattleResultCommand.h; sourceTree = "<group>"; };
                F4AA060F1931869E00844688 /* HMBattleResultCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMBattleResultCommand.m; sourceTree = "<group>"; };
+               F4AC136C1E0802C000851147 /* HMPreferencePanelController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HMPreferencePanelController.swift; sourceTree = "<group>"; };
+               F4AC136E1E0963DB00851147 /* HMProgressPanel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HMProgressPanel.swift; sourceTree = "<group>"; };
+               F4AC13701E096A7B00851147 /* HMHistoryWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HMHistoryWindowController.swift; sourceTree = "<group>"; };
                F4B1E30319C73B6A00805879 /* HMSuppliesCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMSuppliesCell.h; sourceTree = "<group>"; };
                F4B1E30419C73B6A00805879 /* HMSuppliesCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMSuppliesCell.m; sourceTree = "<group>"; };
                F4B1E30519C73B6A00805879 /* HMSuppliesView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMSuppliesView.h; sourceTree = "<group>"; };
                F4B37EF219FBBBED002F371A /* HMRemodelSlotCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMRemodelSlotCommand.m; sourceTree = "<group>"; };
                F4B37EF419FBE801002F371A /* HMRemodelSlotItemCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMRemodelSlotItemCommand.h; sourceTree = "<group>"; };
                F4B37EF519FBE801002F371A /* HMRemodelSlotItemCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMRemodelSlotItemCommand.m; sourceTree = "<group>"; };
-               F4B37EFA19FC8D98002F371A /* HMUpgradableShipsWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMUpgradableShipsWindowController.h; sourceTree = "<group>"; };
-               F4B37EFB19FC8D98002F371A /* HMUpgradableShipsWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMUpgradableShipsWindowController.m; sourceTree = "<group>"; };
                F4B3DBC818DDB9170011B4FC /* HMCreateSlotItemCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMCreateSlotItemCommand.h; sourceTree = "<group>"; };
                F4B3DBC918DDB9170011B4FC /* HMCreateSlotItemCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMCreateSlotItemCommand.m; sourceTree = "<group>"; };
                F4B3DC1918DEAB5E0011B4FC /* HMKaihatuHistory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMKaihatuHistory.h; sourceTree = "<group>"; };
                F4B3DC2618DF2F360011B4FC /* HMKenzoMark.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMKenzoMark.m; sourceTree = "<group>"; };
                F4B3DC2818DF31400011B4FC /* HMCreateShipCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMCreateShipCommand.h; sourceTree = "<group>"; };
                F4B3DC2918DF31400011B4FC /* HMCreateShipCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMCreateShipCommand.m; sourceTree = "<group>"; };
-               F4B3DC2B18E07B680011B4FC /* HMHistoryWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMHistoryWindowController.h; sourceTree = "<group>"; };
-               F4B3DC2C18E07B680011B4FC /* HMHistoryWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMHistoryWindowController.m; sourceTree = "<group>"; };
                F4B3DC4218E70B370011B4FC /* HMServerDataStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMServerDataStore.h; sourceTree = "<group>"; };
                F4B3DC4318E70B370011B4FC /* HMServerDataStore.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMServerDataStore.m; sourceTree = "<group>"; };
                F4B3DC4518EEEB920011B4FC /* HMStart2Command.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMStart2Command.h; sourceTree = "<group>"; };
                F4C668861C60F5F200601AFB /* HMRepairListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMRepairListViewController.m; sourceTree = "<group>"; };
                F4C86B901C1C445C00F260FE /* HMUpgradeShipExcludeColorTransformer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMUpgradeShipExcludeColorTransformer.h; sourceTree = "<group>"; };
                F4C86B911C1C445D00F260FE /* HMUpgradeShipExcludeColorTransformer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMUpgradeShipExcludeColorTransformer.m; sourceTree = "<group>"; };
+               F4D05BC51E0ABD6800688D66 /* HMSlotItemWindowController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HMSlotItemWindowController.swift; sourceTree = "<group>"; };
                F4D2CBC018AD0E1A000EBC59 /* HMMasterSTypeCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMMasterSTypeCommand.h; sourceTree = "<group>"; };
                F4D2CBC118AD0E1A000EBC59 /* HMMasterSTypeCommand.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HMMasterSTypeCommand.m; sourceTree = "<group>"; };
                F4D2CBC318AE2AE2000EBC59 /* HMCompositCommand.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HMCompositCommand.h; sourceTree = "<group>"; };
                                F4F9F89A1C6CB7D400D0EE76 /* HMFleet.m */,
                                F4F9F8A11C70AFB600D0EE76 /* HMFleetManager.h */,
                                F4F9F8A21C70AFB600D0EE76 /* HMFleetManager.m */,
-                               F42CBB241D21583C004C2AE2 /* HMHistoryItemCleaner.h */,
-                               F42CBB251D21583C004C2AE2 /* HMHistoryItemCleaner.m */,
+                               F45F3BE01E067A870009434E /* HMHistoryItemCleaner.swift */,
                                F4C2ACA31D7167C2007BFE90 /* HMTimeSignalNotifier.h */,
                                F4C2ACA41D7167C2007BFE90 /* HMTimeSignalNotifier.m */,
                                F45F3BDC1E0575170009434E /* TouchBar */,
                                F4BEEEA918D890660006F70C /* UI */,
                                F4BEEEA818D88FF30006F70C /* CoreData */,
                                F4BDEB4D187252F30069D0CE /* Supporting Files */,
+                               F45F3BDD1E0679D80009434E /* KCD-Bridging-Header.h */,
                        );
                        path = KCD;
                        sourceTree = "<group>";
                                F4BDEB5B187252F30069D0CE /* MainMenu.xib */,
                                F4BEEFE31B0CD3C5004702B8 /* MainWindow */,
                                F4666C5B1B242065001840DB /* Bookmark */,
-                               F4B3DC2B18E07B680011B4FC /* HMHistoryWindowController.h */,
-                               F4B3DC2C18E07B680011B4FC /* HMHistoryWindowController.m */,
+                               F4AC13701E096A7B00851147 /* HMHistoryWindowController.swift */,
                                F4B3DC3218E5C81E0011B4FC /* HMHistoryWindowController.xib */,
                                F4A3AD8919B9BE7A00FDBF80 /* HMMaskSelectView.h */,
                                F4A3AD8A19B9BE7A00FDBF80 /* HMMaskSelectView.m */,
                                F4A3AD8C19BB220000FDBF80 /* HMMaskInfomation.h */,
                                F4A3AD8D19BB220000FDBF80 /* HMMaskInfomation.m */,
-                               F4131ED9190FEBCC004F7F9A /* HMSlotItemWindowController.h */,
-                               F4131EDA190FEBCC004F7F9A /* HMSlotItemWindowController.m */,
+                               F4D05BC51E0ABD6800688D66 /* HMSlotItemWindowController.swift */,
                                F4131EE0190FEBDB004F7F9A /* HMSlotItemWindowController.xib */,
-                               F4A3AD8F19BDDD8D00FDBF80 /* HMPreferencePanelController.h */,
-                               F4A3AD9019BDDD8E00FDBF80 /* HMPreferencePanelController.m */,
+                               F4AC136C1E0802C000851147 /* HMPreferencePanelController.swift */,
                                F4A3AD9619BDDE5500FDBF80 /* HMPreferencePanelController.xib */,
-                               F4B37EFA19FC8D98002F371A /* HMUpgradableShipsWindowController.h */,
-                               F4B37EFB19FC8D98002F371A /* HMUpgradableShipsWindowController.m */,
+                               F45F3BE21E06A60A0009434E /* HMUpgradableShipsWindowController.swift */,
                                F4B37F0119FC8DCC002F371A /* HMUpgradableShipsWindowController.xib */,
                                F4B2A08C1A1F9C2100D2EF12 /* HMExternalBrowserWindowController.h */,
                                F4B2A08D1A1F9C2100D2EF12 /* HMExternalBrowserWindowController.m */,
                                F4BEEFFE1B11A5A7004702B8 /* HMExternalBrowserWindowController.xib */,
-                               F49688611B3AFE4900D3CEDE /* HMProgressPanel.h */,
-                               F49688621B3AFE4900D3CEDE /* HMProgressPanel.m */,
+                               F4AC136E1E0963DB00851147 /* HMProgressPanel.swift */,
                                F4C668651C54518F00601AFB /* HMProgressPanel.xib */,
                                F42185051DF4425500256590 /* HMAirBaseWindowController.h */,
                                F42185061DF4425500256590 /* HMAirBaseWindowController.m */,
                                LastUpgradeCheck = 0800;
                                ORGANIZATIONNAME = "Hori,Masaki";
                                TargetAttributes = {
+                                       F4BDEB42187252F30069D0CE = {
+                                               LastSwiftMigration = 0820;
+                                       };
                                        F4BDEB63187252F30069D0CE = {
                                                TestTargetID = F4BDEB42187252F30069D0CE;
                                        };
                                F4513EE818B77A5300073552 /* HMMemberKDockCommand.m in Sources */,
                                F4F9F87E1C6B5E4A00D0EE76 /* HMKCMasterSType.m in Sources */,
                                F431E9791DF3CD1B00FB56AE /* HMActinKindTransformer.m in Sources */,
+                               F45F3BE11E067A870009434E /* HMHistoryItemCleaner.swift in Sources */,
                                F426802B194D0F4800B2C27F /* HMMemberShip2Command.m in Sources */,
                                F4A9E8001D045C0E00F91746 /* HMBridgeViewController.m in Sources */,
                                F4AA06101931869E00844688 /* HMBattleResultCommand.m in Sources */,
                                F4B37EF019FADFC9002F371A /* HMIgnoreZeroTransformer.m in Sources */,
-                               F49688641B3AFE4900D3CEDE /* HMProgressPanel.m in Sources */,
+                               F4AC136F1E0963DB00851147 /* HMProgressPanel.swift in Sources */,
                                F4BEEFE91B0CE312004702B8 /* HMAPIResponse.m in Sources */,
+                               F4AC136D1E0802C000851147 /* HMPreferencePanelController.swift in Sources */,
                                F4B3DC4418E70B370011B4FC /* HMServerDataStore.m in Sources */,
                                F48A70501DE32847005DFC0B /* HMMapInfoCommand.m in Sources */,
                                F4AA0607192E3B6200844688 /* HMMapStartCommand.m in Sources */,
                                F4B37EF319FBBBED002F371A /* HMRemodelSlotCommand.m in Sources */,
                                F495462E1B1894DD00E0D8D0 /* Bookmark.xcdatamodeld in Sources */,
                                F4B414FB18B1FB6C00468DAF /* HMMasterMapCellCommand.m in Sources */,
-                               F4B3DC2E18E07B680011B4FC /* HMHistoryWindowController.m in Sources */,
                                F4D6BCA91AA298FD00742FEB /* HMShipDetailViewController.m in Sources */,
-                               F4A3AD9219BDDD8E00FDBF80 /* HMPreferencePanelController.m in Sources */,
                                F4B2A08F1A1F9C2100D2EF12 /* HMExternalBrowserWindowController.m in Sources */,
                                F4B3DC2118DECF570011B4FC /* HMTSVSupport.m in Sources */,
                                F4B1E30819C73B6A00805879 /* HMSuppliesCell.m in Sources */,
                                F4AA05FE192B932E00844688 /* HMTemporaryDataStore.m in Sources */,
                                F48A705C1DE58A38005DFC0B /* HMKCAirBase+CoreDataClass.m in Sources */,
                                F4F388C21C140AFB00508549 /* HMResourceViewController.m in Sources */,
-                               F4B37EFD19FC8D98002F371A /* HMUpgradableShipsWindowController.m in Sources */,
                                F4B414F818B1D35800468DAF /* HMMasterMissionCommand.m in Sources */,
+                               F45F3BE31E06A60A0009434E /* HMUpgradableShipsWindowController.swift in Sources */,
                                F4E33B5818BF5F67005B8C07 /* HMMemberSlotItemCommand.m in Sources */,
                                F4C1190B18A74DF0005D5B25 /* HMJSONCommand.m in Sources */,
                                F48A70671DE5D62C005DFC0B /* HMOrderedSetToArrayTransformer.m in Sources */,
                                F4A5D32B1CD9CAA70024A6F0 /* HMBorderTextField.m in Sources */,
                                F4B414EF18B0BF1A00468DAF /* HMMasterMapInfoCommand.m in Sources */,
                                F4B3DC1B18DEAB5E0011B4FC /* HMKaihatuHistory.m in Sources */,
-                               F4131EDC190FEBCC004F7F9A /* HMSlotItemWindowController.m in Sources */,
+                               F4D05BC61E0ABD6800688D66 /* HMSlotItemWindowController.swift in Sources */,
                                F4D2CBCB18B05E58000EBC59 /* HMMaserShipCommand.m in Sources */,
                                F4513EFA18BB699700073552 /* HMShipWindowController.m in Sources */,
                                F42680121943E92D00B2C27F /* HMKCShipObject+Extensions.m in Sources */,
                                F431E9761DF3AC1C00FB56AE /* HMSetActionCommand.m in Sources */,
                                F46F104118A9B85E0063E503 /* HMJSONNode.m in Sources */,
                                F4BEEFDB1B0A219E004702B8 /* HMShipDeckCommand.m in Sources */,
-                               F42CBB261D21583C004C2AE2 /* HMHistoryItemCleaner.m in Sources */,
                                F43F3D461A33F7D400D6DAF7 /* HMResetSortieCommand.m in Sources */,
                                F4131ECF190F5C08004F7F9A /* HMStoreCreateSlotItemHistoryCommand.m in Sources */,
                                F4AA05FB192B92C800844688 /* Temporary.xcdatamodeld in Sources */,
                                F4F6E80F1B2C25D20008B66E /* HMStrengthenListItemCellView.m in Sources */,
                                F424A7001BC8C10C0096C431 /* HMFailedCommand.m in Sources */,
                                F49546261B1355EC00E0D8D0 /* HMBookmarkItem.m in Sources */,
+                               F4AC13711E096A7B00851147 /* HMHistoryWindowController.swift in Sources */,
                                F49828FC1902A226000D6BBE /* HMStrokeTextFieldCell.m in Sources */,
                                F43769D61ADE86B200DE6204 /* HMQuestListCommand.m in Sources */,
                                F4A3AD8B19B9BE7A00FDBF80 /* HMMaskSelectView.m in Sources */,
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+                               CLANG_ENABLE_MODULES = YES;
                                COMBINE_HIDPI_IMAGES = YES;
                                GCC_PRECOMPILE_PREFIX_HEADER = YES;
                                GCC_PREFIX_HEADER = "KCD/KCD-Prefix.pch";
                                        "COREDATA_STORE_TYPE=0",
                                );
                                INFOPLIST_FILE = "KCD/KCD-Info.plist";
+                               LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
                                MACOSX_DEPLOYMENT_TARGET = 10.11;
                                PRODUCT_BUNDLE_IDENTIFIER = "com.masakih.${PRODUCT_NAME:rfc1034identifier}";
                                PRODUCT_NAME = "$(TARGET_NAME)";
+                               SWIFT_OBJC_BRIDGING_HEADER = "KCD/KCD-Bridging-Header.h";
+                               SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+                               SWIFT_VERSION = 3.0;
                                WRAPPER_EXTENSION = app;
                        };
                        name = Debug;
                        isa = XCBuildConfiguration;
                        buildSettings = {
                                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
+                               CLANG_ENABLE_MODULES = YES;
                                COMBINE_HIDPI_IMAGES = YES;
                                GCC_PRECOMPILE_PREFIX_HEADER = YES;
                                GCC_PREFIX_HEADER = "KCD/KCD-Prefix.pch";
                                        "UI_TEST=0",
                                );
                                INFOPLIST_FILE = "KCD/KCD-Info.plist";
+                               LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
                                MACOSX_DEPLOYMENT_TARGET = 10.11;
                                PRODUCT_BUNDLE_IDENTIFIER = "com.masakih.${PRODUCT_NAME:rfc1034identifier}";
                                PRODUCT_NAME = "$(TARGET_NAME)";
+                               SWIFT_OBJC_BRIDGING_HEADER = "KCD/KCD-Bridging-Header.h";
+                               SWIFT_VERSION = 3.0;
                                WRAPPER_EXTENSION = app;
                        };
                        name = Release;
                F4BDEB78187252F30069D0CE /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
                                BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/KCD.app/Contents/MacOS/KCD";
                                COMBINE_HIDPI_IMAGES = YES;
                                FRAMEWORK_SEARCH_PATHS = (
                F4BDEB79187252F30069D0CE /* Release */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
+                               ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
                                BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/KCD.app/Contents/MacOS/KCD";
                                COMBINE_HIDPI_IMAGES = YES;
                                FRAMEWORK_SEARCH_PATHS = (
index 9946434..a75d02a 100644 (file)
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11542" systemVersion="16B2659" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11762" systemVersion="16C67" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11542"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11762"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="HMHistoryWindowController">
+        <customObject id="-2" userLabel="File's Owner" customClass="HMHistoryWindowController" customModule="KCD">
             <connections>
                 <outlet property="dropHistoryController" destination="xvi-Qk-gPS" id="Iow-hT-qdD"/>
                 <outlet property="dropHistoryTableView" destination="VIc-m5-S1Y" id="A0i-Ve-f79"/>
                                             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                             <clipView key="contentView" id="egd-t1-HqM">
                                                 <rect key="frame" x="1" y="0.0" width="636" height="425"/>
-                                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                                <autoresizingMask key="autoresizingMask"/>
                                                 <subviews>
                                                     <tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="sequential" alternatingRowBackgroundColors="YES" autosaveName="drophistory" rowSizeStyle="automatic" headerView="GLB-Em-NKT" viewBased="YES" id="VIc-m5-S1Y">
                                                         <rect key="frame" x="0.0" y="0.0" width="636" height="408"/>
index cd2bc2c..89cd50f 100644 (file)
@@ -1,11 +1,12 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11201" systemVersion="15G1004" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11762" systemVersion="16C67" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11201"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11762"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="HMPreferencePanelController">
+        <customObject id="-2" userLabel="File's Owner" customClass="HMPreferencePanelController" customModule="KCD">
             <connections>
                 <outlet property="generalPane" destination="ROt-zH-HCQ" id="NCn-Bk-ZJU"/>
                 <outlet property="notificationPane" destination="mPf-SR-Day" id="API-qC-HZL"/>
@@ -15,7 +16,7 @@
         </customObject>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
-        <window title="環境設定" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" frameAutosaveName="" animationBehavior="default" id="F0z-JX-Cv5" customClass="NSPanel">
+        <window title="環境設定" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" id="F0z-JX-Cv5" customClass="NSPanel">
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
             <rect key="contentRect" x="196" y="240" width="486" height="231"/>
index 049974b..1184107 100644 (file)
@@ -1,10 +1,12 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="15G31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11762" systemVersion="16C67" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
     <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11762"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="HMProgressPanel">
+        <customObject id="-2" userLabel="File's Owner" customClass="HMProgressPanel" customModule="KCD">
             <connections>
                 <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
             </connections>
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES" documentModal="YES"/>
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
             <rect key="contentRect" x="196" y="240" width="363" height="72"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1440" height="900"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1680" height="1050"/>
             <view key="contentView" id="se5-gp-TjO">
-                <rect key="frame" x="0.0" y="-1" width="363" height="72"/>
+                <rect key="frame" x="0.0" y="0.0" width="363" height="72"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
                     <progressIndicator horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" maxValue="100" bezeled="NO" indeterminate="YES" style="spinning" translatesAutoresizingMaskIntoConstraints="NO" id="cIE-11-Xy4">
                         <rect key="frame" x="20" y="20" width="32" height="32"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                         <connections>
                             <binding destination="-2" name="animate" keyPath="animate" id="aFx-uA-dgm"/>
                         </connections>
                     </progressIndicator>
                     <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="wit-gM-gzn">
                         <rect key="frame" x="72" y="28" width="273" height="17"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                         <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Label" id="VM2-og-uXb">
                             <font key="font" metaFont="system"/>
                             <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
index 4309a1f..e021527 100644 (file)
@@ -1,11 +1,14 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="10117" systemVersion="15F34" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11762" systemVersion="16C67" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none">
     <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="10117"/>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11762"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="HMUpgradableShipsWindowController">
+        <customObject id="-2" userLabel="File's Owner" customClass="HMUpgradableShipsWindowController" customModule="KCD">
             <connections>
+                <outlet property="contextualMenu" destination="OdB-vZ-ESs" id="IRs-d2-hGj"/>
                 <outlet property="shipsController" destination="F7b-g4-Ndz" id="E1R-GG-SCC"/>
                 <outlet property="tableView" destination="PIl-CA-2e4" id="0qN-GZ-0ig"/>
                 <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
@@ -26,7 +29,7 @@
                         <rect key="frame" x="-1" y="0.0" width="236" height="334"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES" heightSizable="YES"/>
                         <clipView key="contentView" id="4jY-Av-DhN">
-                            <rect key="frame" x="1" y="17" width="234" height="316"/>
+                            <rect key="frame" x="1" y="0.0" width="234" height="333"/>
                             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                             <subviews>
                                 <tableView focusRingType="none" verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="firstColumnOnly" alternatingRowBackgroundColors="YES" multipleSelection="NO" autosaveName="upgradableships" headerView="ElI-vy-vtb" id="PIl-CA-2e4">
                                     </connections>
                                 </tableView>
                             </subviews>
-                            <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
                         </clipView>
                         <scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="Epy-gJ-Bnp">
                             <rect key="frame" x="1" y="119" width="223" height="15"/>
index 158d777..ca0532f 100644 (file)
@@ -8,12 +8,10 @@
 
 #import "HMAppDelegate.h"
 
+#import "KCD-Swift.h"
+
 #import "HMUserDefaults.h"
 #import "HMBroserWindowController.h"
-#import "HMHistoryWindowController.h"
-#import "HMSlotItemWindowController.h"
-#import "HMPreferencePanelController.h"
-#import "HMUpgradableShipsWindowController.h"
 #import "HMScreenshotListWindowController.h"
 #import "HMShipMasterDetailWindowController.h"
 #import "HMAirBaseWindowController.h"
@@ -25,7 +23,6 @@
 #import "HMFleetManager.h"
 
 #import "HMPeriodicNotifier.h"
-#import "HMHistoryItemCleaner.h"
 
 #import "HMTSVSupport.h"
 
index 6ebc23b..90eeb97 100644 (file)
@@ -56,7 +56,7 @@
  *
  *  @return 読み出したデータ
  */
-- (NSArray *)objectsWithEntityName:(NSString *)entityName sortDescriptors:(NSArray *)sortDescriptors predicate:(NSPredicate *)predicate error:(NSError **)error;
+- (NSArray<__kindof NSManagedObject *> *)objectsWithEntityName:(NSString *)entityName sortDescriptors:(NSArray *)sortDescriptors predicate:(NSPredicate *)predicate error:(NSError **)error;
 
 /**
  *  CoreDataからデータを読み出す
@@ -68,7 +68,7 @@
  *
  *  @return 読み出したデータ
  */
-- (NSArray *)objectsWithEntityName:(NSString *)entityName sortDescriptors:(NSArray *)sortDescriptors error:(NSError **)error predicateFormat:(NSString *)format, ...;
+- (NSArray<__kindof NSManagedObject *> *)objectsWithEntityName:(NSString *)entityName sortDescriptors:(NSArray *)sortDescriptors error:(NSError **)error predicateFormat:(NSString *)format, ...;
 
 /**
  CoreDataからデータを読み出す
@@ -78,7 +78,7 @@
  @param error エラー
  @return 読み出したデータ
  */
-- (NSArray *)objectsWithEntityName:(NSString *)entityName predicate:(NSPredicate *)predicate error:(NSError **)error;
+- (NSArray<__kindof NSManagedObject *> *)objectsWithEntityName:(NSString *)entityName predicate:(NSPredicate *)predicate error:(NSError **)error;
 
 /**
  CoreDataからデータを読み出す
@@ -89,7 +89,7 @@
  @param ... A comma-separated list of arguments to substitute into format.
  @return 読み出したデータ
  */
-- (NSArray *)objectsWithEntityName:(NSString *)entityName error:(NSError **)error predicateFormat:(NSString *)format, ...;
+- (NSArray<__kindof NSManagedObject *> *)objectsWithEntityName:(NSString *)entityName error:(NSError **)error predicateFormat:(NSString *)format, ...;
 
 - (IBAction)saveAction:(id)sender;
 
index d59cc40..ae7c888 100644 (file)
 #import <WebKit/WebKit.h>
 #import <JavaScriptCore/JavaScriptCore.h>
 
+#import "KCD-Swift.h"
+
 #import "HMAppDelegate.h"
 #import "HMUserDefaults.h"
 #import "HMScreenshotListWindowController.h"
-#import "HMProgressPanel.h"
 
 @interface HMGameViewController ()
 @property NSPoint flashTopLeft;
diff --git a/KCD/HMHistoryItemCleaner.h b/KCD/HMHistoryItemCleaner.h
deleted file mode 100644 (file)
index 50e95ae..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-//
-//  HMHistoryItemCleaner.h
-//  KCD
-//
-//  Created by Hori,Masaki on 2016/06/27.
-//  Copyright © 2016年 Hori,Masaki. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-@interface HMHistoryItemCleaner : NSObject
-
-- (void)cleanOldHistoryItems;
-
-@end
diff --git a/KCD/HMHistoryItemCleaner.m b/KCD/HMHistoryItemCleaner.m
deleted file mode 100644 (file)
index 479d5a5..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-//  HMHistoryItemCleaner.m
-//  KCD
-//
-//  Created by Hori,Masaki on 2016/06/27.
-//  Copyright © 2016年 Hori,Masaki. All rights reserved.
-//
-
-#import "HMHistoryItemCleaner.h"
-
-#import "HMUserDefaults.h"
-
-#import "HMLocalDataStore.h"
-
-
-@implementation HMHistoryItemCleaner
-
-- (void)cleanOldHistoryItems
-{
-       if(!HMStandardDefaults.cleanOldHistoryItems) return;
-       
-       HMLocalDataStore *store = [HMLocalDataStore oneTimeEditor];
-       
-       NSDate *date = [NSDate dateWithTimeIntervalSinceNow:-1 * HMStandardDefaults.cleanSiceDays * 24 * 60 * 60];
-       NSPredicate *p01 = [NSPredicate predicateWithFormat:@"date < %@", date];
-       NSPredicate *p02 = [NSPredicate predicateWithFormat:@"mark = 0 || mark = nil"];
-       NSPredicate *predicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[p01, p02]];
-       
-       NSError *error = nil;
-       NSArray<NSManagedObject *> *array = [store objectsWithEntityName:@"KaihatuHistory"
-                                                                                                                                 predicate:predicate
-                                                                                                                                         error:&error];
-       if(!error) {
-               for(NSManagedObject *obj in array) {
-                       [store deleteObject:obj];
-               }
-       } else {
-               NSLog(@"%s ERROR: KaihatuHistory, %@", __PRETTY_FUNCTION__, error);
-       }
-       
-       error = nil;
-       array = [store objectsWithEntityName:@"KenzoHistory"
-                                                          predicate:predicate
-                                                                  error:&error];
-       if(!error) {
-               for(NSManagedObject *obj in array) {
-                       [store deleteObject:obj];
-               }
-       } else {
-               NSLog(@"%s ERROR: KenzoHistory, %@", __PRETTY_FUNCTION__, error);
-       }
-       
-       NSArray *area = @[@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9"];
-       NSPredicate *p03 = [NSPredicate predicateWithFormat:@"mapArea IN %@", area];
-       predicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[predicate, p03]];
-       
-       error = nil;
-       array = [store objectsWithEntityName:@"DropShipHistory"
-                                                          predicate:predicate
-                                                                  error:&error];
-       if(!error) {
-               for(NSManagedObject *obj in array) {
-                       [store deleteObject:obj];
-               }
-       } else {
-               NSLog(@"%s ERROR: DropShipHistory, %@", __PRETTY_FUNCTION__, error);
-       }
-}
-@end
diff --git a/KCD/HMHistoryItemCleaner.swift b/KCD/HMHistoryItemCleaner.swift
new file mode 100644 (file)
index 0000000..65190c4
--- /dev/null
@@ -0,0 +1,56 @@
+//
+//  HMHistoryItemCleaner.swift
+//  KCD
+//
+//  Created by Hori,Masaki on 2016/12/18.
+//  Copyright © 2016年 Hori,Masaki. All rights reserved.
+//
+
+import Cocoa
+
+class HMHistoryItemCleaner: NSObject {
+    func cleanOldHistoryItems() {
+        guard HMStandardDefaults.cleanOldHistoryItems else {
+            return
+        }
+        guard let store = HMLocalDataStore.oneTimeEditor() else {
+            return
+        }
+        
+        let date = Date(timeIntervalSinceNow: TimeInterval(-1 * HMStandardDefaults.cleanSiceDays * 24 * 60 * 60))
+        let predicate01 = NSPredicate(format: "date < %@", argumentArray: [date])
+        let predicate02 = NSPredicate(format: "mark = 0 || mark = nil")
+        let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate01, predicate02])
+        do {
+            let kaihatuHistories = try store.objects(withEntityName: "KaihatuHistory", predicate: predicate)
+            for obj in kaihatuHistories {
+                store.delete(obj)
+            }
+        } catch (let error) {
+            print("ERROR: KaihatuHistory, \(error)")
+            return
+        }
+        
+        do {
+            let kenzoHistory = try store.objects(withEntityName: "KenzoHistory", predicate: predicate)
+            for obj in kenzoHistory {
+                store.delete(obj)
+            }
+        } catch (let error) {
+            print("ERROR: KenzoHistory, \(error)")
+            return
+        }
+        
+        let predicate03 = NSPredicate(format: "mapArea IN %@", argumentArray: [["1", "2", "3", "4", "5", "6", "7", "8", "9"]])
+        let predicate04 = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate, predicate03])
+        do {
+            let dropHistories = try store.objects(withEntityName: "DropShipHistory", predicate: predicate04)
+            for obj in dropHistories {
+                store.delete(obj)
+            }
+        } catch (let error) {
+            print("ERROR: DropShipHistory, \(error)")
+            return
+        }
+    }
+}
diff --git a/KCD/HMHistoryWindowController.h b/KCD/HMHistoryWindowController.h
deleted file mode 100644 (file)
index 182a005..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-//
-//  HMHistoryWindowController.h
-//  KCD
-//
-//  Created by Hori,Masaki on 2014/03/24.
-//  Copyright (c) 2014年 Hori,Masaki. All rights reserved.
-//
-
-#import <Cocoa/Cocoa.h>
-
-@interface HMHistoryWindowController : NSWindowController <NSTabViewDelegate>
-
-
-@end
diff --git a/KCD/HMHistoryWindowController.m b/KCD/HMHistoryWindowController.m
deleted file mode 100644 (file)
index 6f7edd1..0000000
+++ /dev/null
@@ -1,287 +0,0 @@
-//
-//  HMHistoryWindowController.m
-//  KCD
-//
-//  Created by Hori,Masaki on 2014/03/24.
-//  Copyright (c) 2014年 Hori,Masaki. All rights reserved.
-//
-
-#import "HMHistoryWindowController.h"
-
-#import "HMLocalDataStore.h"
-
-#import "HMKaihatuHistory.h"
-#import "HMKenzoHistory.h"
-#import "HMDropShipHistory.h"
-
-
-typedef NS_ENUM(NSUInteger, HMHistoryWindowTabIndex) {
-       kKaihatuHistoryIndex = 0,
-       kKenzoHistoryIndex = 1,
-       kDropHistoryIndex = 2,
-};
-
-@interface HMHistoryWindowController () <NSTabViewDelegate, NSTableViewDelegate>
-
-@property (readonly) NSManagedObjectContext *manageObjectContext;
-
-@property NSInteger selectedTabIndex;
-
-@property (nonatomic, strong) IBOutlet NSArrayController *kaihatuHistoryController;
-@property (nonatomic, strong) IBOutlet NSArrayController *kenzoHistoryController;
-@property (nonatomic, strong) IBOutlet NSArrayController *dropHistoryController;
-
-@property (nonatomic, weak) IBOutlet NSTableView *kaihatuHistoryTableView;
-@property (nonatomic, weak) IBOutlet NSTableView *kenzoHistoryTableView;
-@property (nonatomic, weak) IBOutlet NSTableView *dropHistoryTableView;
-
-@property (nonatomic, weak) IBOutlet NSSearchField *searchField;
-
-@property (nonatomic, strong) IBOutlet NSTouchBar *myTouchBar;
-@property (nonatomic, weak) IBOutlet NSButton *searchButton;
-
-@end
-
-@implementation HMHistoryWindowController
-
-- (id)init
-{
-       self = [super initWithWindowNibName:NSStringFromClass([self class])];
-       
-       return self;
-}
-
-- (void)windowDidLoad
-{
-    [super windowDidLoad];
-    
-       NSString *predicateFormat = @"";
-       NSArrayController *target = nil;
-       switch (self.selectedTabIndex) {
-               case kKaihatuHistoryIndex:
-                       target = self.kaihatuHistoryController;
-                       predicateFormat = @"name contains $value";
-                       break;
-               case kKenzoHistoryIndex:
-                       target = self.kenzoHistoryController;
-                       predicateFormat = @"name contains $value";
-                       break;
-               case kDropHistoryIndex:
-                       target = self.dropHistoryController;
-                       predicateFormat = @"shipName contains $value";
-                       break;
-                       
-       }
-       
-       if(!target) return;
-       
-       [self.searchField bind:NSPredicateBinding
-                                 toObject:target
-                          withKeyPath:NSFilterPredicateBinding
-                                  options:@{
-                                                        NSPredicateFormatBindingOption : predicateFormat,
-                                                        }];
-}
-
-- (NSManagedObjectContext *)manageObjectContext
-{
-       return [[HMLocalDataStore defaultManager] managedObjectContext];
-}
-
-- (IBAction)delete:(id)sender
-{
-       NSArrayController *target = nil;
-       switch (self.selectedTabIndex) {
-               case kKaihatuHistoryIndex:
-                       target = self.kaihatuHistoryController;
-                       break;
-               case kKenzoHistoryIndex:
-                       target = self.kenzoHistoryController;
-                       break;
-               case kDropHistoryIndex:
-                       target = self.dropHistoryController;
-                       break;
-                       
-       }
-       
-       if(!target) return;
-       
-       NSArray *original = [target selectedObjects];
-       NSMutableArray *objectIds = [NSMutableArray new];
-       for(NSManagedObject *object in original) {
-               [objectIds addObject:object.objectID];
-       }
-       
-       HMLocalDataStore *store = [HMLocalDataStore oneTimeEditor];
-       
-       for(NSManagedObjectID *objectID in objectIds) {
-               NSManagedObject *object = [store objectWithID:objectID];
-               [store deleteObject:object];
-       }
-}
-
-- (IBAction)addMark:(id)sender
-{
-       NSArrayController *target = nil;
-       NSTableView *targetView = nil;
-       switch (self.selectedTabIndex) {
-               case kKaihatuHistoryIndex:
-                       target = self.kaihatuHistoryController;
-                       targetView = self.kaihatuHistoryTableView;
-                       break;
-               case kKenzoHistoryIndex:
-                       target = self.kenzoHistoryController;
-                       targetView = self.kenzoHistoryTableView;
-                       break;
-               case kDropHistoryIndex:
-                       target = self.dropHistoryController;
-                       targetView = self.dropHistoryTableView;
-                       break;
-                       
-       }
-       
-       if(!target) return;
-       
-       NSArray *a = target.arrangedObjects;
-       id o = a[targetView.clickedRow];
-       
-       NSString *entityName = nil;
-       NSPredicate *predicate = nil;
-       switch (self.selectedTabIndex) {
-               case kKaihatuHistoryIndex:
-               {
-                       HMKaihatuHistory *obj = o;
-                       entityName = @"KaihatuHistory";
-                       predicate = [NSPredicate predicateWithFormat:@"date = %@ AND name = %@", obj.date, obj.name];
-                       break;
-               }
-               case kKenzoHistoryIndex:
-               {
-                       HMKenzoHistory *obj = o;
-                       entityName = @"KenzoHistory";
-                       predicate = [NSPredicate predicateWithFormat:@"date = %@ AND name = %@", obj.date, obj.name];
-                       break;
-               }
-               case kDropHistoryIndex:
-               {
-                       HMDropShipHistory *obj = o;
-                       entityName = @"DropShipHistory";
-                       predicate = [NSPredicate predicateWithFormat:@"date = %@ AND mapCell = %@", obj.date, obj.mapCell];
-                       break;
-               }
-                       
-       }
-       
-       HMLocalDataStore *store = [HMLocalDataStore oneTimeEditor];
-       NSError *error = nil;
-       NSArray<HMDropShipHistory *> *array = [store objectsWithEntityName:entityName predicate:predicate error:&error];
-       if(array.count == 0) {
-               NSLog(@"%s: ERROR", __PRETTY_FUNCTION__);
-               return;
-       }
-       
-       BOOL mark = array[0].mark.boolValue;
-       array[0].mark = mark ? @NO : @YES;
-       [store saveAction:nil];
-}
-
-- (IBAction)selectSearchField:(id)sender
-{
-    [self.window makeFirstResponder:self.searchField];
-}
-
-- (BOOL)validateMenuItem:(NSMenuItem *)menuItem
-{
-       SEL action = menuItem.action;
-       if(action == @selector(addMark:)) {
-               NSArrayController *target = nil;
-               NSTableView *targetView = nil;
-               switch (self.selectedTabIndex) {
-                       case kKaihatuHistoryIndex:
-                               target = self.kaihatuHistoryController;
-                               targetView = self.kaihatuHistoryTableView;
-                               break;
-                       case kKenzoHistoryIndex:
-                               target = self.kenzoHistoryController;
-                               targetView = self.kenzoHistoryTableView;
-                               break;
-                       case kDropHistoryIndex:
-                               target = self.dropHistoryController;
-                               targetView = self.dropHistoryTableView;
-                               break;
-                               
-               }
-               
-               if(target) {
-                       NSArray<HMDropShipHistory *> *a = target.arrangedObjects;
-                       HMDropShipHistory *o = a[targetView.clickedRow];
-                       
-                       if(o.mark.boolValue) {
-                               menuItem.title = NSLocalizedString(@"Remove mark", @"Remove history mark.");
-                       } else {
-                               menuItem.title = NSLocalizedString(@"Add mark", @"Add history mark.");
-                       }
-               }
-       }
-       
-       return YES;
-}
-
-- (NSTouchBar *)touchBar
-{
-    if(NSClassFromString(@"NSTouchBar") == Nil) return nil;
-    
-    if(self.myTouchBar) return self.myTouchBar;
-    
-    NSArray *toplevel = nil;
-    NSBundle *mainBundle = [NSBundle mainBundle];
-    [mainBundle loadNibNamed:@"HistoryWindowTouchBar"
-                       owner:self
-             topLevelObjects:&toplevel];
-    
-    return self.myTouchBar;
-}
-
-#pragma mark - NSTableViewDelegate & NSTableViewDataSource
-
-- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
-{
-       NSView *itemView = [tableView makeViewWithIdentifier:tableColumn.identifier owner:nil];
-       return itemView;
-}
-
-#pragma mark - NSTabViewDelegate
-- (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(nullable NSTabViewItem *)tabViewItem
-{
-       [self.searchField unbind:NSPredicateBinding];
-       
-       NSString *predicateFormat = @"";
-       NSArrayController *target = nil;
-       switch (self.selectedTabIndex) {
-               case kKaihatuHistoryIndex:
-                       target = self.kaihatuHistoryController;
-                       predicateFormat = @"name contains $value";
-                       break;
-               case kKenzoHistoryIndex:
-                       target = self.kenzoHistoryController;
-                       predicateFormat = @"name contains $value";
-                       break;
-               case kDropHistoryIndex:
-                       target = self.dropHistoryController;
-                       predicateFormat = @"shipName contains $value";
-                       break;
-                       
-       }
-       
-       if(!target) return;
-       
-       [self.searchField bind:NSPredicateBinding
-                                toObject:target
-                         withKeyPath:NSFilterPredicateBinding
-                                 options:@{
-                                                       NSPredicateFormatBindingOption : predicateFormat,
-                                                       }];
-}
-
-
-@end
diff --git a/KCD/HMHistoryWindowController.swift b/KCD/HMHistoryWindowController.swift
new file mode 100644 (file)
index 0000000..9fde698
--- /dev/null
@@ -0,0 +1,248 @@
+//
+//  HMHistoryWindowController.swift
+//  KCD
+//
+//  Created by Hori,Masaki on 2016/12/20.
+//  Copyright © 2016年 Hori,Masaki. All rights reserved.
+//
+
+import Cocoa
+
+fileprivate protocol Markable {
+    var marked: Bool { get set }
+}
+fileprivate extension Markable where Self: HMDropShipHistory {
+    var marked: Bool {
+        get { return mark.boolValue }
+        set { mark = NSNumber(value: newValue) }
+    }
+}
+fileprivate extension Markable where Self: HMKenzoHistory {
+    var marked: Bool {
+        get { return mark.boolValue }
+        set { mark = NSNumber(value: newValue) }
+    }
+}
+fileprivate extension Markable where Self: HMKaihatuHistory {
+    var marked: Bool {
+        get { return mark.boolValue }
+        set { mark = NSNumber(value: newValue) }
+    }
+}
+extension HMDropShipHistory: Markable {}
+extension HMKenzoHistory: Markable {}
+extension HMKaihatuHistory: Markable {}
+
+fileprivate enum HMHistoryWindowTabIndex: Int {
+    case kaihatuHistory = 0
+    case kenzoHistory = 1
+    case dropHistory = 2
+}
+
+fileprivate extension Selector {
+    static let addMark = #selector(HMHistoryWindowController.addMark(_:))
+}
+
+fileprivate struct SelectionInfo {
+    var controller: NSArrayController
+    
+    var predicateFormat: String
+    
+    var tableView: NSTableView
+    
+    var entityName: String
+    var pickUpPredicateFormat: String
+    
+    init(_ owner: HMHistoryWindowController) {
+        switch owner.swiftSelectedTabIndex {
+        case .kaihatuHistory:
+            controller = owner.kaihatuHistoryController
+            predicateFormat = "name contains $value"
+            tableView = owner.kaihatuHistoryTableView
+            entityName = "KaihatuHistory"
+            pickUpPredicateFormat = "date = %@ AND name = %@"
+        case .kenzoHistory:
+            controller = owner.kenzoHistoryController
+            predicateFormat = "name contains $value"
+            tableView = owner.kenzoHistoryTableView
+            entityName = "KenzoHistory"
+            pickUpPredicateFormat = "date = %@ AND name = %@"
+        case .dropHistory:
+            controller = owner.dropHistoryController
+            predicateFormat = "shipName contains $value"
+            tableView = owner.dropHistoryTableView
+            entityName = "DropShipHistory"
+            pickUpPredicateFormat = "date = %@ AND mapCell = %@"
+        }
+    }
+}
+
+class HMHistoryWindowController: NSWindowController {
+    
+    override var windowNibName: String! {
+        return "HMHistoryWindowController"
+    }
+    
+    override func windowDidLoad() {
+        super.windowDidLoad()
+        
+        let info = SelectionInfo(self)
+        
+        searchField.bind(NSPredicateBinding,
+                         to: info.controller,
+                         withKeyPath: NSFilterPredicateBinding,
+                         options: [NSPredicateFormatBindingOption: info.predicateFormat])
+    }
+    
+    @IBOutlet var kaihatuHistoryController: NSArrayController!
+    @IBOutlet var kenzoHistoryController: NSArrayController!
+    @IBOutlet var dropHistoryController: NSArrayController!
+    
+    @IBOutlet var kaihatuHistoryTableView: NSTableView!
+    @IBOutlet var kenzoHistoryTableView: NSTableView!
+    @IBOutlet var dropHistoryTableView: NSTableView!
+    
+    @IBOutlet var searchField: NSSearchField!
+    
+    let manageObjectContext: NSManagedObjectContext = HMLocalDataStore.default().managedObjectContext
+    
+    var selectedTabIndex: Int = 0
+        {
+        didSet {
+            swiftSelectedTabIndex = HMHistoryWindowTabIndex(rawValue: selectedTabIndex)!
+        }
+    }
+    fileprivate var swiftSelectedTabIndex: HMHistoryWindowTabIndex = .kaihatuHistory
+    
+    @IBAction func delete(_ sender: AnyObject?) {
+        let info = SelectionInfo(self)
+        
+        guard let original = info.controller.selectedObjects as? [NSManagedObject] else { return }
+        let objectIds: [NSManagedObjectID] = original.map { $0.objectID }
+        
+        let store = HMLocalDataStore.oneTimeEditor()!
+        objectIds.forEach { store.delete(store.object(with: $0)) }
+    }
+    
+    @IBAction func addMark(_ sender: AnyObject?) {
+        let info = SelectionInfo(self)
+        
+        guard let clickedObject = (info.controller.arrangedObjects as? NSArray)?.object(at: info.tableView.clickedRow) else {
+            return
+        }
+        
+        var predicate: NSPredicate? = nil
+        switch swiftSelectedTabIndex {
+        case .kaihatuHistory:
+            if let obj = clickedObject as? HMKaihatuHistory {
+                predicate = NSPredicate(format: info.pickUpPredicateFormat,
+                                        argumentArray: [obj.date, obj.name])
+            }
+        case .kenzoHistory:
+            if let obj = clickedObject as? HMKenzoHistory {
+                predicate = NSPredicate(format: info.pickUpPredicateFormat,
+                                        argumentArray: [obj.date, obj.name])
+            }
+        case .dropHistory:
+            if let obj = clickedObject as? HMDropShipHistory {
+                predicate = NSPredicate(format: info.pickUpPredicateFormat,
+                                        argumentArray: [obj.date, obj.mapCell])
+            }
+        }
+        guard predicate != nil else { return }
+        
+        let store = HMLocalDataStore.oneTimeEditor()!
+        let array: [AnyObject]
+        do {
+            array = try store.objects(withEntityName: info.entityName,
+                                      predicate: predicate!)
+        } catch let ex {
+            print("Error in addMark: \(ex)")
+            return
+        }
+        guard array.count != 0 else {
+            print("Not Found object in addMark.")
+            return
+        }
+        if var obj = array[0] as? Markable {
+            obj.marked = !obj.marked
+        }
+        store.saveAction(nil)
+    }
+    
+    override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
+        if menuItem.action == .addMark {
+            let info = SelectionInfo(self)
+            if let obj = (info.controller.arrangedObjects as? NSArray)?.object(at: info.tableView.clickedRow) as? Markable {
+                if obj.marked {
+                    menuItem.title = NSLocalizedString("Remove mark", comment: "Remove history mark.")
+                } else {
+                    menuItem.title = NSLocalizedString("Add mark", comment: "Add history mark.")
+                }
+            }
+        }
+        
+        return true
+    }
+}
+
+@available(OSX 10.12.2, *)
+fileprivate var objectForTouchBar:[Int: NSTouchBar] = [:]
+fileprivate var object1ForTouchBar:[Int: NSButton] = [:]
+
+@available(OSX 10.12.2, *)
+extension HMHistoryWindowController {
+    @IBOutlet var myTouchBar: NSTouchBar? {
+        get {
+            return objectForTouchBar[hashValue]
+        }
+        set {
+            objectForTouchBar[hashValue] = newValue
+        }
+    }
+    @IBOutlet var searchButton: NSButton? {
+        get {
+            return object1ForTouchBar[hashValue]
+        }
+        set {
+            object1ForTouchBar[hashValue] = newValue
+        }
+    }
+    
+    override var touchBar: NSTouchBar? {
+        get {
+            if let _ = myTouchBar {
+                return myTouchBar
+            }
+            var topLevel: NSArray = []
+            Bundle.main.loadNibNamed("HistoryWindowTouchBar",
+                                     owner: self,
+                                     topLevelObjects: &topLevel)
+            return myTouchBar
+        }
+        set {}
+    }
+    
+    @IBAction func selectSearchField(_ sender: AnyObject?) {
+        window!.makeFirstResponder(searchField!)
+    }
+}
+
+extension HMHistoryWindowController: NSTableViewDelegate {
+    func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
+        return tableView.make(withIdentifier: tableColumn!.identifier, owner: nil)
+    }
+}
+
+extension HMHistoryWindowController: NSTabViewDelegate {
+    func tabView(_ tabView: NSTabView, didSelect tabViewItem: NSTabViewItem?) {
+        searchField.unbind(NSPredicateBinding)
+        
+        let info = SelectionInfo(self)
+        
+        searchField.bind(NSPredicateBinding,
+                         to: info.controller,
+                         withKeyPath: NSFilterPredicateBinding,
+                         options: [NSPredicateFormatBindingOption: info.predicateFormat])
+    }
+}
diff --git a/KCD/HMPreferencePanelController.h b/KCD/HMPreferencePanelController.h
deleted file mode 100644 (file)
index 51d0d9c..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-//
-//  HMPreferencePanelController.h
-//  KCD
-//
-//  Created by Hori,Masaki on 2014/09/08.
-//  Copyright (c) 2014年 Hori,Masaki. All rights reserved.
-//
-
-#import <Cocoa/Cocoa.h>
-
-@interface HMPreferencePanelController : NSWindowController
-
-@property (readonly) NSString *screenShotSaveDirectory;
-
-
-- (IBAction)selectScreenShotSaveDirectory:(id)sender;
-
-- (IBAction)selectScreenShotSaveDirectoryPopUp:(id)sender;
-
-- (IBAction)didChangeSelection:(id)sender;
-
-@end
diff --git a/KCD/HMPreferencePanelController.m b/KCD/HMPreferencePanelController.m
deleted file mode 100644 (file)
index c82c241..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-//
-//  HMPreferencePanelController.m
-//  KCD
-//
-//  Created by Hori,Masaki on 2014/09/08.
-//  Copyright (c) 2014年 Hori,Masaki. All rights reserved.
-//
-
-#import "HMPreferencePanelController.h"
-
-#import "HMAppDelegate.h"
-#import "HMUserDefaults.h"
-
-typedef NS_ENUM(NSInteger, HMPreferencePaneType) {
-    kGeneral = 1,
-    kNotification = 2,
-};
-
-typedef NS_ENUM(NSUInteger, HMScreenShotSaveDirectoryPopUpMenuItemTag) {
-    kSaveDirectoryItem = 1000,
-    kSelectDirectoryItem = 2000,
-};
-
-@interface HMPreferencePanelController ()
-
-@property (nonatomic, strong) NSURL *screenShotSaveURL;
-
-@property (nonatomic, weak) IBOutlet NSPopUpButton *screenShotSaveDirectoryPopUp;
-@property (nonatomic, weak) IBOutlet NSView *generalPane;
-@property (nonatomic, weak) IBOutlet NSView *notificationPane;
-@end
-
-@implementation HMPreferencePanelController
-
-- (id)init
-{
-       self = [super initWithWindowNibName:NSStringFromClass([self class])];
-       return self;
-}
-
-- (void)awakeFromNib
-{
-       HMAppDelegate *appDelegate = [[NSApplication sharedApplication] delegate];
-       self.screenShotSaveDirectory = appDelegate.screenShotSaveDirectory;
-    
-    NSArray *items = self.window.toolbar.items;
-    if(items.count != 0) {
-        NSToolbarItem *item = items.firstObject;
-        self.window.toolbar.selectedItemIdentifier = item.itemIdentifier;
-        [NSApp sendAction:@selector(didChangeSelection:)
-                       to:self
-                     from:item];
-        [self.window center];
-    }
-}
-
-#pragma mark - Screen Shot
-- (NSString *)screenShotSaveDirectory
-{
-       HMAppDelegate *appDelegate = [[NSApplication sharedApplication] delegate];
-       return appDelegate.screenShotSaveDirectory;
-}
-- (void)setScreenShotSaveDirectory:(NSString *)screenShotSaveDirectory
-{
-       HMAppDelegate *appDelegate = [[NSApplication sharedApplication] delegate];
-       appDelegate.screenShotSaveDirectory = screenShotSaveDirectory;
-       
-       NSInteger index = [self.screenShotSaveDirectoryPopUp indexOfItemWithTag:kSaveDirectoryItem];
-       NSMenuItem *item = [self.screenShotSaveDirectoryPopUp itemAtIndex:index];
-       
-       NSWorkspace *ws = [NSWorkspace sharedWorkspace];
-       NSImage *icon = [ws iconForFile:screenShotSaveDirectory];
-       NSSize iconSize = [icon size];
-       CGFloat height = 16;
-       [icon setSize:NSMakeSize(iconSize.width * height / iconSize.height, height)];
-       
-       NSFileManager *fm = [NSFileManager defaultManager];
-       NSString *title = [fm displayNameAtPath:screenShotSaveDirectory];
-       
-       [item setImage:icon];
-       [item setTitle:title];
-}
-
-
-- (IBAction)selectScreenShotSaveDirectory:(id)sender
-{
-       NSOpenPanel *panel = [NSOpenPanel openPanel];
-       
-       [panel setCanChooseDirectories:YES];
-       [panel setCanChooseFiles:NO];
-       
-       [panel beginSheetModalForWindow:self.window
-                                 completionHandler:^(NSInteger result) {
-                                         if(result == NSModalResponseCancel) return;
-                                         
-                                         self.screenShotSaveDirectory = panel.URL.path;
-                                 }];
-}
-
-- (IBAction)selectScreenShotSaveDirectoryPopUp:(id)sender
-{
-       NSUInteger tag = [sender tag];
-       if(tag != kSelectDirectoryItem) return;
-       
-       NSOpenPanel *panel = [NSOpenPanel openPanel];
-       
-       [panel setCanChooseDirectories:YES];
-       [panel setCanChooseFiles:NO];
-       
-       [panel beginSheetModalForWindow:self.window
-                                 completionHandler:^(NSInteger result) {
-                                         [self.screenShotSaveDirectoryPopUp selectItemWithTag:kSaveDirectoryItem];
-                                         
-                                         if(result == NSModalResponseCancel) return;
-                                         
-                                         self.screenShotSaveDirectory = panel.URL.path;
-                                 }];
-}
-
-- (IBAction)didChangeSelection:(id)sender
-{
-    NSInteger tag = [sender tag];
-    NSView *newPane = nil;
-    switch(tag) {
-        case kGeneral:
-            newPane = self.generalPane;
-            break;
-        case kNotification:
-            newPane = self.notificationPane;
-            break;
-    }
-    
-    if(!newPane) return;
-    
-    NSToolbarItem *item = (NSToolbarItem *)sender;
-    self.window.title = item.label;
-    
-    NSArray *subviews = self.window.contentView.subviews;
-    for(NSView *subview in subviews) {
-        [subview removeFromSuperview];
-    }
-    
-    NSRect windowRect = self.window.frame;
-    NSRect newWindowRect = [self.window frameRectForContentRect:newPane.frame];
-    newWindowRect.origin.x = windowRect.origin.x;
-    newWindowRect.origin.y = windowRect.origin.y + windowRect.size.height - newWindowRect.size.height;
-    [self.window setFrame:newWindowRect display:YES animate:YES];
-    
-    [self.window.contentView addSubview:newPane];
-}
-
-@end
diff --git a/KCD/HMPreferencePanelController.swift b/KCD/HMPreferencePanelController.swift
new file mode 100644 (file)
index 0000000..0803f96
--- /dev/null
@@ -0,0 +1,110 @@
+//
+//  HMPreferencePanelController.swift
+//  KCD
+//
+//  Created by Hori,Masaki on 2016/12/19.
+//  Copyright © 2016年 Hori,Masaki. All rights reserved.
+//
+
+import Cocoa
+
+enum PreferencesPaneType: Int {
+    case general = 1
+    case notification = 2
+}
+enum ScreenshotSaveDirectoryPopupMenuItemTag: Int {
+    case saveDirectory = 1000
+    case selectDiretory = 2000
+}
+
+private extension Selector {
+    static let didChangeSelection = #selector(HMPreferencePanelController.didChangeSelection(_:))
+}
+
+class HMPreferencePanelController: NSWindowController {
+    
+    override var windowNibName: String! {
+        return "HMPreferencePanelController"
+    }
+    override func windowDidLoad() {
+        super.windowDidLoad()
+        
+        let appDelegate: HMAppDelegate = NSApplication.shared().delegate as! HMAppDelegate
+        screenShotSaveDirectory = appDelegate.screenShotSaveDirectory
+        guard let items = window!.toolbar?.items else { return }
+        guard items.count != 0 else { return }
+        guard let item = items.first else { return }
+        window!.toolbar!.selectedItemIdentifier = item.itemIdentifier
+        NSApplication.shared().sendAction(.didChangeSelection,
+                                          to: self,
+                                          from: item)
+        
+        window!.center()
+    }
+    
+    @IBOutlet var screenShotSaveDirectoryPopUp: NSPopUpButton!
+    @IBOutlet var generalPane: NSView!
+    @IBOutlet var notificationPane: NSView!
+    
+    private(set) var screenShotSaveDirectory: String {
+        get {
+            let appDelegate: HMAppDelegate = NSApplication.shared().delegate as! HMAppDelegate
+            return appDelegate.screenShotSaveDirectory
+        }
+        set {
+            let appDelegate: HMAppDelegate = NSApplication.shared().delegate as! HMAppDelegate
+            appDelegate.screenShotSaveDirectory = newValue
+            
+            let index = screenShotSaveDirectoryPopUp.indexOfItem(withTag: ScreenshotSaveDirectoryPopupMenuItemTag.saveDirectory.rawValue)
+            guard let item = screenShotSaveDirectoryPopUp.item(at: index) else { return }
+            
+            let icon = NSWorkspace.shared().icon(forFile: newValue)
+            let iconSize = icon.size
+            let height: Double = 16
+            icon.size = NSSize(width: Double(iconSize.width) * height / Double(iconSize.height), height: height)
+            
+            item.image = icon
+            item.title = FileManager.default.displayName(atPath: newValue)
+        }
+    }
+    
+    @IBAction func selectScreenShotSaveDirectoryPopUp(_ sender: AnyObject?) {
+        guard let tag = sender?.tag else { return }
+        guard ScreenshotSaveDirectoryPopupMenuItemTag.selectDiretory.rawValue == tag else { return }
+        
+        let panel = NSOpenPanel()
+        panel.canChooseDirectories = true
+        panel.canChooseFiles = false
+        panel.beginSheetModal(for: window!) {
+            self.screenShotSaveDirectoryPopUp.selectItem(withTag: ScreenshotSaveDirectoryPopupMenuItemTag.saveDirectory.rawValue)
+            guard $0 != NSModalResponseCancel else { return }
+            guard let path = panel.url?.path else { return }
+            self.screenShotSaveDirectory = path
+        }
+    }
+    
+    @IBAction func didChangeSelection(_ sender: AnyObject?) {
+        guard let tag = sender?.tag else { return }
+        var newPane: NSView?
+        switch PreferencesPaneType(rawValue: tag)! {
+        case .general:
+            newPane = generalPane
+        case .notification:
+            newPane = notificationPane
+        }
+        guard let pane = newPane else { return }
+        guard let item = sender as? NSToolbarItem else { return }
+        window?.title = item.label
+        
+        for subview in window!.contentView!.subviews {
+            subview.removeFromSuperview()
+        }
+        
+        let windowRect = window!.frame
+        var newWindowRect = window!.frameRect(forContentRect: pane.frame)
+        newWindowRect.origin.x = windowRect.origin.x
+        newWindowRect.origin.y = windowRect.origin.y + windowRect.size.height - newWindowRect.size.height
+        window!.setFrame(newWindowRect, display: true, animate: true)
+        window!.contentView?.addSubview(pane)
+    }
+}
diff --git a/KCD/HMProgressPanel.h b/KCD/HMProgressPanel.h
deleted file mode 100644 (file)
index 95945ea..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-//
-//  HMProgressPanel.h
-//  KCD
-//
-//  Created by Hori,Masaki on 2015/06/25.
-//  Copyright (c) 2015年 Hori,Masaki. All rights reserved.
-//
-
-#import <Cocoa/Cocoa.h>
-
-@interface HMProgressPanel : NSWindowController
-
-@property (nonatomic, copy) NSString *title;
-@property (nonatomic, copy) NSString *message;
-@property BOOL animate;
-
-@end
diff --git a/KCD/HMProgressPanel.m b/KCD/HMProgressPanel.m
deleted file mode 100644 (file)
index 30822f2..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-//
-//  HMProgressPanel.m
-//  KCD
-//
-//  Created by Hori,Masaki on 2015/06/25.
-//  Copyright (c) 2015年 Hori,Masaki. All rights reserved.
-//
-
-#import "HMProgressPanel.h"
-
-@interface HMProgressPanel ()
-
-@end
-
-@implementation HMProgressPanel
-
-- (instancetype)init
-{
-       self = [super initWithWindowNibName:NSStringFromClass([self class])];
-       return self;
-}
-@end
diff --git a/KCD/HMProgressPanel.swift b/KCD/HMProgressPanel.swift
new file mode 100644 (file)
index 0000000..34432c1
--- /dev/null
@@ -0,0 +1,20 @@
+//
+//  HMProgressPanel.swift
+//  KCD
+//
+//  Created by Hori,Masaki on 2016/12/20.
+//  Copyright © 2016年 Hori,Masaki. All rights reserved.
+//
+
+import Cocoa
+
+class HMProgressPanel: NSWindowController {
+
+    override var windowNibName: String! {
+        return "HMProgressPanel"
+    }
+    
+    var title: String = ""
+    var message: String = ""
+    var animate: Bool = false
+}
diff --git a/KCD/HMSlotItemWindowController.h b/KCD/HMSlotItemWindowController.h
deleted file mode 100644 (file)
index b547446..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-//
-//  HMSlotItemWindowController.h
-//  KCD
-//
-//  Created by Hori,Masaki on 2014/04/29.
-//  Copyright (c) 2014年 Hori,Masaki. All rights reserved.
-//
-
-#import <Cocoa/Cocoa.h>
-
-@interface HMSlotItemWindowController : NSWindowController
-
-@property (readonly) NSManagedObjectContext *managedObjectContext;
-
-@property (nonatomic, strong) NSNumber *showEquipmentType;
-@property (nonatomic, readonly) NSString *showEquipmentTypeTitle;
-@property (readonly) NSPredicate *filterPredicate;
-@end
diff --git a/KCD/HMSlotItemWindowController.m b/KCD/HMSlotItemWindowController.m
deleted file mode 100644 (file)
index dcbf040..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-//  HMSlotItemWindowController.m
-//  KCD
-//
-//  Created by Hori,Masaki on 2014/04/29.
-//  Copyright (c) 2014年 Hori,Masaki. All rights reserved.
-//
-
-#import "HMSlotItemWindowController.h"
-#import "HMUserDefaults.h"
-
-#import "HMServerDataStore.h"
-
-@interface HMSlotItemWindowController ()
-@property (nonatomic, strong) IBOutlet NSArrayController *slotItemController;
-
-@property (nonatomic, weak) IBOutlet NSSearchField *searchField;
-
-@property (nonatomic, strong) IBOutlet NSTouchBar *myTouchBar;
-
-@end
-
-@implementation HMSlotItemWindowController
-
-- (id)init
-{
-       self = [super initWithWindowNibName:NSStringFromClass([self class])];
-       return self;
-}
-
-- (void)awakeFromNib
-{
-       // refresh filter
-       self.showEquipmentType = self.showEquipmentType;
-}
-
-- (NSManagedObjectContext *)managedObjectContext
-{
-       return [HMServerDataStore defaultManager].managedObjectContext;
-}
-
-+ (NSSet *)keyPathsForValuesAffectingFilterPredicate
-{
-       return [NSSet setWithObject:@"showEquipmentType"];
-}
-+ (NSSet *)keyPathsForValuesAffectingShowEquipmentTypeTitle
-{
-       return [NSSet setWithObject:@"showEquipmentType"];
-}
-- (void)setShowEquipmentType:(NSNumber *)showEquipmentType
-{
-       HMStandardDefaults.showEquipmentType = showEquipmentType;
-       self.slotItemController.fetchPredicate = self.filterPredicate;
-}
-- (NSNumber *)showEquipmentType
-{
-       return HMStandardDefaults.showEquipmentType;
-}
-
-- (NSPredicate *)filterPredicate
-{
-       NSInteger type = HMStandardDefaults.showEquipmentType.integerValue;
-       switch (type) {
-               case -1:
-                       break;
-               case 0:
-                       return [NSPredicate predicateWithFormat:@"equippedShip.lv = NULL && extraEquippedShip.lv = NULL"];
-                       break;
-               case 1:
-                       return [NSPredicate predicateWithFormat:@"equippedShip.lv != NULL || extraEquippedShip.lv != NULL"];
-                       break;
-               default:
-                       break;
-       }
-       return nil;
-}
-- (NSString *)showEquipmentTypeTitle
-{
-       NSInteger type = HMStandardDefaults.showEquipmentType.integerValue;
-       switch (type) {
-               case -1:
-                       return NSLocalizedString(@"All", @"show equipment type All");
-                       break;
-               case 0:
-                       return NSLocalizedString(@"Unequiped", @"show equipment type Unequiped");
-                       break;
-               case 1:
-                       return NSLocalizedString(@"Equiped", @"show equipment type Equiped");
-                       break;
-               default:
-                       break;
-       }
-       return @"";
-}
-
-- (IBAction)nextShowType:(id)sender
-{
-    NSNumber *next = @((self.showEquipmentType.integerValue + 2) % 3 - 1);
-    self.showEquipmentType = next;
-}
-
-- (IBAction)selectSearchField:(id)sender
-{
-    [self.window makeFirstResponder:self.searchField];
-}
-
-- (NSTouchBar *)touchBar
-{
-    if(NSClassFromString(@"NSTouchBar") == Nil) return nil;
-    
-    if(self.myTouchBar) return self.myTouchBar;
-    
-    NSArray *toplevel = nil;
-    NSBundle *mainBundle = [NSBundle mainBundle];
-    [mainBundle loadNibNamed:@"SlotItemWindowTouchBar"
-                       owner:self
-             topLevelObjects:&toplevel];
-    
-    return self.myTouchBar;
-}
-
-
-@end
diff --git a/KCD/HMSlotItemWindowController.swift b/KCD/HMSlotItemWindowController.swift
new file mode 100644 (file)
index 0000000..576cdb0
--- /dev/null
@@ -0,0 +1,110 @@
+//
+//  HMSlotItemWindowController.swift
+//  KCD
+//
+//  Created by Hori,Masaki on 2016/12/21.
+//  Copyright © 2016年 Hori,Masaki. All rights reserved.
+//
+
+import Cocoa
+
+class HMSlotItemWindowController: NSWindowController {
+    
+    override var windowNibName: String! {
+        return "HMSlotItemWindowController"
+    }
+    
+    override func windowDidLoad() {
+        super.windowDidLoad()
+        
+        // refresh filter
+        let type = showEquipmentType
+        showEquipmentType = type
+    }
+    
+    @IBOutlet var slotItemController: NSArrayController!
+    @IBOutlet var searchField: NSSearchField!
+    
+    let managedObjectContext: NSManagedObjectContext = HMServerDataStore.default().managedObjectContext
+    
+    var showEquipmentType: Int {
+        get {
+            return Int(HMStandardDefaults.showEquipmentType)
+        }
+        set {
+            willChangeValue(forKey: "filterPredicate")
+            willChangeValue(forKey: "showEquipmentTypeTitle")
+            HMStandardDefaults.showEquipmentType = NSNumber(value: newValue)
+            didChangeValue(forKey: "showEquipmentTypeTitle")
+            didChangeValue(forKey: "filterPredicate")
+        }
+    }
+    
+    var filterPredicate: NSPredicate? {
+        get {
+            switch HMStandardDefaults.showEquipmentType {
+            case -1:
+                return nil
+            case 0:
+                return NSPredicate(format: "equippedShip.lv = NULL && extraEquippedShip.lv = NULL")
+            case 1:
+                return NSPredicate(format: "equippedShip.lv != NULL || extraEquippedShip.lv != NULL")
+            default:
+                return nil
+            }
+        }
+    }
+    
+    var showEquipmentTypeTitle: String {
+        get {
+            switch HMStandardDefaults.showEquipmentType {
+            case -1:
+                return NSLocalizedString("All", comment: "show equipment type All")
+            case 0:
+                return NSLocalizedString("Unequiped", comment: "show equipment type Unequiped")
+            case 1:
+                return NSLocalizedString("Equiped", comment: "show equipment type Equiped")
+            default:
+                return ""
+            }
+        }
+    }
+}
+
+
+@available(OSX 10.12.2, *)
+fileprivate var objectForTouchBar:[Int: NSTouchBar] = [:]
+
+@available(OSX 10.12.2, *)
+extension HMSlotItemWindowController {
+    @IBOutlet var myTouchBar: NSTouchBar? {
+        get {
+            return objectForTouchBar[hash]
+        }
+        set {
+            objectForTouchBar[hash] = newValue
+        }
+    }
+
+    override var touchBar: NSTouchBar? {
+        get {
+            if let _ = myTouchBar {
+                return myTouchBar
+            }
+            var topLevel: NSArray = []
+            Bundle.main.loadNibNamed("SlotItemWindowTouchBar",
+                                     owner: self,
+                                     topLevelObjects: &topLevel)
+            return myTouchBar
+        }
+        set {}
+    }
+    
+    @IBAction func nextShowType(_ sender: AnyObject?) {
+        let next = (showEquipmentType + 2) % 3 - 1
+        showEquipmentType = next
+    }
+    @IBAction func selectSearchField(_ sender: AnyObject?) {
+        window!.makeFirstResponder(searchField)
+    }
+}
diff --git a/KCD/HMUpgradableShipsWindowController.h b/KCD/HMUpgradableShipsWindowController.h
deleted file mode 100644 (file)
index d0af00e..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-//  HMUpgradableShipsWindowController.h
-//  KCD
-//
-//  Created by Hori,Masaki on 2014/10/26.
-//  Copyright (c) 2014年 Hori,Masaki. All rights reserved.
-//
-
-#import <Cocoa/Cocoa.h>
-
-@interface HMUpgradableShipsWindowController : NSWindowController
-
-@property BOOL showLevelOneShipInUpgradableList;
-@property BOOL showsExcludedShipInUpgradableList;
-@property (readonly) NSPredicate *filterPredicate;
-
-@end
-
-BOOL isExcludeShipID(id shipID);
diff --git a/KCD/HMUpgradableShipsWindowController.m b/KCD/HMUpgradableShipsWindowController.m
deleted file mode 100644 (file)
index f1c81f8..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-//
-//  HMUpgradableShipsWindowController.m
-//  KCD
-//
-//  Created by Hori,Masaki on 2014/10/26.
-//  Copyright (c) 2014年 Hori,Masaki. All rights reserved.
-//
-
-#import "HMUpgradableShipsWindowController.h"
-
-#import "HMAppDelegate.h"
-#import "HMServerDataStore.h"
-#import "HMUserDefaults.h"
-#import "HMKCShipObject+Extensions.h"
-
-
-static NSArray *sExcludeShiIDs = nil;
-
-@interface HMUpgradableShipsWindowController ()
-
-@property (nonatomic, weak) IBOutlet NSMenu *contextualMenu;
-@property (nonatomic, weak) IBOutlet NSTableView *tableView;
-@property (nonatomic, strong) IBOutlet NSArrayController *shipsController;
-
-@property (nonatomic, copy) NSArray *excludeShiIDs;
-@end
-
-
-BOOL isExcludeShipID(id shipID)
-{
-       if([sExcludeShiIDs containsObject:shipID]) {
-               return YES;
-       }
-       return NO;
-}
-
-@implementation HMUpgradableShipsWindowController
-
-- (id)init
-{
-       self = [super initWithWindowNibName:NSStringFromClass([self class])];
-       if(self) {
-               [self loadExcludeShipIDs];
-       }
-       return self;
-}
-
-- (NSURL *)excludeAhipIDsSaveURL
-{
-       HMAppDelegate *appDelegate = [[NSApplication sharedApplication] delegate];
-       NSURL *dir = appDelegate.supportDirectory;
-       NSURL *pathURL = [dir URLByAppendingPathComponent:@"ExcludeShipIDs"];
-       return pathURL;
-}
-- (void)saveExcludeShipIDs
-{
-       NSURL *pathURL = [self excludeAhipIDsSaveURL];
-       
-       [self.excludeShiIDs writeToURL:pathURL atomically:YES];
-}
-- (void)loadExcludeShipIDs
-{
-       NSURL *pathURL = [self excludeAhipIDsSaveURL];
-       NSArray *array = [NSArray arrayWithContentsOfURL:pathURL];
-       if(array && ![array isKindOfClass:[NSArray class]]) {
-               NSLog(@"%@ is broken.", pathURL.path);
-               array = nil;
-       }
-       self.excludeShiIDs = array ?: [NSArray array];
-}
-
-- (NSManagedObjectContext *)managedObjectContext
-{
-       return [HMServerDataStore defaultManager].managedObjectContext;
-}
-
-- (NSArray *)excludeShiIDs
-{
-       return sExcludeShiIDs;
-}
-- (void)setExcludeShiIDs:(NSArray *)excludeShiIDs
-{
-       sExcludeShiIDs = excludeShiIDs;
-       [self saveExcludeShipIDs];
-}
-
-+ (NSSet *)keyPathsForValuesAffectingFilterPredicate
-{
-       return [NSSet setWithObjects:@"showLevelOneShipInUpgradableList", @"excludeShiIDs", @"showsExcludedShipInUpgradableList", nil];
-}
-- (void)setShowLevelOneShipInUpgradableList:(BOOL)showLevelOneShipInUpgradableList
-{
-       HMStandardDefaults.showLevelOneShipInUpgradableList = showLevelOneShipInUpgradableList;
-}
-- (BOOL)showLevelOneShipInUpgradableList
-{
-       return HMStandardDefaults.showLevelOneShipInUpgradableList;
-}
-- (void)setShowsExcludedShipInUpgradableList:(BOOL)showsExcludedShipInUpgradableList
-{
-       HMStandardDefaults.showsExcludedShipInUpgradableList = showsExcludedShipInUpgradableList;
-}
-- (BOOL)showsExcludedShipInUpgradableList
-{
-       return HMStandardDefaults.showsExcludedShipInUpgradableList;
-}
-- (NSPredicate *)filterPredicate
-{
-       NSPredicate *filterPredicate = nil;
-       NSPredicate *excludeShip = nil;
-       if(!HMStandardDefaults.showLevelOneShipInUpgradableList) {
-               filterPredicate = [NSPredicate predicateWithFormat:@"lv != 1"];
-       }
-       if(!self.showsExcludedShipInUpgradableList && self.excludeShiIDs.count != 0) {
-               excludeShip = [NSPredicate predicateWithFormat:@"NOT id IN %@", self.excludeShiIDs];
-       }
-       if(filterPredicate && excludeShip) {
-               return [[NSCompoundPredicate alloc] initWithType:NSAndPredicateType
-                                                                                  subpredicates:@[filterPredicate, excludeShip]];
-       }
-       if(filterPredicate) {
-               return filterPredicate;
-       }
-       if(excludeShip ) {
-               return excludeShip;
-       }
-       return nil;
-}
-
-- (void)includeShip:(id)shipID
-{
-       NSMutableArray *array = [self.excludeShiIDs mutableCopy];
-       [array removeObject:shipID];
-       self.excludeShiIDs = array;
-}
-- (void)excludeShip:(id)shipID
-{
-       NSMutableArray *array = [self.excludeShiIDs mutableCopy];
-       [array addObject:shipID];
-       self.excludeShiIDs = array;
-}
-- (IBAction)showHideShip:(id)sender
-{
-       NSInteger row = self.tableView.clickedRow;
-       if(row == -1) return;
-       
-       HMKCShipObject *ship = [[self.shipsController arrangedObjects] objectAtIndex:row];
-       id shipID = ship.id;
-       if([self.excludeShiIDs containsObject:shipID]) {
-               [self includeShip:shipID];
-       } else {
-               [self excludeShip:shipID];
-       }
-}
-
-- (BOOL)validateMenuItem:(NSMenuItem *)menuItem
-{
-       SEL action = menuItem.action;
-       if(action == @selector(showHideShip:)) {
-               NSInteger row = self.tableView.clickedRow;
-               if(row == -1) return NO;
-               
-               HMKCShipObject *ship = [[self.shipsController arrangedObjects] objectAtIndex:row];
-               id shipID = ship.id;
-               if([self.excludeShiIDs containsObject:shipID]) {
-                       menuItem.title = NSLocalizedString(@"Show Kanmusu", @"HMUpgradableShipsWindowController menu item");
-               } else {
-                       menuItem.title = NSLocalizedString(@"Hide Kanmusu", @"HMUpgradableShipsWindowController menu item");
-               }
-               return YES;
-       }
-       
-       return NO;
-}
-
-@end
diff --git a/KCD/HMUpgradableShipsWindowController.swift b/KCD/HMUpgradableShipsWindowController.swift
new file mode 100644 (file)
index 0000000..90ad0d9
--- /dev/null
@@ -0,0 +1,150 @@
+//
+//  HMUpgradableShipsWindowController.swift
+//  KCD
+//
+//  Created by Hori,Masaki on 2016/12/18.
+//  Copyright © 2016年 Hori,Masaki. All rights reserved.
+//
+
+import Cocoa
+
+private extension Selector {
+    static let showHideShip = #selector(HMUpgradableShipsWindowController.showHideShip(_:))
+}
+
+class HMUpgradableShipsWindowController: NSWindowController {
+    
+    override var windowNibName: String! {
+        return "HMUpgradableShipsWindowController"
+    }
+    
+    override func windowDidLoad() {
+        super.windowDidLoad()
+        
+        excludeShiIDsCache = excludeShiIDs
+    }
+    
+    private static var excludeShiIDsCache: NSArray = []
+    
+    class func isExcludeShipID(_ shipID: AnyObject) -> Bool {
+        return excludeShiIDsCache.contains(shipID)
+    }
+    
+    private var excludeShiIDsCache: NSArray {
+        get {
+            return HMUpgradableShipsWindowController.excludeShiIDsCache
+        }
+        set {
+            HMUpgradableShipsWindowController.excludeShiIDsCache = newValue
+        }
+    }
+    private func isExcludeShipID(_ shipID: AnyObject) -> Bool {
+        return excludeShiIDsCache.contains(shipID)
+    }
+    
+    let managedObjectContext = HMServerDataStore.default().managedObjectContext
+    
+    @IBOutlet var contextualMenu: NSMenu!
+    @IBOutlet var tableView: NSTableView!
+    @IBOutlet var shipsController: NSArrayController!
+    
+    var showLevelOneShipInUpgradableList: Bool {
+        get {
+            return HMStandardDefaults.showLevelOneShipInUpgradableList
+        }
+        set {
+            HMStandardDefaults.showLevelOneShipInUpgradableList = newValue
+        }
+    }
+    var showsExcludedShipInUpgradableList: Bool {
+        get {
+            return HMStandardDefaults.showsExcludedShipInUpgradableList
+        }
+        set {
+            HMStandardDefaults.showsExcludedShipInUpgradableList = newValue
+        }
+    }
+    private var excludeShipIDsSaveURL: URL {
+        get {
+            let appDelegate = NSApplication.shared().delegate as! HMAppDelegate
+            let dir = appDelegate.supportDirectory
+            return dir!.appendingPathComponent("ExcludeShipIDs")
+        }
+    }
+    var excludeShiIDs: NSArray {
+        get {
+            return NSArray(contentsOf: excludeShipIDsSaveURL) ?? []
+        }
+        set {
+            willChangeValue(forKey: "filterPredicate")
+            newValue.write(to: excludeShipIDsSaveURL, atomically: true)
+            HMUpgradableShipsWindowController.excludeShiIDsCache = newValue
+            didChangeValue(forKey: "filterPredicate")
+        }
+    }
+    private func includeShip(shipID: AnyObject) {
+        let array: NSMutableArray = excludeShiIDsCache.mutableCopy() as! NSMutableArray
+        array.remove(shipID)
+        excludeShiIDs = array
+    }
+    private func excludeShip(shipID: AnyObject) {
+        let array: NSMutableArray = excludeShiIDsCache.mutableCopy() as! NSMutableArray
+        array.add(shipID)
+        excludeShiIDs = array
+    }
+    
+    dynamic class func keyPathsForValuesAffectingFilterPredicate() -> NSSet {
+        return NSSet(objects: "showLevelOneShipInUpgradableList", "showsExcludedShipInUpgradableList")
+    }
+    dynamic var filterPredicate: NSPredicate? {
+        get {
+            var filterPredicate: NSPredicate? = nil
+            var excludeShip: NSPredicate? = nil
+            if showLevelOneShipInUpgradableList == false {
+                filterPredicate = NSPredicate(format: "lv != 1")
+            }
+            if showsExcludedShipInUpgradableList == false && excludeShiIDs.count != 0 {
+                excludeShip = NSPredicate(format: "NOT id IN %@", argumentArray: [excludeShiIDs])
+            }
+            if filterPredicate != nil && excludeShip != nil {
+                return NSCompoundPredicate(andPredicateWithSubpredicates: [filterPredicate!, excludeShip!])
+            }
+            if filterPredicate != nil { return filterPredicate }
+            if excludeShip != nil { return excludeShip }
+            
+            return nil
+        }
+    }
+    
+    @IBAction func showHideShip(_ sender: AnyObject?) {
+        let row = tableView.clickedRow
+        guard row != -1 else { return }
+        guard let a = shipsController.arrangedObjects as? NSArray else { return }
+        guard let ship = a.object(at: row) as? HMKCShipObject else { return }
+        guard let shipID = ship.id else { return }
+        if isExcludeShipID(shipID) {
+            includeShip(shipID: shipID)
+        } else {
+            excludeShip(shipID: shipID)
+        }
+    }
+    
+    override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
+        if menuItem.action == .showHideShip {
+            let row = tableView.clickedRow
+            guard row != -1 else { return false }
+            guard let a = shipsController.arrangedObjects as? NSArray else { return false }
+            guard let ship = a.object(at: row) as? HMKCShipObject else { return false }
+            guard let shipID = ship.id else { return false }
+            if isExcludeShipID(shipID) {
+                menuItem.title = NSLocalizedString("Show Kanmusu", comment: "HMUpgradableShipsWindowController menu item")
+            } else {
+                menuItem.title = NSLocalizedString("Hide Kanmusu", comment: "HMUpgradableShipsWindowController menu item")
+            }
+            
+            return true
+        }
+        
+        return false
+    }
+}
index 52d56d8..031ae12 100644 (file)
@@ -8,8 +8,7 @@
 
 #import "HMUpgradeShipExcludeColorTransformer.h"
 
-#import "HMUpgradableShipsWindowController.h"
-
+#import "KCD-Swift.h"
 
 @implementation HMUpgradeShipExcludeColorTransformer
 + (void)load
@@ -30,7 +29,7 @@
 
 - (id)transformedValue:(id)value
 {
-       if(isExcludeShipID(value)) {
+    if([HMUpgradableShipsWindowController isExcludeShipID:value]) {
                return [NSColor lightGrayColor];
        }
        return [NSColor controlTextColor];
index 94a943e..ae12c7a 100644 (file)
@@ -1,14 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11542" systemVersion="16B2659" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11762" systemVersion="16C67" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
         <plugIn identifier="com.apple.InterfaceBuilder.CocoaDFRPlugin" version="7104"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11542"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11762"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
         <capability name="the Touch Bar" message="Use a version of macOS with Touch Bar support." minToolsVersion="8.1" minSystemVersion="10.12.1" requiredIntegratedClassName="NSTouchBar"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="HMHistoryWindowController">
+        <customObject id="-2" userLabel="File's Owner" customClass="HMHistoryWindowController" customModule="KCD">
             <connections>
                 <outlet property="myTouchBar" destination="6zi-UH-Fiy" id="0fR-6K-oG1"/>
                 <outlet property="searchButton" destination="zwm-UM-SpA" id="ips-An-Ehr"/>
@@ -40,7 +40,7 @@
                 <touchBarItem id="X83-Wd-05k">
                     <viewController key="viewController" id="Lek-zg-1B1">
                         <button key="view" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zwm-UM-SpA">
-                            <rect key="frame" x="0.0" y="0.0" width="144" height="30"/>
+                            <rect key="frame" x="0.0" y="0.0" width="72" height="30"/>
                             <buttonCell key="cell" type="push" bezelStyle="rounded" image="NSTouchBarSearchTemplate" imagePosition="only" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="uOd-QH-aXS">
                                 <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                                 <font key="font" metaFont="system"/>
@@ -56,6 +56,6 @@
         </touchBar>
     </objects>
     <resources>
-        <image name="NSTouchBarSearchTemplate" width="128" height="128"/>
+        <image name="NSTouchBarSearchTemplate" width="19" height="30"/>
     </resources>
 </document>
diff --git a/KCD/KCD-Bridging-Header.h b/KCD/KCD-Bridging-Header.h
new file mode 100644 (file)
index 0000000..f7db7ce
--- /dev/null
@@ -0,0 +1,17 @@
+//
+//  Use this file to import your target's public headers that you would like to expose to Swift.
+//
+
+#import "HMAppDelegate.h"
+#import "HMUserDefaults.h"
+
+
+#import "HMServerDataStore.h"
+#import "HMLocalDataStore.h"
+
+
+#import "HMKCShipObject+Extensions.h"
+
+#import "HMKaihatuHistory.h"
+#import "HMKenzoHistory.h"
+#import "HMDropShipHistory.h"