master
+ НОВЫЙ инструмент: Корректор в режиме Проводника. В контекстном меню – множество инструментов по правке метаданных. - Удален Валидатор. Его функции встроены в новый инструмент Корректор. Общее: + Добавлена обработка fb2 книг с xmlns=http://www.gribuser.ru/xml/fictionbook/2.2. + Для всех инструментов сделана сортировка по нажатию на колонки списка. + Для всех режимов правки метаданных сделана предварительная корректировка раздела description – к имеющимся элементам структур title-info и document-info добавляются недостающие элементы, без которых fb2 файл не будет валиден. Т.е. в title-info: теги genre, author, book-title, lang, а в document-info: id, version. Со значениями по-умолчанию. + Новые инструменты создания Нового id в контекстном меню. + Новые инструменты Правки Названия Книги в контекстном меню. ~ Исправлена неверная работа копирования/перемещения файлов. ~ Улучшено быстродействие при копировании/перемещении/удалении файлов. + Для списков инструмента «Правка метаданных» сделаны кнопки перемещения элементов вверх/вниз. + В контекстном меню Дубликатора и Корректора – новый инструмент: «Удалить все элементы Списка "без файлов" на диске...». Предназначен для очистки списка от элементов, файлы которых на жестком диске были удалены. + Для Корректора и Дубликатора на вкладке Настройки введена возможность выбора поведения программ по DblClick мышки и нажатию Enter. Варианты работы заданы в выпадающих списках. Сортировщик файлов: + Авторазмер колонок списка книг теперь производится автоматически. ~ Значительно улучшена Избранная сортировка, которая некорректно работала из-за разрывов абзацев и стартовых/конечных пробелов данных тегов. - Удалена опция в Настройках «Авторазмер колонок». - В связи с созданием удобного нового инструмента (Редактор Метаданных) все средства правки файлов и метаданных удалены из контекстного меню Сортировщика. Дубликатор Файлов: ~ Значительно улучшен алгоритм поиска дубликатов – теперь ищутся и книги, в которых отсутствуют Авторы, Названия книг, ID. ~ При поиске копий введено удаление пробелов и переноса абзаца в тегах description. Теперь поиск копий происходит более корректно: не создаются ложные группы «копий», и копии группируются правильно. ~ Исправлен баг при сохранении результата в xml файл и загрузке результата из xml файла. ~ Изменено сохранение списка копий в xml-файл. Теперь можно задать на панели инструментов сколько Групп копий нужно сохранить в файл. И весь список копий будет разбит на несколько xml-файлов при сохранении. Это обеспечивает более удобную последующую обработку копий при загрузке этих файлов и отсутствие «тормозов» из-за многотысячного списка копий. + Новые инструменты в контекстом меню. + При загрузке ранее сохраненного файла списка копий делается проверка на наличие на жестком диске файлов из этого списка. Выводятся только те, которые не были удалены на жестком диске. ~ ВНИМАНИЕ: Переделан алгоритм работы со списком. Файлы, сохраненные в предыдущих версиях SharpFBTools открываться не будут!!!
AuthorInfoForm: Сделано, что при вводе/правке данных на Авторов книги поле 'Фамилия' должно быть заполнено обязательно, а для Переводчиков и Авторов fb2 файла - не обязателдьно.
Общее: + Для Автокорректора Корректора и Дубликатора улучшен алгоритм правки языка русский, украинский и белорусский книг. Много книг на этих языках имеют тэг языка другого языка. Теперь, например, если книга – на русском языке, но тэг <lang> содержит признак белорусского языка (be), то он заменяется на русский (ru). И такая корректировка происходит для всех этих 3-х языков. + Автокорректор Корректора и Дубликатора обрабатывает «по полной программе» только невалидные файлы. Валидные же файлы просматриваются на предмет соответствия тэгов <lang> книг на русском, украинском или белорусском языках идентификаторам ru, uk и be соответственно. В случае, если идентификаторы языка для валидных книг этих 3-х языков не соответствуют языку книги, то в тэг <lang> заносится настоящий идентификатор языка книги. Вся остальная корректировка для валидных книг не производится. Автокорректор + Теперь обрабатываются только невалидные файлы. Эта проверка на валидность заметно ускорит работу Автокорректора на большом количестве книг. + Исправление неверно заданной кодировки “wutf-8” в fb2 файлах на “utf-8”. + Улучшена обработка ссылок. ~ Полностью переделаны (улучшены и оптимизированы) все функции (регулярные выражения). + Удаление <empty-line/> между </section> и <section> + Полностью переделан алгоритм корректировки Эпиграфов. Скорость обработки увеличена. + Преобразование Эпиграфа с вложенным Эпиграфом в Цитату с Автором: <subtitle>...</subtitle><cite><p><emphasis>Текст</emphasis></p><text-author>Достоевский.</text-author></cite> + Обработка Эпиграфа с вложенным Эпиграфом и Эпиграфом вместо Цитаты или стиха эпиграфа: структура вида: <subtitle>...</subtitle> <epigraph> <emphasis> <p> <emphasis>Этот стих звучит так: </emphasis> </p> <epigraph> <p><emphasis>И счастья баловень безродный </emphasis></p> <p><emphasis>Полудержавный властелин. </emphasis></p> </epigraph> </emphasis> </epigraph>
Для Корректора, Дубликатора, Сортировщика сделано запоминание расположения заголовков колонок и их ширины. Сделан рефакторинг кода.
Улучшена система отладочных сообщений
Общее: ~ Множество мелких исправлений и улучшений.. Дубликатор Файлов: + В контекстное меню добавлен элемент: «Правка метаданных описания книги» (Ctrl+D). Инструмент позволяет редактировать Описание книги в полном объеме.
В Настройках сделана опция выбора (переключатель) варианта работы с log файлом: 1. Создание нового log файла при запуске основных инструментов. 2. Добавление отладочных данных в существующий log файл. При режиме 1) log файл всегда удаляется и создается новый при запуске основных инструментов: 1. Для Корректора: При нажатии кнопки «Перейти / Обновить», при запуске Автокорректировки, при нажатии «Возобновить Автокорректировку из xml…». 2. Для Дубликатора: При нажатии кнопки «Поиск копий», при нажатии кнопки «Возобновить поиск из файла...», при нажатии кнопки «Загрузить Группы», при запуске Автокорректировки. 3. Для обоих видов Сортировщика: При нажатии кнопки «Сортировать» и при нажатии кнопки «Возобновить из файла». 4. Для Архиватора: При нажатии кнопок «Упакова» и «Распаковать». При режиме 2) log файл никогда не удаляется и отладочная информация всегда добавляется в log.
В диалогах правки метаданных добавлена возможность вызова формы правки по двойному клику мышки на соответствующую запись.
Общее: ~ Исправлен баг: не отображались данные для книги, у которой для Обложки нет атрибута content-type. ~ Временная папка для работы с архивами «перенесена» из корневой папки программы в папку временной папки локального пользователя системы. Это полезно, когда программа запускается с флэшки. ~ Исправлен баг: вылет инструментов на «пустых» архивах (нет ни одного файла). ~ Улучшена работа с архивами. Корректор: + При открытии формы работы с Автором книги фокус сразу ставится на поле Фамилия Автора. + В диалоге Правки метаданных книги для списков обложек книги и оригинала введена возможность отображения обложек путем перемещения по ним нажатием курсоров клавиатуры. ~ Исправлен баг: В диалоге правки метаданных книги не работала правка выбранной записи Переводчика. ~ Автокорректор: Исправлен баг, портящий книгу: если книга содержит очень большое количество картинок, то из-за ограничений размерности типов данных в регулярных выражений теги картинок и их код портились. Исправление бага повысило скорость обработки. + Быстрые клавиши для удаления записей из списка БЕЗ удаления файлов с жесткого диска. Сортировщик: ~ Улучшен интерфейс. Теперь он помещается и при масштабировании шрифтов в системе в 125%. + Таблица отображения данных сортировки перенесена в диалог отображения данных сортировки, который запускается после отработки/прерывания/ошибки Сортировщика. ~ Сделано корректное отображение всех видов информации результата сортировки. ~ Изменен алгоритм сбора критериев сортировки для Избранной Сортировки. Устранены некоторые редкие ошибки и падения программы. Теперь, если в Избранной Сортировке выбран один из критериев Группа Жанров, например, «Проза», то все книги. Входящие в эту Группу, независимо от того, сколько у них жанров находится в description, и какой стоит первым, будут размещены в папке «Проза» при выборе шаблона *GROUP* или *GG*. Но папка с названием Жанра будет сгенерирована по названию 1-го жанра в description fb2 файла. ~ Улучшена работа многих шаблонов подстановки. Дубликатор: + При двойном щелчке мышкой на вкладках контрола отображения Обложек и/или контрола отображения всей информации книги (внизу интерфейса) скрывается или показывается панель с информацией о числе файлов, легендой и кнопками обработки книг. + Быстрые клавиши для удаления записей из списка БЕЗ удаления файлов с жесткого диска.
EditDescriptionForm: Диалог правки метаданных: Сделан Переход на Группу жанра и сам Жанр в выпадающих списках по выделенному Жанру в списке Жанров Книги для блоков title-info и src-title-info.
SharpFBTools-4.40 Общее + В диалогах правки метаданных добавлена возможность вызова формы правки по двойному клику мышки на соответствующую запись. + В Настройках появилась опция «Показывать сообщения при падении работы алгоритмов». ~ Улучшена валидация раздела <description> ~ Диалог «Правка Жанра»: При выборе одного из жанров в списке, автоматически отображаются его Группа и сам Жанр в выпадающий списках. Автокорректор: + Дополнен список невалидных жанров для обработки. + Обработка названий картинок в <binary>: ситуация, когда есть одинаково названные картинки (например, fb2 создан в FineReader). У копий просто к имени картинки добавляется «__copy» и порядковый номер копии основной картинки. Сами картинки не удаляются… ~ Улучшен алгоритм правки некорректных ссылок. + Обработка тега <annotation>, который содержит 1-м элементом картинку без тегов <p>: <annotation><image l:href="#ficbook_logo.png" /> => <annotation><p><image l:href="#ficbook_logo.png" /></p> ~ Улучшена корректировка раздела <description> + Обработка картинок, обрамленных тегом <subtitle>: <subtitle><image l:href="#_3.jpg" /></subtitle> => <p><image l:href="#_3.jpg" /></p> + Удаление "пустышек" типа <a id="calibre_link-0" /> + Удаление "пустышек": <title><empty-line /><empty-line /></title> + Удаление "пустышек": <section><empty-line /><empty-line /></section> + Удаление пустышек типа <body name="notes"><title><p>Примечания</p></title></body> + Обработка блоков типа <p></section> => </section> + Обработка блоков типа <title></p> => <title> + Раздел <description>: Обработка атрибута в датах типа <date value="20.09.2017" /> => <date value="2017-09-20" /> + Обработка binary, в которых отсутствует аттрибут content-type. + Обработка блоков сносок типа <section id="id20150519063123_1"><title><p>1</p></title></section> => <section id="id20150519063123_1"><title><p>1</p></title><empty-line /></section> Корректор: ~ Изменения в коде инструментов «Поиск только невалидных книг» и «Возобновления поиска невалидных книг после прерывания в xml-файл». Инструменты вынесены в выпадающий список «Все невалидные книги в папке 'Адрес'». + Инструмент «Возобновление Автокорректировки из xml файла» добавлен на панель инструментов. + В диалоге Автокорректировки книг введен контрол, переключающий отображение в логе валидности обработанного файла. Дубликатор: ~ Удалено отображение числа всех папок и книг при работе с сохраненными списками копий. Сортировщик: ~ Исправлен баг: если при сортировке файлы НЕ сжимаются в zip, то при окончании Избранной сортировки в диалоге сводной информации не отображалось число созданных файлов в папке-приемнике. Исправлено. ~ Исправлен баг для Избранной Сортировки: фоновый сбой поиска заданных критериев данных книг, если один из заданных критериев поиска в тегах fb2 файла был пустым. В этом случае после сбоя поиск прекращался, и найденных книг было меньше, чем должно было быть или же – вообще не было найдено ничего. Исправлено.
Сделано улучшение сортировки при нажатии на колонки ListView
Сортировщик: ~ Исправлен баг: если при сортировке файлы сжимаются в zip, то при прерывании сортировки в файл или же при окончании сортировке в диалоге сводной информации не отображалось число созданных файлов в папке-приемнике. Исправлено. ~ Исправлен баг: При включении опции «"Строгие" имена символов» удалялись тире и дефисы. Исправлено. Корректор: + Новый инструмент контекстного меню: Правка Ключевых слов выделенных или помеченных книг. В диалоге правки можно выбрать, добавлять ли новые ключевые слова к уже существующим, или же заменить существующие ключевые слова в книге на новые. + Новый инструмент контекстного меню: Правка Серий выделенных или помеченных книг. В диалоге правки можно выбрать, добавлять ли новую Серию к уже существующим, заменить все существующие Серии в книге на новую, или же удалить все Серии книг(и).
Дубликатор: ~ Изменен алгоритм удаления/перемещения помеченных книг. Теперь все элементы списка, не имеющие книг на жестком диске корректно удаляются. После удаления книг в Списке не остается элементов, для которых книг уже нет на жестком диске. Также теперь после удаления/перемещения помеченных книг корректно отображается текущее число Групп копий книг и всех книг в этих Группах.
Общее: ~ Улучшена стабильность запуска процессов. ~ Улучшена обработка «пустых» архивов при выводе валидности архива. ~ Улучшение работы всех инструментов Корректировки.
Валидатор: + Улучшена работа валидации раздела description книги: выдаются сообщения об отсутствии тегов или их данных для тега Языка книги. Также делается проверка, чтобы код языка книги не превышал 2-х символов. Такая книга считается невалидной. + Улучшена работа валидатора: валидатор теперь не "падает", если namespace книги не совпадает с namespace FictionBook схему, а выдает об этом не соответствии сообщение.
Сортировщик: Небольшое изменение в названии группы опций выбора длины названий объектов; Оптимизация кода генератора суффикса; Правка файла развития программы Change.rtf.
Заново переписан алгоритм сохранения прерывания сравнения в файл и возобновления сравнения из файла для Дубликатора. Теперь алгоритм работает для всех режимов сравнения. Исправлены старые серьезные ошибки в коде Дубликатора. Сделан рефакторинг кода Дубликатора.
Общее: + В диалог общих настроек введено поле для задания пути к временной папке. Это позволяет запускать несколько программ ShartFBTools в разных папках, задавать для них разные временные папки, и их работа не будет портить книги, если они были распакованы во временную папку. ~ Название Группы жанров «Искусство, Искусствоведение, Дизайн» сокращена до «Искусство, Дизайн». ~ Исправлены баги: падение корректировки структуры книги в некоторых редких случаях, когда вместо данных – несколько пробелов. ~ Улучшен интерфейс диалога задания/правки Серии книги для диалога комплексной корректировки данных книги (поле номера Серии теперь расположено под полем названия Серии). ~ Исправлен баг: неверно отображалось затраченное время на обработку книг. Дубликатор: - Из контекстного меню удален инструмент «Удалить выделенную книгу на диске», т.к. этот функционал дублируется другими инструментами удаления книг. ~ Исправлен баг в инструменте удаления всех помеченных Групп в Списке БЕЗ удаления самих книг с жесткого диска. В некоторых случаях удалялись не отмеченные для удаления Группы, а «их» книги оказывались вверху Списка в Группе Default. Теперь удаление отмеченных Групп из Списка происходит корректно.
Дубликатор и Корректор: Унифицирован код перехода на итем после удаления итемов Списка в отдельный статический метод класса MiscListView.
Общее: - Удалена возможность выбора схемы Жанров. + Введена работа с объединенными Жанрами схем fb2.1, Либрусек и Флибуста. Список объединенных Жанров помещен в файле union_genres_ru.xml. Сортировщик файлов: ~ Исправлены мелкие баги.
SharpZipLibWorker.ZipFile(): Реализация упаковки файлов, у которых в имени - юникодные символы.
StringProcessing.ReplaceKav(): Замена кавычек - для нерусских слов вместо 2-х одинарный кавычек - одна одинарная.
Небольшой рефакторинг.
Автокорректор: + Чистка структуры книги – удаление тегов <style> вида <style name="MsoFootnoteReference"> и </style> + Удаление пустышек типа <body name="notes" /> + Обработка тега <annotation>: <annotation><annotation><p>Текст.</p><p>Еще текст.</p></annotation></annotation> => <annotation><p>Текст.</p><p>Еще текст.</p></annotation>. + Удаление неверного id из тега <p>: <p id="__"> => <p>. + Обработка <text-author><p><image l:href="#i_008.png" /></p></text-author> => <text-author><image l:href="#i_008.png" /></text-author>. ~ Улучшен алгоритм обработки цитат: <p> ... </p>. + Преобразование таблиц: <tr><image l:href="#image3.png" /><empty-line /></tr> и <tr><image l:href="#image3.png" /></tr> => <tr><td><image l:href="#image3.png" /></td></tr> + Преобразование таблиц: <tr><td /><image l:href="#image3.png" /><empty-line /></tr> => <tr><td><image l:href="#image3.png" /></td></tr> + Преобразование таблиц: <table><image l:href="#image37.png" /><empty-line /><tr> => <table><tr><td><image l:href="#image37.png" /></td></tr><tr> + Обработка картинок: </section><empty-line /><image l:href="#freud.jpg" /><section> => </section><section><empty-line /><image l:href="#freud.jpg" /><empty-line /></section><section> + Обработка блоков типа </title><empty-line /></section><p> => </title><p> или </title><empty-line /></section><subtitle> => </title><subtitle> Дубликатор: ~ Исправлено падение Дубликатора при удалении элемента списка копий БЕЗ удаления самого файла с жесткого диска. ~ Устранено падение Дубликатора на битых архивах.