Hiraku: MUI Selector // phase 1: Implementing function.
This commit is contained in:
parent
5ba0cec88e
commit
1fb93c4681
|
@ -11,6 +11,7 @@
|
|||
<outlet property="basisKeyboardLayoutButton" destination="124" id="135"/>
|
||||
<outlet property="fontSizePopUpButton" destination="90" id="108"/>
|
||||
<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"/>
|
||||
</connections>
|
||||
</customObject>
|
||||
|
@ -106,6 +107,9 @@
|
|||
</items>
|
||||
</menu>
|
||||
</popUpButtonCell>
|
||||
<connections>
|
||||
<action selector="updateUiLanguageAction:" target="-2" id="8XG-O0-Otf"/>
|
||||
</connections>
|
||||
</popUpButton>
|
||||
<textField horizontalHuggingPriority="249" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="L5M-VG-W1X">
|
||||
<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 kFunctionKeyKeyboardLayoutOverrideIncludeShiftKey = "FunctionKeyKeyboardLayoutOverrideIncludeShift" // whether include shif
|
||||
private let kCandidateListTextSizeKey = "CandidateListTextSize"
|
||||
private let kAppleLanguagesPreferencesKey = "AppleLanguages"
|
||||
private let kSelectPhraseAfterCursorAsCandidatePreferenceKey = "SelectPhraseAfterCursorAsCandidate"
|
||||
private let kUseHorizontalCandidateListPreferenceKey = "UseHorizontalCandidateList"
|
||||
private let kComposingBufferSizePreferenceKey = "ComposingBufferSize"
|
||||
|
@ -172,6 +173,7 @@ struct ComposingBufferSize {
|
|||
defaults.removeObject(forKey: kFunctionKeyKeyboardLayoutPreferenceKey)
|
||||
defaults.removeObject(forKey: kFunctionKeyKeyboardLayoutOverrideIncludeShiftKey)
|
||||
defaults.removeObject(forKey: kCandidateListTextSizeKey)
|
||||
defaults.removeObject(forKey: kAppleLanguagesPreferencesKey)
|
||||
defaults.removeObject(forKey: kSelectPhraseAfterCursorAsCandidatePreferenceKey)
|
||||
defaults.removeObject(forKey: kUseHorizontalCandidateListPreferenceKey)
|
||||
defaults.removeObject(forKey: kComposingBufferSizePreferenceKey)
|
||||
|
@ -189,6 +191,9 @@ struct ComposingBufferSize {
|
|||
defaults.removeObject(forKey: kMaxCandidateLength)
|
||||
defaults.removeObject(forKey: kShouldNotFartInLieuOfBeep)
|
||||
}
|
||||
|
||||
@UserDefault(key: kAppleLanguagesPreferencesKey, defaultValue: [])
|
||||
@objc static var appleLanguages: Array<String>
|
||||
|
||||
@UserDefault(key: kKeyboardLayoutPreferenceKey, defaultValue: 0)
|
||||
@objc static var keyboardLayout: Int
|
||||
|
|
|
@ -22,11 +22,40 @@ extension RangeReplaceableCollection where Element: Hashable {
|
|||
// the "InputMethodServerPreferencesWindowControllerClass" in Info.plist.
|
||||
@objc(PreferencesWindowController) class PreferencesWindowController: NSWindowController {
|
||||
@IBOutlet weak var fontSizePopUpButton: NSPopUpButton!
|
||||
@IBOutlet weak var uiLanguageButton: NSPopUpButton!
|
||||
@IBOutlet weak var basisKeyboardLayoutButton: NSPopUpButton!
|
||||
@IBOutlet weak var selectionKeyComboBox: NSComboBox!
|
||||
@IBOutlet weak var clickedWhetherIMEShouldNotFartToggle: NSButton!
|
||||
|
||||
var currentLanguageSelectItem: NSMenuItem? = nil
|
||||
|
||||
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]
|
||||
var usKeyboardLayoutItem: NSMenuItem? = nil
|
||||
var chosenItem: NSMenuItem? = nil
|
||||
|
@ -124,6 +153,25 @@ extension RangeReplaceableCollection where Element: Hashable {
|
|||
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) {
|
||||
clsSFX.beep()
|
||||
|
|
Loading…
Reference in New Issue