Beispiel #1
0
        public static void Debug_ExportCurrentArticleToXML(string xmlFileName)
        {
            using (XmlTextWriter writer = new XmlTextWriter(xmlFileName, Encoding.UTF8))
            {
                writer.Formatting  = Formatting.Indented;
                writer.Indentation = 4;

                Data.Article currentArticle = CurrentWorkspace.CurrentArticle;

                writer.WriteStartDocument();

                writer.WriteStartElement("Article"); //< <Article>

                writer.WriteAttributeString("ExportDate", DateTime.Now.ToShortDateString());
                writer.WriteAttributeString("Name", currentArticle.Name);
                writer.WriteAttributeString("Text", currentArticle.OriginalText.Text);

                foreach (var lang in CurrentWorkspace.TranslationLanguages)
                {
                    writer.WriteStartElement("TranslationLanguage"); //< <TranslationLanguage>
                    writer.WriteAttributeString("Code", lang.Code);

                    foreach (var translation in currentArticle.GetTranslations(lang.Code))
                    {
                        writer.WriteStartElement("Translation"); // <Translation>

                        writer.WriteAttributeString("OriginalPhraseIndexes", Logic.TextInLanguage.GetPhraseIndexes(translation.OriginalPhrase));
                        writer.WriteAttributeString("TranslatedPhrase", translation.translatedPhrase);
                        writer.WriteAttributeString("InfinitiveOriginalPhrase", translation.infinitiveTranslation.originalPhrase);
                        writer.WriteAttributeString("InfinitiveTranslatedPhrase", translation.infinitiveTranslation.translatedPhrase);

                        writer.WriteEndElement(); // </ Translation>
                    }

                    writer.WriteEndElement(); //< </TranslationLanguage>
                }

                writer.WriteEndElement(); //< </Article>

                writer.WriteEndDocument();
            }
        }
        // Открывает заданную по имени статью, то есть делает ее текущей (при этом происходит полная ее загрузка из бд, парсинг на синтаксическую разметку и так далее)
        // Если при этом какая-то статья была открыта, она закроется
        public void OpenArticle(string articleName)
        {
            if (CurrentArticleOpening != null)
                CurrentArticleOpening(m_currentArticle, EventArgs.Empty);

            if (articleName != null)
            {
                // Заданная статья должна существовать
                Debug.Assert(m_articleNames.Contains(articleName));

                m_currentArticle = new Article(this, m_repository, articleName);
            }
            else
                m_currentArticle = null;

            if (CurrentArticleOpened != null)
                CurrentArticleOpened(m_currentArticle, EventArgs.Empty);
        }