monday2000
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Ответы Tulon на некоторые вопросы Вопрос 1: Почему бы не сделать выходную нумерацию в виде 0001.tif, 0002.tif, ... 0010.tif, ... - а не так, как сейчас? Цитата: Если делать, чтобы без всяких косяков (типа непоявление знаков вопросов на стадии вывода после удаления/вставки/изменения типа разреза), получается очень сложно. Настолько сложно, что у меня даже нет идей, как к этому подступиться. Если с косяками, то можно сделать, как было раньше, а именно: Task::process() и CacheDrivenTask::process() принимают дополнительный аргумент - номер страницы в выходной последовательности. Правда получить этот номер будет не так просто: если раньше порядок обработки страниц всегда был один и тот же - как страницы идут в ProjectPages, то сейчас он соответствует текущему режиму сортировки. Как все работает сейчас: Есть класс OutputFileNameGenerator, и в нем функции getFileNameFor(PageId) и getFilePathFor(PageId). То есть имя файла на выводе есть функция от имени (точнее от полного пути) входного файла и типа страницы (полная страница / левая половина / правая половина). Почему от полного пути а не просто от имени файла? Потому что никто не запрещает поместить в проект два файла с одинаковым именем но из разных директорией. Уже десять раз пожалел, что разрешил иметь в проекте файлы из разных директорий, так как пришлось придумывать способ, чтобы разрешать коллизии имен. Способ получился такой: есть класс FileNameDisambiguator к которому имеет доступ OutputFileNameGenerator, и который имеет функцию "int getLabel(QString const& file_path) const". Если возвращает ноль - значит в проекте нет двух файлов с таким именем. Если больше нуля, то это число в итоге окажется в имени выходного файла, примерно так: 0005(1).tiff, 0005(2).tiff Естественно при такой схеме, нужно обновлять информацию в FileNameDisambiguator каждый раз, когда в проект добавляется новый файл. При удалении я кстати ничего не обновляю, то есть может оказаться, что на выводе есть файл 0005(2).tiff, но нету 0005(1).tiff, потому как соответствующий исходный файл был удален из проекта. Кстати, внутреннее состояние FileNameDisambiguator сохраняется в проект. Так вот, в принципе можно убрать функцию FileNameDisambiguator::getLabel() и сделать вместо нее getOutputPageNumber(), но в этом случае вы запаритесь обновлять его внутреннее состояние, потому что это придется делать не только при добавлении файла в проект, но и при удалении, а также при изменении типа разреза. Еще при любом из этих событий надо бы переименовывать все имеющиеся выходные файлы к своим новым именам. Гемморой в общем. Могу впрочем предложить другой подход: создать пункт в меню Инструменты ->Экспортировать вывод. Там указываете директорию для экспорта, а также пару галок: "последовательная нумерация" и "копировать вместо перемещения". Такой подход реализовать совсем несложно. | Вопрос 2: Вышел Qt 5. Может, стоит его использовать? Цитата: Без изменений скриптов сборки он практически гарантированно не соберется. Я слышал там несколько новых зависимостей да и вообще я пессимист Сейчас мои скрипты сборки делают всякие хитрые манипуляции, чтобы Qt собралась в нужной мне конфигурации, вплоть до того, что патчат .pro/.pri файлы в исходниках Qt. Так что если хотите попробовать собрать Qt5 - готовтесь засучить рукава и основательно поковырять файл packaging/windows/build_deps/CMakeLists.txt. Как можно заметить, секция Qt там весьма не маленькая. | Добавлено: LazyKent Цитата: Если не затруднит, попрошу сделать в другом формате | http://rghost.ru/43173214 Добавлено: F777 Цитата: Конечно, баг. Конечно, исправлю. Цитата: И самый главный вопрос. А не могли бы Вы влить все Ваши новшества в Scan Tailor Plus и вообще работать в дальнейшем именно с ним, а не с классическим вариантом? | Если будет время. Но это может сделать теперь и любой другой человек - мои правки кода я же выложил. Но я буду теперь переделывать полностью вывод разделённых сканов - чтобы получать сквозную нумерацию 0001.tif, 0002.tif, ... 0010.tif. Мне не нравится ни Plus, ни тем более Enhanced. Ну что это такое в Plus: Цитата: 1) удаляем файл автосохранения UnnamedAutoSave.Scantailor для неизвестного проекта, если он есть 2) автосохранение делается в файл Project.Scantailor.as 3) файл проекта Project.Scantailor переименовываем в Project.Scantailor.bak 4) файл автосохранения Project.Scantailor.as переименовываем в файл проекта Project.Scantailor 5) бэкап файла проекта Project.Scantailor.bak не удаляем | Да кто это будет делать - "удаляем", "переименовываем"? Если уж и делать авто-сохранение - то хотя бы так, как в СканКромсаторе: неизвестный проект - не сохранять автоматом (т.е. если юзер забыл сохранить изначально свой проект - сам виноват), а авто-сохранение проекта делать в момент перелистывания на следующую страницу. Это надёжно защитит юзера от случайного падения программы. Да и в Настройках Plus понаворочено тоже уже подозрительно много всего. А Enhanced уже начал напоминать внешне СканКромсатор. Так что, если уж и делать - то только свой клон, куда собрать всё разумное из других клонов + своё. Да и потом - неэтично забирать под себя чужие клоны. А вдруг автор клона захочет снова там что-то сделать. Добавлено: Цитата: или баг? Можно исправить? | Исправил: http://rghost.ru/43175226 | Всего записей: 2841 | Зарегистр. 13-01-2005 | Отправлено: 13:30 20-01-2013 | Исправлено: monday2000, 13:32 20-01-2013 |
|