Re: Как нынче принято делать хелп?
От: qaz77  
Дата: 20.03.23 17:10
Оценка: +1
Здравствуйте, temnik, Вы писали:
T>Так куда податься, что нынче в моде для справки?

Для довольно крупной десктопной программы для Windows мы 10 лет назад начали уходить от HLP и CHM.
Решено было опираться на html, что позволило основную массу материалов использовать как в оффлайн версии, так и на сайте.
В этом проекте используется разветвленный DSL с полутора десятком модулей и множеством функций в каждом модуле.
Поэтому поместить все в один файл — выглядело неудобно и объем был бы десятки мегабайт, что тормоза при загрузке с сайта.
Для понимания масштабов: на 2023 год там почти 5000 файлов общим размером 40 мегабайт (html + картинки).

Второй вопрос был в том, как организовать навигацию по этой документации сравнимую хотя бы HtmlHelp/CHM.
Т.е. требовались: содержание в виде дерева, алфавитный указатель, полнотекстовый поиск.
Причем было очевидно, что для оффлайн версии документации и онлайн нужны будут различные реализации всего этого.
Плюс для оффлайн версии нужна еще связка с контекстами программы, чтобы работала F1 и т.п.

В итоге для оффлайн версии решили сделать обвязку вокруг WebBrowser2,
строить самим содержание, алфавитный указатель и индексы для полнотекстового поиска.
Бонусом получилось использовать событие BeforeNavigate2, где можно обрабатывать клики по любым ссылкам в html.
Это позволило по ссылкам в документации дергать функции программы. Например, описание фичи Foo и тут же ссылка "Включить фичу Foo в программе прямо сейчас".
Но сам принцип не упирается в WebBrowser2 (IE). Можно взять Chromium или какую-нибудь рендерилку html полегче.
Для построения индексов полнотекстового поиска взяли CLucene (он, к сожалению заброшен с 2013).
Остальное запилили сами.

Для генерации онлайн версии документации сделали возможность выгрузки модели документации из оффлайн версии.
А именно: содержания и алфавитного указателя. Полнотекстовый поиск на сайте — средствами гугло-роботов.
Сначала сделали содержание одним XML. Но он оказался около 3 мегабайт и заметно подтормаживал при открытии сайта.
Тогда побили xml-ки на уровни дерева содержания, чтобы подгружались только для развернутых узлов дерева.
А алфавитный указатель — просто статический html с буковками и еще страничка на каждую буковку.
Эти странички генерирует питоновский скрипт из выгруженной в XML модели документации.

Синхронизация онлайн справки и оффлайн делается в один клик: запускается выгрузка оффлайн модели в XML.
Затем питон работает с этим XML, генерирует все, что нужно.
И в итоге заливается на сайт.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.