ReadMe
Манифест
Электроника
Программное обеспечение:
ЖКИ
VLSI
Разные мелочи
Интерфейсы накопителей
Файловые системы
Элементы пользовательского интерфейса
Модули режимов
Координаторы
Отладочный координатор
Пользовательский интерфейс
Фотографии
 
==> Orfey2

Програмная часть: элементы пользовательского интерфейса

Пользовательский интерфейс плейера образован тремя группами модулей: 1) низкоуровневые "кирпичики" (описаны на этой странице); 2) модули режимов; 3) координатор режимов.

К низкоуровневым относятся следующие:

Модуль выбора файлов (path_changer.asm.inc)

Этот модуль, взаимодействуя с уровнем файловой системы, позволяет, используя полноэкранное меню, выбирать пользователю нужный файл. Пользователь может выбирать глубину управления (root-каталог или подкаталог заданного уровня - стрелки вверх/вниз) и элемент на заданной глубине (стрелки вправо-влево). Путь модифицируется непосредственно в памяти файлового уровня. Модуль требует инициализации вызовом процедуры pc_Init при включении питания. В случае, если глубина пути превышает число экранных строк, возможно вертикальное скролирование информации.

Модуль селекторов (user_router.asm.inc)

Этот модуль содержит две основные процедуры.

Экранное меню (процедура ur_Menu)

В качестве аргумента эта процедура получает адрес таблицы (не более 6 строк), в которой перечислены строки меню и их аттрибуты. Меню выводится на экран, после чего процедура может либо закончить работу по запросу пользователя либо вызывать различные процедуры, связанные с выбранной строкой, в зависимости от действий пользователя.

Для каждой строки описываются: текст строки; дополнительная процедура вывода текста (вызывается сразу после вывода строки); процедуры, вызываемые при нажатии стрелки вправо, влево или клавиши подтверждения; дополнительные флаги.

Скроллинг меню не предусмотрен, поэтому число пунктов ограничивается числом экранных строк - 6.

Расширенный анализатор клавиатуры (процедура ur_KeybRoute)

В качестве аргумента эта процедура получает таблицу комбинаций клавиш, флагов и обработчиков. Когда управление передаётся ur_KeybRoute, она проверяет состояние клавиатуры и если оно соответствует одной из комбинаций, указанных в таблице, управление передаётся соответствующей процедуре.

ur_KeybRoute используется в плейере очень широко, так как существует много различных состояний кода, в каждом их которых плейер может реагировать на многие клавиши и их комбинации. Писать для каждого случая длинный список команд cpi/breq очень скучно :).

Владимир