diff --git a/doc/README.md b/doc/README.md new file mode 100644 index 0000000..ddc7b05 --- /dev/null +++ b/doc/README.md @@ -0,0 +1,19 @@ +# Документация Ncurses User Interface Library + +`ncui` — библиотека для построения TUI-приложений на D поверх ncurses. + +--- + +## Содержание + +### Конфигурация +- [SessionConfig](pages/session-config.md) + +### Проверки и ошибки +- [Проверки ncurses-вызовов](pages/checks.md) + +--- + +## Статус документации + +Документация растёт вместе с библиотекой. Разделы могут дополняться по мере появления новых модулей и возможностей. diff --git a/doc/pages/checks.md b/doc/pages/checks.md new file mode 100644 index 0000000..3e0b57b --- /dev/null +++ b/doc/pages/checks.md @@ -0,0 +1,43 @@ +# Проверки ncurses-вызовов + +Функции для проверяемых ncurses-вызовов и единых сообщений об ошибках. + +--- + +## ncuiExpect + +Вызывает `fn(args)` и проверяет `result == expected`. + +- Тип `expected` должен совпадать с типом результата `fn(args)`. +- При ошибке выбрасывается исключение с местом вызова. +- Возвращается `result`. + +--- + +## ncuiExpectMsg + +Вызывает `fn(args)` и проверяет `result == expected`, добавляя `message`. + +- Тип `expected` должен совпадать с типом результата `fn(args)`. +- При ошибке выбрасывается исключение с местом вызова. +- Возвращается `result`. + +--- + +## ncuiNotErr + +Вызывает `fn(args)` и проверяет `result != ERR`. + +- `fn(args)` должна возвращать тип `ERR`. +- При ошибке выбрасывается исключение с местом вызова. +- Возвращается `result`. + +--- + +## ncuiNotNull + +Вызывает `fn(args)` и проверяет `result !is null`. + +- `fn(args)` должна возвращать указатель. +- При ошибке выбрасывается исключение с местом вызова. +- Возвращается `result`. diff --git a/doc/pages/session-config.md b/doc/pages/session-config.md new file mode 100644 index 0000000..9423fc2 --- /dev/null +++ b/doc/pages/session-config.md @@ -0,0 +1,80 @@ +# SessionConfig + +`SessionConfig` — структура параметров, определяющая режимы работы ncurses-сессии при создании `Session`. + +```d +struct SessionConfig +{ + InputMode mode = InputMode.raw; + Cursor cursor = Cursor.normal; + Echo echo = Echo.on; + Keypad keypad = Keypad.on; + int escDelay = 50; +} +``` + +--- + +## Параметры + +### mode: InputMode + +Режим обработки ввода терминалом. + +Значения: + +* `InputMode.raw` — посимвольный ввод с минимальной обработкой терминалом. +* `InputMode.cbreak` — посимвольный ввод с сохранением части tty-обработки. +* `InputMode.cooked` — канонический построчный ввод (ввод доступен после Enter). + +Значение по умолчанию: `InputMode.raw`. + +--- + +### cursor: Cursor + +Режим видимости/типа курсора. + +Значения: + +* `Cursor.hidden` — курсор скрыт. +* `Cursor.normal` — обычный курсор. +* `Cursor.high` — курсор повышенной заметности (поддержка зависит от терминала). + +Значение по умолчанию: `Cursor.normal`. + +--- + +### echo: Echo + +Режим эхо ввода (отображение вводимых символов терминалом). + +Значения: + +* `Echo.on` — вводимые символы отображаются. +* `Echo.off` — вводимые символы не отображаются. + +Значение по умолчанию: `Echo.on`. + +--- + +### keypad: Keypad + +Режим обработки специальных клавиш (преобразование в коды `KEY_*`). + +Значения: + +* `Keypad.on` — специальные клавиши возвращаются как `KEY_*` (стрелки, Home/End, PgUp/PgDn, F1..F12 и т.п.). +* `Keypad.off` — специальные клавиши могут возвращаться как escape-последовательности. + +Значение по умолчанию: `Keypad.on`. + +--- + +### escDelay: int + +Задержка распознавания одиночного `Esc` и escape-последовательностей. + +Единицы измерения: миллисекунды. + +Значение по умолчанию: `50`.