mgrPrefs // make UserDef cases iterable.
This commit is contained in:
parent
f69455892b
commit
38535768bc
|
@ -26,57 +26,57 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
import Cocoa
|
import Cocoa
|
||||||
|
|
||||||
struct UserDef {
|
public enum UserDef: String, CaseIterable {
|
||||||
static let kIsDebugModeEnabled = "_DebugMode"
|
case kIsDebugModeEnabled = "_DebugMode"
|
||||||
static let kMostRecentInputMode = "MostRecentInputMode"
|
case kMostRecentInputMode = "MostRecentInputMode"
|
||||||
static let kUserDataFolderSpecified = "UserDataFolderSpecified"
|
case kUserDataFolderSpecified = "UserDataFolderSpecified"
|
||||||
static let kCheckUpdateAutomatically = "CheckUpdateAutomatically"
|
case kCheckUpdateAutomatically = "CheckUpdateAutomatically"
|
||||||
static let kMandarinParser = "MandarinParser"
|
case kMandarinParser = "MandarinParser"
|
||||||
static let kBasicKeyboardLayout = "BasicKeyboardLayout"
|
case kBasicKeyboardLayout = "BasicKeyboardLayout"
|
||||||
static let kShowPageButtonsInCandidateWindow = "ShowPageButtonsInCandidateWindow"
|
case kShowPageButtonsInCandidateWindow = "ShowPageButtonsInCandidateWindow"
|
||||||
static let kCandidateListTextSize = "CandidateListTextSize"
|
case kCandidateListTextSize = "CandidateListTextSize"
|
||||||
static let kAppleLanguages = "AppleLanguages"
|
case kAppleLanguages = "AppleLanguages"
|
||||||
static let kShouldAutoReloadUserDataFiles = "ShouldAutoReloadUserDataFiles"
|
case kShouldAutoReloadUserDataFiles = "ShouldAutoReloadUserDataFiles"
|
||||||
static let kuseRearCursorMode = "useRearCursorMode"
|
case kuseRearCursorMode = "useRearCursorMode"
|
||||||
static let kUseHorizontalCandidateList = "UseHorizontalCandidateList"
|
case kUseHorizontalCandidateList = "UseHorizontalCandidateList"
|
||||||
static let kComposingBufferSize = "ComposingBufferSize"
|
case kComposingBufferSize = "ComposingBufferSize"
|
||||||
static let kChooseCandidateUsingSpace = "ChooseCandidateUsingSpace"
|
case kChooseCandidateUsingSpace = "ChooseCandidateUsingSpace"
|
||||||
static let kCNS11643Enabled = "CNS11643Enabled"
|
case kCNS11643Enabled = "CNS11643Enabled"
|
||||||
static let kSymbolInputEnabled = "SymbolInputEnabled"
|
case kSymbolInputEnabled = "SymbolInputEnabled"
|
||||||
static let kChineseConversionEnabled = "ChineseConversionEnabled"
|
case kChineseConversionEnabled = "ChineseConversionEnabled"
|
||||||
static let kShiftJISShinjitaiOutputEnabled = "ShiftJISShinjitaiOutputEnabled"
|
case kShiftJISShinjitaiOutputEnabled = "ShiftJISShinjitaiOutputEnabled"
|
||||||
static let kCurrencyNumeralsEnabled = "CurrencyNumeralsEnabled"
|
case kCurrencyNumeralsEnabled = "CurrencyNumeralsEnabled"
|
||||||
static let kHalfWidthPunctuationEnabled = "HalfWidthPunctuationEnable"
|
case kHalfWidthPunctuationEnabled = "HalfWidthPunctuationEnable"
|
||||||
static let kMoveCursorAfterSelectingCandidate = "MoveCursorAfterSelectingCandidate"
|
case kMoveCursorAfterSelectingCandidate = "MoveCursorAfterSelectingCandidate"
|
||||||
static let kEscToCleanInputBuffer = "EscToCleanInputBuffer"
|
case kEscToCleanInputBuffer = "EscToCleanInputBuffer"
|
||||||
static let kSpecifyShiftTabKeyBehavior = "SpecifyShiftTabKeyBehavior"
|
case kSpecifyShiftTabKeyBehavior = "SpecifyShiftTabKeyBehavior"
|
||||||
static let kSpecifyShiftSpaceKeyBehavior = "SpecifyShiftSpaceKeyBehavior"
|
case kSpecifyShiftSpaceKeyBehavior = "SpecifyShiftSpaceKeyBehavior"
|
||||||
static let kAllowBoostingSingleKanjiAsUserPhrase = "AllowBoostingSingleKanjiAsUserPhrase"
|
case kAllowBoostingSingleKanjiAsUserPhrase = "AllowBoostingSingleKanjiAsUserPhrase"
|
||||||
static let kUseSCPCTypingMode = "UseSCPCTypingMode"
|
case kUseSCPCTypingMode = "UseSCPCTypingMode"
|
||||||
static let kMaxCandidateLength = "MaxCandidateLength"
|
case kMaxCandidateLength = "MaxCandidateLength"
|
||||||
static let kShouldNotFartInLieuOfBeep = "ShouldNotFartInLieuOfBeep"
|
case kShouldNotFartInLieuOfBeep = "ShouldNotFartInLieuOfBeep"
|
||||||
static let kShowHanyuPinyinInCompositionBuffer = "ShowHanyuPinyinInCompositionBuffer"
|
case kShowHanyuPinyinInCompositionBuffer = "ShowHanyuPinyinInCompositionBuffer"
|
||||||
static let kInlineDumpPinyinInLieuOfZhuyin = "InlineDumpPinyinInLieuOfZhuyin"
|
case kInlineDumpPinyinInLieuOfZhuyin = "InlineDumpPinyinInLieuOfZhuyin"
|
||||||
static let kFetchSuggestionsFromUserOverrideModel = "FetchSuggestionsFromUserOverrideModel"
|
case kFetchSuggestionsFromUserOverrideModel = "FetchSuggestionsFromUserOverrideModel"
|
||||||
static let kUseFixecCandidateOrderOnSelection = "UseFixecCandidateOrderOnSelection"
|
case kUseFixecCandidateOrderOnSelection = "UseFixecCandidateOrderOnSelection"
|
||||||
static let kAutoCorrectReadingCombination = "AutoCorrectReadingCombination"
|
case kAutoCorrectReadingCombination = "AutoCorrectReadingCombination"
|
||||||
static let kAlsoConfirmAssociatedCandidatesByEnter = "AlsoConfirmAssociatedCandidatesByEnter"
|
case kAlsoConfirmAssociatedCandidatesByEnter = "AlsoConfirmAssociatedCandidatesByEnter"
|
||||||
static let kKeepReadingUponCompositionError = "KeepReadingUponCompositionError"
|
case kKeepReadingUponCompositionError = "KeepReadingUponCompositionError"
|
||||||
|
|
||||||
static let kCandidateTextFontName = "CandidateTextFontName"
|
case kCandidateTextFontName = "CandidateTextFontName"
|
||||||
static let kCandidateKeyLabelFontName = "CandidateKeyLabelFontName"
|
case kCandidateKeyLabelFontName = "CandidateKeyLabelFontName"
|
||||||
static let kCandidateKeys = "CandidateKeys"
|
case kCandidateKeys = "CandidateKeys"
|
||||||
|
|
||||||
static let kAssociatedPhrasesEnabled = "AssociatedPhrasesEnabled"
|
case kAssociatedPhrasesEnabled = "AssociatedPhrasesEnabled"
|
||||||
static let kPhraseReplacementEnabled = "PhraseReplacementEnabled"
|
case kPhraseReplacementEnabled = "PhraseReplacementEnabled"
|
||||||
|
|
||||||
static let kUsingHotKeySCPC = "UsingHotKeySCPC"
|
case kUsingHotKeySCPC = "UsingHotKeySCPC"
|
||||||
static let kUsingHotKeyAssociates = "UsingHotKeyAssociates"
|
case kUsingHotKeyAssociates = "UsingHotKeyAssociates"
|
||||||
static let kUsingHotKeyCNS = "UsingHotKeyCNS"
|
case kUsingHotKeyCNS = "UsingHotKeyCNS"
|
||||||
static let kUsingHotKeyKangXi = "UsingHotKeyKangXi"
|
case kUsingHotKeyKangXi = "UsingHotKeyKangXi"
|
||||||
static let kUsingHotKeyJIS = "UsingHotKeyJIS"
|
case kUsingHotKeyJIS = "UsingHotKeyJIS"
|
||||||
static let kUsingHotKeyHalfWidthASCII = "UsingHotKeyHalfWidthASCII"
|
case kUsingHotKeyHalfWidthASCII = "UsingHotKeyHalfWidthASCII"
|
||||||
static let kUsingHotKeyCurrencyNumerals = "UsingHotKeyCurrencyNumerals"
|
case kUsingHotKeyCurrencyNumerals = "UsingHotKeyCurrencyNumerals"
|
||||||
}
|
}
|
||||||
|
|
||||||
private let kDefaultCandidateListTextSize: CGFloat = 18
|
private let kDefaultCandidateListTextSize: CGFloat = 18
|
||||||
|
@ -238,95 +238,111 @@ enum MandarinParser: Int {
|
||||||
|
|
||||||
public enum mgrPrefs {
|
public enum mgrPrefs {
|
||||||
public static func setMissingDefaults() {
|
public static func setMissingDefaults() {
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.isDebugModeEnabled, forKey: UserDef.kIsDebugModeEnabled)
|
UserDefaults.standard.setDefault(mgrPrefs.isDebugModeEnabled, forKey: UserDef.kIsDebugModeEnabled.rawValue)
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.mostRecentInputMode, forKey: UserDef.kMostRecentInputMode)
|
UserDefaults.standard.setDefault(mgrPrefs.mostRecentInputMode, forKey: UserDef.kMostRecentInputMode.rawValue)
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.checkUpdateAutomatically, forKey: UserDef.kCheckUpdateAutomatically)
|
|
||||||
UserDefaults.standard.setDefault(
|
UserDefaults.standard.setDefault(
|
||||||
mgrPrefs.showPageButtonsInCandidateWindow, forKey: UserDef.kShowPageButtonsInCandidateWindow
|
mgrPrefs.checkUpdateAutomatically, forKey: UserDef.kCheckUpdateAutomatically.rawValue
|
||||||
)
|
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.symbolInputEnabled, forKey: UserDef.kSymbolInputEnabled)
|
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.candidateListTextSize, forKey: UserDef.kCandidateListTextSize)
|
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.chooseCandidateUsingSpace, forKey: UserDef.kChooseCandidateUsingSpace)
|
|
||||||
UserDefaults.standard.setDefault(
|
|
||||||
mgrPrefs.shouldAutoReloadUserDataFiles, forKey: UserDef.kShouldAutoReloadUserDataFiles
|
|
||||||
)
|
)
|
||||||
UserDefaults.standard.setDefault(
|
UserDefaults.standard.setDefault(
|
||||||
mgrPrefs.specifyShiftTabKeyBehavior, forKey: UserDef.kSpecifyShiftTabKeyBehavior
|
mgrPrefs.showPageButtonsInCandidateWindow, forKey: UserDef.kShowPageButtonsInCandidateWindow.rawValue
|
||||||
|
)
|
||||||
|
UserDefaults.standard.setDefault(mgrPrefs.symbolInputEnabled, forKey: UserDef.kSymbolInputEnabled.rawValue)
|
||||||
|
UserDefaults.standard.setDefault(mgrPrefs.candidateListTextSize, forKey: UserDef.kCandidateListTextSize.rawValue)
|
||||||
|
UserDefaults.standard.setDefault(
|
||||||
|
mgrPrefs.chooseCandidateUsingSpace, forKey: UserDef.kChooseCandidateUsingSpace.rawValue
|
||||||
)
|
)
|
||||||
UserDefaults.standard.setDefault(
|
UserDefaults.standard.setDefault(
|
||||||
mgrPrefs.specifyShiftSpaceKeyBehavior, forKey: UserDef.kSpecifyShiftSpaceKeyBehavior
|
mgrPrefs.shouldAutoReloadUserDataFiles, forKey: UserDef.kShouldAutoReloadUserDataFiles.rawValue
|
||||||
)
|
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.useSCPCTypingMode, forKey: UserDef.kUseSCPCTypingMode)
|
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.associatedPhrasesEnabled, forKey: UserDef.kAssociatedPhrasesEnabled)
|
|
||||||
UserDefaults.standard.setDefault(
|
|
||||||
mgrPrefs.useRearCursorMode, forKey: UserDef.kuseRearCursorMode
|
|
||||||
)
|
)
|
||||||
UserDefaults.standard.setDefault(
|
UserDefaults.standard.setDefault(
|
||||||
mgrPrefs.moveCursorAfterSelectingCandidate, forKey: UserDef.kMoveCursorAfterSelectingCandidate
|
mgrPrefs.specifyShiftTabKeyBehavior, forKey: UserDef.kSpecifyShiftTabKeyBehavior.rawValue
|
||||||
)
|
)
|
||||||
UserDefaults.standard.setDefault(
|
UserDefaults.standard.setDefault(
|
||||||
mgrPrefs.useHorizontalCandidateList, forKey: UserDef.kUseHorizontalCandidateList
|
mgrPrefs.specifyShiftSpaceKeyBehavior, forKey: UserDef.kSpecifyShiftSpaceKeyBehavior.rawValue
|
||||||
)
|
)
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.cns11643Enabled, forKey: UserDef.kCNS11643Enabled)
|
UserDefaults.standard.setDefault(mgrPrefs.useSCPCTypingMode, forKey: UserDef.kUseSCPCTypingMode.rawValue)
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.chineseConversionEnabled, forKey: UserDef.kChineseConversionEnabled)
|
|
||||||
UserDefaults.standard.setDefault(
|
UserDefaults.standard.setDefault(
|
||||||
mgrPrefs.shiftJISShinjitaiOutputEnabled, forKey: UserDef.kShiftJISShinjitaiOutputEnabled
|
mgrPrefs.associatedPhrasesEnabled, forKey: UserDef.kAssociatedPhrasesEnabled.rawValue
|
||||||
)
|
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.phraseReplacementEnabled, forKey: UserDef.kPhraseReplacementEnabled)
|
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.shouldNotFartInLieuOfBeep, forKey: UserDef.kShouldNotFartInLieuOfBeep)
|
|
||||||
UserDefaults.standard.setDefault(
|
|
||||||
mgrPrefs.showHanyuPinyinInCompositionBuffer, forKey: UserDef.kShowHanyuPinyinInCompositionBuffer
|
|
||||||
)
|
)
|
||||||
UserDefaults.standard.setDefault(
|
UserDefaults.standard.setDefault(
|
||||||
mgrPrefs.inlineDumpPinyinInLieuOfZhuyin, forKey: UserDef.kInlineDumpPinyinInLieuOfZhuyin
|
mgrPrefs.useRearCursorMode, forKey: UserDef.kuseRearCursorMode.rawValue
|
||||||
)
|
)
|
||||||
UserDefaults.standard.setDefault(
|
UserDefaults.standard.setDefault(
|
||||||
mgrPrefs.allowBoostingSingleKanjiAsUserPhrase, forKey: UserDef.kAllowBoostingSingleKanjiAsUserPhrase
|
mgrPrefs.moveCursorAfterSelectingCandidate, forKey: UserDef.kMoveCursorAfterSelectingCandidate.rawValue
|
||||||
)
|
)
|
||||||
UserDefaults.standard.setDefault(
|
UserDefaults.standard.setDefault(
|
||||||
mgrPrefs.fetchSuggestionsFromUserOverrideModel, forKey: UserDef.kFetchSuggestionsFromUserOverrideModel
|
mgrPrefs.useHorizontalCandidateList, forKey: UserDef.kUseHorizontalCandidateList.rawValue
|
||||||
|
)
|
||||||
|
UserDefaults.standard.setDefault(mgrPrefs.cns11643Enabled, forKey: UserDef.kCNS11643Enabled.rawValue)
|
||||||
|
UserDefaults.standard.setDefault(
|
||||||
|
mgrPrefs.chineseConversionEnabled, forKey: UserDef.kChineseConversionEnabled.rawValue
|
||||||
)
|
)
|
||||||
UserDefaults.standard.setDefault(
|
UserDefaults.standard.setDefault(
|
||||||
mgrPrefs.useFixecCandidateOrderOnSelection, forKey: UserDef.kUseFixecCandidateOrderOnSelection
|
mgrPrefs.shiftJISShinjitaiOutputEnabled, forKey: UserDef.kShiftJISShinjitaiOutputEnabled.rawValue
|
||||||
)
|
)
|
||||||
UserDefaults.standard.setDefault(
|
UserDefaults.standard.setDefault(
|
||||||
mgrPrefs.autoCorrectReadingCombination, forKey: UserDef.kAutoCorrectReadingCombination
|
mgrPrefs.phraseReplacementEnabled, forKey: UserDef.kPhraseReplacementEnabled.rawValue
|
||||||
)
|
)
|
||||||
UserDefaults.standard.setDefault(
|
UserDefaults.standard.setDefault(
|
||||||
mgrPrefs.alsoConfirmAssociatedCandidatesByEnter, forKey: UserDef.kAlsoConfirmAssociatedCandidatesByEnter
|
mgrPrefs.shouldNotFartInLieuOfBeep, forKey: UserDef.kShouldNotFartInLieuOfBeep.rawValue
|
||||||
)
|
)
|
||||||
UserDefaults.standard.setDefault(
|
UserDefaults.standard.setDefault(
|
||||||
mgrPrefs.currencyNumeralsEnabled, forKey: UserDef.kCurrencyNumeralsEnabled
|
mgrPrefs.showHanyuPinyinInCompositionBuffer, forKey: UserDef.kShowHanyuPinyinInCompositionBuffer.rawValue
|
||||||
)
|
)
|
||||||
UserDefaults.standard.setDefault(
|
UserDefaults.standard.setDefault(
|
||||||
mgrPrefs.keepReadingUponCompositionError, forKey: UserDef.kKeepReadingUponCompositionError
|
mgrPrefs.inlineDumpPinyinInLieuOfZhuyin, forKey: UserDef.kInlineDumpPinyinInLieuOfZhuyin.rawValue
|
||||||
|
)
|
||||||
|
UserDefaults.standard.setDefault(
|
||||||
|
mgrPrefs.allowBoostingSingleKanjiAsUserPhrase, forKey: UserDef.kAllowBoostingSingleKanjiAsUserPhrase.rawValue
|
||||||
|
)
|
||||||
|
UserDefaults.standard.setDefault(
|
||||||
|
mgrPrefs.fetchSuggestionsFromUserOverrideModel, forKey: UserDef.kFetchSuggestionsFromUserOverrideModel.rawValue
|
||||||
|
)
|
||||||
|
UserDefaults.standard.setDefault(
|
||||||
|
mgrPrefs.useFixecCandidateOrderOnSelection, forKey: UserDef.kUseFixecCandidateOrderOnSelection.rawValue
|
||||||
|
)
|
||||||
|
UserDefaults.standard.setDefault(
|
||||||
|
mgrPrefs.autoCorrectReadingCombination, forKey: UserDef.kAutoCorrectReadingCombination.rawValue
|
||||||
|
)
|
||||||
|
UserDefaults.standard.setDefault(
|
||||||
|
mgrPrefs.alsoConfirmAssociatedCandidatesByEnter, forKey: UserDef.kAlsoConfirmAssociatedCandidatesByEnter.rawValue
|
||||||
|
)
|
||||||
|
UserDefaults.standard.setDefault(
|
||||||
|
mgrPrefs.currencyNumeralsEnabled, forKey: UserDef.kCurrencyNumeralsEnabled.rawValue
|
||||||
|
)
|
||||||
|
UserDefaults.standard.setDefault(
|
||||||
|
mgrPrefs.keepReadingUponCompositionError, forKey: UserDef.kKeepReadingUponCompositionError.rawValue
|
||||||
)
|
)
|
||||||
|
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.usingHotKeySCPC, forKey: UserDef.kUsingHotKeySCPC)
|
UserDefaults.standard.setDefault(mgrPrefs.usingHotKeySCPC, forKey: UserDef.kUsingHotKeySCPC.rawValue)
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.usingHotKeyAssociates, forKey: UserDef.kUsingHotKeyAssociates)
|
UserDefaults.standard.setDefault(mgrPrefs.usingHotKeyAssociates, forKey: UserDef.kUsingHotKeyAssociates.rawValue)
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.usingHotKeyCNS, forKey: UserDef.kUsingHotKeyCNS)
|
UserDefaults.standard.setDefault(mgrPrefs.usingHotKeyCNS, forKey: UserDef.kUsingHotKeyCNS.rawValue)
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.usingHotKeyKangXi, forKey: UserDef.kUsingHotKeyKangXi)
|
UserDefaults.standard.setDefault(mgrPrefs.usingHotKeyKangXi, forKey: UserDef.kUsingHotKeyKangXi.rawValue)
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.usingHotKeyJIS, forKey: UserDef.kUsingHotKeyJIS)
|
UserDefaults.standard.setDefault(mgrPrefs.usingHotKeyJIS, forKey: UserDef.kUsingHotKeyJIS.rawValue)
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.usingHotKeyHalfWidthASCII, forKey: UserDef.kUsingHotKeyHalfWidthASCII)
|
UserDefaults.standard.setDefault(
|
||||||
UserDefaults.standard.setDefault(mgrPrefs.usingHotKeyCurrencyNumerals, forKey: UserDef.kUsingHotKeyCurrencyNumerals)
|
mgrPrefs.usingHotKeyHalfWidthASCII, forKey: UserDef.kUsingHotKeyHalfWidthASCII.rawValue
|
||||||
|
)
|
||||||
|
UserDefaults.standard.setDefault(
|
||||||
|
mgrPrefs.usingHotKeyCurrencyNumerals, forKey: UserDef.kUsingHotKeyCurrencyNumerals.rawValue
|
||||||
|
)
|
||||||
|
|
||||||
UserDefaults.standard.synchronize()
|
UserDefaults.standard.synchronize()
|
||||||
}
|
}
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kIsDebugModeEnabled, defaultValue: false)
|
@UserDefault(key: UserDef.kIsDebugModeEnabled.rawValue, defaultValue: false)
|
||||||
static var isDebugModeEnabled: Bool
|
static var isDebugModeEnabled: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kMostRecentInputMode, defaultValue: "")
|
@UserDefault(key: UserDef.kMostRecentInputMode.rawValue, defaultValue: "")
|
||||||
static var mostRecentInputMode: String
|
static var mostRecentInputMode: String
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kCheckUpdateAutomatically, defaultValue: false)
|
@UserDefault(key: UserDef.kCheckUpdateAutomatically.rawValue, defaultValue: false)
|
||||||
static var checkUpdateAutomatically: Bool
|
static var checkUpdateAutomatically: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kUserDataFolderSpecified, defaultValue: "")
|
@UserDefault(key: UserDef.kUserDataFolderSpecified.rawValue, defaultValue: "")
|
||||||
static var userDataFolderSpecified: String
|
static var userDataFolderSpecified: String
|
||||||
|
|
||||||
static func ifSpecifiedUserDataPathExistsInPlist() -> Bool {
|
static func ifSpecifiedUserDataPathExistsInPlist() -> Bool {
|
||||||
UserDefaults.standard.object(forKey: UserDef.kUserDataFolderSpecified) != nil
|
UserDefaults.standard.object(forKey: UserDef.kUserDataFolderSpecified.rawValue) != nil
|
||||||
}
|
}
|
||||||
|
|
||||||
static func resetSpecifiedUserDataFolder() {
|
static func resetSpecifiedUserDataFolder() {
|
||||||
|
@ -334,10 +350,10 @@ public enum mgrPrefs {
|
||||||
IME.initLangModels(userOnly: true)
|
IME.initLangModels(userOnly: true)
|
||||||
}
|
}
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kAppleLanguages, defaultValue: [])
|
@UserDefault(key: UserDef.kAppleLanguages.rawValue, defaultValue: [])
|
||||||
static var appleLanguages: [String]
|
static var appleLanguages: [String]
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kMandarinParser, defaultValue: 0)
|
@UserDefault(key: UserDef.kMandarinParser.rawValue, defaultValue: 0)
|
||||||
static var mandarinParser: Int
|
static var mandarinParser: Int
|
||||||
|
|
||||||
static var mandarinParserName: String {
|
static var mandarinParserName: String {
|
||||||
|
@ -345,106 +361,106 @@ public enum mgrPrefs {
|
||||||
}
|
}
|
||||||
|
|
||||||
@UserDefault(
|
@UserDefault(
|
||||||
key: UserDef.kBasicKeyboardLayout, defaultValue: "com.apple.keylayout.ZhuyinBopomofo"
|
key: UserDef.kBasicKeyboardLayout.rawValue, defaultValue: "com.apple.keylayout.ZhuyinBopomofo"
|
||||||
)
|
)
|
||||||
static var basicKeyboardLayout: String
|
static var basicKeyboardLayout: String
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kShowPageButtonsInCandidateWindow, defaultValue: true)
|
@UserDefault(key: UserDef.kShowPageButtonsInCandidateWindow.rawValue, defaultValue: true)
|
||||||
static var showPageButtonsInCandidateWindow: Bool
|
static var showPageButtonsInCandidateWindow: Bool
|
||||||
|
|
||||||
@CandidateListTextSize(key: UserDef.kCandidateListTextSize)
|
@CandidateListTextSize(key: UserDef.kCandidateListTextSize.rawValue)
|
||||||
static var candidateListTextSize: CGFloat
|
static var candidateListTextSize: CGFloat
|
||||||
|
|
||||||
static var minKeyLabelSize: CGFloat { kDefaultMinKeyLabelSize }
|
static var minKeyLabelSize: CGFloat { kDefaultMinKeyLabelSize }
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kShouldAutoReloadUserDataFiles, defaultValue: true)
|
@UserDefault(key: UserDef.kShouldAutoReloadUserDataFiles.rawValue, defaultValue: true)
|
||||||
static var shouldAutoReloadUserDataFiles: Bool
|
static var shouldAutoReloadUserDataFiles: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kuseRearCursorMode, defaultValue: false)
|
@UserDefault(key: UserDef.kuseRearCursorMode.rawValue, defaultValue: false)
|
||||||
static var useRearCursorMode: Bool
|
static var useRearCursorMode: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kMoveCursorAfterSelectingCandidate, defaultValue: true)
|
@UserDefault(key: UserDef.kMoveCursorAfterSelectingCandidate.rawValue, defaultValue: true)
|
||||||
static var moveCursorAfterSelectingCandidate: Bool
|
static var moveCursorAfterSelectingCandidate: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kUseHorizontalCandidateList, defaultValue: true)
|
@UserDefault(key: UserDef.kUseHorizontalCandidateList.rawValue, defaultValue: true)
|
||||||
static var useHorizontalCandidateList: Bool
|
static var useHorizontalCandidateList: Bool
|
||||||
|
|
||||||
@ComposingBufferSize(key: UserDef.kComposingBufferSize)
|
@ComposingBufferSize(key: UserDef.kComposingBufferSize.rawValue)
|
||||||
static var composingBufferSize: Int
|
static var composingBufferSize: Int
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kChooseCandidateUsingSpace, defaultValue: true)
|
@UserDefault(key: UserDef.kChooseCandidateUsingSpace.rawValue, defaultValue: true)
|
||||||
static var chooseCandidateUsingSpace: Bool
|
static var chooseCandidateUsingSpace: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kAllowBoostingSingleKanjiAsUserPhrase, defaultValue: false)
|
@UserDefault(key: UserDef.kAllowBoostingSingleKanjiAsUserPhrase.rawValue, defaultValue: false)
|
||||||
static var allowBoostingSingleKanjiAsUserPhrase: Bool
|
static var allowBoostingSingleKanjiAsUserPhrase: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kFetchSuggestionsFromUserOverrideModel, defaultValue: true)
|
@UserDefault(key: UserDef.kFetchSuggestionsFromUserOverrideModel.rawValue, defaultValue: true)
|
||||||
static var fetchSuggestionsFromUserOverrideModel: Bool
|
static var fetchSuggestionsFromUserOverrideModel: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kUseFixecCandidateOrderOnSelection, defaultValue: false)
|
@UserDefault(key: UserDef.kUseFixecCandidateOrderOnSelection.rawValue, defaultValue: false)
|
||||||
static var useFixecCandidateOrderOnSelection: Bool
|
static var useFixecCandidateOrderOnSelection: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kAutoCorrectReadingCombination, defaultValue: true)
|
@UserDefault(key: UserDef.kAutoCorrectReadingCombination.rawValue, defaultValue: true)
|
||||||
static var autoCorrectReadingCombination: Bool
|
static var autoCorrectReadingCombination: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kAlsoConfirmAssociatedCandidatesByEnter, defaultValue: true)
|
@UserDefault(key: UserDef.kAlsoConfirmAssociatedCandidatesByEnter.rawValue, defaultValue: true)
|
||||||
static var alsoConfirmAssociatedCandidatesByEnter: Bool
|
static var alsoConfirmAssociatedCandidatesByEnter: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kAlsoConfirmAssociatedCandidatesByEnter, defaultValue: false)
|
@UserDefault(key: UserDef.kAlsoConfirmAssociatedCandidatesByEnter.rawValue, defaultValue: false)
|
||||||
static var keepReadingUponCompositionError: Bool
|
static var keepReadingUponCompositionError: Bool
|
||||||
|
|
||||||
static var minCandidateLength: Int {
|
static var minCandidateLength: Int {
|
||||||
mgrPrefs.allowBoostingSingleKanjiAsUserPhrase ? 1 : 2
|
mgrPrefs.allowBoostingSingleKanjiAsUserPhrase ? 1 : 2
|
||||||
}
|
}
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kUseSCPCTypingMode, defaultValue: false)
|
@UserDefault(key: UserDef.kUseSCPCTypingMode.rawValue, defaultValue: false)
|
||||||
static var useSCPCTypingMode: Bool
|
static var useSCPCTypingMode: Bool
|
||||||
|
|
||||||
static func toggleSCPCTypingModeEnabled() -> Bool {
|
static func toggleSCPCTypingModeEnabled() -> Bool {
|
||||||
useSCPCTypingMode = !useSCPCTypingMode
|
useSCPCTypingMode = !useSCPCTypingMode
|
||||||
UserDefaults.standard.set(useSCPCTypingMode, forKey: UserDef.kUseSCPCTypingMode)
|
UserDefaults.standard.set(useSCPCTypingMode, forKey: UserDef.kUseSCPCTypingMode.rawValue)
|
||||||
return useSCPCTypingMode
|
return useSCPCTypingMode
|
||||||
}
|
}
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kMaxCandidateLength, defaultValue: 10)
|
@UserDefault(key: UserDef.kMaxCandidateLength.rawValue, defaultValue: 10)
|
||||||
static var maxCandidateLength: Int
|
static var maxCandidateLength: Int
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kShouldNotFartInLieuOfBeep, defaultValue: true)
|
@UserDefault(key: UserDef.kShouldNotFartInLieuOfBeep.rawValue, defaultValue: true)
|
||||||
static var shouldNotFartInLieuOfBeep: Bool
|
static var shouldNotFartInLieuOfBeep: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kShowHanyuPinyinInCompositionBuffer, defaultValue: false)
|
@UserDefault(key: UserDef.kShowHanyuPinyinInCompositionBuffer.rawValue, defaultValue: false)
|
||||||
static var showHanyuPinyinInCompositionBuffer: Bool
|
static var showHanyuPinyinInCompositionBuffer: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kInlineDumpPinyinInLieuOfZhuyin, defaultValue: false)
|
@UserDefault(key: UserDef.kInlineDumpPinyinInLieuOfZhuyin.rawValue, defaultValue: false)
|
||||||
static var inlineDumpPinyinInLieuOfZhuyin: Bool
|
static var inlineDumpPinyinInLieuOfZhuyin: Bool
|
||||||
|
|
||||||
static func toggleShouldNotFartInLieuOfBeep() -> Bool {
|
static func toggleShouldNotFartInLieuOfBeep() -> Bool {
|
||||||
shouldNotFartInLieuOfBeep = !shouldNotFartInLieuOfBeep
|
shouldNotFartInLieuOfBeep = !shouldNotFartInLieuOfBeep
|
||||||
UserDefaults.standard.set(shouldNotFartInLieuOfBeep, forKey: UserDef.kShouldNotFartInLieuOfBeep)
|
UserDefaults.standard.set(shouldNotFartInLieuOfBeep, forKey: UserDef.kShouldNotFartInLieuOfBeep.rawValue)
|
||||||
return shouldNotFartInLieuOfBeep
|
return shouldNotFartInLieuOfBeep
|
||||||
}
|
}
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kCNS11643Enabled, defaultValue: false)
|
@UserDefault(key: UserDef.kCNS11643Enabled.rawValue, defaultValue: false)
|
||||||
static var cns11643Enabled: Bool
|
static var cns11643Enabled: Bool
|
||||||
|
|
||||||
static func toggleCNS11643Enabled() -> Bool {
|
static func toggleCNS11643Enabled() -> Bool {
|
||||||
cns11643Enabled = !cns11643Enabled
|
cns11643Enabled = !cns11643Enabled
|
||||||
mgrLangModel.setCNSEnabled(cns11643Enabled) // 很重要
|
mgrLangModel.setCNSEnabled(cns11643Enabled) // 很重要
|
||||||
UserDefaults.standard.set(cns11643Enabled, forKey: UserDef.kCNS11643Enabled)
|
UserDefaults.standard.set(cns11643Enabled, forKey: UserDef.kCNS11643Enabled.rawValue)
|
||||||
return cns11643Enabled
|
return cns11643Enabled
|
||||||
}
|
}
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kSymbolInputEnabled, defaultValue: true)
|
@UserDefault(key: UserDef.kSymbolInputEnabled.rawValue, defaultValue: true)
|
||||||
static var symbolInputEnabled: Bool
|
static var symbolInputEnabled: Bool
|
||||||
|
|
||||||
static func toggleSymbolInputEnabled() -> Bool {
|
static func toggleSymbolInputEnabled() -> Bool {
|
||||||
symbolInputEnabled = !symbolInputEnabled
|
symbolInputEnabled = !symbolInputEnabled
|
||||||
mgrLangModel.setSymbolEnabled(symbolInputEnabled) // 很重要
|
mgrLangModel.setSymbolEnabled(symbolInputEnabled) // 很重要
|
||||||
UserDefaults.standard.set(symbolInputEnabled, forKey: UserDef.kSymbolInputEnabled)
|
UserDefaults.standard.set(symbolInputEnabled, forKey: UserDef.kSymbolInputEnabled.rawValue)
|
||||||
return symbolInputEnabled
|
return symbolInputEnabled
|
||||||
}
|
}
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kChineseConversionEnabled, defaultValue: false)
|
@UserDefault(key: UserDef.kChineseConversionEnabled.rawValue, defaultValue: false)
|
||||||
static var chineseConversionEnabled: Bool
|
static var chineseConversionEnabled: Bool
|
||||||
|
|
||||||
@discardableResult static func toggleChineseConversionEnabled() -> Bool {
|
@discardableResult static func toggleChineseConversionEnabled() -> Bool {
|
||||||
|
@ -453,14 +469,14 @@ public enum mgrPrefs {
|
||||||
if chineseConversionEnabled, shiftJISShinjitaiOutputEnabled {
|
if chineseConversionEnabled, shiftJISShinjitaiOutputEnabled {
|
||||||
toggleShiftJISShinjitaiOutputEnabled()
|
toggleShiftJISShinjitaiOutputEnabled()
|
||||||
UserDefaults.standard.set(
|
UserDefaults.standard.set(
|
||||||
shiftJISShinjitaiOutputEnabled, forKey: UserDef.kShiftJISShinjitaiOutputEnabled
|
shiftJISShinjitaiOutputEnabled, forKey: UserDef.kShiftJISShinjitaiOutputEnabled.rawValue
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
UserDefaults.standard.set(chineseConversionEnabled, forKey: UserDef.kChineseConversionEnabled)
|
UserDefaults.standard.set(chineseConversionEnabled, forKey: UserDef.kChineseConversionEnabled.rawValue)
|
||||||
return chineseConversionEnabled
|
return chineseConversionEnabled
|
||||||
}
|
}
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kShiftJISShinjitaiOutputEnabled, defaultValue: false)
|
@UserDefault(key: UserDef.kShiftJISShinjitaiOutputEnabled.rawValue, defaultValue: false)
|
||||||
static var shiftJISShinjitaiOutputEnabled: Bool
|
static var shiftJISShinjitaiOutputEnabled: Bool
|
||||||
|
|
||||||
@discardableResult static func toggleShiftJISShinjitaiOutputEnabled() -> Bool {
|
@discardableResult static func toggleShiftJISShinjitaiOutputEnabled() -> Bool {
|
||||||
|
@ -470,12 +486,12 @@ public enum mgrPrefs {
|
||||||
toggleChineseConversionEnabled()
|
toggleChineseConversionEnabled()
|
||||||
}
|
}
|
||||||
UserDefaults.standard.set(
|
UserDefaults.standard.set(
|
||||||
shiftJISShinjitaiOutputEnabled, forKey: UserDef.kShiftJISShinjitaiOutputEnabled
|
shiftJISShinjitaiOutputEnabled, forKey: UserDef.kShiftJISShinjitaiOutputEnabled.rawValue
|
||||||
)
|
)
|
||||||
return shiftJISShinjitaiOutputEnabled
|
return shiftJISShinjitaiOutputEnabled
|
||||||
}
|
}
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kCurrencyNumeralsEnabled, defaultValue: false)
|
@UserDefault(key: UserDef.kCurrencyNumeralsEnabled.rawValue, defaultValue: false)
|
||||||
static var currencyNumeralsEnabled: Bool
|
static var currencyNumeralsEnabled: Bool
|
||||||
|
|
||||||
static func toggleCurrencyNumeralsEnabled() -> Bool {
|
static func toggleCurrencyNumeralsEnabled() -> Bool {
|
||||||
|
@ -483,7 +499,7 @@ public enum mgrPrefs {
|
||||||
return currencyNumeralsEnabled
|
return currencyNumeralsEnabled
|
||||||
}
|
}
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kHalfWidthPunctuationEnabled, defaultValue: false)
|
@UserDefault(key: UserDef.kHalfWidthPunctuationEnabled.rawValue, defaultValue: false)
|
||||||
static var halfWidthPunctuationEnabled: Bool
|
static var halfWidthPunctuationEnabled: Bool
|
||||||
|
|
||||||
static func toggleHalfWidthPunctuationEnabled() -> Bool {
|
static func toggleHalfWidthPunctuationEnabled() -> Bool {
|
||||||
|
@ -491,24 +507,24 @@ public enum mgrPrefs {
|
||||||
return halfWidthPunctuationEnabled
|
return halfWidthPunctuationEnabled
|
||||||
}
|
}
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kEscToCleanInputBuffer, defaultValue: true)
|
@UserDefault(key: UserDef.kEscToCleanInputBuffer.rawValue, defaultValue: true)
|
||||||
static var escToCleanInputBuffer: Bool
|
static var escToCleanInputBuffer: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kSpecifyShiftTabKeyBehavior, defaultValue: false)
|
@UserDefault(key: UserDef.kSpecifyShiftTabKeyBehavior.rawValue, defaultValue: false)
|
||||||
static var specifyShiftTabKeyBehavior: Bool
|
static var specifyShiftTabKeyBehavior: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kSpecifyShiftSpaceKeyBehavior, defaultValue: false)
|
@UserDefault(key: UserDef.kSpecifyShiftSpaceKeyBehavior.rawValue, defaultValue: false)
|
||||||
static var specifyShiftSpaceKeyBehavior: Bool
|
static var specifyShiftSpaceKeyBehavior: Bool
|
||||||
|
|
||||||
// MARK: - Optional settings
|
// MARK: - Optional settings
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kCandidateTextFontName, defaultValue: nil)
|
@UserDefault(key: UserDef.kCandidateTextFontName.rawValue, defaultValue: nil)
|
||||||
static var candidateTextFontName: String?
|
static var candidateTextFontName: String?
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kCandidateKeyLabelFontName, defaultValue: nil)
|
@UserDefault(key: UserDef.kCandidateKeyLabelFontName.rawValue, defaultValue: nil)
|
||||||
static var candidateKeyLabelFontName: String?
|
static var candidateKeyLabelFontName: String?
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kCandidateKeys, defaultValue: kDefaultKeys)
|
@UserDefault(key: UserDef.kCandidateKeys.rawValue, defaultValue: kDefaultKeys)
|
||||||
static var candidateKeys: String
|
static var candidateKeys: String
|
||||||
|
|
||||||
static var defaultCandidateKeys: String {
|
static var defaultCandidateKeys: String {
|
||||||
|
@ -573,46 +589,46 @@ public enum mgrPrefs {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kPhraseReplacementEnabled, defaultValue: false)
|
@UserDefault(key: UserDef.kPhraseReplacementEnabled.rawValue, defaultValue: false)
|
||||||
static var phraseReplacementEnabled: Bool
|
static var phraseReplacementEnabled: Bool
|
||||||
|
|
||||||
static func togglePhraseReplacementEnabled() -> Bool {
|
static func togglePhraseReplacementEnabled() -> Bool {
|
||||||
phraseReplacementEnabled = !phraseReplacementEnabled
|
phraseReplacementEnabled = !phraseReplacementEnabled
|
||||||
mgrLangModel.setPhraseReplacementEnabled(phraseReplacementEnabled)
|
mgrLangModel.setPhraseReplacementEnabled(phraseReplacementEnabled)
|
||||||
UserDefaults.standard.set(phraseReplacementEnabled, forKey: UserDef.kPhraseReplacementEnabled)
|
UserDefaults.standard.set(phraseReplacementEnabled, forKey: UserDef.kPhraseReplacementEnabled.rawValue)
|
||||||
return phraseReplacementEnabled
|
return phraseReplacementEnabled
|
||||||
}
|
}
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kAssociatedPhrasesEnabled, defaultValue: false)
|
@UserDefault(key: UserDef.kAssociatedPhrasesEnabled.rawValue, defaultValue: false)
|
||||||
static var associatedPhrasesEnabled: Bool
|
static var associatedPhrasesEnabled: Bool
|
||||||
|
|
||||||
static func toggleAssociatedPhrasesEnabled() -> Bool {
|
static func toggleAssociatedPhrasesEnabled() -> Bool {
|
||||||
associatedPhrasesEnabled = !associatedPhrasesEnabled
|
associatedPhrasesEnabled = !associatedPhrasesEnabled
|
||||||
UserDefaults.standard.set(associatedPhrasesEnabled, forKey: UserDef.kAssociatedPhrasesEnabled)
|
UserDefaults.standard.set(associatedPhrasesEnabled, forKey: UserDef.kAssociatedPhrasesEnabled.rawValue)
|
||||||
return associatedPhrasesEnabled
|
return associatedPhrasesEnabled
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - Keyboard HotKey Enable / Disable
|
// MARK: - Keyboard HotKey Enable / Disable
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kUsingHotKeySCPC, defaultValue: true)
|
@UserDefault(key: UserDef.kUsingHotKeySCPC.rawValue, defaultValue: true)
|
||||||
static var usingHotKeySCPC: Bool
|
static var usingHotKeySCPC: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kUsingHotKeyAssociates, defaultValue: true)
|
@UserDefault(key: UserDef.kUsingHotKeyAssociates.rawValue, defaultValue: true)
|
||||||
static var usingHotKeyAssociates: Bool
|
static var usingHotKeyAssociates: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kUsingHotKeyCNS, defaultValue: true)
|
@UserDefault(key: UserDef.kUsingHotKeyCNS.rawValue, defaultValue: true)
|
||||||
static var usingHotKeyCNS: Bool
|
static var usingHotKeyCNS: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kUsingHotKeyKangXi, defaultValue: true)
|
@UserDefault(key: UserDef.kUsingHotKeyKangXi.rawValue, defaultValue: true)
|
||||||
static var usingHotKeyKangXi: Bool
|
static var usingHotKeyKangXi: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kUsingHotKeyJIS, defaultValue: true)
|
@UserDefault(key: UserDef.kUsingHotKeyJIS.rawValue, defaultValue: true)
|
||||||
static var usingHotKeyJIS: Bool
|
static var usingHotKeyJIS: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kUsingHotKeyHalfWidthASCII, defaultValue: true)
|
@UserDefault(key: UserDef.kUsingHotKeyHalfWidthASCII.rawValue, defaultValue: true)
|
||||||
static var usingHotKeyHalfWidthASCII: Bool
|
static var usingHotKeyHalfWidthASCII: Bool
|
||||||
|
|
||||||
@UserDefault(key: UserDef.kUsingHotKeyCurrencyNumerals, defaultValue: true)
|
@UserDefault(key: UserDef.kUsingHotKeyCurrencyNumerals.rawValue, defaultValue: true)
|
||||||
static var usingHotKeyCurrencyNumerals: Bool
|
static var usingHotKeyCurrencyNumerals: Bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -621,45 +637,23 @@ public enum mgrPrefs {
|
||||||
var snapshot: [String: Any]?
|
var snapshot: [String: Any]?
|
||||||
|
|
||||||
extension mgrPrefs {
|
extension mgrPrefs {
|
||||||
static var allKeys: [String] {
|
|
||||||
[
|
|
||||||
UserDef.kIsDebugModeEnabled, UserDef.kMostRecentInputMode, UserDef.kUserDataFolderSpecified,
|
|
||||||
UserDef.kCheckUpdateAutomatically, UserDef.kMandarinParser, UserDef.kBasicKeyboardLayout,
|
|
||||||
UserDef.kShowPageButtonsInCandidateWindow, UserDef.kCandidateListTextSize, UserDef.kAppleLanguages,
|
|
||||||
UserDef.kShouldAutoReloadUserDataFiles, UserDef.kuseRearCursorMode, UserDef.kUseHorizontalCandidateList,
|
|
||||||
UserDef.kComposingBufferSize, UserDef.kChooseCandidateUsingSpace, UserDef.kCNS11643Enabled,
|
|
||||||
UserDef.kSymbolInputEnabled, UserDef.kChineseConversionEnabled, UserDef.kShiftJISShinjitaiOutputEnabled,
|
|
||||||
UserDef.kHalfWidthPunctuationEnabled, UserDef.kMoveCursorAfterSelectingCandidate, UserDef.kEscToCleanInputBuffer,
|
|
||||||
UserDef.kSpecifyShiftTabKeyBehavior, UserDef.kSpecifyShiftSpaceKeyBehavior,
|
|
||||||
UserDef.kAllowBoostingSingleKanjiAsUserPhrase, UserDef.kUseSCPCTypingMode, UserDef.kMaxCandidateLength,
|
|
||||||
UserDef.kShouldNotFartInLieuOfBeep, UserDef.kShowHanyuPinyinInCompositionBuffer,
|
|
||||||
UserDef.kInlineDumpPinyinInLieuOfZhuyin, UserDef.kFetchSuggestionsFromUserOverrideModel,
|
|
||||||
UserDef.kCandidateTextFontName, UserDef.kCandidateKeyLabelFontName, UserDef.kCandidateKeys,
|
|
||||||
UserDef.kAssociatedPhrasesEnabled, UserDef.kPhraseReplacementEnabled, UserDef.kUsingHotKeySCPC,
|
|
||||||
UserDef.kUsingHotKeyAssociates, UserDef.kUsingHotKeyCNS, UserDef.kUsingHotKeyKangXi, UserDef.kUsingHotKeyJIS,
|
|
||||||
UserDef.kUsingHotKeyHalfWidthASCII, UserDef.kUseFixecCandidateOrderOnSelection,
|
|
||||||
UserDef.kAutoCorrectReadingCombination, UserDef.kAlsoConfirmAssociatedCandidatesByEnter,
|
|
||||||
UserDef.kCurrencyNumeralsEnabled, UserDef.kUsingHotKeyCurrencyNumerals, UserDef.kKeepReadingUponCompositionError,
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
func reset() {
|
func reset() {
|
||||||
mgrPrefs.allKeys.forEach {
|
UserDef.allCases.forEach {
|
||||||
UserDefaults.standard.removeObject(forKey: $0)
|
UserDefaults.standard.removeObject(forKey: $0.rawValue)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeSnapshot() -> [String: Any] {
|
func makeSnapshot() -> [String: Any] {
|
||||||
var dict = [String: Any]()
|
var dict = [String: Any]()
|
||||||
mgrPrefs.allKeys.forEach {
|
UserDef.allCases.forEach {
|
||||||
dict[$0] = UserDefaults.standard.object(forKey: $0)
|
dict[$0.rawValue] = UserDefaults.standard.object(forKey: $0.rawValue)
|
||||||
}
|
}
|
||||||
return dict
|
return dict
|
||||||
}
|
}
|
||||||
|
|
||||||
func restore(from snapshot: [String: Any]) {
|
func restore(from snapshot: [String: Any]) {
|
||||||
mgrPrefs.allKeys.forEach {
|
UserDef.allCases.forEach {
|
||||||
UserDefaults.standard.set(snapshot[$0], forKey: $0)
|
UserDefaults.standard.set(snapshot[$0.rawValue], forKey: $0.rawValue)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,19 +28,19 @@ import SwiftUI
|
||||||
struct suiPrefPaneDictionary: View {
|
struct suiPrefPaneDictionary: View {
|
||||||
private var fdrDefault = mgrLangModel.dataFolderPath(isDefaultFolder: true)
|
private var fdrDefault = mgrLangModel.dataFolderPath(isDefaultFolder: true)
|
||||||
@State private var tbxUserDataPathSpecified: String =
|
@State private var tbxUserDataPathSpecified: String =
|
||||||
UserDefaults.standard.string(forKey: UserDef.kUserDataFolderSpecified)
|
UserDefaults.standard.string(forKey: UserDef.kUserDataFolderSpecified.rawValue)
|
||||||
?? mgrLangModel.dataFolderPath(isDefaultFolder: true)
|
?? mgrLangModel.dataFolderPath(isDefaultFolder: true)
|
||||||
@State private var selAutoReloadUserData: Bool = UserDefaults.standard.bool(
|
@State private var selAutoReloadUserData: Bool = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kShouldAutoReloadUserDataFiles)
|
forKey: UserDef.kShouldAutoReloadUserDataFiles.rawValue)
|
||||||
@State private var selEnableCNS11643: Bool = UserDefaults.standard.bool(forKey: UserDef.kCNS11643Enabled)
|
@State private var selEnableCNS11643: Bool = UserDefaults.standard.bool(forKey: UserDef.kCNS11643Enabled.rawValue)
|
||||||
@State private var selEnableSymbolInputSupport: Bool = UserDefaults.standard.bool(
|
@State private var selEnableSymbolInputSupport: Bool = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kSymbolInputEnabled)
|
forKey: UserDef.kSymbolInputEnabled.rawValue)
|
||||||
@State private var selAllowBoostingSingleKanjiAsUserPhrase: Bool = UserDefaults.standard.bool(
|
@State private var selAllowBoostingSingleKanjiAsUserPhrase: Bool = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kAllowBoostingSingleKanjiAsUserPhrase)
|
forKey: UserDef.kAllowBoostingSingleKanjiAsUserPhrase.rawValue)
|
||||||
@State private var selFetchSuggestionsFromUserOverrideModel: Bool = UserDefaults.standard.bool(
|
@State private var selFetchSuggestionsFromUserOverrideModel: Bool = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kFetchSuggestionsFromUserOverrideModel)
|
forKey: UserDef.kFetchSuggestionsFromUserOverrideModel.rawValue)
|
||||||
@State private var selUseFixecCandidateOrderOnSelection: Bool = UserDefaults.standard.bool(
|
@State private var selUseFixecCandidateOrderOnSelection: Bool = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kUseFixecCandidateOrderOnSelection)
|
forKey: UserDef.kUseFixecCandidateOrderOnSelection.rawValue)
|
||||||
private let contentWidth: Double = {
|
private let contentWidth: Double = {
|
||||||
switch mgrPrefs.appleLanguages[0] {
|
switch mgrPrefs.appleLanguages[0] {
|
||||||
case "ja":
|
case "ja":
|
||||||
|
|
|
@ -29,29 +29,30 @@ import SwiftUI
|
||||||
struct suiPrefPaneExperience: View {
|
struct suiPrefPaneExperience: View {
|
||||||
@State private var selSelectionKeysList = mgrPrefs.suggestedCandidateKeys
|
@State private var selSelectionKeysList = mgrPrefs.suggestedCandidateKeys
|
||||||
@State private var selSelectionKeys =
|
@State private var selSelectionKeys =
|
||||||
(UserDefaults.standard.string(forKey: UserDef.kCandidateKeys) ?? mgrPrefs.defaultCandidateKeys) as String
|
(UserDefaults.standard.string(forKey: UserDef.kCandidateKeys.rawValue) ?? mgrPrefs.defaultCandidateKeys) as String
|
||||||
@State private var selCursorPosition =
|
@State private var selCursorPosition =
|
||||||
UserDefaults.standard.bool(
|
UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kuseRearCursorMode) ? 1 : 0
|
forKey: UserDef.kuseRearCursorMode.rawValue) ? 1 : 0
|
||||||
@State private var selPushCursorAfterSelection = UserDefaults.standard.bool(
|
@State private var selPushCursorAfterSelection = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kMoveCursorAfterSelectingCandidate)
|
forKey: UserDef.kMoveCursorAfterSelectingCandidate.rawValue)
|
||||||
@State private var selKeyBehaviorShiftTab =
|
@State private var selKeyBehaviorShiftTab =
|
||||||
UserDefaults.standard.bool(forKey: UserDef.kSpecifyShiftTabKeyBehavior) ? 1 : 0
|
UserDefaults.standard.bool(forKey: UserDef.kSpecifyShiftTabKeyBehavior.rawValue) ? 1 : 0
|
||||||
@State private var selKeyBehaviorShiftSpace =
|
@State private var selKeyBehaviorShiftSpace =
|
||||||
UserDefaults.standard.bool(
|
UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kSpecifyShiftSpaceKeyBehavior) ? 1 : 0
|
forKey: UserDef.kSpecifyShiftSpaceKeyBehavior.rawValue) ? 1 : 0
|
||||||
@State private var selKeyBehaviorSpaceForCallingCandidate = UserDefaults.standard.bool(
|
@State private var selKeyBehaviorSpaceForCallingCandidate = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kChooseCandidateUsingSpace)
|
forKey: UserDef.kChooseCandidateUsingSpace.rawValue)
|
||||||
@State private var selKeyBehaviorESCForClearingTheBuffer = UserDefaults.standard.bool(
|
@State private var selKeyBehaviorESCForClearingTheBuffer = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kEscToCleanInputBuffer)
|
forKey: UserDef.kEscToCleanInputBuffer.rawValue)
|
||||||
@State private var selEnableSCPCTypingMode = UserDefaults.standard.bool(forKey: UserDef.kUseSCPCTypingMode)
|
@State private var selEnableSCPCTypingMode = UserDefaults.standard.bool(forKey: UserDef.kUseSCPCTypingMode.rawValue)
|
||||||
@State private var selComposingBufferSize = UserDefaults.standard.integer(forKey: UserDef.kComposingBufferSize)
|
@State private var selComposingBufferSize = UserDefaults.standard.integer(
|
||||||
|
forKey: UserDef.kComposingBufferSize.rawValue)
|
||||||
@State private var selAutoCorrectReadingCombination = UserDefaults.standard.bool(
|
@State private var selAutoCorrectReadingCombination = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kAutoCorrectReadingCombination)
|
forKey: UserDef.kAutoCorrectReadingCombination.rawValue)
|
||||||
@State private var selAlsoConfirmAssociatedCandidatesByEnter = UserDefaults.standard.bool(
|
@State private var selAlsoConfirmAssociatedCandidatesByEnter = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kAlsoConfirmAssociatedCandidatesByEnter)
|
forKey: UserDef.kAlsoConfirmAssociatedCandidatesByEnter.rawValue)
|
||||||
@State private var selKeepReadingUponCompositionError = UserDefaults.standard.bool(
|
@State private var selKeepReadingUponCompositionError = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kKeepReadingUponCompositionError)
|
forKey: UserDef.kKeepReadingUponCompositionError.rawValue)
|
||||||
private let contentWidth: Double = {
|
private let contentWidth: Double = {
|
||||||
switch mgrPrefs.appleLanguages[0] {
|
switch mgrPrefs.appleLanguages[0] {
|
||||||
case "ja":
|
case "ja":
|
||||||
|
|
|
@ -27,29 +27,32 @@ import SwiftUI
|
||||||
|
|
||||||
@available(macOS 11.0, *)
|
@available(macOS 11.0, *)
|
||||||
struct suiPrefPaneGeneral: View {
|
struct suiPrefPaneGeneral: View {
|
||||||
@State private var selCandidateUIFontSize = UserDefaults.standard.integer(forKey: UserDef.kCandidateListTextSize)
|
@State private var selCandidateUIFontSize = UserDefaults.standard.integer(
|
||||||
|
forKey: UserDef.kCandidateListTextSize.rawValue)
|
||||||
@State private var selUILanguage: [String] =
|
@State private var selUILanguage: [String] =
|
||||||
IME.arrSupportedLocales.contains(
|
IME.arrSupportedLocales.contains(
|
||||||
((UserDefaults.standard.object(forKey: UserDef.kAppleLanguages) == nil)
|
((UserDefaults.standard.object(forKey: UserDef.kAppleLanguages.rawValue) == nil)
|
||||||
? ["auto"] : UserDefaults.standard.array(forKey: UserDef.kAppleLanguages) as? [String] ?? ["auto"])[0])
|
? ["auto"] : UserDefaults.standard.array(forKey: UserDef.kAppleLanguages.rawValue) as? [String] ?? ["auto"])[0])
|
||||||
? ((UserDefaults.standard.object(forKey: UserDef.kAppleLanguages) == nil)
|
? ((UserDefaults.standard.object(forKey: UserDef.kAppleLanguages.rawValue) == nil)
|
||||||
? ["auto"] : UserDefaults.standard.array(forKey: UserDef.kAppleLanguages) as? [String] ?? ["auto"])
|
? ["auto"] : UserDefaults.standard.array(forKey: UserDef.kAppleLanguages.rawValue) as? [String] ?? ["auto"])
|
||||||
: ["auto"]
|
: ["auto"]
|
||||||
@State private var selEnableHorizontalCandidateLayout = UserDefaults.standard.bool(
|
@State private var selEnableHorizontalCandidateLayout = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kUseHorizontalCandidateList)
|
forKey: UserDef.kUseHorizontalCandidateList.rawValue)
|
||||||
@State private var selShowPageButtonsInCandidateUI = UserDefaults.standard.bool(
|
@State private var selShowPageButtonsInCandidateUI = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kShowPageButtonsInCandidateWindow)
|
forKey: UserDef.kShowPageButtonsInCandidateWindow.rawValue)
|
||||||
@State private var selEnableKanjiConvToKangXi = UserDefaults.standard.bool(
|
@State private var selEnableKanjiConvToKangXi = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kChineseConversionEnabled)
|
forKey: UserDef.kChineseConversionEnabled.rawValue)
|
||||||
@State private var selEnableKanjiConvToJIS = UserDefaults.standard.bool(
|
@State private var selEnableKanjiConvToJIS = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kShiftJISShinjitaiOutputEnabled)
|
forKey: UserDef.kShiftJISShinjitaiOutputEnabled.rawValue)
|
||||||
@State private var selShowHanyuPinyinInCompositionBuffer = UserDefaults.standard.bool(
|
@State private var selShowHanyuPinyinInCompositionBuffer = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kShowHanyuPinyinInCompositionBuffer)
|
forKey: UserDef.kShowHanyuPinyinInCompositionBuffer.rawValue)
|
||||||
@State private var selInlineDumpPinyinInLieuOfZhuyin = UserDefaults.standard.bool(
|
@State private var selInlineDumpPinyinInLieuOfZhuyin = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kInlineDumpPinyinInLieuOfZhuyin)
|
forKey: UserDef.kInlineDumpPinyinInLieuOfZhuyin.rawValue)
|
||||||
@State private var selEnableFartSuppressor = UserDefaults.standard.bool(forKey: UserDef.kShouldNotFartInLieuOfBeep)
|
@State private var selEnableFartSuppressor = UserDefaults.standard.bool(
|
||||||
@State private var selEnableAutoUpdateCheck = UserDefaults.standard.bool(forKey: UserDef.kCheckUpdateAutomatically)
|
forKey: UserDef.kShouldNotFartInLieuOfBeep.rawValue)
|
||||||
@State private var selEnableDebugMode = UserDefaults.standard.bool(forKey: UserDef.kIsDebugModeEnabled)
|
@State private var selEnableAutoUpdateCheck = UserDefaults.standard.bool(
|
||||||
|
forKey: UserDef.kCheckUpdateAutomatically.rawValue)
|
||||||
|
@State private var selEnableDebugMode = UserDefaults.standard.bool(forKey: UserDef.kIsDebugModeEnabled.rawValue)
|
||||||
private let contentWidth: Double = {
|
private let contentWidth: Double = {
|
||||||
switch mgrPrefs.appleLanguages[0] {
|
switch mgrPrefs.appleLanguages[0] {
|
||||||
case "ja":
|
case "ja":
|
||||||
|
@ -94,14 +97,14 @@ struct suiPrefPaneGeneral: View {
|
||||||
IME.prtDebugIntel(value[0])
|
IME.prtDebugIntel(value[0])
|
||||||
if selUILanguage == mgrPrefs.appleLanguages
|
if selUILanguage == mgrPrefs.appleLanguages
|
||||||
|| (selUILanguage[0] == "auto"
|
|| (selUILanguage[0] == "auto"
|
||||||
&& UserDefaults.standard.object(forKey: UserDef.kAppleLanguages) == nil)
|
&& UserDefaults.standard.object(forKey: UserDef.kAppleLanguages.rawValue) == nil)
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if selUILanguage[0] != "auto" {
|
if selUILanguage[0] != "auto" {
|
||||||
mgrPrefs.appleLanguages = value
|
mgrPrefs.appleLanguages = value
|
||||||
} else {
|
} else {
|
||||||
UserDefaults.standard.removeObject(forKey: UserDef.kAppleLanguages)
|
UserDefaults.standard.removeObject(forKey: UserDef.kAppleLanguages.rawValue)
|
||||||
}
|
}
|
||||||
NSLog("vChewing App self-terminated due to UI language change.")
|
NSLog("vChewing App self-terminated due to UI language change.")
|
||||||
NSApplication.shared.terminate(nil)
|
NSApplication.shared.terminate(nil)
|
||||||
|
|
|
@ -26,19 +26,20 @@ import SwiftUI
|
||||||
|
|
||||||
@available(macOS 11.0, *)
|
@available(macOS 11.0, *)
|
||||||
struct suiPrefPaneKeyboard: View {
|
struct suiPrefPaneKeyboard: View {
|
||||||
@State private var selMandarinParser = UserDefaults.standard.integer(forKey: UserDef.kMandarinParser)
|
@State private var selMandarinParser = UserDefaults.standard.integer(forKey: UserDef.kMandarinParser.rawValue)
|
||||||
@State private var selBasicKeyboardLayout: String =
|
@State private var selBasicKeyboardLayout: String =
|
||||||
UserDefaults.standard.string(forKey: UserDef.kBasicKeyboardLayout) ?? mgrPrefs.basicKeyboardLayout
|
UserDefaults.standard.string(forKey: UserDef.kBasicKeyboardLayout.rawValue) ?? mgrPrefs.basicKeyboardLayout
|
||||||
|
|
||||||
@State private var selUsingHotKeySCPC = UserDefaults.standard.bool(forKey: UserDef.kUsingHotKeySCPC)
|
@State private var selUsingHotKeySCPC = UserDefaults.standard.bool(forKey: UserDef.kUsingHotKeySCPC.rawValue)
|
||||||
@State private var selUsingHotKeyAssociates = UserDefaults.standard.bool(forKey: UserDef.kUsingHotKeyAssociates)
|
@State private var selUsingHotKeyAssociates = UserDefaults.standard.bool(
|
||||||
@State private var selUsingHotKeyCNS = UserDefaults.standard.bool(forKey: UserDef.kUsingHotKeyCNS)
|
forKey: UserDef.kUsingHotKeyAssociates.rawValue)
|
||||||
@State private var selUsingHotKeyKangXi = UserDefaults.standard.bool(forKey: UserDef.kUsingHotKeyKangXi)
|
@State private var selUsingHotKeyCNS = UserDefaults.standard.bool(forKey: UserDef.kUsingHotKeyCNS.rawValue)
|
||||||
@State private var selUsingHotKeyJIS = UserDefaults.standard.bool(forKey: UserDef.kUsingHotKeyJIS)
|
@State private var selUsingHotKeyKangXi = UserDefaults.standard.bool(forKey: UserDef.kUsingHotKeyKangXi.rawValue)
|
||||||
|
@State private var selUsingHotKeyJIS = UserDefaults.standard.bool(forKey: UserDef.kUsingHotKeyJIS.rawValue)
|
||||||
@State private var selUsingHotKeyHalfWidthASCII = UserDefaults.standard.bool(
|
@State private var selUsingHotKeyHalfWidthASCII = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kUsingHotKeyHalfWidthASCII)
|
forKey: UserDef.kUsingHotKeyHalfWidthASCII.rawValue)
|
||||||
@State private var selUsingHotKeyCurrencyNumerals = UserDefaults.standard.bool(
|
@State private var selUsingHotKeyCurrencyNumerals = UserDefaults.standard.bool(
|
||||||
forKey: UserDef.kUsingHotKeyCurrencyNumerals)
|
forKey: UserDef.kUsingHotKeyCurrencyNumerals.rawValue)
|
||||||
|
|
||||||
private let contentWidth: Double = {
|
private let contentWidth: Double = {
|
||||||
switch mgrPrefs.appleLanguages[0] {
|
switch mgrPrefs.appleLanguages[0] {
|
||||||
|
|
Loading…
Reference in New Issue