diff --git a/Source/Modules/AppDelegate.swift b/Source/Modules/AppDelegate.swift index e7f66e06..09e2fb05 100644 --- a/Source/Modules/AppDelegate.swift +++ b/Source/Modules/AppDelegate.swift @@ -24,9 +24,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele } public let updateSputnik = UpdateSputnik() - private var ctlClientListMgrInstance: ctlClientListMgr? - private var ctlPrefWindowInstance: ctlPrefWindow? - private var ctlAboutWindowInstance: ctlAboutWindow? // New About Window public var folderMonitor = FolderMonitor( url: URL(fileURLWithPath: LMMgr.dataFolderPath(isDefaultFolder: false)) ) @@ -90,40 +87,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele } } - func showClientListMgr() { - if ctlClientListMgrInstance == nil { - ctlClientListMgrInstance = ctlClientListMgr.init(windowNibName: "frmClientListMgr") - } - ctlClientListMgrInstance?.window?.center() - ctlClientListMgrInstance?.window?.orderFrontRegardless() // 逼著屬性視窗往最前方顯示 - ctlClientListMgrInstance?.window?.level = .statusBar - ctlClientListMgrInstance?.window?.titlebarAppearsTransparent = true - NSApp.setActivationPolicy(.accessory) - } - - func showPreferences() { - if ctlPrefWindowInstance == nil { - ctlPrefWindowInstance = ctlPrefWindow.init(windowNibName: "frmPrefWindow") - } - ctlPrefWindowInstance?.window?.center() - ctlPrefWindowInstance?.window?.orderFrontRegardless() // 逼著屬性視窗往最前方顯示 - ctlPrefWindowInstance?.window?.level = .statusBar - ctlPrefWindowInstance?.window?.titlebarAppearsTransparent = true - NSApp.setActivationPolicy(.accessory) - } - - // New About Window - func showAbout() { - if ctlAboutWindowInstance == nil { - ctlAboutWindowInstance = ctlAboutWindow.init(windowNibName: "frmAboutWindow") - } - ctlAboutWindowInstance?.window?.center() - ctlAboutWindowInstance?.window?.orderFrontRegardless() // 逼著關於視窗往最前方顯示 - ctlAboutWindowInstance?.window?.level = .statusBar - ctlAboutWindowInstance?.window?.titlebarAppearsTransparent = true - NSApp.setActivationPolicy(.accessory) - } - func selfUninstall() { currentAlertType = "Uninstall" let content = String( @@ -150,7 +113,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele // New About Window @IBAction func about(_: Any) { - (NSApp.delegate as? AppDelegate)?.showAbout() + CtlAboutWindow.show() NSApplication.shared.activate(ignoringOtherApps: true) } } diff --git a/Source/Modules/SessionCtl_Menu.swift b/Source/Modules/SessionCtl_Menu.swift index e0b482ea..44dcefc8 100644 --- a/Source/Modules/SessionCtl_Menu.swift +++ b/Source/Modules/SessionCtl_Menu.swift @@ -193,21 +193,17 @@ extension SessionCtl { extension SessionCtl { @objc public override func showPreferences(_: Any?) { if #unavailable(macOS 10.15) { - showLegacyPreferences() + CtlPrefWindow.show() } else if NSEvent.modifierFlags.contains(.option) { - showLegacyPreferences() + CtlPrefWindow.show() } else { NSApp.setActivationPolicy(.accessory) ctlPrefUI.shared.controller.show(preferencePane: Preferences.PaneIdentifier(rawValue: "General")) ctlPrefUI.shared.controller.window?.level = .statusBar + NSApp.activate(ignoringOtherApps: true) } } - public func showLegacyPreferences() { - (NSApp.delegate as? AppDelegate)?.showPreferences() - NSApp.activate(ignoringOtherApps: true) - } - @objc public func showCheatSheet(_: Any?) { guard let url = Bundle.main.url(forResource: "shortcuts", withExtension: "html") else { return } DispatchQueue.main.async { @@ -216,7 +212,7 @@ extension SessionCtl { } @objc public func showClientListMgr(_: Any?) { - (NSApp.delegate as? AppDelegate)?.showClientListMgr() + CtlClientListMgr.show() NSApp.activate(ignoringOtherApps: true) } @@ -387,7 +383,7 @@ extension SessionCtl { } @objc public func showAbout(_: Any?) { - (NSApp.delegate as? AppDelegate)?.showAbout() + CtlAboutWindow.show() NSApp.activate(ignoringOtherApps: true) } } diff --git a/Source/Modules/WindowControllers/ctlAboutWindow.swift b/Source/Modules/WindowControllers/CtlAboutWindow.swift similarity index 79% rename from Source/Modules/WindowControllers/ctlAboutWindow.swift rename to Source/Modules/WindowControllers/CtlAboutWindow.swift index 1ee16ca0..26af654d 100644 --- a/Source/Modules/WindowControllers/ctlAboutWindow.swift +++ b/Source/Modules/WindowControllers/CtlAboutWindow.swift @@ -8,11 +8,23 @@ import Cocoa -class ctlAboutWindow: NSWindowController { +class CtlAboutWindow: NSWindowController { @IBOutlet var appVersionLabel: NSTextField! @IBOutlet var appCopyrightLabel: NSTextField! @IBOutlet var appEULAContent: NSTextView! + public static var shared: CtlAboutWindow? + + static func show() { + if shared == nil { shared = CtlAboutWindow(windowNibName: "frmAboutWindow") } + guard let sharedWindow = shared?.window else { return } + sharedWindow.center() + sharedWindow.orderFrontRegardless() // 逼著視窗往最前方顯示 + sharedWindow.level = .statusBar + sharedWindow.titlebarAppearsTransparent = true + NSApp.setActivationPolicy(.accessory) + } + override func windowDidLoad() { super.windowDidLoad() diff --git a/Source/Modules/WindowControllers/ctlClientListMgr.swift b/Source/Modules/WindowControllers/CtlClientListMgr.swift similarity index 93% rename from Source/Modules/WindowControllers/ctlClientListMgr.swift rename to Source/Modules/WindowControllers/CtlClientListMgr.swift index e6dc2093..e07df6a5 100644 --- a/Source/Modules/WindowControllers/ctlClientListMgr.swift +++ b/Source/Modules/WindowControllers/CtlClientListMgr.swift @@ -8,11 +8,24 @@ import Cocoa -class ctlClientListMgr: NSWindowController, NSTableViewDelegate, NSTableViewDataSource { +class CtlClientListMgr: NSWindowController, NSTableViewDelegate, NSTableViewDataSource { @IBOutlet var tblClients: NSTableView! @IBOutlet var btnRemoveClient: NSButton! @IBOutlet var btnAddClient: NSButton! @IBOutlet var lblClientMgrWindow: NSTextField! + + public static var shared: CtlClientListMgr? + + static func show() { + if shared == nil { shared = CtlClientListMgr(windowNibName: "frmClientListMgr") } + guard let sharedWindow = shared?.window else { return } + sharedWindow.center() + sharedWindow.orderFrontRegardless() // 逼著視窗往最前方顯示 + sharedWindow.level = .statusBar + sharedWindow.titlebarAppearsTransparent = true + NSApp.setActivationPolicy(.accessory) + } + override func windowDidLoad() { super.windowDidLoad() localize() @@ -25,7 +38,7 @@ class ctlClientListMgr: NSWindowController, NSTableViewDelegate, NSTableViewData // MARK: - Implementations -extension ctlClientListMgr { +extension CtlClientListMgr { func numberOfRows(in _: NSTableView) -> Int { PrefMgr.shared.clientsIMKTextInputIncapable.count } diff --git a/Source/Modules/WindowControllers/ctlPrefWindow.swift b/Source/Modules/WindowControllers/CtlPrefWindow.swift similarity index 95% rename from Source/Modules/WindowControllers/ctlPrefWindow.swift rename to Source/Modules/WindowControllers/CtlPrefWindow.swift index e37f5b51..42d50916 100644 --- a/Source/Modules/WindowControllers/ctlPrefWindow.swift +++ b/Source/Modules/WindowControllers/CtlPrefWindow.swift @@ -25,8 +25,8 @@ extension NSToolbarItem.Identifier { // Please note that the class should be exposed using the same class name // in Objective-C in order to let IMK to see the same class name as // the "InputMethodServerPreferencesWindowControllerClass" in Info.plist. -@objc(ctlPrefWindow) -class ctlPrefWindow: NSWindowController { +@objc(CtlPrefWindow) +class CtlPrefWindow: NSWindowController { @IBOutlet var fontSizePopUpButton: NSPopUpButton! @IBOutlet var uiLanguageButton: NSPopUpButton! @IBOutlet var basicKeyboardLayoutButton: NSPopUpButton! @@ -43,7 +43,19 @@ class ctlPrefWindow: NSWindowController { @IBOutlet var vwrKeyboard: NSView! @IBOutlet var vwrDevZone: NSView! - var currentLanguageSelectItem: NSMenuItem? + public static var shared: CtlPrefWindow? + + static func show() { + if shared == nil { shared = CtlPrefWindow(windowNibName: "frmPrefWindow") } + guard let sharedWindow = shared?.window else { return } + sharedWindow.center() + sharedWindow.orderFrontRegardless() // 逼著視窗往最前方顯示 + sharedWindow.level = .statusBar + sharedWindow.titlebarAppearsTransparent = true + NSApp.setActivationPolicy(.accessory) + } + + private var currentLanguageSelectItem: NSMenuItem? override func windowDidLoad() { super.windowDidLoad() @@ -266,7 +278,7 @@ class ctlPrefWindow: NSWindowController { } // End IBAction } -extension ctlPrefWindow: NSToolbarDelegate { +extension CtlPrefWindow: NSToolbarDelegate { func use(view: NSView) { guard let window = window else { return diff --git a/Source/Resources/IME-Info.plist b/Source/Resources/IME-Info.plist index 855d4f05..b012c06e 100644 --- a/Source/Resources/IME-Info.plist +++ b/Source/Resources/IME-Info.plist @@ -124,7 +124,7 @@ SOFTWARE. InputMethodServerDelegateClass SessionCtl InputMethodServerPreferencesWindowControllerClass - ctlPrefWindow + CtlPrefWindow InputMethodSessionController SessionCtl LSApplicationCategoryType diff --git a/Source/WindowNIBs/Base.lproj/frmPrefWindow.xib b/Source/WindowNIBs/Base.lproj/frmPrefWindow.xib index 2c55edda..b044a414 100644 --- a/Source/WindowNIBs/Base.lproj/frmPrefWindow.xib +++ b/Source/WindowNIBs/Base.lproj/frmPrefWindow.xib @@ -1,12 +1,11 @@ - - + diff --git a/Source/WindowNIBs/frmClientListMgr.xib b/Source/WindowNIBs/frmClientListMgr.xib index a4b6bf0c..825d65a0 100644 --- a/Source/WindowNIBs/frmClientListMgr.xib +++ b/Source/WindowNIBs/frmClientListMgr.xib @@ -1,13 +1,12 @@ - - + @@ -43,7 +42,7 @@ - + diff --git a/UserPhraseEditor/AppDelegate.swift b/UserPhraseEditor/AppDelegate.swift index d471b5b8..f0cefbc3 100644 --- a/UserPhraseEditor/AppDelegate.swift +++ b/UserPhraseEditor/AppDelegate.swift @@ -10,8 +10,6 @@ import Cocoa @NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate { - private var ctlAboutWindowInstance: ctlAboutWindow? // New About Window - func applicationDidFinishLaunching(_: Notification) { // Insert code here to initialize your application } @@ -24,20 +22,9 @@ class AppDelegate: NSObject, NSApplicationDelegate { .terminateNow } - // New About Window - @objc func showAbout() { - if ctlAboutWindowInstance == nil { - ctlAboutWindowInstance = ctlAboutWindow.init(windowNibName: "frmAboutWindow") - } - ctlAboutWindowInstance?.window?.center() - ctlAboutWindowInstance?.window?.orderFrontRegardless() // 逼著關於視窗往最前方顯示 - ctlAboutWindowInstance?.window?.level = .statusBar - ctlAboutWindowInstance?.window?.titlebarAppearsTransparent = true - } - // Call the New About Window @IBAction func about(_: Any) { - (NSApp.delegate as? AppDelegate)?.showAbout() + CtlAboutWindow.show() NSApplication.shared.activate(ignoringOtherApps: true) } } diff --git a/UserPhraseEditor/ctlAboutWindow.swift b/UserPhraseEditor/CtlAboutWindow.swift similarity index 76% rename from UserPhraseEditor/ctlAboutWindow.swift rename to UserPhraseEditor/CtlAboutWindow.swift index 9f6ed90e..73b29e2d 100644 --- a/UserPhraseEditor/ctlAboutWindow.swift +++ b/UserPhraseEditor/CtlAboutWindow.swift @@ -8,11 +8,23 @@ import Cocoa -@objc(AboutWindow) class ctlAboutWindow: NSWindowController { +@objc(AboutWindow) class CtlAboutWindow: NSWindowController { @IBOutlet var appVersionLabel: NSTextField! @IBOutlet var appCopyrightLabel: NSTextField! @IBOutlet var appEULAContent: NSTextView! + public static var shared: CtlAboutWindow? + + static func show() { + if shared == nil { shared = CtlAboutWindow(windowNibName: "frmAboutWindow") } + guard let sharedWindow = shared?.window else { return } + sharedWindow.center() + sharedWindow.orderFrontRegardless() // 逼著視窗往最前方顯示 + sharedWindow.level = .statusBar + sharedWindow.titlebarAppearsTransparent = true + NSApp.setActivationPolicy(.accessory) + } + override func windowDidLoad() { super.windowDidLoad() diff --git a/vChewing.xcodeproj/project.pbxproj b/vChewing.xcodeproj/project.pbxproj index 298654d1..9755899c 100644 --- a/vChewing.xcodeproj/project.pbxproj +++ b/vChewing.xcodeproj/project.pbxproj @@ -11,7 +11,7 @@ 5B09307628B6FC3B0021F8C5 /* shortcuts.html in Resources */ = {isa = PBXBuildFile; fileRef = 5B09307828B6FC3B0021F8C5 /* shortcuts.html */; }; 5B0AF8B527B2C8290096FE54 /* StringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B0AF8B427B2C8290096FE54 /* StringExtension.swift */; }; 5B0EF55D28CDBF7100F8F7CE /* frmClientListMgr.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B0EF55C28CDBF7100F8F7CE /* frmClientListMgr.xib */; }; - 5B0EF55F28CDBF8E00F8F7CE /* ctlClientListMgr.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B0EF55E28CDBF8E00F8F7CE /* ctlClientListMgr.swift */; }; + 5B0EF55F28CDBF8E00F8F7CE /* CtlClientListMgr.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B0EF55E28CDBF8E00F8F7CE /* CtlClientListMgr.swift */; }; 5B21176C287539BB000443A9 /* SessionCtl_HandleStates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B21176B287539BB000443A9 /* SessionCtl_HandleStates.swift */; }; 5B21176E28753B35000443A9 /* SessionCtl_HandleDisplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B21176D28753B35000443A9 /* SessionCtl_HandleDisplay.swift */; }; 5B21177028753B9D000443A9 /* SessionCtl_Delegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B21176F28753B9D000443A9 /* SessionCtl_Delegates.swift */; }; @@ -19,7 +19,7 @@ 5B40113928D7050D00A9D4CB /* Shared in Frameworks */ = {isa = PBXBuildFile; productRef = 5B40113828D7050D00A9D4CB /* Shared */; }; 5B40113C28D71C0100A9D4CB /* Uninstaller in Frameworks */ = {isa = PBXBuildFile; productRef = 5B40113B28D71C0100A9D4CB /* Uninstaller */; }; 5B5A603028E81CC50001AE8D /* SwiftUIBackports in Frameworks */ = {isa = PBXBuildFile; productRef = 5B5A602F28E81CC50001AE8D /* SwiftUIBackports */; }; - 5B62A33D27AE7CC100A19448 /* ctlAboutWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B62A33C27AE7CC100A19448 /* ctlAboutWindow.swift */; }; + 5B62A33D27AE7CC100A19448 /* CtlAboutWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B62A33C27AE7CC100A19448 /* CtlAboutWindow.swift */; }; 5B660A8628F64A8800E5E4F6 /* SymbolMenuDefaultData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B660A8528F64A8800E5E4F6 /* SymbolMenuDefaultData.swift */; }; 5B6C141228A9D4B30098ADF8 /* SessionCtl_HandleEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B6C141128A9D4B30098ADF8 /* SessionCtl_HandleEvent.swift */; }; 5B73FB5E27B2BE1300E9BF49 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5B73FB6027B2BE1300E9BF49 /* InfoPlist.strings */; }; @@ -85,7 +85,7 @@ 5BDB7A4728D4824A001AC277 /* Tekkon in Frameworks */ = {isa = PBXBuildFile; productRef = 5BDB7A4628D4824A001AC277 /* Tekkon */; }; 5BDCBB2E27B4E67A00D0CC59 /* vChewingPhraseEditor.app in Resources */ = {isa = PBXBuildFile; fileRef = 5BD05BB827B2A429004C4F1D /* vChewingPhraseEditor.app */; }; 5BE377A0288FED8D0037365B /* InputHandler_HandleComposition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BE3779F288FED8D0037365B /* InputHandler_HandleComposition.swift */; }; - 5BE78BD927B3775B005EA1BE /* ctlAboutWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BE78BD827B37750005EA1BE /* ctlAboutWindow.swift */; }; + 5BE78BD927B3775B005EA1BE /* CtlAboutWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BE78BD827B37750005EA1BE /* CtlAboutWindow.swift */; }; 5BE78BDD27B3776D005EA1BE /* frmAboutWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5BE78BDA27B37764005EA1BE /* frmAboutWindow.xib */; }; 5BEDB721283B4C250078EB25 /* data-cns.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5BEDB71D283B4AEA0078EB25 /* data-cns.plist */; }; 5BEDB722283B4C250078EB25 /* data-zhuyinwen.plist in Resources */ = {isa = PBXBuildFile; fileRef = 5BEDB71F283B4AEA0078EB25 /* data-zhuyinwen.plist */; }; @@ -115,7 +115,7 @@ 6ACA420215FC1E5200935EF6 /* vChewing.app in Resources */ = {isa = PBXBuildFile; fileRef = 6A0D4EA215FC0D2D00ABF4B3 /* vChewing.app */; }; D427F76C278CA2B0004A2160 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D427F76B278CA1BA004A2160 /* AppDelegate.swift */; }; D47B92C027972AD100458394 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = D47B92BF27972AC800458394 /* main.swift */; }; - D47F7DCE278BFB57002F9DD7 /* ctlPrefWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = D47F7DCD278BFB57002F9DD7 /* ctlPrefWindow.swift */; }; + D47F7DCE278BFB57002F9DD7 /* CtlPrefWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = D47F7DCD278BFB57002F9DD7 /* CtlPrefWindow.swift */; }; D4A13D5A27A59F0B003BE359 /* SessionCtl_Core.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4A13D5927A59D5C003BE359 /* SessionCtl_Core.swift */; }; D4E33D8A27A838CF006DB1CF /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = D4E33D8827A838CF006DB1CF /* Localizable.strings */; }; D4E33D8F27A838F0006DB1CF /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = D4E33D8D27A838F0006DB1CF /* InfoPlist.strings */; }; @@ -191,7 +191,7 @@ 5B0AF8B427B2C8290096FE54 /* StringExtension.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = StringExtension.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; 5B0C5EDF27C7D9870078037C /* dataCompiler.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = dataCompiler.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; 5B0EF55C28CDBF7100F8F7CE /* frmClientListMgr.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = frmClientListMgr.xib; sourceTree = ""; }; - 5B0EF55E28CDBF8E00F8F7CE /* ctlClientListMgr.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ctlClientListMgr.swift; sourceTree = ""; }; + 5B0EF55E28CDBF8E00F8F7CE /* CtlClientListMgr.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CtlClientListMgr.swift; sourceTree = ""; }; 5B18BA6F27C7BD8B0056EB19 /* LICENSE-CHS.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "LICENSE-CHS.txt"; sourceTree = ""; }; 5B18BA7027C7BD8B0056EB19 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; 5B18BA7127C7BD8B0056EB19 /* README-CHS.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = "README-CHS.md"; sourceTree = ""; }; @@ -210,7 +210,7 @@ 5B3133BE280B229700A4A505 /* InputHandler_States.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = InputHandler_States.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; 5B40113A28D71B8700A9D4CB /* vChewing_Uninstaller */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_Uninstaller; path = Packages/vChewing_Uninstaller; sourceTree = ""; }; 5B5A602E28E81CB00001AE8D /* ShapsBenkau_SwiftUIBackports */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = ShapsBenkau_SwiftUIBackports; path = Packages/ShapsBenkau_SwiftUIBackports; sourceTree = ""; }; - 5B62A33C27AE7CC100A19448 /* ctlAboutWindow.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = ctlAboutWindow.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; + 5B62A33C27AE7CC100A19448 /* CtlAboutWindow.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = CtlAboutWindow.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; 5B65B919284D0185007C558B /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; 5B660A8528F64A8800E5E4F6 /* SymbolMenuDefaultData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SymbolMenuDefaultData.swift; sourceTree = ""; }; 5B6C141128A9D4B30098ADF8 /* SessionCtl_HandleEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionCtl_HandleEvent.swift; sourceTree = ""; }; @@ -284,7 +284,7 @@ 5BDCBB4B27B4F6C700D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/frmAboutWindow.strings"; sourceTree = ""; }; 5BDCBB4D27B4F6C700D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/InfoPlist.strings"; sourceTree = ""; }; 5BE3779F288FED8D0037365B /* InputHandler_HandleComposition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InputHandler_HandleComposition.swift; sourceTree = ""; }; - 5BE78BD827B37750005EA1BE /* ctlAboutWindow.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = ctlAboutWindow.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; + 5BE78BD827B37750005EA1BE /* CtlAboutWindow.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = CtlAboutWindow.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; 5BE78BDB27B37764005EA1BE /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/frmAboutWindow.xib; sourceTree = ""; }; 5BE78BDF27B37968005EA1BE /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/frmAboutWindow.strings; sourceTree = ""; }; 5BE8A8C4281EE65300197741 /* CONTRIBUTING.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CONTRIBUTING.md; sourceTree = ""; }; @@ -320,7 +320,7 @@ 6ACA41F215FC1D9000935EF6 /* Installer-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "Installer-Info.plist"; path = "Installer/Installer-Info.plist"; sourceTree = SOURCE_ROOT; }; D427F76B278CA1BA004A2160 /* AppDelegate.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = AppDelegate.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; D47B92BF27972AC800458394 /* main.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = main.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; - D47F7DCD278BFB57002F9DD7 /* ctlPrefWindow.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = ctlPrefWindow.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; + D47F7DCD278BFB57002F9DD7 /* CtlPrefWindow.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = CtlPrefWindow.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; D4A13D5927A59D5C003BE359 /* SessionCtl_Core.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = SessionCtl_Core.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; D4E33D8927A838CF006DB1CF /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = ""; }; D4E33D8E27A838F0006DB1CF /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -456,9 +456,9 @@ 5B62A33A27AE7C7500A19448 /* WindowControllers */ = { isa = PBXGroup; children = ( - 5B62A33C27AE7CC100A19448 /* ctlAboutWindow.swift */, - 5B0EF55E28CDBF8E00F8F7CE /* ctlClientListMgr.swift */, - D47F7DCD278BFB57002F9DD7 /* ctlPrefWindow.swift */, + 5B62A33C27AE7CC100A19448 /* CtlAboutWindow.swift */, + 5B0EF55E28CDBF8E00F8F7CE /* CtlClientListMgr.swift */, + D47F7DCD278BFB57002F9DD7 /* CtlPrefWindow.swift */, ); path = WindowControllers; sourceTree = ""; @@ -542,7 +542,7 @@ 5BD05BB927B2A429004C4F1D /* UserPhraseEditor */ = { isa = PBXGroup; children = ( - 5BE78BD827B37750005EA1BE /* ctlAboutWindow.swift */, + 5BE78BD827B37750005EA1BE /* CtlAboutWindow.swift */, 5BD05C5A27B2BB6E004C4F1D /* Resources */, 5BD05BC627B2A42A004C4F1D /* vChewingPhraseEditor.entitlements */, 5BD05C6227B2BBEF004C4F1D /* AppDelegate.swift */, @@ -1053,7 +1053,7 @@ 5BD05C6927B2BBEF004C4F1D /* WindowController.swift in Sources */, 5BD05C6627B2BBEF004C4F1D /* Document.swift in Sources */, 5BD05C6827B2BBEF004C4F1D /* Content.swift in Sources */, - 5BE78BD927B3775B005EA1BE /* ctlAboutWindow.swift in Sources */, + 5BE78BD927B3775B005EA1BE /* CtlAboutWindow.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1067,17 +1067,17 @@ 5B660A8628F64A8800E5E4F6 /* SymbolMenuDefaultData.swift in Sources */, 5BA9FD1227FEDB6B002DE248 /* suiPrefPaneExperience.swift in Sources */, 5BF56F9828C39A2700DD6839 /* IMEState.swift in Sources */, - 5B62A33D27AE7CC100A19448 /* ctlAboutWindow.swift in Sources */, + 5B62A33D27AE7CC100A19448 /* CtlAboutWindow.swift in Sources */, D47B92C027972AD100458394 /* main.swift in Sources */, D4A13D5A27A59F0B003BE359 /* SessionCtl_Core.swift in Sources */, - 5B0EF55F28CDBF8E00F8F7CE /* ctlClientListMgr.swift in Sources */, + 5B0EF55F28CDBF8E00F8F7CE /* CtlClientListMgr.swift in Sources */, 5B21177028753B9D000443A9 /* SessionCtl_Delegates.swift in Sources */, 5B21176E28753B35000443A9 /* SessionCtl_HandleDisplay.swift in Sources */, 5BA9FD1027FEDB6B002DE248 /* suiPrefPaneKeyboard.swift in Sources */, 5B3133BF280B229700A4A505 /* InputHandler_States.swift in Sources */, 5B78EE0D28A562B4009456C1 /* suiPrefPaneDevZone.swift in Sources */, 5B6C141228A9D4B30098ADF8 /* SessionCtl_HandleEvent.swift in Sources */, - D47F7DCE278BFB57002F9DD7 /* ctlPrefWindow.swift in Sources */, + D47F7DCE278BFB57002F9DD7 /* CtlPrefWindow.swift in Sources */, 5BD0113D2818543900609769 /* InputHandler_Core.swift in Sources */, 5BF56F9A28C39D1800DD6839 /* IMEStateData.swift in Sources */, 5B21176C287539BB000443A9 /* SessionCtl_HandleStates.swift in Sources */,