static void Main(string[] args) { // Заполняем запись. DictionaryArticle article = new DictionaryArticle(); article.word = "estar"; article.translation = null; article.signature = null; article.conjugation = Conjugator.CONJUGATION_1; article.Group = Conjugator.GROUP_IRREGULAR_INDIVIDUAL; article.index = 0; FileStream file = File.Create(@"conjugation.txt"); StreamWriter writer = new StreamWriter(file); for (byte t = 0; t <= 15; t++) { List <string> result = Conjugator.Conjugate(article, t); writer.WriteLine(Grammar.tenses[t]); writer.WriteLine(); foreach (string item in result) { writer.WriteLine(item); } writer.WriteLine(); writer.WriteLine(); } writer.Close(); }
private void DisplayForms(DictionaryArticle article, byte tense, int left, int top) { List <string> forms = Conjugator.Conjugate(article, tense); Label labelTense = new Label(); labelTense.Text = Grammar.tenses[tense]; labelTense.Width = 190; labelTense.BackColor = Color.FromArgb(230, 230, 230); labelTense.Left = left; labelTense.Top = top; this.Controls.Add(labelTense); top += 37; foreach (String form in forms) { Label labelForm = new Label(); labelForm.Text = form; labelForm.Width = 180; labelForm.Left = left; labelForm.Top = top; this.Controls.Add(labelForm); top += 25; } }
public static Dictionary <String, DictionaryArticle> ImportFromSpaxe(String fileName) { FileStream file = File.Open(fileName, FileMode.Open); StreamReader reader = new StreamReader(file); Regex regex = new Regex(@"(?<word>.+?)\t+(?<signature>.+?)\t+(?<translation>.+)"); Dictionary <String, DictionaryArticle> dictionary = new Dictionary <String, DictionaryArticle>(); while (!reader.EndOfStream) { String line = reader.ReadLine(); Match match = regex.Match(line); if (match.Success) { DictionaryArticle article = new DictionaryArticle(); article.word = match.Groups["word"].Value; article.signature = match.Groups["signature"].Value; article.translation = match.Groups["translation"].Value; article.type = article.signature[0]; switch (article.type) { case 'V': { article.conjugation = Byte.Parse(article.signature[1].ToString()); if (article.signature[2] == 'R') { article.Group = Conjugator.GROUP_REGULAR; } else { article.Group = Byte.Parse(article.signature[2].ToString()); } if (article.Group == 0) { article.index = Byte.Parse(article.signature.Substring(3, 2)); } break; } } dictionary.Add(article.word, article); } } reader.Close(); return(dictionary); }
private void listBox_KeyPress(object sender, KeyPressEventArgs e) { if ((int)e.KeyChar == 13) { if (listBox.SelectedIndex != -1) { String word = listBox.SelectedItem.ToString(); DictionaryArticle article = dictionary[word]; if (article.type == 'V') { FormForms form = new FormForms(article); form.Show(); } } } }
private void listBox_MouseDoubleClick(object sender, MouseEventArgs e) { if (listBox.SelectedIndex != -1) { if (listBox.IndexFromPoint(e.Location) == listBox.SelectedIndex) { String word = listBox.SelectedItem.ToString(); DictionaryArticle article = dictionary[word]; if (article.type == 'V') { FormForms form = new FormForms(article); form.Show(); } } } }
public static Dictionary <String, DictionaryArticle> ImportFromLingvo(String fileName) { XmlDocument document = new XmlDocument(); document.Load(fileName); Console.WriteLine("formatVersion:\t\t" + document.DocumentElement.Attributes["formatVersion"].InnerText); Console.WriteLine("title:\t\t\t" + document.DocumentElement.Attributes["title"].InnerText); Console.WriteLine("sourceLanguageId:\t" + document.DocumentElement.Attributes["sourceLanguageId"].InnerText); Console.WriteLine("destinationLanguageId:\t" + document.DocumentElement.Attributes["destinationLanguageId"].InnerText); Console.WriteLine("nextWordId:\t\t" + document.DocumentElement.Attributes["nextWordId"].InnerText); Console.WriteLine(); XmlNodeList cards = document.DocumentElement.SelectNodes("card"); Dictionary <String, DictionaryArticle> dictionary = new Dictionary <String, DictionaryArticle>(); foreach (XmlNode card in cards) { XmlNode word = card.SelectSingleNode("word"); XmlNode translation = card.SelectSingleNode("meanings/meaning/translations/word"); XmlNode meaning = card.SelectSingleNode("meanings/meaning"); DictionaryArticle article = new DictionaryArticle(); article.word = word.InnerText; article.translation = translation.InnerText; if (meaning.Attributes.GetNamedItem("sound") != null && meaning.Attributes.GetNamedItem("soundfile") != null) { article.sound = meaning.Attributes["sound"].Value.ToLower(); article.soundfile = meaning.Attributes["soundfile"].Value; } dictionary.Add(article.word, article); } return(dictionary); }
static void Main(string[] args) { String fileName = @"Dict\UniversalEsRu"; List <String> result = Import(fileName); // Фильтрация. char[] symbols = { ' ', '\\', '(', '!', '?', '/', '№', '-', '$', '\'', '.', ':' }; var strings = from item in result where item.IndexOfAny(symbols) == -1 && item.Length >= 2 select item; List <String> filteredResult = new List <string>(); foreach (String item in strings) { bool flag = true; foreach (Char symbol in item) { if (65 <= (byte)symbol && (byte)symbol <= 90) { flag = false; } } if (flag) { filteredResult.Add(item); } } List <String> list1 = new List <string>(); List <String> list2 = new List <string>(); List <String> list3 = new List <string>(); List <String> other = new List <string>(); foreach (var item in filteredResult) { string suffix = item.Substring(item.Length - 2); switch (suffix) { case "ar": { list1.Add(item); break; } case "er": { list1.Add(item); break; } case "ir": { list1.Add(item); break; } default: { other.Add(item); break; } } } List <DictionaryArticle> articles = new List <DictionaryArticle>(); foreach (String item in list1) { byte group = VerbTypeRecognizer.Recognize(item); DictionaryArticle article = new DictionaryArticle(); article.word = item; article.Group = group; articles.Add(article); } StreamWriter writer = new StreamWriter(File.Create(fileName + "_Filtered.log")); var items = from item in articles orderby item.Group select item; int count = 0; foreach (DictionaryArticle item in items) { writer.WriteLine(count.ToString() + "\t" + item.Group + "\t" + item.word); count++; } //writer.Write("\n\n\n"); //foreach (String item in list2) //{ // writer.WriteLine(count.ToString() + "\t" + item); // count++; //} //writer.Write("\n\n\n"); //foreach (String item in list3) //{ // writer.WriteLine(count.ToString() + "\t" + item); // count++; //} //writer.Write("\n\n\n"); //foreach (String item in other) //{ // writer.WriteLine(count.ToString() + "\t" + item); // count++; //} writer.Close(); }
public FormForms(DictionaryArticle article) { InitializeComponent(); this.Text = article.word; Label labelWord = new Label(); labelWord.Text = article.word; labelWord.Width = 200; labelWord.Left = 10; labelWord.Top = 10; this.Controls.Add(labelWord); String[] rim = { "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX" }; String signature = "conj. " + rim[article.conjugation] + ", "; if (article.Group == 10) { signature += "reg."; } else { if (article.Group == 0) { signature += "ind."; } else { signature += "irreg. " + rim[article.Group - 1]; } } Label labelSignature = new Label(); labelSignature.Text = signature; labelSignature.Width = 200; labelSignature.Left = 10; labelSignature.Top = 35; this.Controls.Add(labelSignature); Label labelTranslation = new Label(); labelTranslation.Text = article.translation; labelTranslation.Width = 500; labelTranslation.Left = 10; labelTranslation.Top = 60; this.Controls.Add(labelTranslation); int left = LEFT + LEFT_OFFSET; int top = TOP + TOP_OFFSET; for (byte tense = 0; tense <= 3; tense++) { DisplayForms(article, tense, left, top); left += WIDTH; } left = LEFT + LEFT_OFFSET; top += HEIGHT; for (byte tense = 8; tense <= 11; tense++) { DisplayForms(article, tense, left, top); left += WIDTH; } left = LEFT + LEFT_OFFSET; top += HEIGHT; for (byte tense = 4; tense <= 6; tense++) { DisplayForms(article, tense, left, top); left += WIDTH; } left = LEFT + LEFT_OFFSET; top += HEIGHT; for (byte tense = 12; tense <= 14; tense++) { DisplayForms(article, tense, left, top); left += WIDTH; } left = LEFT + LEFT_OFFSET; top += HEIGHT; DisplayForms(article, 7, left, top); left += WIDTH; DisplayForms(article, 15, left, top); PictureBox pictureBox = new PictureBox(); pictureBox.Image = global::SpaxeDictionary.Properties.Resources.FrameForms; pictureBox.Left = LEFT; pictureBox.Top = TOP; pictureBox.Width = LEFT_OFFSET + 4 * WIDTH; pictureBox.Height = 5 * HEIGHT; this.Controls.Add(pictureBox); }