Текстовый Интерфейс, Часть 2. Взаимодействие С Пользователем

Итак, часть вторая.

Здесь я раскрою, как получить информацию от пользователя, а также как манипулировать этими данными.

Здесь можно затронуть вопрос, поднятый в комментариях к предыдущему.

почта - «Зачем все это нужноЭ» Примерами использования таких интерфейсов в 21 веке являются различные устройства на виртуальных машинах, реализующие отдельные сервисы.

Чаще всего это минимальный дистрибутив Linux или набор загрузочное ядро + busybox. С помощью такого интерфейса можно реализовать своеобразный фронтенд для сервиса, позволяющий с первого взгляда определять состояние основных узлов или выполнять те или иные операции в удобной для пользователя форме.

Примером могут служить аналогичные интерфейсы для VMware ESXi (vDirector, vCenter и т. д.), Citrix Xen, которые сочетают в себе возможности веб-интерфейса и TUI в качестве интерфейса резервного копирования и/или интерфейса конфигурации/диагностики.

Переключаясь между десятками машин, можно сразу увидеть, все ли в порядке, или быстро узнать IP-адрес, полностью заблокировав доступ пользователя к консоли, показывая ему только то, что ему необходимо знать (защита от дурака).



Текстовый интерфейс, часть 2. Взаимодействие с пользователем

Чтобы не заглядывать в предыдущий пост, напомню, что все «виджеты» я реализую через структуру, создающую подобие слоев, каждый из которых отвечает за что-то свое (тень, дизайн, верхний слой, доступный пользователю).

пользователь для изменения).

И все это объединено в панель, позволяющую перемещать, скрывать и удалять все слои как один.

  
  
   

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++

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.