From 2c0a12f43ff0ee8ff8606f34ba832ffc1a0e4a58 Mon Sep 17 00:00:00 2001 From: zonble Date: Sun, 30 Jan 2022 06:38:16 +0800 Subject: [PATCH] Lazy loads language models. --- Source/AppDelegate.swift | 1 - Source/InputMethodController.swift | 1 + Source/LanguageModelManager.h | 2 ++ Source/LanguageModelManager.mm | 10 ++++++++++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Source/AppDelegate.swift b/Source/AppDelegate.swift index f644cf39..68e8f044 100644 --- a/Source/AppDelegate.swift +++ b/Source/AppDelegate.swift @@ -153,7 +153,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, NonModalAlertWindowControlle func applicationDidFinishLaunching(_ notification: Notification) { LanguageModelManager.setupDataModelValueConverter() - LanguageModelManager.loadDataModels() LanguageModelManager.loadUserPhrases() LanguageModelManager.loadUserPhraseReplacement() diff --git a/Source/InputMethodController.swift b/Source/InputMethodController.swift index fa09c84e..aeed9c81 100644 --- a/Source/InputMethodController.swift +++ b/Source/InputMethodController.swift @@ -127,6 +127,7 @@ class McBopomofoInputMethodController: IMKInputController { override func setValue(_ value: Any!, forTag tag: Int, client: Any!) { let newInputMode = InputMode(rawValue: value as? String ?? InputMode.bopomofo.rawValue) + LanguageModelManager.loadDataModel(newInputMode) if keyHandler.inputMode != newInputMode { UserDefaults.standard.synchronize() // Remember to override the keyboard layout again -- treat this as an activate event. diff --git a/Source/LanguageModelManager.h b/Source/LanguageModelManager.h index 194c8f91..654bee08 100644 --- a/Source/LanguageModelManager.h +++ b/Source/LanguageModelManager.h @@ -22,12 +22,14 @@ // OTHER DEALINGS IN THE SOFTWARE. #import +#import "KeyHandler.h" NS_ASSUME_NONNULL_BEGIN @interface LanguageModelManager : NSObject + (void)loadDataModels; ++ (void)loadDataModel:(InputMode)mode; + (void)loadUserPhrases; + (void)loadUserPhraseReplacement; + (void)setupDataModelValueConverter; diff --git a/Source/LanguageModelManager.mm b/Source/LanguageModelManager.mm index c36156b5..2f34cead 100644 --- a/Source/LanguageModelManager.mm +++ b/Source/LanguageModelManager.mm @@ -60,6 +60,16 @@ static void LTLoadLanguageModelFile(NSString *filenameWithoutExtension, McBopomo LTLoadLanguageModelFile(@"data-plain-bpmf", gLanguageModelPlainBopomofo); } ++ (void)loadDataModel:(InputMode)mode +{ + if ([mode isEqualToString:InputModeBopomofo]) { + LTLoadLanguageModelFile(@"data", gLanguageModelMcBopomofo); + } + if ([mode isEqualToString:InputModePlainBopomofo]) { + LTLoadLanguageModelFile(@"data-plain-bpmf", gLanguageModelPlainBopomofo); + } +} + + (void)loadUserPhrases { gLanguageModelMcBopomofo.loadUserPhrases([[self userPhrasesDataPathMcBopomofo] UTF8String], [[self excludedPhrasesDataPathMcBopomofo] UTF8String]);