Hiraku: MUI Selector // phase 1: Implementing function.
This commit is contained in:
parent
356722f0e1
commit
590998c190
|
@ -11,6 +11,7 @@
|
||||||
<outlet property="basisKeyboardLayoutButton" destination="124" id="135"/>
|
<outlet property="basisKeyboardLayoutButton" destination="124" id="135"/>
|
||||||
<outlet property="fontSizePopUpButton" destination="90" id="108"/>
|
<outlet property="fontSizePopUpButton" destination="90" id="108"/>
|
||||||
<outlet property="selectionKeyComboBox" destination="uHU-aL-du7" id="cEx-Ui-Phc"/>
|
<outlet property="selectionKeyComboBox" destination="uHU-aL-du7" id="cEx-Ui-Phc"/>
|
||||||
|
<outlet property="uiLanguageButton" destination="oS6-u5-7dP" id="V3u-XK-z7G"/>
|
||||||
<outlet property="window" destination="1" id="30"/>
|
<outlet property="window" destination="1" id="30"/>
|
||||||
</connections>
|
</connections>
|
||||||
</customObject>
|
</customObject>
|
||||||
|
@ -106,6 +107,9 @@
|
||||||
</items>
|
</items>
|
||||||
</menu>
|
</menu>
|
||||||
</popUpButtonCell>
|
</popUpButtonCell>
|
||||||
|
<connections>
|
||||||
|
<action selector="updateUiLanguageAction:" target="-2" id="8XG-O0-Otf"/>
|
||||||
|
</connections>
|
||||||
</popUpButton>
|
</popUpButton>
|
||||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="L5M-VG-W1X">
|
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="L5M-VG-W1X">
|
||||||
<rect key="frame" x="42" y="99" width="123" height="17"/>
|
<rect key="frame" x="42" y="99" width="123" height="17"/>
|
||||||
|
|
|
@ -13,6 +13,7 @@ private let kBasisKeyboardLayoutPreferenceKey = "BasisKeyboardLayout" // alphan
|
||||||
private let kFunctionKeyKeyboardLayoutPreferenceKey = "FunctionKeyKeyboardLayout" // alphanumeric ("ASCII") input basi
|
private let kFunctionKeyKeyboardLayoutPreferenceKey = "FunctionKeyKeyboardLayout" // alphanumeric ("ASCII") input basi
|
||||||
private let kFunctionKeyKeyboardLayoutOverrideIncludeShiftKey = "FunctionKeyKeyboardLayoutOverrideIncludeShift" // whether include shif
|
private let kFunctionKeyKeyboardLayoutOverrideIncludeShiftKey = "FunctionKeyKeyboardLayoutOverrideIncludeShift" // whether include shif
|
||||||
private let kCandidateListTextSizeKey = "CandidateListTextSize"
|
private let kCandidateListTextSizeKey = "CandidateListTextSize"
|
||||||
|
private let kAppleLanguagesPreferencesKey = "AppleLanguages"
|
||||||
private let kSelectPhraseAfterCursorAsCandidatePreferenceKey = "SelectPhraseAfterCursorAsCandidate"
|
private let kSelectPhraseAfterCursorAsCandidatePreferenceKey = "SelectPhraseAfterCursorAsCandidate"
|
||||||
private let kUseHorizontalCandidateListPreferenceKey = "UseHorizontalCandidateList"
|
private let kUseHorizontalCandidateListPreferenceKey = "UseHorizontalCandidateList"
|
||||||
private let kComposingBufferSizePreferenceKey = "ComposingBufferSize"
|
private let kComposingBufferSizePreferenceKey = "ComposingBufferSize"
|
||||||
|
@ -172,6 +173,7 @@ struct ComposingBufferSize {
|
||||||
defaults.removeObject(forKey: kFunctionKeyKeyboardLayoutPreferenceKey)
|
defaults.removeObject(forKey: kFunctionKeyKeyboardLayoutPreferenceKey)
|
||||||
defaults.removeObject(forKey: kFunctionKeyKeyboardLayoutOverrideIncludeShiftKey)
|
defaults.removeObject(forKey: kFunctionKeyKeyboardLayoutOverrideIncludeShiftKey)
|
||||||
defaults.removeObject(forKey: kCandidateListTextSizeKey)
|
defaults.removeObject(forKey: kCandidateListTextSizeKey)
|
||||||
|
defaults.removeObject(forKey: kAppleLanguagesPreferencesKey)
|
||||||
defaults.removeObject(forKey: kSelectPhraseAfterCursorAsCandidatePreferenceKey)
|
defaults.removeObject(forKey: kSelectPhraseAfterCursorAsCandidatePreferenceKey)
|
||||||
defaults.removeObject(forKey: kUseHorizontalCandidateListPreferenceKey)
|
defaults.removeObject(forKey: kUseHorizontalCandidateListPreferenceKey)
|
||||||
defaults.removeObject(forKey: kComposingBufferSizePreferenceKey)
|
defaults.removeObject(forKey: kComposingBufferSizePreferenceKey)
|
||||||
|
@ -189,6 +191,9 @@ struct ComposingBufferSize {
|
||||||
defaults.removeObject(forKey: kMaxCandidateLength)
|
defaults.removeObject(forKey: kMaxCandidateLength)
|
||||||
defaults.removeObject(forKey: kShouldNotFartInLieuOfBeep)
|
defaults.removeObject(forKey: kShouldNotFartInLieuOfBeep)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@UserDefault(key: kAppleLanguagesPreferencesKey, defaultValue: [])
|
||||||
|
@objc static var appleLanguages: Array<String>
|
||||||
|
|
||||||
@UserDefault(key: kKeyboardLayoutPreferenceKey, defaultValue: 0)
|
@UserDefault(key: kKeyboardLayoutPreferenceKey, defaultValue: 0)
|
||||||
@objc static var keyboardLayout: Int
|
@objc static var keyboardLayout: Int
|
||||||
|
|
|
@ -22,11 +22,40 @@ extension RangeReplaceableCollection where Element: Hashable {
|
||||||
// the "InputMethodServerPreferencesWindowControllerClass" in Info.plist.
|
// the "InputMethodServerPreferencesWindowControllerClass" in Info.plist.
|
||||||
@objc(PreferencesWindowController) class PreferencesWindowController: NSWindowController {
|
@objc(PreferencesWindowController) class PreferencesWindowController: NSWindowController {
|
||||||
@IBOutlet weak var fontSizePopUpButton: NSPopUpButton!
|
@IBOutlet weak var fontSizePopUpButton: NSPopUpButton!
|
||||||
|
@IBOutlet weak var uiLanguageButton: NSPopUpButton!
|
||||||
@IBOutlet weak var basisKeyboardLayoutButton: NSPopUpButton!
|
@IBOutlet weak var basisKeyboardLayoutButton: NSPopUpButton!
|
||||||
@IBOutlet weak var selectionKeyComboBox: NSComboBox!
|
@IBOutlet weak var selectionKeyComboBox: NSComboBox!
|
||||||
@IBOutlet weak var clickedWhetherIMEShouldNotFartToggle: NSButton!
|
@IBOutlet weak var clickedWhetherIMEShouldNotFartToggle: NSButton!
|
||||||
|
|
||||||
|
var currentLanguageSelectItem: NSMenuItem? = nil
|
||||||
|
|
||||||
override func awakeFromNib() {
|
override func awakeFromNib() {
|
||||||
|
let languages = ["auto", "en-US", "zh-CN", "zh-TW", "ja-JP"]
|
||||||
|
var autoSelectItem: NSMenuItem? = nil
|
||||||
|
var chosenLanguageItem: NSMenuItem? = nil
|
||||||
|
uiLanguageButton.menu?.removeAllItems()
|
||||||
|
|
||||||
|
let appleLanguages = Preferences.appleLanguages
|
||||||
|
for language in languages {
|
||||||
|
let menuItem = NSMenuItem()
|
||||||
|
menuItem.title = NSLocalizedString(language, comment: "")
|
||||||
|
menuItem.representedObject = language
|
||||||
|
|
||||||
|
if language == "auto" {
|
||||||
|
autoSelectItem = menuItem
|
||||||
|
}
|
||||||
|
|
||||||
|
if !appleLanguages.isEmpty {
|
||||||
|
if appleLanguages[0] == language {
|
||||||
|
chosenLanguageItem = menuItem
|
||||||
|
}
|
||||||
|
}
|
||||||
|
uiLanguageButton.menu?.addItem(menuItem)
|
||||||
|
}
|
||||||
|
|
||||||
|
currentLanguageSelectItem = chosenLanguageItem ?? autoSelectItem
|
||||||
|
uiLanguageButton.select(currentLanguageSelectItem)
|
||||||
|
|
||||||
let list = TISCreateInputSourceList(nil, true).takeRetainedValue() as! [TISInputSource]
|
let list = TISCreateInputSourceList(nil, true).takeRetainedValue() as! [TISInputSource]
|
||||||
var usKeyboardLayoutItem: NSMenuItem? = nil
|
var usKeyboardLayoutItem: NSMenuItem? = nil
|
||||||
var chosenItem: NSMenuItem? = nil
|
var chosenItem: NSMenuItem? = nil
|
||||||
|
@ -124,6 +153,25 @@ extension RangeReplaceableCollection where Element: Hashable {
|
||||||
Preferences.basisKeyboardLayout = sourceID
|
Preferences.basisKeyboardLayout = sourceID
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@IBAction func updateUiLanguageAction(_ sender: Any) {
|
||||||
|
if let selectItem = uiLanguageButton.selectedItem {
|
||||||
|
if currentLanguageSelectItem == selectItem {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if let language = uiLanguageButton.selectedItem?.representedObject as? String {
|
||||||
|
if (language != "auto") {
|
||||||
|
Preferences.appleLanguages = [language]
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
UserDefaults.standard.removeObject(forKey: "AppleLanguages")
|
||||||
|
}
|
||||||
|
|
||||||
|
NSLog("vChewing App self-terminated due to UI language change.")
|
||||||
|
NSApplication.shared.terminate(nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@IBAction func clickedWhetherIMEShouldNotFartToggleAction(_ sender: Any) {
|
@IBAction func clickedWhetherIMEShouldNotFartToggleAction(_ sender: Any) {
|
||||||
clsSFX.beep()
|
clsSFX.beep()
|
||||||
|
|
Loading…
Reference in New Issue