From 1dc59df1fd2672e631548b1e4af0ed1f4d22e999 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Thu, 10 Feb 2022 11:41:54 +0800 Subject: [PATCH] AssoPhrases // Bind Menu Commands and Preferences. --- Source/Modules/IMEModules/PreferencesModule.swift | 7 ++++++- Source/Modules/IMEModules/ctlInputMethod.swift | 11 ++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Source/Modules/IMEModules/PreferencesModule.swift b/Source/Modules/IMEModules/PreferencesModule.swift index 98ea1366..6f109c82 100644 --- a/Source/Modules/IMEModules/PreferencesModule.swift +++ b/Source/Modules/IMEModules/PreferencesModule.swift @@ -279,7 +279,12 @@ struct ComposingBufferSize { if UserDefaults.standard.object(forKey: kUseSCPCTypingMode) == nil { UserDefaults.standard.set(Preferences.useSCPCTypingMode, forKey: kUseSCPCTypingMode) } - + + // 預設禁用逐字選字模式時的聯想詞功能,所以設成 false + if UserDefaults.standard.object(forKey: kAssociatedPhrasesEnabled) == nil { + UserDefaults.standard.set(Preferences.associatedPhrasesEnabled, forKey: kAssociatedPhrasesEnabled) + } + // 預設漢音風格選字,所以要設成 0 if UserDefaults.standard.object(forKey: kSelectPhraseAfterCursorAsCandidatePreference) == nil { UserDefaults.standard.set(Preferences.selectPhraseAfterCursorAsCandidate, forKey: kSelectPhraseAfterCursorAsCandidatePreference) diff --git a/Source/Modules/IMEModules/ctlInputMethod.swift b/Source/Modules/IMEModules/ctlInputMethod.swift index dbde36e3..0182d956 100644 --- a/Source/Modules/IMEModules/ctlInputMethod.swift +++ b/Source/Modules/IMEModules/ctlInputMethod.swift @@ -73,6 +73,10 @@ class ctlInputMethod: IMKInputController { halfWidthPunctuationItem.keyEquivalentModifierMask = [.command, .control] halfWidthPunctuationItem.state = Preferences.halfWidthPunctuationEnabled.state + let userAssociatedPhrasesItem = menu.addItem(withTitle: NSLocalizedString("Per-Char Associated Phrases", comment: ""), action: #selector(toggleAssociatedPhrasesEnabled(_:)), keyEquivalent: "O") + userAssociatedPhrasesItem.keyEquivalentModifierMask = [.command, .control] + userAssociatedPhrasesItem.state = Preferences.associatedPhrasesEnabled.state + if optionKeyPressed { let phaseReplacementItem = menu.addItem(withTitle: NSLocalizedString("Use Phrase Replacement", comment: ""), action: #selector(togglePhraseReplacement(_:)), keyEquivalent: "") phaseReplacementItem.state = Preferences.phraseReplacementEnabled.state @@ -86,6 +90,7 @@ class ctlInputMethod: IMKInputController { if optionKeyPressed { menu.addItem(withTitle: NSLocalizedString("Edit Excluded Phrases", comment: ""), action: #selector(openExcludedPhrases(_:)), keyEquivalent: "") menu.addItem(withTitle: NSLocalizedString("Edit Phrase Replacement Table", comment: ""), action: #selector(openPhraseReplacement(_:)), keyEquivalent: "") + menu.addItem(withTitle: NSLocalizedString("Edit Associated Phrases", comment: ""), action: #selector(openAssociatedPhrases(_:)), keyEquivalent: "") } if (optionKeyPressed || !Preferences.shouldAutoReloadUserDataFiles) { @@ -218,7 +223,7 @@ class ctlInputMethod: IMKInputController { } @objc func toggleAssociatedPhrasesEnabled(_ sender: Any?) { - _ = Preferences.toggleAssociatedPhrasesEnabled() + NotifierController.notify(message: String(format: "%@%@%@", NSLocalizedString("Per-Char Associated Phrases", comment: ""), "\n", Preferences.toggleAssociatedPhrasesEnabled() ? NSLocalizedString("NotificationSwitchON", comment: "") : NSLocalizedString("NotificationSwitchOFF", comment: ""))) } @objc func togglePhraseReplacement(_ sender: Any?) { @@ -268,6 +273,10 @@ class ctlInputMethod: IMKInputController { open(userFileAt: mgrLangModel.phraseReplacementDataPath(keyHandler.inputMode)) } + @objc func openAssociatedPhrases(_ sender: Any?) { + open(userFileAt: mgrLangModel.userAssociatedPhrasesDataPath(keyHandler.inputMode)) + } + @objc func reloadUserPhrases(_ sender: Any?) { mgrLangModel.loadUserPhrases() mgrLangModel.loadUserPhraseReplacement()