diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/PrefUITabs.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/PrefUITabs.swift similarity index 100% rename from Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/PrefUITabs.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsCocoa/PrefUITabs.swift diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/CtlSettingsUI.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/CtlSettingsUI.swift similarity index 100% rename from Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/CtlSettingsUI.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/CtlSettingsUI.swift diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/UserDefRenderableImpl.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/UserDefRenderableImpl.swift similarity index 100% rename from Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/UserDefRenderableImpl.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/UserDefRenderableImpl.swift diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneBehavior.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneBehavior.swift similarity index 100% rename from Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneBehavior.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneBehavior.swift diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneCandidates.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneCandidates.swift similarity index 100% rename from Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneCandidates.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneCandidates.swift diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneCassette.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneCassette.swift similarity index 78% rename from Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneCassette.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneCassette.swift index 637434db..42c6e4e6 100644 --- a/Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneCassette.swift +++ b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneCassette.swift @@ -115,35 +115,27 @@ public struct VwrSettingsPaneCassette: View { Text("×") } } - Spacer() - Text( - LocalizedStringKey( - "Cassette mode is similar to the CIN support of the Yahoo Kimo IME, allowing users to use their own CIN tables to implement their stroked-based input schema (e.g. Wubi, Cangjie, Boshiamy, etc.) as a plan-B in vChewing IME. However, since vChewing won't compromise its phonabet input mode experience for this cassette mode, users might not feel comfortable enough comparing to their experiences with RIME (recommended) or OpenVanilla (deprecated)." - ) - ) - .settingsDescription() - Toggle( - LocalizedStringKey("Enable cassette mode, suppressing phonabet input"), - isOn: $cassetteEnabled.didChange { - if cassetteEnabled, !LMMgr.checkCassettePathValidity(cassettePath) { - if let window = CtlSettingsUI.shared?.window { - IMEApp.buzz() - let alert = NSAlert(error: NSLocalizedString("Path invalid or file access error.", comment: "")) - alert.informativeText = NSLocalizedString( - "Please reconfigure the cassette path to a valid one before enabling this mode.", comment: "" - ) - alert.beginSheetModal(for: window) { _ in - } - } - LMMgr.resetCassettePath() - cassetteEnabled = false - } else { - LMMgr.loadCassetteData() - } - LMMgr.syncLMPrefs() - } - ) } + UserDef.kCassetteEnabled.bind( + $cassetteEnabled.didChange { + if cassetteEnabled, !LMMgr.checkCassettePathValidity(cassettePath) { + if let window = CtlSettingsUI.shared?.window { + IMEApp.buzz() + let alert = NSAlert(error: NSLocalizedString("Path invalid or file access error.", comment: "")) + alert.informativeText = NSLocalizedString( + "Please reconfigure the cassette path to a valid one before enabling this mode.", comment: "" + ) + alert.beginSheetModal(for: window) { _ in + } + } + LMMgr.resetCassettePath() + cassetteEnabled = false + } else { + LMMgr.loadCassetteData() + } + LMMgr.syncLMPrefs() + } + ).render() } // MARK: - Something Else diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneDevZone.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneDevZone.swift similarity index 100% rename from Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneDevZone.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneDevZone.swift diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneDictionary.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneDictionary.swift similarity index 100% rename from Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneDictionary.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneDictionary.swift diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneGeneral.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneGeneral.swift similarity index 100% rename from Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneGeneral.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneGeneral.swift diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneKeyboard.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneKeyboard.swift similarity index 100% rename from Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneKeyboard.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneKeyboard.swift diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneOutput.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneOutput.swift similarity index 100% rename from Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPaneOutput.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPaneOutput.swift diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPanePhrases.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPanePhrases.swift similarity index 100% rename from Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsPanePhrases.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsPanePhrases.swift diff --git a/Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsUI.swift b/Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsUI.swift similarity index 100% rename from Packages/vChewing_MainAssembly/Sources/MainAssembly/SettingsUI/VwrSettingsUI.swift rename to Packages/vChewing_MainAssembly/Sources/MainAssembly/Settings/SettingsUI/VwrSettingsUI.swift