SessionCtl // Optimize the IME menu for macOS 10.9.

This commit is contained in:
ShikiSuen 2024-02-16 20:14:02 +08:00
parent 0e4651e70e
commit 791256cf31
2 changed files with 67 additions and 30 deletions

View File

@ -413,6 +413,12 @@ public extension NSMenuItem {
return self return self
} }
@discardableResult func alternated(sure sured: Bool = true) -> NSMenuItem {
isAlternate = sured
keyEquivalentModifierMask = .option
return self
}
@discardableResult func state(_ givenState: Bool) -> NSMenuItem { @discardableResult func state(_ givenState: Bool) -> NSMenuItem {
state = givenState ? .on : .off state = givenState ? .on : .off
return self return self

View File

@ -45,6 +45,11 @@ extension SessionCtl {
.act(#selector(toggleAssociatedPhrasesEnabled(_:))) .act(#selector(toggleAssociatedPhrasesEnabled(_:)))
.state(PrefMgr.shared.associatedPhrasesEnabled) .state(PrefMgr.shared.associatedPhrasesEnabled)
.hotkey(PrefMgr.shared.usingHotKeyAssociates ? "O" : "", mask: [.command, .control]) .hotkey(PrefMgr.shared.usingHotKeyAssociates ? "O" : "", mask: [.command, .control])
NSMenu.Item("Edit Associated Phrases…")?
.act(#selector(openAssociatedPhrases(_:)))
.alternated()
.hotkey(PrefMgr.shared.usingHotKeyAssociates ? "O" : "", mask: [.command, .option, .control])
.nulled(silentMode)
NSMenu.Item("CIN Cassette Mode")? NSMenu.Item("CIN Cassette Mode")?
.act(#selector(toggleCassetteMode(_:))) .act(#selector(toggleCassetteMode(_:)))
.state(PrefMgr.shared.cassetteEnabled) .state(PrefMgr.shared.cassetteEnabled)
@ -74,47 +79,73 @@ extension SessionCtl {
NSMenu.Item("Use Phrase Replacement")? NSMenu.Item("Use Phrase Replacement")?
.act(#selector(togglePhraseReplacement(_:))) .act(#selector(togglePhraseReplacement(_:)))
.state(PrefMgr.shared.phraseReplacementEnabled) .state(PrefMgr.shared.phraseReplacementEnabled)
.nulled(!optionKeyPressed && !PrefMgr.shared.phraseReplacementEnabled) NSMenu.Item("Edit Phrase Replacement Table…")?
.act(#selector(openPhraseReplacement(_:)))
.alternated().nulled(silentMode)
NSMenu.Item("Symbol & Emoji Input")? NSMenu.Item("Symbol & Emoji Input")?
.act(#selector(toggleSymbolEnabled(_:))) .act(#selector(toggleSymbolEnabled(_:)))
.state(PrefMgr.shared.symbolInputEnabled) .state(PrefMgr.shared.symbolInputEnabled)
.nulled(!optionKeyPressed) NSMenu.Item("Edit User Symbol & Emoji Data…")?
.act(#selector(openUserSymbols(_:)))
.alternated().nulled(silentMode)
NSMenu.Item.separator() // --------------------- NSMenu.Item.separator() // ---------------------
NSMenu.Item("Open User Dictionary Folder")?.act(#selector(openUserDataFolder(_:))).nulled(silentMode) NSMenu.Item("Open User Dictionary Folder")?
NSMenu.Item("Edit vChewing User Phrases…")?.act(#selector(openUserPhrases(_:))).nulled(silentMode) .act(#selector(openUserDataFolder(_:)))
NSMenu.Item("Edit Excluded Phrases…")?.act(#selector(openExcludedPhrases(_:))).nulled(silentMode) .nulled(silentMode)
NSMenu.Item("Edit Associated Phrases…")?.act(#selector(openAssociatedPhrases(_:))).nulled( NSMenu.Item("Open App Support Folder")?
!(!silentMode && (optionKeyPressed || PrefMgr.shared.associatedPhrasesEnabled)) .act(#selector(openAppSupportFolderFromContainer(_:)))
) .alternated().nulled(silentMode)
NSMenu.Item("Edit Phrase Replacement Table…")?.act(#selector(openPhraseReplacement(_:))).nulled(silentMode || !optionKeyPressed) NSMenu.Item("Edit vChewing User Phrases…")?
NSMenu.Item("Edit User Symbol & Emoji Data…")?.act(#selector(openUserSymbols(_:))).nulled(silentMode || !optionKeyPressed) .act(#selector(openUserPhrases(_:)))
NSMenu.Item("Open App Support Folder")?.act(#selector(openAppSupportFolderFromContainer(_:))).nulled(silentMode || !optionKeyPressed) .nulled(silentMode)
NSMenu.Item("Reload User Phrases")?
NSMenu.Item("Reload User Phrases")?.act(#selector(reloadUserPhrasesData(_:))).nulled(PrefMgr.shared.shouldAutoReloadUserDataFiles && !optionKeyPressed) .act(#selector(reloadUserPhrasesData(_:)))
NSMenu.Item("Edit Excluded Phrases…")?
.act(#selector(openExcludedPhrases(_:)))
.alternated().nulled(silentMode)
NSMenu.Item(verbatim: "Reverse Lookup (Phonabets)".localized.withEllipsis)? NSMenu.Item(verbatim: "Reverse Lookup (Phonabets)".localized.withEllipsis)?
.act(#selector(callReverseLookupWindow(_:))).hotkey(PrefMgr.shared.usingHotKeyRevLookup ? "/" : "", mask: [.command, .control]) .act(#selector(callReverseLookupWindow(_:)))
.hotkey(PrefMgr.shared.usingHotKeyRevLookup ? "/" : "", mask: [.command, .control])
NSMenu.Item("Optimize Memorized Phrases")?.act(#selector(removeUnigramsFromUOM(_:))) NSMenu.Item("Optimize Memorized Phrases")?
NSMenu.Item("Clear Memorized Phrases")?.act(#selector(clearUOM(_:))) .act(#selector(removeUnigramsFromUOM(_:)))
NSMenu.Item("Clear Memorized Phrases")?
.act(#selector(clearUOM(_:)))
.alternated()
NSMenu.Item.separator() // --------------------- NSMenu.Item.separator() // ---------------------
if #unavailable(macOS 13) { if #unavailable(macOS 13) {
NSMenu.Item("vChewing Preferences…")?.act(#selector(showPreferences(_:))).nulled(silentMode) NSMenu.Item("vChewing Preferences…")?
.act(#selector(showPreferences(_:)))
.nulled(silentMode)
} else { } else {
NSMenu.Item( NSMenu.Item(verbatim: "vChewing Preferences…".localized + " (SwiftUI)")?
verbatim: "vChewing Preferences…".localized + " (SwiftUI)" .act(#selector(showSettingsSwiftUI(_:)))
)?.act(#selector(showSettingsSwiftUI(_:))).nulled(silentMode) .nulled(silentMode)
NSMenu.Item( NSMenu.Item(verbatim: "vChewing Preferences…".localized + " (AppKit)")?
verbatim: "vChewing Preferences…".localized + " (AppKit)" .act(#selector(showSettingsAppKit(_:)))
)?.act(#selector(showSettingsAppKit(_:))).nulled(silentMode) .alternated().nulled(silentMode)
} }
NSMenu.Item(verbatim: "Client Manager".localized.withEllipsis)?.act(#selector(showClientListMgr(_:))).nulled(silentMode) NSMenu.Item("vChewing Preferences…")?
NSMenu.Item("Check for Updates…")?.act(#selector(checkForUpdate(_:))).nulled(silentMode) .act(#selector(showPreferences(_:)))
NSMenu.Item("Reboot vChewing…")?.act(#selector(selfTerminate(_:))) .nulled(silentMode)
NSMenu.Item("About vChewing…")?.act(#selector(showAbout(_:))).nulled(silentMode) NSMenu.Item(verbatim: "Client Manager".localized.withEllipsis)?
NSMenu.Item("CheatSheet")?.act(#selector(showCheatSheet(_:))).nulled(silentMode) .act(#selector(showClientListMgr(_:)))
NSMenu.Item("Uninstall vChewing…")?.act(#selector(selfUninstall(_:))).nulled(silentMode || !optionKeyPressed) .nulled(silentMode)
NSMenu.Item("Check for Updates…")?
.act(#selector(checkForUpdate(_:)))
.nulled(silentMode)
NSMenu.Item("Reboot vChewing…")?
.act(#selector(selfTerminate(_:)))
NSMenu.Item("CheatSheet")?
.act(#selector(showCheatSheet(_:)))
.nulled(silentMode)
NSMenu.Item("About vChewing…")?
.act(#selector(showAbout(_:)))
.alternated()
NSMenu.Item("Uninstall vChewing…")?
.act(#selector(selfUninstall(_:)))
.nulled(silentMode || !optionKeyPressed)
} }
} }
} }