TUI (текстовый пользовательский интерфейс) для D?

Я хотел бы написать консольное приложение с текстовым интерфейсом на D. Я посмотрел curses, но, похоже, оно работает только на unix. Есть ли кросс-платформенные альтернативы?


d tui
person Suliman    schedule 15.03.2015    source источник
comment
Есть curses порты для windows. Нет ничего, что работало бы абсолютно везде, но curses — неплохой выбор. en.wikipedia.org/wiki/Curses_%28programming_library%29   -  person Cubic    schedule 15.03.2015


Ответы (2)


Мой terminal.d можно использовать в качестве основы для библиотеки TUI.

https://github.com/adamdruppe/arsd/blob/master/terminal.d

У него нет обязательных зависимостей, поэтому вы можете просто скачать этот файл и начать сборку с dmd yourfile.d terminal.d. Вот пример программы, получающей ввод: http://arsdnet.net/dcode/book/chapter_12/07/input.d

Вы также можете использовать terminal.moveTo(x, y); terminal.color(Color.green, Color.black); terminal.writef("something"); terminal.flush(); и тому подобное для перемещения и рисования.

Ищите version(Demo) в самом терминале.d для main, который обрабатывает все виды событий ввода, включая события мыши.

В то время как terminal.d в основном предлагает функции более низкого уровня (его основная функция высокого уровня — terminal.getline, отлично подходит для линейных приложений, но не для TUI), он должен дать всю основу, необходимую для написания небольшой библиотеки текстовых виджетов.

и я думаю, что кто-то мог сделать это однажды, но я не помню, где.

terminal.d работает в системах Windows и Posix для наиболее распространенных терминалов, таких как xterm. ncurses является более всеобъемлющим и, вероятно, содержит меньше ошибок для более неясных целей, но terminal.d, будучи одним файлом, легче построить.

person Adam D. Ruppe    schedule 16.03.2015

Это было правдой давно. Однако известно, что ncurses прекрасно работает и в Windows. Самый простой способ создать его в Windows — внутри оболочки MSYS2. Другой кроссплатформенной альтернативы Curses действительно нет (узнайте, почему они назвали проект curses, и вы поймете, почему нет хорошей альтернативы).

person DejanLekic    schedule 16.03.2015