コード例 #1
0
        private void InputTextBox_TextChanged(object sender, EventArgs e)
        {
            transliterator = new Transliterator();
            string itext      = inputTextBox.Text;
            var    words_base = tagger.Parse(itext).Split('\n');
            var    base_words = words_base.Where(a => !filters.Contains(a.Split('\t')[0]) && !string.IsNullOrEmpty(a)).Select(a => a.Split('\t')[1].Split(',')[6]).ToArray();
            var    kana       = words_base.Where(a => !filters.Contains(a.Split('\t')[0]) && !string.IsNullOrEmpty(a)).Select(a =>
            {
                var strs = a.Split('\t')[1].Split(',');
                if (strs.Length > 7)
                {
                    return(KanaConverter.KatakanaToHiragana(strs[7]));
                }
                else
                {
                    return(a.Split('\t')[0].Trim());
                }
            }).ToArray();
            var romaji = kana.Select(a =>
            {
                try
                {
                    return(transliterator.GetRomaji(a));
                }
                catch (TransliterationException)
                {
                    return(a);
                }
            }).ToArray();
            var words = words_base.Where(a => !filters.Contains(a.Split('\t')[0]) && !string.IsNullOrEmpty(a)).Select(a => a.Split('\t')[0]).ToArray();


            furiganaRomajiLabel.SetText(words, romaji);
            furiganaKanaLabel.SetText(words, kana);
        }
コード例 #2
0
        private void FuriganaKanaLabel_SelectedTextChangedEvent(string itext)
        {
            if (defWindow != null)
            {
                defWindow.Hide();
            }

            var words_base = tagger.Parse(itext).Split('\n').Where(a => !filters.Contains(a.Split('\t')[0]) && !string.IsNullOrEmpty(a));
            var base_words = words_base.Select(a => a.Split('\t')[1].Split(',')[6]).ToArray();
            var kana       = words_base.Select(a =>
            {
                var strs = a.Split('\t')[1].Split(',');
                if (strs.Length > 7)
                {
                    return(KanaConverter.KatakanaToHiragana(strs[7]));
                }
                else
                {
                    return(a.Split('\t')[0].Trim());
                }
            }).ToArray();
            var romaji = kana.Select(a =>
            {
                try
                {
                    return(transliterator.GetRomaji(a));
                }
                catch (TransliterationException)
                {
                    return(a);
                }
            }).ToArray();
            var words = words_base.Select(a => a.Split('\t')[0]).ToArray();

            if (base_words.Length == 0)
            {
                return;
            }

            int i = 0;

            if (base_words[i].Trim() == "*")
            {
                base_words[i] = words[i];
            }

            if (japDict.ContainsKey(base_words[i]))
            {
                defWindow          = new DefinitionWindow(base_words[i], words[i], romaji[i], japDict[base_words[i]].Senses.First(a => a.Glosses.Any(b => b.Language == Language.English)).Glosses.First().Term);
                defWindow.Location = Cursor.Position;
                defWindow.TopMost  = true;
                defWindow.Show();
            }

            /*else
             *  foreach (char c in base_words[i])
             *      if (kanjiDict.ContainsKey(c.ToString()))
             *      {
             *          var kan = kanjiDict[c.ToString()];
             *          f_defs += kan.Literal + " - " + kan.Meanings.First(a => a.Language == Language.English).Term + "\n";
             *      }*/
        }