static void GuessCompleted(object operationState) { GuessCompletedEventArgs e = operationState as GuessCompletedEventArgs; e.GuessState.OnGuessCompleted(e); }
public static void CancelAsync(AsyncGuessState guessState) { if (guessState == null) { throw new ArgumentNullException("guessState"); } AsyncOperation asyncOp = guessState.AsyncOperation; GuessCompletedEventArgs e = new GuessCompletedEventArgs( guessState, null, true, guessState); try { asyncOp.PostOperationCompleted(GuessCompleted, e); } catch (InvalidOperationException) { } guessState.Canceled = true; }
internal static void GuessWorker( AsyncGuessState guessState) { if (guessState.Canceled) { return; } guessState.Result = null; guessState.Result = GetFromCache(guessState.Phrase); if (guessState.Result == null) { guessState.Result = googleGuesser.Guess(guessState.Phrase, guessState.NetworkSetting); } AddToCache(guessState.Result); GuessCompletedEventArgs e = new GuessCompletedEventArgs( guessState, null, false, guessState); try { guessState.AsyncOperation.PostOperationCompleted(GuessCompleted, e); } catch (InvalidOperationException) { } guessState.Canceled = true; }
public void OnGuessCompleted( GuessCompletedEventArgs e) { if (GuessCompleted != null) { GuessCompleted(this, e); } }
void OnGuessCompleted(object sender, GuessCompletedEventArgs e) { if(e.Result != null) detectedText = e.Result.Phrase; if(e.Cancelled) { } else if(e.Result.Error != null) { detectedLanguage = Language.Unknown; detectedStatus = e.Result.Error.Message; } else if(e.Result.ResultNotFound || e.Result.Scores.Count == 0) { detectedLanguage = Language.Unknown; detectedStatus = "Failed"; } else { detectedLanguage = e.Result.Language; detectedStatus = TranslateString("{0}, {1}, Score - {2}%, Confidence - {3}"); detectedStatus = string.Format(detectedStatus, LangPack.TranslateLanguage(e.Result.Language), TranslateString(e.Result.IsReliable ? "Reliable" : "Not reliable"), e.Result.Score, TranslateString(e.Result.Confidence.ToString())); } UpdateDetectionStatus(); if(!TranslateOptions.Instance.GuessingOptions.SwitchDirectionBasedOnLanguage) return; if(detectedLanguage != Language.Unknown && detectedText.Length >= TranslateOptions.Instance.GuessingOptions.MinimalTextLengthForSwitchByLanguage) { bool default_selected = currentProfile == TranslateOptions.Instance.DefaultProfile; UserTranslateProfile upf; //step 0. seek in history ProfilesHistory ph_to_delete = new ProfilesHistory(); bool found = false; foreach(ProfilesHistoryData phd in TranslateOptions.Instance.ProfilesHistory) { if(LanguageHelper.IntelligentCompare(phd.Language, detectedLanguage) || phd.DetectedLanguage == detectedLanguage) { TranslateProfile pf = TranslateOptions.Instance.Profiles.GetByName(phd.Name); if(pf == null) { //here we should not to be, but ph_to_delete.Add(phd); continue; } upf = pf as UserTranslateProfile; if(upf != null && (LanguageHelper.IntelligentCompare(upf.TranslationDirection.From, detectedLanguage) || (phd.DetectedLanguage == detectedLanguage && LanguageHelper.IntelligentCompare(upf.TranslationDirection.From, phd.Language)) ) && !upf.ShowLanguages ) { skipChangeInput = true; ActivateProfile(upf); tbFrom.Focus(); found = true; break; } foreach(LanguagePair lp in pf.History) { if(LanguageHelper.IntelligentCompare(lp.From, detectedLanguage) || (phd.DetectedLanguage == detectedLanguage && LanguageHelper.IntelligentCompare(lp.From, phd.Language)) ) { try { skipChangeInput = true; ActivateProfile(pf); try { languageSelector.Selection = lp; } catch { UpdateCaption(); skipChangeInput = false; continue; } UpdateCaption(); } finally { skipChangeInput = false; } tbFrom.Focus(); found = true; break; } } if(!found) ph_to_delete.Add(phd); else break; } } //remove unsupported profiles from history foreach(ProfilesHistoryData phd in ph_to_delete) TranslateOptions.Instance.ProfilesHistory.DeleteProfile(phd.Name); if(found) return; //step 1. seek in current if not default upf = currentProfile as UserTranslateProfile; if(upf != null) { if(LanguageHelper.IntelligentCompare(upf.TranslationDirection.From, detectedLanguage) && !upf.ShowLanguages ) { tbFrom.Focus(); return; } foreach(LanguagePair lp in languageSelector.History) { if(LanguageHelper.IntelligentCompare(lp.From, detectedLanguage)) { try { skipChangeInput = true; try { languageSelector.Selection = lp; } catch { UpdateCaption(); skipChangeInput = false; continue; } UpdateCaption(); } finally { skipChangeInput = false; } tbFrom.Focus(); return; } } } //step 2. Generate list of profiles. default - last TranslateProfilesCollection profiles = new TranslateProfilesCollection(); foreach(TranslateProfile pf in TranslateOptions.Instance.Profiles) { if(pf == TranslateOptions.Instance.DefaultProfile) continue; if(pf == currentProfile) continue; profiles.Add(pf); } profiles.Add(TranslateOptions.Instance.DefaultProfile); //step 2. seek in other not default profiles foreach(TranslateProfile pf in profiles) { foreach(LanguagePair lp in pf.History) { if(LanguageHelper.IntelligentCompare(lp.From, detectedLanguage)) { try { skipChangeInput = true; ActivateProfile(pf); try { languageSelector.Selection = lp; } catch { UpdateCaption(); skipChangeInput = false; continue; } UpdateCaption(); } finally { skipChangeInput = false; } tbFrom.Focus(); return; } } upf = pf as UserTranslateProfile; if(upf != null) { if(LanguageHelper.IntelligentCompare(upf.TranslationDirection.From, detectedLanguage)) { skipChangeInput = true; ActivateProfile(upf); tbFrom.Focus(); return; } } //switch auto upf = currentProfile as UserTranslateProfile; if((default_selected || (upf != null && upf.ShowLanguages)) && (currentProfile.SelectedLanguagePair.From != Language.Autodetect) ) { CultureInfo systemCulture = System.Threading.Thread.CurrentThread.CurrentUICulture; if(LanguageHelper.IsLanguageSupported(systemCulture, detectedLanguage)) { Language targetLanguage = Language.English; foreach(InputLanguage il in InputLanguage.InstalledInputLanguages) { if(!InputLanguageManager.IsLanguageSupported(il, detectedLanguage)) { for(int i = 0; i < (int)Language.Last; i++) { if(InputLanguageManager.IsLanguageSupported(il, (Language)i)) { targetLanguage = (Language)i; goto EndDetect; } } } } EndDetect: foreach(LanguagePair lp in currentProfile.GetLanguagePairs()) { if(lp.From == detectedLanguage && lp.To == targetLanguage ) { try { languageSelector.Selection = lp; } catch { continue; } tbFrom.Focus(); return; } } } else { foreach(LanguagePair lp in currentProfile.GetLanguagePairs()) { if(lp.From == detectedLanguage && LanguageHelper.IsLanguageSupported(systemCulture, lp.To) ) { try { languageSelector.Selection = lp; } catch { continue; } tbFrom.Focus(); return; } } } } } } }
void OnForcedGuessCompleted(object sender, GuessCompletedEventArgs e) { string detectedStatus = ""; if(e.Cancelled) { } else if(e.Result.Error != null) { detectedStatus = e.Result.Error.Message; } else if(e.Result.ResultNotFound || e.Result.Scores.Count == 0) { detectedStatus = "Failed"; } else { detectedStatus = TranslateString("{0}, {1}, Score - {2}%, Confidence - {3}"); detectedStatus = string.Format(detectedStatus, LangPack.TranslateLanguage(e.Result.Language), TranslateString(e.Result.IsReliable ? "Reliable" : "Not reliable"), e.Result.Score, TranslateString(e.Result.Confidence.ToString())); } string tmp = TranslateString("Language detection : {0}"); tmp = string.Format(tmp, TranslateString(detectedStatus)); MessageBox.Show(FindForm(), tmp, TranslateString("Language detection")); }
internal static void GuessWorker( AsyncGuessState guessState) { if(guessState.Canceled) return; guessState.Result = null; guessState.Result = GetFromCache(guessState.Phrase); if(guessState.Result == null) { guessState.Result = googleGuesser.Guess(guessState.Phrase, guessState.NetworkSetting); } AddToCache(guessState.Result); GuessCompletedEventArgs e = new GuessCompletedEventArgs( guessState, null, false, guessState); try { guessState.AsyncOperation.PostOperationCompleted(GuessCompleted, e); } catch (InvalidOperationException) { } guessState.Canceled = true; }
public static void CancelAsync(AsyncGuessState guessState) { if(guessState == null) throw new ArgumentNullException("guessState"); AsyncOperation asyncOp = guessState.AsyncOperation; GuessCompletedEventArgs e = new GuessCompletedEventArgs( guessState, null, true, guessState); try { asyncOp.PostOperationCompleted(GuessCompleted, e); } catch (InvalidOperationException) { } guessState.Canceled = true; }