Понятие контекстной или контекстно-зависимой справки (от англ. context-sensitive help) появилось в 1987 году с выходом формата WinHelp. Изначально контекстная справка задумывалась как предоставление пользователю краткой информации об элементе интерфейса программы (окне, кнопке и т.п.), с которым пользователь работал в момент вызова справки. Позднее реализация контекстной справки свелась к прямым вызовам отдельных разделов справки из разных форм приложения.
Отличия от обычной справки
В отличие от обычной справки, где пользователь сам выбирал раздел либо в оглавлении, либо по ключевому слову в Указателе, либо в результатах поиска, раздел контекстной справки открывался автоматически в зависимости от ситуации (контекста). Если обычная справка предполагала чтение разделов по порядку, то тексты контекстной справки представляли собой не связанные друг с другом описания элементов графического интерфейса. Точкой входа в контекстной справке являлся идентификатор элемента интерфейса.
Способы реализации контекстной справки
Существует два основных способа реализации контекстной справки:
- «Что это?» - описания элементов ГИП во всплывающих окнах.
- Открытие определенных разделов обычной справки по прямым ссылкам из ПО.
Что это?
Самым распространенным способом реализации контекстной справки была так называемая справка "What's this?". Пользователь выбирал инструмент "Что это?" – обычно значок в строке заголовка окна со знаком вопроса - и щелкал интересующее его поле или кнопку. На экран выводилось всплывающее окно с кратким описанием выбранного элемента интерфейса. Созданием контекстной справки занимались программист и технический писатель.
Технически в проект справки добавлялось два файла:
- текстовый файл со всеми текстами контекстной справки, поделенный на разделы .topic с уникальными идентификаторами;
- файл заголовков (от англ. header file), в котором задавалось соответствие между уникальным идентификатором раздела из первого файла и цифровым идентификатором элемента ГИП.
Вызовы разделов контекстной справки вставлялись в исходный код ПО. Такой способ реализации контекстной справки поддерживался в форматах WinHelp (устарел) и HTML Help (CHM).
Подробное описание данного способа реализации контекстной справки можно посмотреть на сайте разработчика на английском языке: Creating Context-Sensitive Pop-up Help.
Открытие раздела обычной справки
Со временем процесс разработки ПО усложнялся, становился более динамичным. Выделялись и работали отдельно команда программистов и команда технических писателей. Программы становились сложнее и содержали уже не сотни, а тысячи уникальных элементов ГИП. Контекстную справку в изначальном виде стало очень сложно и трудоемко поддерживать. В этой связи был разработан второй подход к реализации контекстной справки. В зависимости от рабочей ситуации (открытое в данный момент диалоговое окно, используемый функционал и т.п.), при вызове справки стали открывать определенный раздел обычной справки с описанием данного окна, функционала и т.п. Сегодня в основном используется такой способ реализации контекстной справки. Он поддерживается в форматах HTML Help (CHM) и WebHelp. А от первого способа реализации контекстной справки практически полностью отказались в пользу второго.
Примером реализации такой контекстной справки может служить вызов разных разделов справки разными командами с ленты.
Вызов разделов из CHM-файла
Cинтаксис ссылки для вызова раздела CHM-файла следующий (исключая префикс ms-its и имя окна справки):
Helpfile.chm::/Topic.htm#anchor
Где:
- Helpfile.chm - файл справки HTML Help;
- Topic.htm - раздел в корне CHM-файла;
- Topic - идентификатор раздела (HELP-ID);
- anchor - якорь в разделе Topic.htm.
Чаще всего файлы разделов находятся в корне CHM-файла. Идентификатор раздела можно посмотреть в проекте (если вы автор) или в свойствах раздела CHM-файла.
На локальном ПК ссылку можно проверить следующим образом:
Выберите Пуск -> Выполнить и введите:
hh.exe C:\test\HelpFile.chm::/Topic.htm#anchor
Где:
- hh.exe - программа для просмотра справки в формате HTML Help (CHM), файл расположен в C:\Windows\hh.exe;
- C:\test\HelpFile.chm - путь к CHM-файлу;
- Topic.htm - раздел в корне CHM-файла;
- anchor - якорь в разделе Topic.htm.
Вызов CHM из программы
Справку в формате CHM можно вызвать из любого приложения, работающего в ОС Windows. По ссылкам ниже можно посмотреть инструкции для программистов на английском языке для разных сред разработки:
CHM files and programming languages
Вызов разделов из WebHelp
Для вызова раздела WebHelp по идентификатору используется ссылка следующего вида:
http://www.WEB-SITE.com/WebHelp_folder/HELP-ID.html
Контекстная справка сегодня
На смену формату HTML Help (CHM) был разработан формат Microsoft Help 2, но в 2003 году компания Microsoft решила не выпускать новую платформу справки. Данный формат используется компанией, но до сих пор не стал публичным. В 2009 году компания Microsoft запатентовала систему вывода контекстной справки на электронных устройствах (Патент США US8151192B2).
Согласно описанию, помимо обработчика и ОС система состоит из:
- модуля определения атрибутов приложения (application attributes discovery module);
- модуля определения состояния системы (system state discovery module);
- модуля инфраструктуры справки (help infrastructure module);
- модуля определения справочного контекста (help context mapping module);
- модуля хранения разделов справки (help topic collection module);
- и средства просмотра справки.
Работает такая система следующим образом. Модуль определения атрибутов приложения определяет один или несколько атрибутов приложения, из которого в систему поступает запрос на вызов справки (название, тип приложения, имя файла и т.д.). Модуль определения состояния системы предоставляет системную информацию, связанную с компонентами электронного устройства, на котором работает приложение в момент вызова справки (сетевая активность, подключение к Интернет и т.д.).
Модуль инфраструктуры справки обрабатывает полученные атрибуты приложения, информацию о состоянии системы, и определяет набор контекстов справки (help context set), связанный с приложением в момент, когда пользователь вызывает справку.
В модуле определения справочного контекста хранятся XML-таблицы соответствий между контекстами и комбинациями атрибутов приложения и информации о состоянии системы (в нечитаемом для человека виде). Данный модуль определяет лучшее соответствие между контекстом приложения и контекстом справки + определяет идентификаторы разделов справки. В модуле хранения каждый раздел справки обладает уникальным идентификатором. Средство просмотра справки выводит разделы справки по полученному идентификатору.