/// <summary> /// Creates the word predictor using reflection on the /// specified type and makes it the active one. If it fails, /// it set the null word predictor as the active one. /// </summary> /// <param name="type"></param> /// <returns></returns> private bool createAndSetActiveWordPredictor(Type type) { bool retVal = true; try { var wordPredictor = (IWordPredictor)Activator.CreateInstance(type); retVal = wordPredictor.Init(); if (retVal) { saveSettings(wordPredictor); _activeWordPredictor = wordPredictor; } } catch (Exception ex) { Log.Debug("Unable to load WordPredictor " + type + ", assembly: " + type.Assembly.FullName + ". Exception: " + ex.ToString()); retVal = false; } if (!retVal) { _activeWordPredictor = _nullWordPredictor; } return(retVal); }
/// <summary> /// Sets the active word predictor represented by id /// as a Guid or name. /// </summary> /// <param name="id"></param> /// <returns></returns> public bool SetActiveWordPredictor(String idOrName) { bool retVal = true; Guid guid = Guid.Empty; if (!Guid.TryParse(idOrName, out guid)) { guid = _wordPredictors.GetByName(idOrName); } Type type = Guid.Equals(idOrName, Guid.Empty) ? type = typeof(NullWordPredictor) : _wordPredictors.Lookup(guid); if (type != null) { if (_activeWordPredictor != null) { _activeWordPredictor.Dispose(); _activeWordPredictor = null; } retVal = createAndSetActiveWordPredictor(type); } else { createAndSetActiveWordPredictor(typeof(NullWordPredictor)); retVal = false; } return(retVal); }
/// <summary> /// Switch language to the specified one. /// </summary> /// <param name="ci">culture to switch to</param> /// <returns>true on success</returns> public bool SwitchLanguage(CultureInfo ci) { if (_activeWordPredictor != null) { _activeWordPredictor.Dispose(); _activeWordPredictor = null; } return(SetActiveWordPredictor(ci)); }
/// <summary> /// Initializes and instance of the WordPredictionManager class. /// </summary> private WordPredictionManager() { AppDomain currentDomain = AppDomain.CurrentDomain; Context.EvtCultureChanged += Context_EvtCultureChanged; currentDomain.AssemblyResolve += currentDomain_AssemblyResolve; _activeWordPredictor = WordPredictors.NullWordPredictor; _userWordPredictorRootDir = UserManagement.UserManager.GetFullPath(WordPredictorsRootName); _profileRootDir = UserManagement.ProfileManager.GetFullPath(WordPredictorsRootName); }
/// <summary> /// Initializes and instance of the WordPredictionManager class. /// </summary> private WordPredictionManager() { AppDomain currentDomain = AppDomain.CurrentDomain; currentDomain.AssemblyResolve += currentDomain_AssemblyResolve; _nullWordPredictor = new NullWordPredictor(); _nullWordPredictor.Init(); _activeWordPredictor = _nullWordPredictor; _userWordPredictorRootDir = UserManagement.UserManager.GetFullPath(WordPredictorsRootName); _profileRootDir = UserManagement.ProfileManager.GetFullPath(WordPredictorsRootName); }
/// <summary> /// Creates the word predictor using reflection on the /// specified type and makes it the active one. If it fails, /// it set the null word predictor as the active one. /// </summary> /// <param name="type">Type of the word predictor class</param> /// <param name="ci">Culture</param> /// <returns>true</returns> private bool createAndSetActiveWordPredictor(Type type, CultureInfo ci) { bool retVal; try { var wordPredictor = (IWordPredictor)Activator.CreateInstance(type); retVal = wordPredictor.Init(ci); if (retVal) { _activeWordPredictor = wordPredictor; } } catch (Exception ex) { Log.Debug("Unable to load WordPredictor " + type + ", assembly: " + type.Assembly.FullName + ". Exception: " + ex); retVal = false; } return(retVal); }
/// <summary> /// Saves settings for the specified wordpredictor /// </summary> /// <param name="wordPredictor"></param> private void saveSettings(IWordPredictor wordPredictor) { wordPredictor.SaveSettings("dummy"); }
/// <summary> /// Loads default settings for the specified word predictor /// </summary> /// <param name="wordPredictor"></param> private void loadDefaultSettings(IWordPredictor wordPredictor) { wordPredictor.LoadDefaultSettings(); }
/// <summary> /// Creates the word predictor using reflection on the /// specified type and makes it the active one. If it fails, /// it set the null word predictor as the active one. /// </summary> /// <param name="type"></param> /// <returns></returns> private bool createAndSetActiveWordPredictor(Type type) { bool retVal = true; try { var wordPredictor = (IWordPredictor)Activator.CreateInstance(type); retVal = wordPredictor.Init(); if (retVal) { saveSettings(wordPredictor); _activeWordPredictor = wordPredictor; } } catch (Exception ex) { Log.Debug("Unable to load WordPredictor " + type + ", assembly: " + type.Assembly.FullName + ". Exception: " + ex.ToString()); retVal = false; } if (!retVal) { _activeWordPredictor = _nullWordPredictor; } return retVal; }
/// <summary> /// Sets the active word predictor represented by id /// as a Guid or name. /// </summary> /// <param name="id"></param> /// <returns></returns> public bool SetActiveWordPredictor(String idOrName) { bool retVal = true; Guid guid = Guid.Empty; if (!Guid.TryParse(idOrName, out guid)) { guid = _wordPredictors.GetByName(idOrName); } Type type = Guid.Equals(idOrName, Guid.Empty) ? type = typeof(NullWordPredictor) : _wordPredictors.Lookup(guid); if (type != null) { if (_activeWordPredictor != null) { _activeWordPredictor.Dispose(); _activeWordPredictor = null; } retVal = createAndSetActiveWordPredictor(type); } else { createAndSetActiveWordPredictor(typeof(NullWordPredictor)); retVal = false; } return retVal; }
/// <summary> /// Sets the active word predictor for the specified culture. If /// culture is null, the default culture is used /// </summary> /// <param name="ci">culture info</param> /// <returns>true on success</returns> public bool SetActiveWordPredictor(CultureInfo ci = null) { bool retVal = true; Guid guid = Guid.Empty; Guid cultureNeutralGuid = Guid.Empty; if (ci == null) { ci = CultureInfo.DefaultThreadCurrentUICulture; } guid = _wordPredictors.GetPreferredOrDefaultByCulture(ci); cultureNeutralGuid = _wordPredictors.GetPreferredOrDefaultByCulture(null); if (!Equals(guid, Guid.Empty)) // found something for the specific culture { var type = _wordPredictors.Lookup(guid); if (_activeWordPredictor != null) { _activeWordPredictor.Dispose(); _activeWordPredictor = null; } retVal = createAndSetActiveWordPredictor(type, ci); if (!retVal) { _activeWordPredictor = WordPredictors.NullWordPredictor; } } else { if (!Equals(cultureNeutralGuid, Guid.Empty)) { var type = _wordPredictors.Lookup(cultureNeutralGuid); retVal = createAndSetActiveWordPredictor(type, ci); if (!retVal) { ci = new CultureInfo("en-US"); guid = _wordPredictors.GetDefaultByCulture(ci); if (!Equals(guid, Guid.Empty)) { type = _wordPredictors.Lookup(guid); retVal = createAndSetActiveWordPredictor(type, ci); } } } else { retVal = false; } if (!retVal) { _activeWordPredictor = WordPredictors.NullWordPredictor; } } return(retVal); }