예제 #1
0
        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;
        }
예제 #2
0
        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;
        }
예제 #3
0
        /// <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;
        }
예제 #4
0
 /// <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;
 }
예제 #5
0
        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;
        }
예제 #6
0
        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;
        }