Есть ли какая-либо библиотека пользовательского интерфейса, которая может создавать как текстовый пользовательский интерфейс (ncurses), так и графический пользовательский интерфейс (GTK? QT?) Из одного источника? Я знаю, что debconf можно использовать с различными интерфейсами, я хотел бы создать что-то похожее, но программируемое.





Возможно, tcl / tk предоставит то, что вы хотите http://www.tcl.tk/
Вот страница о взаимодействии с проклятиями. Там есть претензия на интеграцию с ncurses.
Есть Проклятый GTK, но он кажется немного устаревшим. Я нашел несколько ссылок на порт Qt на ncurses под названием Qt Console, но, похоже, он исчез.
вы можете написать свою программу для использования ncurses, а затем использовать PDCurses, чтобы преобразовать ее в приложение X11 - как рекламируется в файле readme.
Я знаю это, потому что использовал его в качестве портативных проклятий, хотя я никогда не тестировал его возможности X11.
Не совсем библиотека, но вы могли бы подумать о написании веб-приложения, которое хорошо деградирует до Lynx.
Хорошее мышление нестандартно
Я думаю, что для настройки ядра Linux при компиляции используется dialog / cdialog / xdialog. Но прошло много времени с тех пор, как я скомпилировал ядро, поэтому моя память может быть отключена. Самая многообещающая ссылка, которую я могу найти, - это Xdialog.
Используя библиотеку, ориентированную как на текстовый режим, так и на среду графического интерфейса, вы сильно рискуете застрять в худшем из обоих миров.
Вам будет лучше структурировать свой код с помощью Шаблон MVC и предоставлять отдельные представления и контроллеры для каждой целевой платформы. Передача всей логики в классы модели дает несколько других преимуществ:
Библиотека, которая обеспечивает независимость YaST для выполнения ncurses, gtk и qt с одной базой кода, предоставляет то, что вы ищете, и не привязана к самому YaST.
На самом деле libyui требует только стандартной библиотеки C++ и phtreads (IIRC). Плагины пользовательского интерфейса, конечно же, требуют соответствующих библиотек (Qt, ncurses). YaST использует libyui через набор привязок YCP, которые экспортируют YCP-подобный API поверх libyui.
Библиотека немного низкоуровневая (на один уровень ниже цикла событий), мой коллега Клаус Кампф некоторое время назад писал об ее использовании в его блог, включая привязку к языкам сценариев с помощью swig.
Единственная часть, которая специфична для SUSE, - это упаковка, поэтому вам придется упаковать ее самостоятельно. Stackoverflow не позволял мне делать ссылку более одного раза. Код библиотеки связан с блогом Клауса. Замените libyui на «qt» и «ncurses» на код плагина.
Также погуглите "Независимость YaST от YCP", чтобы найти запись в блоге Андреаса Ягера на эту тему.
Обратите внимание, что в настоящее время идет проект Google SoC, чтобы сделать libyui еще более независимой: nbprashanth.wordpress.com/category/gsoc
Я знаю, что он работает в графическом окружении. Не могли бы вы дать ссылку на информацию о его запуске на ncurses?