Example #1
0
        static void GuessCompleted(object operationState)
        {
            GuessCompletedEventArgs e =
                operationState as GuessCompletedEventArgs;

            e.GuessState.OnGuessCompleted(e);
        }
Example #2
0
        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;
        }
Example #3
0
        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;
        }
Example #4
0
 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"));
        }
Example #7
0
        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;
        }
Example #8
0
        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;
        }
Example #9
0
 public void OnGuessCompleted(
     GuessCompletedEventArgs e)
 {
     if (GuessCompleted != null)
     {
         GuessCompleted(this, e);
     }
 }