From e76e4da01dd29d9f5937cdbd0b9966cd0f2bf6ba Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Wed, 23 Aug 2023 00:30:48 +0800 Subject: [PATCH] Repo // Bundlize main components into a dedicated Swift package. --- Packages/vChewing_MainAssembly/Package.swift | 10 +- Packages/vChewing_MainAssembly/README.md | 2 +- .../Sources/MainAssembly}/AppDelegate.swift | 6 -- .../ChineseConverterBridge.swift | 0 .../Sources/MainAssembly/IMEApp.swift | 71 ++++++++++++++ .../Sources/MainAssembly}/IMEState.swift | 0 .../Sources/MainAssembly}/IMEStateData.swift | 0 .../MainAssembly}/InputHandler_Core.swift | 0 .../InputHandler_HandleCandidate.swift | 0 .../InputHandler_HandleComposition.swift | 0 .../InputHandler_HandleStates.swift | 0 .../InputHandler_TriageInput.swift | 0 .../Sources/MainAssembly}/LMMgr_Core.swift | 2 +- .../LMMgr_PhraseEditorDelegate.swift | 0 .../LMMgr_UserPhraseStructure.swift | 0 .../MainAssembly}/LMMgr_Utilities.swift | 0 .../Sources/MainAssembly/MainAssembly.swift | 5 - .../Sources/MainAssembly}/PrefMgr_Core.swift | 0 .../MainAssembly}/PrefMgr_Extension.swift | 0 .../MainAssembly}/SessionCtl_Core.swift | 0 .../MainAssembly}/SessionCtl_Delegates.swift | 0 .../SessionCtl_HandleDisplay.swift | 0 .../SessionCtl_HandleEvent.swift | 0 .../SessionCtl_HandleStates.swift | 0 .../MainAssembly}/SymbolMenuDefaultData.swift | 0 .../MainAssemblyTests/MainAssemblyTests.swift | 4 - Source/Modules/AppDelegateImpl.swift | 20 ++++ Source/Modules/SessionCtl_Menu.swift | 3 +- .../Modules/UIModules/PrefUI/CtlPrefUI.swift | 1 + .../UIModules/PrefUI/CtlPrefUIShared.swift | 1 + .../PrefUI/VwrPrefPaneBehavior.swift | 1 + .../PrefUI/VwrPrefPaneCandidates.swift | 1 + .../PrefUI/VwrPrefPaneCassette.swift | 1 + .../PrefUI/VwrPrefPaneDictionary.swift | 1 + .../UIModules/PrefUI/VwrPrefPaneGeneral.swift | 1 + .../PrefUI/VwrPrefPaneKeyboard.swift | 1 + .../UIModules/PrefUI/VwrPrefPanePhrases.swift | 1 + Source/Modules/UIModules/PrefUITabs.swift | 1 + .../WindowControllers/CtlAboutWindow.swift | 1 + .../WindowControllers/CtlClientListMgr.swift | 1 + .../WindowControllers/CtlPrefWindow.swift | 1 + .../CtlPrefWindow_PhraseEditor.swift | 1 + .../CtlRevLookupWindow.swift | 4 +- Source/Modules/main.swift | 64 +----------- vChewing.xcodeproj/project.pbxproj | 97 +++---------------- 45 files changed, 130 insertions(+), 172 deletions(-) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/AppDelegate.swift (98%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/ChineseConverterBridge.swift (100%) create mode 100644 Packages/vChewing_MainAssembly/Sources/MainAssembly/IMEApp.swift rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/IMEState.swift (100%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/IMEStateData.swift (100%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/InputHandler_Core.swift (100%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/InputHandler_HandleCandidate.swift (100%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/InputHandler_HandleComposition.swift (100%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/InputHandler_HandleStates.swift (100%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/InputHandler_TriageInput.swift (100%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/LMMgr_Core.swift (99%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/LMMgr_PhraseEditorDelegate.swift (100%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/LMMgr_UserPhraseStructure.swift (100%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/LMMgr_Utilities.swift (100%) delete mode 100644 Packages/vChewing_MainAssembly/Sources/MainAssembly/MainAssembly.swift rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/PrefMgr_Core.swift (100%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/PrefMgr_Extension.swift (100%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/SessionCtl_Core.swift (100%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/SessionCtl_Delegates.swift (100%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/SessionCtl_HandleDisplay.swift (100%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/SessionCtl_HandleEvent.swift (100%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/SessionCtl_HandleStates.swift (100%) rename {Source/Modules => Packages/vChewing_MainAssembly/Sources/MainAssembly}/SymbolMenuDefaultData.swift (100%) create mode 100644 Source/Modules/AppDelegateImpl.swift diff --git a/Packages/vChewing_MainAssembly/Package.swift b/Packages/vChewing_MainAssembly/Package.swift index 13006a3b..391dab5c 100644 --- a/Packages/vChewing_MainAssembly/Package.swift +++ b/Packages/vChewing_MainAssembly/Package.swift @@ -13,10 +13,11 @@ let package = Package( ), ], dependencies: [ + .package(path: "../DanielGalasko_FolderMonitor"), .package(path: "../Jad_BookmarkManager"), + .package(path: "../Qwertyyb_ShiftKeyUpChecker"), .package(path: "../vChewing_CandidateWindow"), .package(path: "../vChewing_CocoaExtension"), - .package(path: "../DanielGalasko_FolderMonitor"), .package(path: "../vChewing_Hotenka"), .package(path: "../vChewing_IMKUtils"), .package(path: "../vChewing_LangModelAssembly"), @@ -25,12 +26,11 @@ let package = Package( .package(path: "../vChewing_PhraseEditorUI"), .package(path: "../vChewing_PopupCompositionBuffer"), .package(path: "../vChewing_Shared"), - .package(path: "../Qwertyyb_ShiftKeyUpChecker"), .package(path: "../vChewing_SwiftExtension"), .package(path: "../vChewing_Tekkon"), .package(path: "../vChewing_TooltipUI"), - .package(path: "../vChewing_UpdateSputnik"), .package(path: "../vChewing_Uninstaller"), + .package(path: "../vChewing_UpdateSputnik"), ], targets: [ .target( @@ -39,8 +39,8 @@ let package = Package( .product(name: "BookmarkManager", package: "Jad_BookmarkManager"), .product(name: "CandidateWindow", package: "vChewing_CandidateWindow"), .product(name: "CocoaExtension", package: "vChewing_CocoaExtension"), - .product(name: "Hotenka", package: "vChewing_Hotenka"), .product(name: "FolderMonitor", package: "DanielGalasko_FolderMonitor"), + .product(name: "Hotenka", package: "vChewing_Hotenka"), .product(name: "IMKUtils", package: "vChewing_IMKUtils"), .product(name: "LangModelAssembly", package: "vChewing_LangModelAssembly"), .product(name: "Megrez", package: "vChewing_Megrez"), @@ -52,8 +52,8 @@ let package = Package( .product(name: "SwiftExtension", package: "vChewing_SwiftExtension"), .product(name: "Tekkon", package: "vChewing_Tekkon"), .product(name: "TooltipUI", package: "vChewing_TooltipUI"), - .product(name: "UpdateSputnik", package: "vChewing_UpdateSputnik"), .product(name: "Uninstaller", package: "vChewing_Uninstaller"), + .product(name: "UpdateSputnik", package: "vChewing_UpdateSputnik"), ] ), .testTarget( diff --git a/Packages/vChewing_MainAssembly/README.md b/Packages/vChewing_MainAssembly/README.md index 6c37b015..0e87108c 100644 --- a/Packages/vChewing_MainAssembly/README.md +++ b/Packages/vChewing_MainAssembly/README.md @@ -1,3 +1,3 @@ # MainAssembly -威注音輸入法核心元件。 +威注音輸入法主體總成模組。 diff --git a/Source/Modules/AppDelegate.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/AppDelegate.swift similarity index 98% rename from Source/Modules/AppDelegate.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/AppDelegate.swift index f3bc53d7..d3bf04ab 100644 --- a/Source/Modules/AppDelegate.swift +++ b/Packages/vChewing_MainAssembly/Sources/MainAssembly/AppDelegate.swift @@ -161,10 +161,4 @@ public extension AppDelegate { } return currentMemorySize } - - // New About Window - @IBAction func about(_: Any) { - CtlAboutWindow.show() - NSApp.popup() - } } diff --git a/Source/Modules/ChineseConverterBridge.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/ChineseConverterBridge.swift similarity index 100% rename from Source/Modules/ChineseConverterBridge.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/ChineseConverterBridge.swift diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/IMEApp.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/IMEApp.swift new file mode 100644 index 00000000..aa25feeb --- /dev/null +++ b/Packages/vChewing_MainAssembly/Sources/MainAssembly/IMEApp.swift @@ -0,0 +1,71 @@ +// (c) 2021 and onwards The vChewing Project (MIT-NTL License). +// ==================== +// This code is released under the MIT license (SPDX-License-Identifier: MIT) +// ... with NTL restriction stating that: +// No trademark license is granted to use the trade names, trademarks, service +// marks, or product names of Contributor, except as required to fulfill notice +// requirements defined in MIT License. + +import AppKit +import Shared + +// MARK: - Top-level Enums relating to Input Mode and Language Supports. + +public enum IMEApp { + // MARK: - 獲取輸入法的版本以及建置編號 + + public static let appVersionLabel: String = { + let maybeDateModified: Date? = { + guard let executableURL = Bundle.main.executableURL, + let infoDate = (try? executableURL.resourceValues(forKeys: [.contentModificationDateKey]))?.contentModificationDate + else { + return nil + } + return infoDate + }() + + func dateStringTag(date givenDate: Date) -> String { + let dateFormatter = DateFormatter() + dateFormatter.dateFormat = "yyyyMMdd.HHmm" + dateFormatter.timeZone = .init(secondsFromGMT: +28800) ?? .current + let strDate = dateFormatter.string(from: givenDate) + return strDate + } + + guard + let intBuild = Bundle.main.infoDictionary?[kCFBundleVersionKey as String] as? String, + let strVer = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String + else { + return "1.14.514 - 19190810" + } + + var theResults = ["\(strVer) Build \(intBuild)"] + + if let theDate = Bundle.main.getCodeSignedDate() { + theResults.append(dateStringTag(date: theDate)) + } else if let theDate = maybeDateModified { + theResults.append("\(dateStringTag(date: theDate)) Unsigned") + } else { + theResults.append("Unsigned") + } + + return theResults.joined(separator: " - ") + }() + + // MARK: - 輸入法的當前的簡繁體中文模式 + + public static var currentInputMode: Shared.InputMode { + .init(rawValue: PrefMgr.shared.mostRecentInputMode) ?? .imeModeNULL + } + + /// Fart or Beep? + public static func buzz() { + if PrefMgr.shared.isDebugModeEnabled { + NSSound.buzz(fart: !PrefMgr.shared.shouldNotFartInLieuOfBeep) + } else if !PrefMgr.shared.shouldNotFartInLieuOfBeep { + NSSound.buzz(fart: true) + } else { + NSSound.beep() + } + } +} diff --git a/Source/Modules/IMEState.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/IMEState.swift similarity index 100% rename from Source/Modules/IMEState.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/IMEState.swift diff --git a/Source/Modules/IMEStateData.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/IMEStateData.swift similarity index 100% rename from Source/Modules/IMEStateData.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/IMEStateData.swift diff --git a/Source/Modules/InputHandler_Core.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_Core.swift similarity index 100% rename from Source/Modules/InputHandler_Core.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_Core.swift diff --git a/Source/Modules/InputHandler_HandleCandidate.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_HandleCandidate.swift similarity index 100% rename from Source/Modules/InputHandler_HandleCandidate.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_HandleCandidate.swift diff --git a/Source/Modules/InputHandler_HandleComposition.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_HandleComposition.swift similarity index 100% rename from Source/Modules/InputHandler_HandleComposition.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_HandleComposition.swift diff --git a/Source/Modules/InputHandler_HandleStates.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_HandleStates.swift similarity index 100% rename from Source/Modules/InputHandler_HandleStates.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_HandleStates.swift diff --git a/Source/Modules/InputHandler_TriageInput.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_TriageInput.swift similarity index 100% rename from Source/Modules/InputHandler_TriageInput.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/InputHandler_TriageInput.swift diff --git a/Source/Modules/LMMgr_Core.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/LMMgr_Core.swift similarity index 99% rename from Source/Modules/LMMgr_Core.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/LMMgr_Core.swift index d76323fb..d3fbd051 100644 --- a/Source/Modules/LMMgr_Core.swift +++ b/Packages/vChewing_MainAssembly/Sources/MainAssembly/LMMgr_Core.swift @@ -185,7 +185,7 @@ public class LMMgr { } public static func reloadFactoryDictionaryFiles() { - FrmRevLookupWindow.reloadData() + Broadcaster.shared.eventForReloadingRevLookupData = .init() LMMgr.lmCHS.resetFactoryJSONModels() LMMgr.lmCHT.resetFactoryJSONModels() if PrefMgr.shared.onlyLoadFactoryLangModelsIfNeeded { diff --git a/Source/Modules/LMMgr_PhraseEditorDelegate.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/LMMgr_PhraseEditorDelegate.swift similarity index 100% rename from Source/Modules/LMMgr_PhraseEditorDelegate.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/LMMgr_PhraseEditorDelegate.swift diff --git a/Source/Modules/LMMgr_UserPhraseStructure.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/LMMgr_UserPhraseStructure.swift similarity index 100% rename from Source/Modules/LMMgr_UserPhraseStructure.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/LMMgr_UserPhraseStructure.swift diff --git a/Source/Modules/LMMgr_Utilities.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/LMMgr_Utilities.swift similarity index 100% rename from Source/Modules/LMMgr_Utilities.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/LMMgr_Utilities.swift diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/MainAssembly.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/MainAssembly.swift deleted file mode 100644 index e86e00c9..00000000 --- a/Packages/vChewing_MainAssembly/Sources/MainAssembly/MainAssembly.swift +++ /dev/null @@ -1,5 +0,0 @@ -public struct MainAssembly { - public private(set) var text = "Hello, World!" - - public init() {} -} diff --git a/Source/Modules/PrefMgr_Core.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/PrefMgr_Core.swift similarity index 100% rename from Source/Modules/PrefMgr_Core.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/PrefMgr_Core.swift diff --git a/Source/Modules/PrefMgr_Extension.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/PrefMgr_Extension.swift similarity index 100% rename from Source/Modules/PrefMgr_Extension.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/PrefMgr_Extension.swift diff --git a/Source/Modules/SessionCtl_Core.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/SessionCtl_Core.swift similarity index 100% rename from Source/Modules/SessionCtl_Core.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/SessionCtl_Core.swift diff --git a/Source/Modules/SessionCtl_Delegates.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/SessionCtl_Delegates.swift similarity index 100% rename from Source/Modules/SessionCtl_Delegates.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/SessionCtl_Delegates.swift diff --git a/Source/Modules/SessionCtl_HandleDisplay.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/SessionCtl_HandleDisplay.swift similarity index 100% rename from Source/Modules/SessionCtl_HandleDisplay.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/SessionCtl_HandleDisplay.swift diff --git a/Source/Modules/SessionCtl_HandleEvent.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/SessionCtl_HandleEvent.swift similarity index 100% rename from Source/Modules/SessionCtl_HandleEvent.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/SessionCtl_HandleEvent.swift diff --git a/Source/Modules/SessionCtl_HandleStates.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/SessionCtl_HandleStates.swift similarity index 100% rename from Source/Modules/SessionCtl_HandleStates.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/SessionCtl_HandleStates.swift diff --git a/Source/Modules/SymbolMenuDefaultData.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/SymbolMenuDefaultData.swift similarity index 100% rename from Source/Modules/SymbolMenuDefaultData.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/SymbolMenuDefaultData.swift diff --git a/Packages/vChewing_MainAssembly/Tests/MainAssemblyTests/MainAssemblyTests.swift b/Packages/vChewing_MainAssembly/Tests/MainAssemblyTests/MainAssemblyTests.swift index 8a50fed2..f80d0fcf 100644 --- a/Packages/vChewing_MainAssembly/Tests/MainAssemblyTests/MainAssemblyTests.swift +++ b/Packages/vChewing_MainAssembly/Tests/MainAssemblyTests/MainAssemblyTests.swift @@ -3,9 +3,5 @@ import XCTest final class MainAssemblyTests: XCTestCase { func testExample() throws { - // This is an example of a functional test case. - // Use XCTAssert and related functions to verify your tests produce the correct - // results. - XCTAssertEqual(MainAssembly().text, "Hello, World!") } } diff --git a/Source/Modules/AppDelegateImpl.swift b/Source/Modules/AppDelegateImpl.swift new file mode 100644 index 00000000..cb71dceb --- /dev/null +++ b/Source/Modules/AppDelegateImpl.swift @@ -0,0 +1,20 @@ +// (c) 2011 and onwards The OpenVanilla Project (MIT License). +// All possible vChewing-specific modifications are of: +// (c) 2021 and onwards The vChewing Project (MIT-NTL License). +// ==================== +// This code is released under the MIT license (SPDX-License-Identifier: MIT) +// ... with NTL restriction stating that: +// No trademark license is granted to use the trade names, trademarks, service +// marks, or product names of Contributor, except as required to fulfill notice +// requirements defined in MIT License. + +import AppKit +import MainAssembly + +extension AppDelegate { + // New About Window + @IBAction func about(_: Any) { + CtlAboutWindow.show() + NSApp.popup() + } +} diff --git a/Source/Modules/SessionCtl_Menu.swift b/Source/Modules/SessionCtl_Menu.swift index ef42c31d..55cec480 100644 --- a/Source/Modules/SessionCtl_Menu.swift +++ b/Source/Modules/SessionCtl_Menu.swift @@ -7,10 +7,9 @@ // requirements defined in MIT License. import AppKit -import LangModelAssembly +import MainAssembly import NotifierUI import SSPreferences -import UpdateSputnik private extension Bool { var state: NSControl.StateValue { diff --git a/Source/Modules/UIModules/PrefUI/CtlPrefUI.swift b/Source/Modules/UIModules/PrefUI/CtlPrefUI.swift index d5b0879e..a6ff2163 100644 --- a/Source/Modules/UIModules/PrefUI/CtlPrefUI.swift +++ b/Source/Modules/UIModules/PrefUI/CtlPrefUI.swift @@ -8,6 +8,7 @@ import BookmarkManager import IMKUtils +import MainAssembly import Shared import SwiftUI diff --git a/Source/Modules/UIModules/PrefUI/CtlPrefUIShared.swift b/Source/Modules/UIModules/PrefUI/CtlPrefUIShared.swift index bee6e912..db4bea30 100644 --- a/Source/Modules/UIModules/PrefUI/CtlPrefUIShared.swift +++ b/Source/Modules/UIModules/PrefUI/CtlPrefUIShared.swift @@ -6,6 +6,7 @@ // marks, or product names of Contributor, except as required to fulfill notice // requirements defined in MIT License. +import MainAssembly import SSPreferences import SwiftExtension import SwiftUI diff --git a/Source/Modules/UIModules/PrefUI/VwrPrefPaneBehavior.swift b/Source/Modules/UIModules/PrefUI/VwrPrefPaneBehavior.swift index 93d9fca2..8cab97e7 100644 --- a/Source/Modules/UIModules/PrefUI/VwrPrefPaneBehavior.swift +++ b/Source/Modules/UIModules/PrefUI/VwrPrefPaneBehavior.swift @@ -6,6 +6,7 @@ // marks, or product names of Contributor, except as required to fulfill notice // requirements defined in MIT License. +import MainAssembly import Shared import SSPreferences import SwiftExtension diff --git a/Source/Modules/UIModules/PrefUI/VwrPrefPaneCandidates.swift b/Source/Modules/UIModules/PrefUI/VwrPrefPaneCandidates.swift index 57930873..386a9904 100644 --- a/Source/Modules/UIModules/PrefUI/VwrPrefPaneCandidates.swift +++ b/Source/Modules/UIModules/PrefUI/VwrPrefPaneCandidates.swift @@ -6,6 +6,7 @@ // marks, or product names of Contributor, except as required to fulfill notice // requirements defined in MIT License. +import MainAssembly import Shared import SSPreferences import SwiftExtension diff --git a/Source/Modules/UIModules/PrefUI/VwrPrefPaneCassette.swift b/Source/Modules/UIModules/PrefUI/VwrPrefPaneCassette.swift index 00a4b015..6d68f233 100644 --- a/Source/Modules/UIModules/PrefUI/VwrPrefPaneCassette.swift +++ b/Source/Modules/UIModules/PrefUI/VwrPrefPaneCassette.swift @@ -7,6 +7,7 @@ // requirements defined in MIT License. import BookmarkManager +import MainAssembly import Shared import SSPreferences import SwiftExtension diff --git a/Source/Modules/UIModules/PrefUI/VwrPrefPaneDictionary.swift b/Source/Modules/UIModules/PrefUI/VwrPrefPaneDictionary.swift index 6f8ea4d3..3e97ec4d 100644 --- a/Source/Modules/UIModules/PrefUI/VwrPrefPaneDictionary.swift +++ b/Source/Modules/UIModules/PrefUI/VwrPrefPaneDictionary.swift @@ -8,6 +8,7 @@ import BookmarkManager import CocoaExtension +import MainAssembly import Shared import SSPreferences import SwiftExtension diff --git a/Source/Modules/UIModules/PrefUI/VwrPrefPaneGeneral.swift b/Source/Modules/UIModules/PrefUI/VwrPrefPaneGeneral.swift index 963d98af..9f36d7a5 100644 --- a/Source/Modules/UIModules/PrefUI/VwrPrefPaneGeneral.swift +++ b/Source/Modules/UIModules/PrefUI/VwrPrefPaneGeneral.swift @@ -6,6 +6,7 @@ // marks, or product names of Contributor, except as required to fulfill notice // requirements defined in MIT License. +import MainAssembly import Shared import SSPreferences import SwiftExtension diff --git a/Source/Modules/UIModules/PrefUI/VwrPrefPaneKeyboard.swift b/Source/Modules/UIModules/PrefUI/VwrPrefPaneKeyboard.swift index 5c49f13c..f9bf3f8e 100644 --- a/Source/Modules/UIModules/PrefUI/VwrPrefPaneKeyboard.swift +++ b/Source/Modules/UIModules/PrefUI/VwrPrefPaneKeyboard.swift @@ -7,6 +7,7 @@ // requirements defined in MIT License. import IMKUtils +import MainAssembly import Shared import SSPreferences import SwiftExtension diff --git a/Source/Modules/UIModules/PrefUI/VwrPrefPanePhrases.swift b/Source/Modules/UIModules/PrefUI/VwrPrefPanePhrases.swift index 671d4318..5b4cbca1 100644 --- a/Source/Modules/UIModules/PrefUI/VwrPrefPanePhrases.swift +++ b/Source/Modules/UIModules/PrefUI/VwrPrefPanePhrases.swift @@ -6,6 +6,7 @@ // marks, or product names of Contributor, except as required to fulfill notice // requirements defined in MIT License. +import MainAssembly import PhraseEditorUI import Shared import SSPreferences diff --git a/Source/Modules/UIModules/PrefUITabs.swift b/Source/Modules/UIModules/PrefUITabs.swift index fc732244..09f067e2 100644 --- a/Source/Modules/UIModules/PrefUITabs.swift +++ b/Source/Modules/UIModules/PrefUITabs.swift @@ -7,6 +7,7 @@ // requirements defined in MIT License. import AppKit +import MainAssembly import Shared enum PrefUITabs: String, CaseIterable { diff --git a/Source/Modules/WindowControllers/CtlAboutWindow.swift b/Source/Modules/WindowControllers/CtlAboutWindow.swift index c10e7bae..c8692f5f 100644 --- a/Source/Modules/WindowControllers/CtlAboutWindow.swift +++ b/Source/Modules/WindowControllers/CtlAboutWindow.swift @@ -7,6 +7,7 @@ // requirements defined in MIT License. import AppKit +import MainAssembly class CtlAboutWindow: NSWindowController { @IBOutlet var appVersionLabel: NSTextField! diff --git a/Source/Modules/WindowControllers/CtlClientListMgr.swift b/Source/Modules/WindowControllers/CtlClientListMgr.swift index c5f88c0f..28d7d6af 100644 --- a/Source/Modules/WindowControllers/CtlClientListMgr.swift +++ b/Source/Modules/WindowControllers/CtlClientListMgr.swift @@ -7,6 +7,7 @@ // requirements defined in MIT License. import AppKit +import MainAssembly class CtlClientListMgr: NSWindowController, NSTableViewDelegate, NSTableViewDataSource { @IBOutlet var tblClients: NSTableView! diff --git a/Source/Modules/WindowControllers/CtlPrefWindow.swift b/Source/Modules/WindowControllers/CtlPrefWindow.swift index d26cc32f..8874055b 100644 --- a/Source/Modules/WindowControllers/CtlPrefWindow.swift +++ b/Source/Modules/WindowControllers/CtlPrefWindow.swift @@ -11,6 +11,7 @@ import AppKit import BookmarkManager import IMKUtils +import MainAssembly import Shared private let kWindowTitleHeight: Double = 78 diff --git a/Source/Modules/WindowControllers/CtlPrefWindow_PhraseEditor.swift b/Source/Modules/WindowControllers/CtlPrefWindow_PhraseEditor.swift index ff9425b7..60fd5f62 100644 --- a/Source/Modules/WindowControllers/CtlPrefWindow_PhraseEditor.swift +++ b/Source/Modules/WindowControllers/CtlPrefWindow_PhraseEditor.swift @@ -9,6 +9,7 @@ import AppKit import Foundation import LangModelAssembly +import MainAssembly import PhraseEditorUI import Shared diff --git a/Source/Modules/WindowControllers/CtlRevLookupWindow.swift b/Source/Modules/WindowControllers/CtlRevLookupWindow.swift index 67f6a10c..25ebd436 100644 --- a/Source/Modules/WindowControllers/CtlRevLookupWindow.swift +++ b/Source/Modules/WindowControllers/CtlRevLookupWindow.swift @@ -8,6 +8,8 @@ import AppKit import LangModelAssembly +import MainAssembly +import Shared class CtlRevLookupWindow: NSWindowController, NSWindowDelegate { static var shared: CtlRevLookupWindow? @@ -24,7 +26,7 @@ class CtlRevLookupWindow: NSWindowController, NSWindowDelegate { shared.showWindow(shared) NSApp.popup() } - + override func windowDidLoad() { super.windowDidLoad() observation = Broadcaster.shared.observe(\.eventForReloadingRevLookupData, options: [.new]) { _, _ in diff --git a/Source/Modules/main.swift b/Source/Modules/main.swift index 57cd7b60..15c0a119 100644 --- a/Source/Modules/main.swift +++ b/Source/Modules/main.swift @@ -7,10 +7,9 @@ // requirements defined in MIT License. import AppKit -import CocoaExtension import IMKUtils import InputMethodKit -import Shared +import MainAssembly import Uninstaller switch max(CommandLine.arguments.count - 1, 0) { @@ -61,64 +60,3 @@ public let theServer = server NSApplication.shared.delegate = AppDelegate.shared _ = NSApplicationMain(CommandLine.argc, CommandLine.unsafeArgv) - -// MARK: - Top-level Enums relating to Input Mode and Language Supports. - -public enum IMEApp { - // MARK: - 獲取輸入法的版本以及建置編號 - - public static let appVersionLabel: String = { - let maybeDateModified: Date? = { - guard let executableURL = Bundle.main.executableURL, - let infoDate = (try? executableURL.resourceValues(forKeys: [.contentModificationDateKey]))?.contentModificationDate - else { - return nil - } - return infoDate - }() - - func dateStringTag(date givenDate: Date) -> String { - let dateFormatter = DateFormatter() - dateFormatter.dateFormat = "yyyyMMdd.HHmm" - dateFormatter.timeZone = .init(secondsFromGMT: +28800) ?? .current - let strDate = dateFormatter.string(from: givenDate) - return strDate - } - - guard - let intBuild = Bundle.main.infoDictionary?[kCFBundleVersionKey as String] as? String, - let strVer = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String - else { - return "1.14.514 - 19190810" - } - - var theResults = ["\(strVer) Build \(intBuild)"] - - if let theDate = Bundle.main.getCodeSignedDate() { - theResults.append(dateStringTag(date: theDate)) - } else if let theDate = maybeDateModified { - theResults.append("\(dateStringTag(date: theDate)) Unsigned") - } else { - theResults.append("Unsigned") - } - - return theResults.joined(separator: " - ") - }() - - // MARK: - 輸入法的當前的簡繁體中文模式 - - public static var currentInputMode: Shared.InputMode { - .init(rawValue: PrefMgr.shared.mostRecentInputMode) ?? .imeModeNULL - } - - /// Fart or Beep? - static func buzz() { - if PrefMgr.shared.isDebugModeEnabled { - NSSound.buzz(fart: !PrefMgr.shared.shouldNotFartInLieuOfBeep) - } else if !PrefMgr.shared.shouldNotFartInLieuOfBeep { - NSSound.buzz(fart: true) - } else { - NSSound.beep() - } - } -} diff --git a/vChewing.xcodeproj/project.pbxproj b/vChewing.xcodeproj/project.pbxproj index c91464b0..2e0d2a50 100644 --- a/vChewing.xcodeproj/project.pbxproj +++ b/vChewing.xcodeproj/project.pbxproj @@ -16,9 +16,6 @@ 5B0EF55F28CDBF8E00F8F7CE /* CtlClientListMgr.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B0EF55E28CDBF8E00F8F7CE /* CtlClientListMgr.swift */; }; 5B1C98B929436CEE0019B807 /* data-bpmf-reverse-lookup.json in Resources */ = {isa = PBXBuildFile; fileRef = 5B1C98B729436CED0019B807 /* data-bpmf-reverse-lookup.json */; }; 5B1C98BB29436CF60019B807 /* data-bpmf-reverse-lookup.json in Resources */ = {isa = PBXBuildFile; fileRef = 5B1C98B729436CED0019B807 /* data-bpmf-reverse-lookup.json */; }; - 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 */; }; 5B253E7E2945AF6700680C67 /* data-bpmf-reverse-lookup-CNS1.json in Resources */ = {isa = PBXBuildFile; fileRef = 5B253E782945AF6700680C67 /* data-bpmf-reverse-lookup-CNS1.json */; }; 5B253E7F2945AF6700680C67 /* data-bpmf-reverse-lookup-CNS3.json in Resources */ = {isa = PBXBuildFile; fileRef = 5B253E792945AF6700680C67 /* data-bpmf-reverse-lookup-CNS3.json */; }; 5B253E802945AF6700680C67 /* data-bpmf-reverse-lookup-CNS2.json in Resources */ = {isa = PBXBuildFile; fileRef = 5B253E7A2945AF6700680C67 /* data-bpmf-reverse-lookup-CNS2.json */; }; @@ -27,33 +24,24 @@ 5B253E832945AF6700680C67 /* data-bpmf-reverse-lookup-CNS5.json in Resources */ = {isa = PBXBuildFile; fileRef = 5B253E7D2945AF6700680C67 /* data-bpmf-reverse-lookup-CNS5.json */; }; 5B2E009428FD1E8100E78D6E /* VwrPrefPaneCassette.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B2E009328FD1E8100E78D6E /* VwrPrefPaneCassette.swift */; }; 5B30BF282944867800BD87A9 /* CtlRevLookupWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B30BF272944867800BD87A9 /* CtlRevLookupWindow.swift */; }; - 5B3133BF280B229700A4A505 /* InputHandler_HandleStates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B3133BE280B229700A4A505 /* InputHandler_HandleStates.swift */; }; - 5B33844D29B8980100FCB497 /* LMMgr_UserPhraseStructure.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B33844C29B8980100FCB497 /* LMMgr_UserPhraseStructure.swift */; }; - 5B33844F29B8B4C200FCB497 /* LMMgr_PhraseEditorDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B33844E29B8B4C200FCB497 /* LMMgr_PhraseEditorDelegate.swift */; }; - 5B33845129B8B61F00FCB497 /* LMMgr_Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B33845029B8B61F00FCB497 /* LMMgr_Utilities.swift */; }; 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 */; }; 5B5C8ED828FC0EA9002C93A5 /* SSPreferences in Frameworks */ = {isa = PBXBuildFile; productRef = 5B5C8ED728FC0EA9002C93A5 /* SSPreferences */; }; 5B62A33D27AE7CC100A19448 /* CtlAboutWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B62A33C27AE7CC100A19448 /* CtlAboutWindow.swift */; }; - 5B660A8628F64A8800E5E4F6 /* SymbolMenuDefaultData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B660A8528F64A8800E5E4F6 /* SymbolMenuDefaultData.swift */; }; + 5B65FB342A9518DA007EEFB0 /* MainAssembly in Frameworks */ = {isa = PBXBuildFile; productRef = 5B65FB332A9518DA007EEFB0 /* MainAssembly */; }; 5B69938C293B811F0057CB8E /* VwrPrefPanePhrases.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B69938B293B811F0057CB8E /* VwrPrefPanePhrases.swift */; }; - 5B6C141228A9D4B30098ADF8 /* SessionCtl_HandleEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B6C141128A9D4B30098ADF8 /* SessionCtl_HandleEvent.swift */; }; 5B70F4E92A0BE900005EA8C4 /* MenuIcon-TCVIM.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B70F4E52A0BE900005EA8C4 /* MenuIcon-TCVIM.png */; }; 5B70F4EA2A0BE900005EA8C4 /* MenuIcon-SCVIM.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B70F4E62A0BE900005EA8C4 /* MenuIcon-SCVIM.png */; }; 5B70F4EB2A0BE900005EA8C4 /* MenuIcon-SCVIM@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B70F4E72A0BE900005EA8C4 /* MenuIcon-SCVIM@2x.png */; }; 5B70F4EC2A0BE900005EA8C4 /* MenuIcon-TCVIM@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B70F4E82A0BE900005EA8C4 /* MenuIcon-TCVIM@2x.png */; }; 5B765F09293A253C00122315 /* PhraseEditorUI in Frameworks */ = {isa = PBXBuildFile; productRef = 5B765F08293A253C00122315 /* PhraseEditorUI */; }; - 5B782EC4280C243C007276DE /* InputHandler_HandleCandidate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B782EC3280C243C007276DE /* InputHandler_HandleCandidate.swift */; }; 5B78EE0D28A562B4009456C1 /* VwrPrefPaneDevZone.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B78EE0C28A562B4009456C1 /* VwrPrefPaneDevZone.swift */; }; 5B7BC4B027AFFBE800F66C24 /* frmPrefWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B7BC4AE27AFFBE800F66C24 /* frmPrefWindow.xib */; }; 5B7DA80328BF6BC600D7B2AD /* fixinstall.sh in Resources */ = {isa = PBXBuildFile; fileRef = 5B7DA80228BF6BBA00D7B2AD /* fixinstall.sh */; }; - 5B7F225D2808501000DDD3CB /* InputHandler_TriageInput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B7F225C2808501000DDD3CB /* InputHandler_TriageInput.swift */; }; 5B84579E2871AD2200C93B01 /* convdict.json in Resources */ = {isa = PBXBuildFile; fileRef = 5B84579C2871AD2200C93B01 /* convdict.json */; }; - 5B8457A12871ADBE00C93B01 /* ChineseConverterBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B8457A02871ADBE00C93B01 /* ChineseConverterBridge.swift */; }; 5B963C9D28D5BFB800DCEE88 /* CocoaExtension in Frameworks */ = {isa = PBXBuildFile; productRef = 5B963C9C28D5BFB800DCEE88 /* CocoaExtension */; }; 5B963CA328D5C23600DCEE88 /* SwiftExtension in Frameworks */ = {isa = PBXBuildFile; productRef = 5B963CA228D5C23600DCEE88 /* SwiftExtension */; }; - 5B963CA828D5DB1400DCEE88 /* PrefMgr_Core.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B963CA728D5DB1400DCEE88 /* PrefMgr_Core.swift */; }; 5B98114828D6198700CBC605 /* PinyinPhonaConverter in Frameworks */ = {isa = PBXBuildFile; productRef = 5B98114728D6198700CBC605 /* PinyinPhonaConverter */; }; 5B9A62D9295BEA3400F79F3C /* SwiftExtension in Frameworks */ = {isa = PBXBuildFile; productRef = 5B9A62D8295BEA3400F79F3C /* SwiftExtension */; }; 5B9A62DB295BEA4500F79F3C /* CocoaExtension in Frameworks */ = {isa = PBXBuildFile; productRef = 5B9A62DA295BEA4500F79F3C /* CocoaExtension */; }; @@ -63,7 +51,6 @@ 5BA9FD1127FEDB6B002DE248 /* CtlPrefUIShared.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA9FD0C27FEDB6B002DE248 /* CtlPrefUIShared.swift */; }; 5BA9FD1327FEDB6B002DE248 /* VwrPrefPaneDictionary.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BA9FD0E27FEDB6B002DE248 /* VwrPrefPaneDictionary.swift */; }; 5BAD0CD527D701F6003D127F /* vChewingKeyLayout.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 5B30F11227BA568800484E24 /* vChewingKeyLayout.bundle */; }; - 5BAEFAD028012565001F42C9 /* LMMgr_Core.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BAEFACF28012565001F42C9 /* LMMgr_Core.swift */; }; 5BB1D7F42999027200EA8D2C /* PrefUITabs.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB1D7F32999027200EA8D2C /* PrefUITabs.swift */; }; 5BB802DA27FABA8300CF1C19 /* SessionCtl_Menu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BB802D927FABA8300CF1C19 /* SessionCtl_Menu.swift */; }; 5BBBB75F27AED54C0023B93A /* Beep.m4a in Resources */ = {isa = PBXBuildFile; fileRef = 5BBBB75D27AED54C0023B93A /* Beep.m4a */; }; @@ -86,8 +73,6 @@ 5BC5E02128DDEFE00094E427 /* TooltipUI in Frameworks */ = {isa = PBXBuildFile; productRef = 5BC5E02028DDEFE00094E427 /* TooltipUI */; }; 5BC5E02428DE07860094E427 /* PopupCompositionBuffer in Frameworks */ = {isa = PBXBuildFile; productRef = 5BC5E02328DE07860094E427 /* PopupCompositionBuffer */; }; 5BCC631629407BBB00A2D84F /* CtlPrefWindow_PhraseEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BCC631529407BBB00A2D84F /* CtlPrefWindow_PhraseEditor.swift */; }; - 5BCCAFF828DB19A300AB1B27 /* PrefMgr_Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BCCAFF728DB19A300AB1B27 /* PrefMgr_Extension.swift */; }; - 5BD0113D2818543900609769 /* InputHandler_Core.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BD0113C2818543900609769 /* InputHandler_Core.swift */; }; 5BDB7A3928D4824A001AC277 /* BookmarkManager in Frameworks */ = {isa = PBXBuildFile; productRef = 5BDB7A3828D4824A001AC277 /* BookmarkManager */; }; 5BDB7A3B28D4824A001AC277 /* FolderMonitor in Frameworks */ = {isa = PBXBuildFile; productRef = 5BDB7A3A28D4824A001AC277 /* FolderMonitor */; }; 5BDB7A3D28D4824A001AC277 /* Hotenka in Frameworks */ = {isa = PBXBuildFile; productRef = 5BDB7A3C28D4824A001AC277 /* Hotenka */; }; @@ -95,7 +80,6 @@ 5BDB7A4128D4824A001AC277 /* Megrez in Frameworks */ = {isa = PBXBuildFile; productRef = 5BDB7A4028D4824A001AC277 /* Megrez */; }; 5BDB7A4528D4824A001AC277 /* ShiftKeyUpChecker in Frameworks */ = {isa = PBXBuildFile; productRef = 5BDB7A4428D4824A001AC277 /* ShiftKeyUpChecker */; }; 5BDB7A4728D4824A001AC277 /* Tekkon in Frameworks */ = {isa = PBXBuildFile; productRef = 5BDB7A4628D4824A001AC277 /* Tekkon */; }; - 5BE377A0288FED8D0037365B /* InputHandler_HandleComposition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BE3779F288FED8D0037365B /* InputHandler_HandleComposition.swift */; }; 5BEDB721283B4C250078EB25 /* data-cns.json in Resources */ = {isa = PBXBuildFile; fileRef = 5BEDB71D283B4AEA0078EB25 /* data-cns.json */; }; 5BEDB722283B4C250078EB25 /* data-zhuyinwen.json in Resources */ = {isa = PBXBuildFile; fileRef = 5BEDB71F283B4AEA0078EB25 /* data-zhuyinwen.json */; }; 5BEDB723283B4C250078EB25 /* data-cht.json in Resources */ = {isa = PBXBuildFile; fileRef = 5BEDB720283B4AEA0078EB25 /* data-cht.json */; }; @@ -104,8 +88,6 @@ 5BF018F9299923BD00248CDD /* VwrPrefPaneBehavior.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BF018F8299923BD00248CDD /* VwrPrefPaneBehavior.swift */; }; 5BF018FB299923C000248CDD /* VwrPrefPaneOutput.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BF018FA299923C000248CDD /* VwrPrefPaneOutput.swift */; }; 5BF018FD299923C200248CDD /* VwrPrefPaneCandidates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BF018FC299923C100248CDD /* VwrPrefPaneCandidates.swift */; }; - 5BF56F9828C39A2700DD6839 /* IMEState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BF56F9728C39A2700DD6839 /* IMEState.swift */; }; - 5BF56F9A28C39D1800DD6839 /* IMEStateData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BF56F9928C39D1800DD6839 /* IMEStateData.swift */; }; 5BF7548929B2F04F00FA50DA /* CtlPrefUI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BF7548829B2F04F00FA50DA /* CtlPrefUI.swift */; }; 5BF9DA2728840E6200DBD48E /* template-usersymbolphrases.txt in Resources */ = {isa = PBXBuildFile; fileRef = 5BF9DA2228840E6200DBD48E /* template-usersymbolphrases.txt */; }; 5BF9DA2828840E6200DBD48E /* template-exclusions.txt in Resources */ = {isa = PBXBuildFile; fileRef = 5BF9DA2328840E6200DBD48E /* template-exclusions.txt */; }; @@ -125,10 +107,9 @@ 6ACA41FC15FC1D9000935EF6 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6ACA41EE15FC1D9000935EF6 /* Localizable.strings */; }; 6ACA41FD15FC1D9000935EF6 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6ACA41F015FC1D9000935EF6 /* MainMenu.xib */; }; 6ACA420215FC1E5200935EF6 /* vChewing.app in Resources */ = {isa = PBXBuildFile; fileRef = 6A0D4EA215FC0D2D00ABF4B3 /* vChewing.app */; }; - D427F76C278CA2B0004A2160 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D427F76B278CA1BA004A2160 /* AppDelegate.swift */; }; + D427F76C278CA2B0004A2160 /* AppDelegateImpl.swift in Sources */ = {isa = PBXBuildFile; fileRef = D427F76B278CA1BA004A2160 /* AppDelegateImpl.swift */; }; D47B92C027972AD100458394 /* main.swift in Sources */ = {isa = PBXBuildFile; fileRef = D47B92BF27972AC800458394 /* main.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 */; }; D4F0BBE1279AF8B30071253C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4F0BBE0279AF8B30071253C /* AppDelegate.swift */; }; @@ -209,9 +190,6 @@ 5B18BA7427C7BD8C0056EB19 /* LICENSE-CHT.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "LICENSE-CHT.txt"; sourceTree = ""; }; 5B1C98B729436CED0019B807 /* data-bpmf-reverse-lookup.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = "data-bpmf-reverse-lookup.json"; path = "Data/data-bpmf-reverse-lookup.json"; sourceTree = ""; }; 5B20430B28BEFC0C00BFC6FD /* vChewing.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = vChewing.entitlements; sourceTree = ""; }; - 5B21176B287539BB000443A9 /* SessionCtl_HandleStates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionCtl_HandleStates.swift; sourceTree = ""; }; - 5B21176D28753B35000443A9 /* SessionCtl_HandleDisplay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionCtl_HandleDisplay.swift; sourceTree = ""; }; - 5B21176F28753B9D000443A9 /* SessionCtl_Delegates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionCtl_Delegates.swift; sourceTree = ""; }; 5B253E782945AF6700680C67 /* data-bpmf-reverse-lookup-CNS1.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = "data-bpmf-reverse-lookup-CNS1.json"; path = "Data/data-bpmf-reverse-lookup-CNS1.json"; sourceTree = ""; }; 5B253E792945AF6700680C67 /* data-bpmf-reverse-lookup-CNS3.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = "data-bpmf-reverse-lookup-CNS3.json"; path = "Data/data-bpmf-reverse-lookup-CNS3.json"; sourceTree = ""; }; 5B253E7A2945AF6700680C67 /* data-bpmf-reverse-lookup-CNS2.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = "data-bpmf-reverse-lookup-CNS2.json"; path = "Data/data-bpmf-reverse-lookup-CNS2.json"; sourceTree = ""; }; @@ -224,42 +202,32 @@ 5B30BF272944867800BD87A9 /* CtlRevLookupWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CtlRevLookupWindow.swift; sourceTree = ""; }; 5B30F11227BA568800484E24 /* vChewingKeyLayout.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = vChewingKeyLayout.bundle; sourceTree = ""; }; 5B312684287800DE001AA720 /* FAQ.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = FAQ.md; sourceTree = ""; }; - 5B3133BE280B229700A4A505 /* InputHandler_HandleStates.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = InputHandler_HandleStates.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; - 5B33844C29B8980100FCB497 /* LMMgr_UserPhraseStructure.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LMMgr_UserPhraseStructure.swift; sourceTree = ""; }; - 5B33844E29B8B4C200FCB497 /* LMMgr_PhraseEditorDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LMMgr_PhraseEditorDelegate.swift; sourceTree = ""; }; - 5B33845029B8B61F00FCB497 /* LMMgr_Utilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LMMgr_Utilities.swift; sourceTree = ""; }; 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 = ""; }; 5B5C8ED628FC0E8E002C93A5 /* Sindresorhus_SSPreferences */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = Sindresorhus_SSPreferences; path = Packages/Sindresorhus_SSPreferences; sourceTree = ""; }; 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 = ""; }; + 5B65FB322A9518C9007EEFB0 /* vChewing_MainAssembly */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_MainAssembly; path = Packages/vChewing_MainAssembly; sourceTree = ""; }; 5B69938B293B811F0057CB8E /* VwrPrefPanePhrases.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VwrPrefPanePhrases.swift; sourceTree = ""; }; - 5B6C141128A9D4B30098ADF8 /* SessionCtl_HandleEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionCtl_HandleEvent.swift; sourceTree = ""; }; 5B70F4E52A0BE900005EA8C4 /* MenuIcon-TCVIM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MenuIcon-TCVIM.png"; sourceTree = ""; }; 5B70F4E62A0BE900005EA8C4 /* MenuIcon-SCVIM.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MenuIcon-SCVIM.png"; sourceTree = ""; }; 5B70F4E72A0BE900005EA8C4 /* MenuIcon-SCVIM@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MenuIcon-SCVIM@2x.png"; sourceTree = ""; }; 5B70F4E82A0BE900005EA8C4 /* MenuIcon-TCVIM@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "MenuIcon-TCVIM@2x.png"; sourceTree = ""; }; 5B765F07293A250000122315 /* vChewing_PhraseEditorUI */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_PhraseEditorUI; path = Packages/vChewing_PhraseEditorUI; sourceTree = ""; }; - 5B782EC3280C243C007276DE /* InputHandler_HandleCandidate.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = InputHandler_HandleCandidate.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; 5B78EE0C28A562B4009456C1 /* VwrPrefPaneDevZone.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VwrPrefPaneDevZone.swift; sourceTree = ""; }; 5B7BC4AF27AFFBE800F66C24 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/frmPrefWindow.xib; sourceTree = ""; }; 5B7BC4B227AFFC0B00F66C24 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/frmPrefWindow.strings; sourceTree = ""; }; 5B7DA80228BF6BBA00D7B2AD /* fixinstall.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; lineEnding = 0; path = fixinstall.sh; sourceTree = ""; }; - 5B7F225C2808501000DDD3CB /* InputHandler_TriageInput.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = InputHandler_TriageInput.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; 5B84579C2871AD2200C93B01 /* convdict.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = convdict.json; sourceTree = ""; }; - 5B8457A02871ADBE00C93B01 /* ChineseConverterBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChineseConverterBridge.swift; sourceTree = ""; }; 5B963C9B28D5BE4100DCEE88 /* vChewing_CocoaExtension */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_CocoaExtension; path = Packages/vChewing_CocoaExtension; sourceTree = ""; }; 5B963C9E28D5C14600DCEE88 /* vChewing_Shared */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_Shared; path = Packages/vChewing_Shared; sourceTree = ""; }; 5B963CA128D5C22D00DCEE88 /* vChewing_SwiftExtension */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_SwiftExtension; path = Packages/vChewing_SwiftExtension; sourceTree = ""; }; - 5B963CA728D5DB1400DCEE88 /* PrefMgr_Core.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrefMgr_Core.swift; sourceTree = ""; }; 5B98114628D6198000CBC605 /* vChewing_PinyinPhonaConverter */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_PinyinPhonaConverter; path = Packages/vChewing_PinyinPhonaConverter; sourceTree = ""; }; 5BA8C30128DEFE4F004C5CC4 /* vChewing_CandidateWindow */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_CandidateWindow; path = Packages/vChewing_CandidateWindow; sourceTree = ""; }; 5BA9FD0A27FEDB6B002DE248 /* VwrPrefPaneGeneral.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = VwrPrefPaneGeneral.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; 5BA9FD0B27FEDB6B002DE248 /* VwrPrefPaneKeyboard.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = VwrPrefPaneKeyboard.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; 5BA9FD0C27FEDB6B002DE248 /* CtlPrefUIShared.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = CtlPrefUIShared.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; 5BA9FD0E27FEDB6B002DE248 /* VwrPrefPaneDictionary.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = VwrPrefPaneDictionary.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; - 5BAEFACF28012565001F42C9 /* LMMgr_Core.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = LMMgr_Core.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; 5BB1D7F32999027200EA8D2C /* PrefUITabs.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrefUITabs.swift; sourceTree = ""; }; 5BB802D927FABA8300CF1C19 /* SessionCtl_Menu.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = SessionCtl_Menu.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; 5BBBB75D27AED54C0023B93A /* Beep.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; path = Beep.m4a; sourceTree = ""; }; @@ -278,8 +246,6 @@ 5BC5E01F28DDEFD80094E427 /* vChewing_TooltipUI */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_TooltipUI; path = Packages/vChewing_TooltipUI; sourceTree = ""; }; 5BC5E02228DE07250094E427 /* vChewing_PopupCompositionBuffer */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_PopupCompositionBuffer; path = Packages/vChewing_PopupCompositionBuffer; sourceTree = ""; }; 5BCC631529407BBB00A2D84F /* CtlPrefWindow_PhraseEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CtlPrefWindow_PhraseEditor.swift; sourceTree = ""; }; - 5BCCAFF728DB19A300AB1B27 /* PrefMgr_Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrefMgr_Extension.swift; sourceTree = ""; }; - 5BD0113C2818543900609769 /* InputHandler_Core.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; lineEnding = 0; path = InputHandler_Core.swift; sourceTree = ""; usesTabs = 0; }; 5BDB7A3028D47587001AC277 /* Jad_BookmarkManager */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = Jad_BookmarkManager; path = Packages/Jad_BookmarkManager; sourceTree = ""; }; 5BDB7A3128D47587001AC277 /* DanielGalasko_FolderMonitor */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = DanielGalasko_FolderMonitor; path = Packages/DanielGalasko_FolderMonitor; sourceTree = ""; }; 5BDB7A3228D47587001AC277 /* vChewing_Hotenka */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = vChewing_Hotenka; path = Packages/vChewing_Hotenka; sourceTree = ""; }; @@ -294,7 +260,6 @@ 5BDCBB4827B4F6C600D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = ""; }; 5BDCBB4927B4F6C700D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/InfoPlist.strings"; sourceTree = ""; }; 5BDCBB4A27B4F6C700D0CC59 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = ""; }; - 5BE3779F288FED8D0037365B /* InputHandler_HandleComposition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InputHandler_HandleComposition.swift; sourceTree = ""; }; 5BE8A8C4281EE65300197741 /* CONTRIBUTING.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CONTRIBUTING.md; sourceTree = ""; }; 5BEDB71C283B4AEA0078EB25 /* data-chs.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = "data-chs.json"; path = "Data/data-chs.json"; sourceTree = ""; }; 5BEDB71D283B4AEA0078EB25 /* data-cns.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = "data-cns.json"; path = "Data/data-cns.json"; sourceTree = ""; }; @@ -306,8 +271,6 @@ 5BF018FC299923C100248CDD /* VwrPrefPaneCandidates.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VwrPrefPaneCandidates.swift; sourceTree = ""; }; 5BF255CD28B2694E003ECB60 /* vChewing-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "vChewing-Bridging-Header.h"; sourceTree = ""; }; 5BF4A44628E5820C002AF9C5 /* vChewingInstaller.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = vChewingInstaller.entitlements; sourceTree = ""; }; - 5BF56F9728C39A2700DD6839 /* IMEState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMEState.swift; sourceTree = ""; }; - 5BF56F9928C39D1800DD6839 /* IMEStateData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMEStateData.swift; sourceTree = ""; }; 5BF7548829B2F04F00FA50DA /* CtlPrefUI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CtlPrefUI.swift; sourceTree = ""; }; 5BF9DA2228840E6200DBD48E /* template-usersymbolphrases.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; lineEnding = 0; path = "template-usersymbolphrases.txt"; sourceTree = ""; usesTabs = 0; }; 5BF9DA2328840E6200DBD48E /* template-exclusions.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; lineEnding = 0; path = "template-exclusions.txt"; sourceTree = ""; usesTabs = 0; }; @@ -328,10 +291,9 @@ 6ACA41EB15FC1D9000935EF6 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; 6ACA41EF15FC1D9000935EF6 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; 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; }; + D427F76B278CA1BA004A2160 /* AppDelegateImpl.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = AppDelegateImpl.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; }; - 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 = ""; }; D4F0BBE0279AF8B30071253C /* AppDelegate.swift */ = {isa = PBXFileReference; explicitFileType = sourcecode.swift; fileEncoding = 4; indentWidth = 2; lineEnding = 0; path = AppDelegate.swift; sourceTree = ""; tabWidth = 2; usesTabs = 0; }; @@ -357,6 +319,7 @@ buildActionMask = 2147483647; files = ( 5BC5E02428DE07860094E427 /* PopupCompositionBuffer in Frameworks */, + 5B65FB342A9518DA007EEFB0 /* MainAssembly in Frameworks */, 5BDB7A4528D4824A001AC277 /* ShiftKeyUpChecker in Frameworks */, 5BFC63CC28D49BBC004A77B7 /* UpdateSputnik in Frameworks */, 5BDB7A4128D4824A001AC277 /* Megrez in Frameworks */, @@ -584,6 +547,7 @@ 5BDB7A3228D47587001AC277 /* vChewing_Hotenka */, 5BFC63C728D49511004A77B7 /* vChewing_IMKUtils */, 5BFC63CD28D4AC98004A77B7 /* vChewing_LangModelAssembly */, + 5B65FB322A9518C9007EEFB0 /* vChewing_MainAssembly */, 5BDB7A3328D47587001AC277 /* vChewing_Megrez */, 5BC5E01C28DDE4270094E427 /* vChewing_NotifierUI */, 5B765F07293A250000122315 /* vChewing_PhraseEditorUI */, @@ -671,29 +635,9 @@ children = ( 5B62A33927AE7C6700A19448 /* UIModules */, 5B62A33A27AE7C7500A19448 /* WindowControllers */, - D427F76B278CA1BA004A2160 /* AppDelegate.swift */, - 5B8457A02871ADBE00C93B01 /* ChineseConverterBridge.swift */, - 5BF56F9728C39A2700DD6839 /* IMEState.swift */, - 5BF56F9928C39D1800DD6839 /* IMEStateData.swift */, - 5BD0113C2818543900609769 /* InputHandler_Core.swift */, - 5B782EC3280C243C007276DE /* InputHandler_HandleCandidate.swift */, - 5BE3779F288FED8D0037365B /* InputHandler_HandleComposition.swift */, - 5B3133BE280B229700A4A505 /* InputHandler_HandleStates.swift */, - 5B7F225C2808501000DDD3CB /* InputHandler_TriageInput.swift */, - 5BAEFACF28012565001F42C9 /* LMMgr_Core.swift */, - 5B33844E29B8B4C200FCB497 /* LMMgr_PhraseEditorDelegate.swift */, - 5B33844C29B8980100FCB497 /* LMMgr_UserPhraseStructure.swift */, - 5B33845029B8B61F00FCB497 /* LMMgr_Utilities.swift */, + D427F76B278CA1BA004A2160 /* AppDelegateImpl.swift */, D47B92BF27972AC800458394 /* main.swift */, - 5B963CA728D5DB1400DCEE88 /* PrefMgr_Core.swift */, - 5BCCAFF728DB19A300AB1B27 /* PrefMgr_Extension.swift */, - D4A13D5927A59D5C003BE359 /* SessionCtl_Core.swift */, - 5B21176F28753B9D000443A9 /* SessionCtl_Delegates.swift */, - 5B21176D28753B35000443A9 /* SessionCtl_HandleDisplay.swift */, - 5B6C141128A9D4B30098ADF8 /* SessionCtl_HandleEvent.swift */, - 5B21176B287539BB000443A9 /* SessionCtl_HandleStates.swift */, 5BB802D927FABA8300CF1C19 /* SessionCtl_Menu.swift */, - 5B660A8528F64A8800E5E4F6 /* SymbolMenuDefaultData.swift */, ); path = Modules; sourceTree = ""; @@ -810,6 +754,7 @@ 5B5A602F28E81CC50001AE8D /* SwiftUIBackports */, 5B5C8ED728FC0EA9002C93A5 /* SSPreferences */, 5B765F08293A253C00122315 /* PhraseEditorUI */, + 5B65FB332A9518DA007EEFB0 /* MainAssembly */, ); productName = vChewing; productReference = 6A0D4EA215FC0D2D00ABF4B3 /* vChewing.app */; @@ -1087,44 +1032,24 @@ buildActionMask = 2147483647; files = ( 5BF018FD299923C200248CDD /* VwrPrefPaneCandidates.swift in Sources */, - 5B963CA828D5DB1400DCEE88 /* PrefMgr_Core.swift in Sources */, - D427F76C278CA2B0004A2160 /* AppDelegate.swift in Sources */, - 5B7F225D2808501000DDD3CB /* InputHandler_TriageInput.swift in Sources */, - 5B660A8628F64A8800E5E4F6 /* SymbolMenuDefaultData.swift in Sources */, - 5BF56F9828C39A2700DD6839 /* IMEState.swift in Sources */, + D427F76C278CA2B0004A2160 /* AppDelegateImpl.swift in Sources */, 5B62A33D27AE7CC100A19448 /* CtlAboutWindow.swift in Sources */, D47B92C027972AD100458394 /* main.swift in Sources */, - D4A13D5A27A59F0B003BE359 /* SessionCtl_Core.swift in Sources */, 5B0EF55F28CDBF8E00F8F7CE /* CtlClientListMgr.swift in Sources */, - 5B33844D29B8980100FCB497 /* LMMgr_UserPhraseStructure.swift in Sources */, - 5B21177028753B9D000443A9 /* SessionCtl_Delegates.swift in Sources */, - 5B33845129B8B61F00FCB497 /* LMMgr_Utilities.swift in Sources */, - 5B21176E28753B35000443A9 /* SessionCtl_HandleDisplay.swift in Sources */, 5BA9FD1027FEDB6B002DE248 /* VwrPrefPaneKeyboard.swift in Sources */, - 5B3133BF280B229700A4A505 /* InputHandler_HandleStates.swift in Sources */, 5B78EE0D28A562B4009456C1 /* VwrPrefPaneDevZone.swift in Sources */, - 5B6C141228A9D4B30098ADF8 /* SessionCtl_HandleEvent.swift in Sources */, D47F7DCE278BFB57002F9DD7 /* CtlPrefWindow.swift in Sources */, 5B30BF282944867800BD87A9 /* CtlRevLookupWindow.swift in Sources */, - 5BD0113D2818543900609769 /* InputHandler_Core.swift in Sources */, - 5BF56F9A28C39D1800DD6839 /* IMEStateData.swift in Sources */, 5BB1D7F42999027200EA8D2C /* PrefUITabs.swift in Sources */, - 5B33844F29B8B4C200FCB497 /* LMMgr_PhraseEditorDelegate.swift in Sources */, - 5B21176C287539BB000443A9 /* SessionCtl_HandleStates.swift in Sources */, 5B69938C293B811F0057CB8E /* VwrPrefPanePhrases.swift in Sources */, - 5BAEFAD028012565001F42C9 /* LMMgr_Core.swift in Sources */, 5BCC631629407BBB00A2D84F /* CtlPrefWindow_PhraseEditor.swift in Sources */, - 5B782EC4280C243C007276DE /* InputHandler_HandleCandidate.swift in Sources */, 5BA9FD0F27FEDB6B002DE248 /* VwrPrefPaneGeneral.swift in Sources */, - 5BCCAFF828DB19A300AB1B27 /* PrefMgr_Extension.swift in Sources */, 5BA9FD1127FEDB6B002DE248 /* CtlPrefUIShared.swift in Sources */, - 5B8457A12871ADBE00C93B01 /* ChineseConverterBridge.swift in Sources */, 5BA9FD1327FEDB6B002DE248 /* VwrPrefPaneDictionary.swift in Sources */, 5BF7548929B2F04F00FA50DA /* CtlPrefUI.swift in Sources */, 5BF018F9299923BD00248CDD /* VwrPrefPaneBehavior.swift in Sources */, 5BB802DA27FABA8300CF1C19 /* SessionCtl_Menu.swift in Sources */, 5B2E009428FD1E8100E78D6E /* VwrPrefPaneCassette.swift in Sources */, - 5BE377A0288FED8D0037365B /* InputHandler_HandleComposition.swift in Sources */, 5BF018FB299923C000248CDD /* VwrPrefPaneOutput.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1823,6 +1748,10 @@ isa = XCSwiftPackageProductDependency; productName = SSPreferences; }; + 5B65FB332A9518DA007EEFB0 /* MainAssembly */ = { + isa = XCSwiftPackageProductDependency; + productName = MainAssembly; + }; 5B765F08293A253C00122315 /* PhraseEditorUI */ = { isa = XCSwiftPackageProductDependency; productName = PhraseEditorUI;