Russian Qt Forum
Ноябрь 24, 2024, 03:16 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: chm2qch: Конвертер CHM -> QCH  (Прочитано 10879 раз)
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 Задать целевой каталог
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #1 : Январь 05, 2017, 20:25 »

Сборка как обычно, qmake + make, внешних зависимостей кроме Qt >= 5.2 нет.
эх Грустный
Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
mitrich
Гость
« Ответ #2 : Январь 05, 2017, 20:45 »

Из 5-й там только QCommandLinerParser в main() используется, можно и выкинуть в принципе. Потом может какой дефайн сделаю для 4-ки.

Хотя, к чёрту дефайны Улыбающийся Присобачил подправленный QCommandLineParser для Qt 4.
« Последнее редактирование: Январь 06, 2017, 17:45 от mitrich » Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #3 : Январь 15, 2017, 15:03 »

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

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
mitrich
Гость
« Ответ #4 : Январь 16, 2017, 15:52 »

Это я не в том месте кодировку проверял. Исправил, сейчас читается из раздела системной инфы.
Бинарник пока не выложил, ещё кой-какую фигню поправлю.
« Последнее редактирование: Январь 16, 2017, 15:54 от mitrich » Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #5 : Январь 16, 2017, 16:29 »

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

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
mitrich
Гость
« Ответ #6 : Январь 16, 2017, 17:52 »

Сделаю. У меня просто основной профиль Qt в PATH прописан, так я и забыл про это.
Записан
mitrich
Гость
« Ответ #7 : Январь 18, 2017, 18:51 »

Может стоит брать путь к профилю из настроек креатора?
ПС. Ну или хотябы дать возможность указать путь к толчейну.
Сделал автонахождение директории Qt + возможность задать самому (ключ -qtbindir= и комбобокс в GUI)
Заодно нашёл и исправил маленький (опечатка в 3 символа) но жирный баг: вместо правильных ключевых слов в индексе, туда просто копировалось содержание.
« Последнее редактирование: Январь 18, 2017, 18:58 от mitrich » Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #8 : Январь 18, 2017, 21:55 »

Круто! Благодарю.

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

От кракозябр полностью не избавились, но уже полегче.
Кракозябры идут в самом корне.
Конвертировал эти файлы.
Выглядит это вот так:


« Последнее редактирование: Январь 18, 2017, 22:47 от panAlexey » Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #9 : Январь 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);
« Последнее редактирование: Январь 19, 2017, 00:04 от panAlexey » Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #10 : Январь 19, 2017, 00:45 »

это initializer_list из C++11
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
mitrich
Гость
« Ответ #11 : Январь 19, 2017, 12:58 »

Кракозябры идут в самом корне.
Исправил.
"застревает" вычисленное пространство имен где-то в переменных.
Не обнаружил. Возможно, я это исправил до твоего сообщения.
Записан
panAlexey
Гипер активный житель
*****
Offline Offline

Сообщений: 864

Акцио ЗАРПЛАТА!!!!! :(


Просмотр профиля
« Ответ #12 : Январь 19, 2017, 14:45 »

Кракозябры идут в самом корне.
Исправил.
"застревает" вычисленное пространство имен где-то в переменных.
Не обнаружил. Возможно, я это исправил до твоего сообщения.
Подтверждаю, все работает отлично.
ПС. Для меня chm2qch - эта программа просто спасение в плане разработки, теперь могу не тратить кучу времени на поиск нужного часто используемого файла справки, а просто открыть ассистант и выбрать нужный пункт.
Примите мою благодарность!
« Последнее редактирование: Январь 19, 2017, 15:04 от panAlexey » Записан

Win Xp SP-2, Qt4.3.4/MinGW. http://trdm.1gb.ru/
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.065 секунд. Запросов: 23.