/// <summary> /// Handle multiple panels open and changing languages /// </summary> /// <param name="languageChangedResult"></param> void HandleOnLanguageChanged(LanguageChangedResult languageChangedResult) { ISpeechDetectionPlugin plugin = EditorProxySpeechDetectionPlugin.GetInstance(); int languageIndex = _mLanguage; if (SpeechDetectionUtils.HandleOnLanguageChanged( ref _mLanguage, _mLanguages, ref _mDialect, _mDialects, _mLanguageResult, plugin, languageChangedResult)) { if (languageIndex != _mLanguage) { SpeechDetectionUtils.HandleLanguageChanged(_mLanguages, _mLanguage, out _mDialects, ref _mDialect, _mLanguageResult, plugin); } Repaint(); } }
/// <summary> /// Invoke all the listeners /// </summary> /// <param name="detectionResult"></param> public void Invoke(LanguageChangedResult languageChangedResult) { foreach (DelegateHandleLanguageChanged listener in _sOnLanguageChanged) { listener.Invoke(languageChangedResult); } }
/// <summary> /// Handler for changing dialects /// </summary> public static void HandleDialectChanged(string[] dialectOptions, int dialectIndex, LanguageResult languageResult, ISpeechDetectionPlugin plugin) { if (null == dialectOptions) { Debug.LogError("The dialect options are not set!"); return; } if (null == languageResult) { Debug.LogError("The language result is not set!"); return; } string display = dialectOptions[dialectIndex]; Dialect dialect = null; if (dialectIndex > 0) { //Debug.Log(display); SetDefaultDialect(display); dialect = SpeechDetectionUtils.GetDialect(languageResult, display); if (null == dialect) { Debug.LogError("Did not find specified dialect!"); return; } //Debug.Log(dialect.name); if (null != plugin) { plugin.Abort(); plugin.SetLanguage(dialect.name); LanguageChangedResult languageChangedResult = new LanguageChangedResult(); languageChangedResult._mDialect = dialect.name; plugin.Invoke(languageChangedResult); } } }
/// <summary> /// Handler for changing dialects /// </summary> public static void HandleDialectChanged(Dropdown dropdownDialects, LanguageResult languageResult, ISpeechDetectionPlugin plugin) { if (null == dropdownDialects) { Debug.LogError("The dropdown for dialects is not set!"); return; } if (null == languageResult) { Debug.LogError("The language result is not set!"); return; } string display = dropdownDialects.options[dropdownDialects.value].text; Dialect dialect = null; if (dropdownDialects.value > 0) { //Debug.Log(display); SetDefaultDialect(display); dialect = SpeechDetectionUtils.GetDialect(languageResult, display); if (null == dialect) { Debug.LogError("Did not find specified dialect!"); return; } //Debug.Log(dialect.name); if (null != plugin) { plugin.Abort(); plugin.SetLanguage(dialect.name); LanguageChangedResult languageChangedResult = new LanguageChangedResult(); languageChangedResult._mDialect = dialect.name; plugin.Invoke(languageChangedResult); } } }
public static bool HandleOnLanguageChanged( ref int languageIndex, string[] languageOptions, ref int dialectIndex, string[] dialectOptions, LanguageResult languageResult, ISpeechDetectionPlugin plugin, LanguageChangedResult languageChangedResult) { if (_sPausePreferences) { return(false); } if (null == languageResult) { Debug.LogError("LanguageResult is null!"); return(false); } if (null == languageChangedResult) { Debug.LogError("LanguageChangedResult is null!"); return(false); } bool changed = false; /* * Debug.LogFormat("GetLanguageDisplay: language={0} dialect={1}", * (languageChangedResult._mLanguage == null) ? "null" : languageChangedResult._mLanguage, * (languageChangedResult._mDialect == null) ? "null" : languageChangedResult._mDialect); */ if (null != languageChangedResult._mLanguage) { string language = GetLanguageDisplay(languageResult, languageChangedResult._mLanguage); for (int index = 0; index < languageOptions.Length; ++index) { if (languageOptions[index] == language) { if (languageIndex != index) { languageIndex = index; changed = true; break; } } } } if (null != languageChangedResult._mDialect) { string dialect = GetDialectDisplay(languageResult, languageChangedResult._mDialect); for (int index = 0; index < dialectOptions.Length; ++index) { if (dialectOptions[index] == dialect) { if (dialectIndex != index) { dialectIndex = index; changed = true; } } } } return(changed); }
/// <summary> /// Handler for changing languages /// </summary> public static void HandleLanguageChanged(string[] languageOptions, int languageIndex, out string[] dialectOptions, ref int dialectIndex, LanguageResult languageResult, ISpeechDetectionPlugin plugin) { List <string> options = GetDefaultDialectOptions(); dialectOptions = options.ToArray(); dialectIndex = 0; if (null == languageOptions) { Debug.LogError("The language options are not set!"); return; } if (null == dialectOptions) { Debug.LogError("The dialect options are not set!"); return; } if (null == languageResult) { Debug.LogError("The language result is not set!"); return; } string display = languageOptions[languageIndex]; //Debug.Log(display); SetDefaultLanguage(display); Language language = null; if (languageIndex > 0) { language = SpeechDetectionUtils.GetLanguage(languageResult, display); if (null == language) { Debug.LogError("Did not find specified language!"); } else { LanguageChangedResult languageChangedResult = new LanguageChangedResult(); languageChangedResult._mLanguage = language.name; plugin.Invoke(languageChangedResult); } } if (languageIndex > 0 && null != language && null != language.dialects && language.dialects.Length > 0) { foreach (Dialect dialect in language.dialects) { if (!string.IsNullOrEmpty(dialect.display)) { options.Add(dialect.display); } else if (!string.IsNullOrEmpty(dialect.description)) { options.Add(dialect.description); } else if (!string.IsNullOrEmpty(dialect.name)) { options.Add(dialect.name); } } } dialectOptions = options.ToArray(); if (dialectOptions.Length > 1) { dialectIndex = 1; } HandleDialectChanged(dialectOptions, dialectIndex, languageResult, plugin); }
/// <summary> /// Handler for changing languages /// </summary> public static void HandleLanguageChanged(Dropdown dropdownLanguages, Dropdown dropdownDialects, LanguageResult languageResult, ISpeechDetectionPlugin plugin) { if (null == dropdownLanguages) { Debug.LogError("The dropdown for languages is not set!"); return; } if (null == dropdownDialects) { Debug.LogError("The dropdown for dialects is not set!"); return; } if (null == languageResult) { Debug.LogError("The language result is not set!"); return; } string display = dropdownLanguages.options[dropdownLanguages.value].text; //Debug.Log(display); SetDefaultLanguage(display); Language language = null; if (dropdownLanguages.value > 0) { language = SpeechDetectionUtils.GetLanguage(languageResult, display); if (null == language) { Debug.LogError("Did not find specified language!"); } else { LanguageChangedResult languageChangedResult = new LanguageChangedResult(); languageChangedResult._mLanguage = language.name; plugin.Invoke(languageChangedResult); } } List <string> options = SpeechDetectionUtils.GetDefaultDialectOptions(); if (dropdownLanguages.value > 0 && null != language && null != language.dialects && language.dialects.Length > 0) { foreach (Dialect dialect in language.dialects) { if (!string.IsNullOrEmpty(dialect.display)) { options.Add(dialect.display); } else if (!string.IsNullOrEmpty(dialect.description)) { options.Add(dialect.description); } else if (!string.IsNullOrEmpty(dialect.name)) { options.Add(dialect.name); } } } SpeechDetectionUtils.PopulateDropdown(dropdownDialects, options); SpeechDetectionUtils.SetInteractable(options.Count > 1, dropdownDialects); SpeechDetectionUtils.SelectIndex(dropdownDialects, 1); HandleDialectChanged(dropdownDialects, languageResult, plugin); }