Example #1
0
    private void ShowSynounyms(object sender, EventArgs e)
    {
        WordMeuItem MI = (WordMeuItem)sender;

        MI.Word = MI.Word.ToLower();
        string TL = DownloadTranslation(MI.Word).ToLower();
        bool   CanGiveSynounyms = !string.IsNullOrEmpty(TL);

        if (CanGiveSynounyms)
        {
            string cnt = Engine.LoadTranslation(Engine.TLID.LoadingSuggetionsPlzWait);
            //Asyc Download Suggestions
            BallonToolTip Ballon = new BallonToolTip();

            bool   IsFromInputLang = TL != MI.Word;
            string Word            = MI.Word;
            if (IsFromInputLang && InputLang != "EN")
            {
                Word = DownloadTranslation(Word, InputLang, "EN");
            }
            if (!IsFromInputLang && TargetLang != "EN")
            {
                Word = DownloadTranslation(Word, TargetLang, "EN");
            }

            if (Word.Contains(" "))
            {
                foreach (string w in Word.Split(' '))
                {
                    string TTL = string.Empty;
                    if (IsFromInputLang && InputLang != "EN")
                    {
                        TTL = DownloadTranslation(w, "EN", InputLang);
                    }
                    if (!IsFromInputLang && TargetLang != "EN")
                    {
                        TTL = DownloadTranslation(w, "EN", TargetLang);
                    }
                    if (MI.Word.ToLower().StartsWith(Word.ToLower()))
                    {
                        Word = TTL;
                    }
                }
            }


            string[] Suggestions           = new string[0];
            System.Threading.Thread Thread = new System.Threading.Thread(() => {
                try {
                    Suggestions = WordAPI.DownloadSynonyms(Word);
                } catch { }
                if (Suggestions == null)
                {
                    Suggestions = new string[0];
                }
                if (!IsFromInputLang)
                {
                    for (int i = 0; i < Suggestions.Length; i++)
                    {
                        Suggestions[i] = DownloadTranslation(Suggestions[i], "EN", TargetLang);
                    }
                }
            });

            Timer ti = new Timer();
            ti.Interval = 500;
            ti.Tick    += (sdr, ev) => {
                if (Thread.ThreadState == System.Threading.ThreadState.Stopped)
                {
                    ti.Enabled = false;
                    string WordList = string.Empty;
                    if (Suggestions == null)
                    {
                        Ballon         = new BallonToolTip();
                        Ballon.Title   = Engine.LoadTranslation(Engine.TLID.NoSynonymsFound);
                        Ballon.Message = Engine.LoadTranslation(Engine.TLID.TryManuallySearch);
                        Engine.UpdateToolTip(Ballon, true);
                        return;
                    }
                    foreach (string Suggestion in Suggestions)
                    {
                        if (!string.IsNullOrWhiteSpace(Suggestion))
                        {
                            WordList += Suggestion + ", ";
                        }
                    }
                    if (string.IsNullOrWhiteSpace(WordList))
                    {
                        WordList = @"  ";
                    }
                    WordList       = WordList.Substring(0, WordList.Length - 2);
                    Ballon         = new BallonToolTip();
                    Ballon.Title   = string.IsNullOrWhiteSpace(WordList) ? Engine.LoadTranslation(Engine.TLID.NoSynonymsFound) : string.Format(Engine.LoadTranslation(Engine.TLID.SynonymsFor), MI.Word);
                    Ballon.Message = string.IsNullOrWhiteSpace(WordList) ? Engine.LoadTranslation(Engine.TLID.TryManuallySearch) : WordList;
                    Engine.UpdateToolTip(Ballon, true);
                }
            };

            Engine.ShowToolTip(MI.Location, cnt, string.Format(Engine.LoadTranslation(Engine.TLID.SynonymsFor), MI.Word), Ballon, true, this);
            Thread.Start();
            ti.Enabled = true;
        }
        else
        {
            if (MessageBox.Show(Engine.LoadTranslation(Engine.TLID.FailedToDetectWordLang), "VNXTLP", MessageBoxButtons.RetryCancel, MessageBoxIcon.Information) == DialogResult.Retry)
            {
                ShowSynounyms(sender, e);
            }
            return;
        }
    }