GOOGLE ADS

воскресенье, 1 мая 2022 г.

Как реализован пользовательский интерфейс терминальных текстовых редакторов?

Терминальные текстовые редакторы, такие как emacs, vim, joeили даже nanoимеют возможность отображать произвольные элементы пользовательского интерфейса внутри командной строки без полной перезаписи всего пользовательского интерфейса каждый раз, но перезаписывая то, что в настоящее время является их пользовательским интерфейсом.

С обычными потоками вывода вы можете использовать символ возврата только '\r'для перехода к началу текущей строки вывода и записи поверх него, но из того, что я обнаружил, вы не можете перейти на несколько строк, cout << "\r\r\r\r\r\r";имеет тот же эффект, что и cout << '\r', поэтому все последовало новой строкой, по-видимому, высечено в камне.

Другие приложения делают нечто подобное, например, $dpkg-reconfigure ca-certificatesв Ubuntu или aptitudeграфическом менеджере пакетов. Они также рисуют контуры элементов пользовательского интерфейса, которые, вероятно, являются просто специальными символами. Но все же им придется перезаписать несколько строк вывода консоли.

Как они это делают? Переносится ли поведение на платформы Windows?


Решение проблемы

Вы обнаружите, что эти программы зависят от библиотеки ncurses:

http://en.wikipedia.org/wiki/Ncurses

Доступны сборки практически для всех операционных систем.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...