private void bw_DoWork(object sender, DoWorkEventArgs e) { Cursor.Current = Cursors.WaitCursor; FB2DescriptionCorrector fB2Corrector = null; foreach (FB2ItemInfo Info in m_KeywordsFB2InfoList) { FictionBook fb2 = Info.FictionBook; if (fb2 != null) { fB2Corrector = new FB2DescriptionCorrector(fb2); fB2Corrector.recoveryDescriptionNode(); XmlNode xmlTI = fb2.getTitleInfoNode(TitleInfoEnum.TitleInfo); if (xmlTI != null) { string kw = string.Empty; string kwOld = fb2.getKeywordsNode(TitleInfoEnum.TitleInfo).InnerText; if (AddRadioButton.Checked) { // добавить новые ключевые слова к существующим kw = !string.IsNullOrWhiteSpace(kwOld) ? (kwOld + "," + KeywordsTextBox.Text.Trim()) : KeywordsTextBox.Text.Trim(); } else { // заменить существующие ключевые слова на новые kw = KeywordsTextBox.Text.Trim(); } xmlTI.ReplaceChild( fB2Corrector.makeKeywordsNode(kw), fb2.getKeywordsNode(TitleInfoEnum.TitleInfo) ); // сохранение fb2 файла if (!Directory.Exists(m_TempDir)) { Directory.CreateDirectory(m_TempDir); } string NewPath = Info.IsFromZip ? Info.FilePathIfFromZip : Info.FilePathSource; fb2.saveToFB2File(NewPath, false); if (Info.IsFromZip) { WorksWithBooks.zipMoveTempFB2FileTo(m_sharpZipLib, NewPath, Info.FilePathSource); } if (Info.IsFromZip && File.Exists(NewPath)) { File.Delete(NewPath); } } } m_bw.ReportProgress(1); ProgressBar.Update(); } Cursor.Current = Cursors.Default; }
private void bw_DoWork(object sender, DoWorkEventArgs e) { Cursor.Current = Cursors.WaitCursor; FB2DescriptionCorrector fB2Corrector = null; foreach (FB2ItemInfo Info in m_SequencesFB2InfoList) { FictionBook fb2 = Info.FictionBook; if (fb2 != null) { fB2Corrector = new FB2DescriptionCorrector(fb2); fB2Corrector.recoveryDescriptionNode(); XmlNode xmlTI = fb2.getTitleInfoNode(TitleInfoEnum.TitleInfo); if (xmlTI != null) { if (RemoveRadioButton.Checked || ReplaceRadioButton.Checked) { // удаление всех Серий foreach (XmlNode node in fb2.getSequencesNode(TitleInfoEnum.TitleInfo)) { xmlTI.RemoveChild(node); } } if (AddRadioButton.Checked || ReplaceRadioButton.Checked) { // добавление новой Серии xmlTI.AppendChild( fB2Corrector.makeSequenceNode(SequencesTextBox.Text.Trim(), NumberTextBox.Text.Trim()) ); } // сохранение fb2 файла if (!Directory.Exists(m_TempDir)) { Directory.CreateDirectory(m_TempDir); } string NewPath = Info.IsFromZip ? Info.FilePathIfFromZip : Info.FilePathSource; fb2.saveToFB2File(NewPath, false); if (Info.IsFromZip) { WorksWithBooks.zipMoveTempFB2FileTo(m_sharpZipLib, NewPath, Info.FilePathSource); } if (Info.IsFromZip && File.Exists(NewPath)) { File.Delete(NewPath); } } } m_bw.ReportProgress(1); ProgressBar.Update(); } Cursor.Current = Cursors.Default; }
/// <summary> /// Сравнение 2-х файлов: fb2, fb2 из zip или fb2 из fbz /// </summary> /// <param name="DiffPath">Путь к diff-программе сравнения fb2 файла</param> /// <param name="FB2File1Path">Путь к 1-му исходному fb2, zip или fbz-файлу</param> /// <param name="FB2File2Path">Путь ко 2-му исходному fb2, zip или fbz-файлу</param> /// <param name="TempDirForFile1">Путь к временной папке для 1-го распакованного fb2 файла </param> /// <param name="TempDirForFile2">Путь к временной папке для 2-го распакованного fb2 файла </param> public static void DiffFB2(string DiffPath, string FB2File1Path, string FB2File2Path, string TempDirForFile1, string TempDirForFile2) { Cursor.Current = Cursors.WaitCursor; string TempFile1Path = null; string TempFile2Path = null; // создание путей (или распаковка) к исходным fb2 файлам, участвующим в сравнении if (FilesWorker.isFB2File(FB2File1Path)) { TempFile1Path = FB2File1Path; } else if (FilesWorker.isFB2Archive(FB2File1Path)) { TempFile1Path = getFileFromZipFBZ(FB2File1Path, TempDirForFile1); } if (FilesWorker.isFB2File(FB2File2Path)) { TempFile2Path = FB2File2Path; } else if (FilesWorker.isFB2Archive(FB2File2Path)) { TempFile2Path = getFileFromZipFBZ(FB2File2Path, TempDirForFile2); } // Сравнение файлов if (!string.IsNullOrWhiteSpace(TempFile1Path) && !string.IsNullOrWhiteSpace(TempFile2Path)) { FilesWorker.StartDiff(true, DiffPath, TempFile1Path, TempFile2Path); } // завершенн работы (перепаковка файла(ов), если он(они) были извлечены из архива) if (FilesWorker.isFB2Archive(FB2File1Path) && !string.IsNullOrWhiteSpace(TempFile1Path)) { WorksWithBooks.zipMoveTempFB2FileTo(m_sharpZipLib, TempFile1Path, FB2File1Path); } if (FilesWorker.isFB2Archive(FB2File2Path) && !string.IsNullOrWhiteSpace(TempFile2Path)) { WorksWithBooks.zipMoveTempFB2FileTo(m_sharpZipLib, TempFile2Path, FB2File2Path); } // удаление временных файлов, если они есть FilesWorker.RemoveDir(TempDirForFile1); FilesWorker.RemoveDir(TempDirForFile2); Cursor.Current = Cursors.Default; }
/// <summary> /// Правка fb2 и перепаковка fb2 из zip, fbz /// </summary> /// <param name="SourceFilePath">Путь к исходному fb2, zip или fbz-файлу</param> /// <param name="FB2ProgramPath">Путь к программе правки fb2 файла</param> public static void StartFB2_FBZForEdit(string SourceFilePath, string FB2ProgramPath) { Cursor.Current = Cursors.WaitCursor; if (FilesWorker.isFB2Archive(SourceFilePath)) { string TempFileFromZipPath = getFileFromZipFBZ(SourceFilePath, m_TempDir); if (!string.IsNullOrWhiteSpace(TempFileFromZipPath)) { FilesWorker.StartFile(true, FB2ProgramPath, TempFileFromZipPath); WorksWithBooks.zipMoveTempFB2FileTo(m_sharpZipLib, TempFileFromZipPath, SourceFilePath); FilesWorker.RemoveDir(m_TempDir); } } else { FilesWorker.StartFile(true, FB2ProgramPath, SourceFilePath); } Cursor.Current = Cursors.Default; }
private void bw_DoWork(object sender, DoWorkEventArgs e) { Cursor.Current = Cursors.WaitCursor; FB2DescriptionCorrector fB2Corrector = null; foreach (FB2ItemInfo Info in m_LangFB2InfoList) { FictionBook fb2 = Info.FictionBook; if (fb2 != null) { fB2Corrector = new FB2DescriptionCorrector(fb2); fB2Corrector.recoveryDescriptionNode(); XmlNode xmlTI = fb2.getTitleInfoNode(TitleInfoEnum.TitleInfo); if (xmlTI != null) { xmlTI.ReplaceChild( fB2Corrector.makeLangNode(LangComboBox.Text.Substring(LangComboBox.Text.IndexOf('(') + 1, 2)), fb2.getLangNode(TitleInfoEnum.TitleInfo) ); // сохранение fb2 файла if (!Directory.Exists(m_TempDir)) { Directory.CreateDirectory(m_TempDir); } string NewPath = Info.IsFromZip ? Info.FilePathIfFromZip : Info.FilePathSource; fb2.saveToFB2File(NewPath, false); if (Info.IsFromZip) { WorksWithBooks.zipMoveTempFB2FileTo(m_sharpZipLib, NewPath, Info.FilePathSource); } if (Info.IsFromZip && File.Exists(NewPath)) { File.Delete(NewPath); } } } m_bw.ReportProgress(1); ProgressBar.Update(); } Cursor.Current = Cursors.Default; }
private void bw_DoWork(object sender, DoWorkEventArgs e) { Cursor.Current = Cursors.WaitCursor; FB2DescriptionCorrector fB2Corrector = null; foreach (FB2ItemInfo Info in m_AuthorFB2InfoList) { FictionBook fb2 = Info.FictionBook; if (fb2 != null) { // восстанавление раздела description до структуры с необходимыми элементами для валидности fB2Corrector = new FB2DescriptionCorrector(fb2); fB2Corrector.recoveryDescriptionNode(); IList <XmlNode> xmlNewAuthors = makeAuthorNode(Enums.AuthorEnum.AuthorOfBook, ref fb2, AuthorsListView); if (xmlNewAuthors != null) { XmlNodeList xmlAuthorList = fb2.getAuthorNodes(TitleInfoEnum.TitleInfo); if (xmlAuthorList != null) { XmlNode xmlBookTitleNode = fb2.getBookTitleNode(TitleInfoEnum.TitleInfo); if (xmlBookTitleNode != null) { XmlNode xmlTINode = fb2.getTitleInfoNode(TitleInfoEnum.TitleInfo); if (xmlTINode != null) { // удаление старых данных Авторов foreach (XmlNode Author in xmlAuthorList) { xmlTINode.RemoveChild(Author); } // добавление новых данных Авторов foreach (XmlNode Author in xmlNewAuthors) { xmlTINode.InsertBefore(Author, xmlBookTitleNode); } // сохранение fb2 файла if (!Directory.Exists(m_TempDir)) { Directory.CreateDirectory(m_TempDir); } string NewPath = Info.IsFromZip ? Info.FilePathIfFromZip : Info.FilePathSource; fb2.saveToFB2File(NewPath, false); if (Info.IsFromZip) { WorksWithBooks.zipMoveTempFB2FileTo(m_sharpZipLib, NewPath, Info.FilePathSource); } if (Info.IsFromZip && File.Exists(NewPath)) { File.Delete(NewPath); } } } } } } m_bw.ReportProgress(1); ProgressBar.Update(); } Cursor.Current = Cursors.Default; }