Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: mitrich от Январь 05, 2017, 20:02



Название: chm2qch: Конвертер CHM -> QCH
Отправлено: mitrich от Январь 05, 2017, 20:02
Вот, навалял конвертер файлов справки СHM (Windows compiled HTML Help) в QCH (Qt Compressed Help), чтобы смотреть их в Creator/Assistant.

https://bitbucket.org/mitrich_k/chm2qch/

Сборка как обычно, qmake + make, внешних зависимостей кроме Qt >= 5.2 нет.
Пример использования: chm2qch -g HelpFile.chm - распакует в текущий каталог содержимое CHM, создаст файл проекта HelpFile.qhp и вызовет qhelpgenerator для генерации собственно HelpFile.qch

Опции:
  • -g Вызвать qhelpgenerator в конце
  • -c Удалить все промежуточные файлы (*.html, *.qhp, ...) кроме финального *.qch
  • -r Не объединять документацию в одном корневом разделе
  • -q Тихий режим, не выводить никаких сообщений
  • -n=namespace Задать namespace для документации (напр. -n=com.microsoft.sapi.51)
  • -d=outdir Задать целевой каталог


Название: Re: chm2qch: Конвертер CHM -> QCH
Отправлено: panAlexey от Январь 05, 2017, 20:25
Сборка как обычно, qmake + make, внешних зависимостей кроме Qt >= 5.2 нет.
эх :(


Название: Re: chm2qch: Конвертер CHM -> QCH
Отправлено: mitrich от Январь 05, 2017, 20:45
Из 5-й там только QCommandLinerParser в main() используется, можно и выкинуть в принципе. Потом может какой дефайн сделаю для 4-ки.

Хотя, к чёрту дефайны :) Присобачил подправленный QCommandLineParser для Qt 4.


Название: Re: chm2qch: Конвертер CHM -> QCH
Отправлено: panAlexey от Январь 15, 2017, 15:03
Есть проблема *.qhp распаковывается в UTF-8 без конвертации.
прилагаю файлы.
Фишка в том, что если кодировка отличается от 1251 в chm, то в окне "поиска" и "избранном" идут кракозябры или не срабатывает поиск.
ПС. Умудрился поставить на win xp 2010 студию. и Qt5.2.1 попробую сам порихтовать.


Название: Re: chm2qch: Конвертер CHM -> QCH
Отправлено: mitrich от Январь 16, 2017, 15:52
Это я не в том месте кодировку проверял. Исправил, сейчас читается из раздела системной инфы.
Бинарник пока не выложил, ещё кой-какую фигню поправлю.


Название: Re: chm2qch: Конвертер CHM -> QCH
Отправлено: panAlexey от Январь 16, 2017, 16:29
Есть еще одна проблема.
Программа не находит профиль Qt на компьютере, если он напрямую не указан в PATH.
У меня на компе след профили Qt:
473, 485, 521 и 551 мингва.
Соотв. в PATH ничего не указано.
Может стоит брать путь к профилю из настроек креатора?
ПС. Ну или хотябы дать возможность указать путь к толчейну.
Настройки креатора тут:
%HOMEPATH%\Application Data\QtProject\qtcreator\qtversion.xml


Название: Re: chm2qch: Конвертер CHM -> QCH
Отправлено: mitrich от Январь 16, 2017, 17:52
Сделаю. У меня просто основной профиль Qt в PATH прописан, так я и забыл про это.


Название: Re: chm2qch: Конвертер CHM -> QCH
Отправлено: mitrich от Январь 18, 2017, 18:51
Может стоит брать путь к профилю из настроек креатора?
ПС. Ну или хотябы дать возможность указать путь к толчейну.
Сделал автонахождение директории Qt + возможность задать самому (ключ -qtbindir= и комбобокс в GUI)
Заодно нашёл и исправил маленький (опечатка в 3 символа) но жирный баг: вместо правильных ключевых слов в индексе, туда просто копировалось содержание.


Название: Re: chm2qch: Конвертер CHM -> QCH
Отправлено: panAlexey от Январь 18, 2017, 21:55
Круто! Благодарю.

Еще одно неудобство: "застревает" вычисленное пространство имен где-то в переменных.
Приходится открывать/закрывать конвертер для конвертирования следующейго файла.
Это видно, когда в ассистанте добавляешь новый файл Меню->Правка->Настройки->Документация->[Добавить]

От кракозябр полностью не избавились, но уже полегче.
Кракозябры идут в самом корне.
Конвертировал эти файлы. (https://yadi.sk/d/s_HaqQ9O39horN)
Выглядит это вот так:
(http://s019.radikal.ru/i636/1701/8a/8afbca8bd460.png)



Название: Re: chm2qch: Конвертер CHM -> QCH
Отправлено: panAlexey от Январь 19, 2017, 00:01
Может стоит брать путь к профилю из настроек креатора?
ПС. Ну или хотябы дать возможность указать путь к толчейну.
Сделал автонахождение директории Qt + возможность задать самому (ключ -qtbindir= и комбобокс в GUI)
Заодно нашёл и исправил маленький (опечатка в 3 символа) но жирный баг: вместо правильных ключевых слов в индексе, туда просто копировалось содержание.

Ну, на самом деле когда пакую chm у меня не доходит дело до индексов.
Дело обстоит так:
собираю корневой index.html, натаскиваю нужных страниц из интета, запускаю скрипт для удаления скриптов и прочей бодяги из html, запускаю скрипт генерации *.hhc (TOC файла (Table of Contents). ) и скармливаю это все генератору хелпа.

ПС. Скажите, а что позволяет использовать такие конструкции в c++ "{qhpname}"??
Код:
bool Converter::runQhg(const QString &qhpname)
{
    QProcess::ProcessError e = runProcess(appName, {qhpname});
У меня компилятор не понимает этих конструкций, приходится их обходить.
Код:
    QStringList li; li.append(qhpname);
    QProcess::ProcessError e = runProcess(appName, li);


Название: Re: chm2qch: Конвертер CHM -> QCH
Отправлено: kambala от Январь 19, 2017, 00:45
это initializer_list из C++11


Название: Re: chm2qch: Конвертер CHM -> QCH
Отправлено: mitrich от Январь 19, 2017, 12:58
Кракозябры идут в самом корне.
Исправил.
"застревает" вычисленное пространство имен где-то в переменных.
Не обнаружил. Возможно, я это исправил до твоего сообщения.


Название: Re: chm2qch: Конвертер CHM -> QCH
Отправлено: panAlexey от Январь 19, 2017, 14:45
Кракозябры идут в самом корне.
Исправил.
"застревает" вычисленное пространство имен где-то в переменных.
Не обнаружил. Возможно, я это исправил до твоего сообщения.
Подтверждаю, все работает отлично.
ПС. Для меня chm2qch - эта программа просто спасение в плане разработки, теперь могу не тратить кучу времени на поиск нужного часто используемого файла справки, а просто открыть ассистант и выбрать нужный пункт.
Примите мою благодарность!