Exemplo n.º 1
0
        void bg_search(string txt)
        {
            srchCallback callback = bg_qryFgTask;

            search(callback, txt);
        }
Exemplo n.º 2
0
        void search(srchCallback callback, string txt)
        {
            //= m_preTxt;
            var           kanjis = mixSearch(txt);
            List <myWord> words  = new List <myWord>();
            List <myWord> verbs  = new List <myWord>();

            //Span s = new Span();
            foreach (var kanji in kanjis)
            {
                //display kanji with link
                callback(myFgTask.qryType.hyperlink, kanji.val);
                if (kanji.decomposite != "")
                {
                    callback(myFgTask.qryType.run, kanji.decomposite);
                    callback(myFgTask.qryType.linebreak, null);
                }

                //display japanese define
                callback(myFgTask.qryType.define, kanji.definitions[0]);
                kanji.definitions.RemoveAt(0);

                //find kanji define - formated txt
                var foundKanji = kanji.relatedWords.Find((w) => { return(w.term == kanji.val.ToString()); });
                if (foundKanji != null)
                {
                    //display kanji define (in formated txt)
                    callback(myFgTask.qryType.define, (foundKanji.definitions[0]));
                }
                else
                {
                    //display radical info
                    var    rdInfo = mDict.Search(kanji.radical.zRadical.ToString());
                    string zRad   = string.Format("Bộ {0} {1} {2} [{3}, {4}] {5}",
                                                  kanji.radical.iRadical, kanji.radical.zRadical, kanji.radical.hn, kanji.radical.nStrokes,
                                                  kanji.totalStrokes, kanji.val);
                    {
                        if (kanji.hn != null)
                        {
                            zRad += string.Format(" ({0})", kanji.hn);
                        }
                        if (kanji.simple != '\0')
                        {
                            zRad += string.Format(" simple {0}", kanji.simple);
                        }
                    }
                    callback(myFgTask.qryType.run, zRad);

                    //display other kanji define
                    foreach (var def in kanji.definitions)
                    {
                        callback(myFgTask.qryType.define, (def));
                        break;
                    }
                    callback(myFgTask.qryType.linebreak, null);
                }
                words.AddRange(kanji.relatedWords);
                verbs.AddRange(kanji.relateVerbs);
                callback(myFgTask.qryType.linebreak, null);
            }
            callback(myFgTask.qryType.linebreak, null);

            //remove duplicated
            var found = removeDuplicate(kanjis, txt, words);

            //var sFound = new Span();
            if (found != null)
            {
                callback(myFgTask.qryType.word, found);
                callback(myFgTask.qryType.linebreak, null);
            }
            //related word
            //if (found != null) bg_qryDisplay(sFound);
            //bg_qryDisplay(new Run { Text = "related word:" });
            //bg_qryDisplay(new LineBreak());
            int count = 0;

            foreach (var rWd in words)
            {
#if !show_brift
                //m_limitContentCnt
                //  (-1) no limit
                if ((count++) == m_limitContentCnt)
                {
                    break;
                }
#else
                {
                    bg_qryDisplay(crtWdBlck(rWd, true));
                }
Exemplo n.º 3
0
        void fg_search(string txt)
        {
            srchCallback callback = fg_processQry;

            search(callback, txt);
        }