Итак, часть вторая.
Здесь я раскрою, как получить информацию от пользователя, а также как манипулировать этими данными.
Здесь можно затронуть вопрос, поднятый в комментариях к предыдущему.
почта - «Зачем все это нужноЭ» Примерами использования таких интерфейсов в 21 веке являются различные устройства на виртуальных машинах, реализующие отдельные сервисы.
Чаще всего это минимальный дистрибутив Linux или набор загрузочное ядро + busybox. С помощью такого интерфейса можно реализовать своеобразный фронтенд для сервиса, позволяющий с первого взгляда определять состояние основных узлов или выполнять те или иные операции в удобной для пользователя форме.
Примером могут служить аналогичные интерфейсы для VMware ESXi (vDirector, vCenter и т. д.), Citrix Xen, которые сочетают в себе возможности веб-интерфейса и TUI в качестве интерфейса резервного копирования и/или интерфейса конфигурации/диагностики.
Переключаясь между десятками машин, можно сразу увидеть, все ли в порядке, или быстро узнать IP-адрес, полностью заблокировав доступ пользователя к консоли, показывая ему только то, что ему необходимо знать (защита от дурака).
Чтобы не заглядывать в предыдущий пост, напомню, что все «виджеты» я реализую через структуру, создающую подобие слоев, каждый из которых отвечает за что-то свое (тень, дизайн, верхний слой, доступный пользователю).
пользователь для изменения).
И все это объединено в панель, позволяющую перемещать, скрывать и удалять все слои как один.
Глядя на скриншоты, можно увидеть, как различаются цвета в некоторых из них.struct _cursed_window { WINDOW *background; WINDOW *decoration; WINDOW *overlay; PANEL *panel; }; typedef struct _cursed_window cursed;
Хотя код тот же, цветное отображение зависит от конкретной реализации эмулятора терминала.
Я оставил это в качестве примера.
Я не буду упоминать работу с такими функциями, как getch(), wgetch(), scanw и другими.
По сути, это аналоги соответствующих функций из C с некоторыми дополнениями.
Меню
Меню реализовано просто и понятно.Движок поддерживает множество вариантов меню, в том числе вложенных.
Любые пункты меню могут быть активными или нет. Также есть поддержка прокрутки, поиска по комбинации и прочие радости, значительно упрощающие создание очень сложных и навороченных меню.
Напишем функцию, которая будет возвращать значение, соответствующее выбору пользователя.
int32_t
tui_make_menu (const char **choices, size_t choices_num)
На входе у нас есть массив со строками вариантов выбора и количеством этих вариантов.
Примерно так может выглядеть наш список.
const char *choices[] =
Теги: #C++ #tui #командная строка #программирование #C++
-
Нефункциональное Тестирование Системы
19 Oct, 24 -
Интернет И Ответственность
19 Oct, 24 -
Сотрудники-Носки
19 Oct, 24 -
Отчеты Конференции Bynet2.0
19 Oct, 24