Существует ли какая-либо библиотека пользовательского интерфейса, которая может создавать как текстовый пользовательский интерфейс (ncurses), так и графический пользовательский интерфейс (GTK? QT?) из одного и того же источника? Я знаю, что debconf можно использовать с различными интерфейсами, я хотел бы создать что-то подобное, но программируемое.
Linux-библиотека GUI/TUI
Ответы (8)
Библиотека, обеспечивающая независимость 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», чтобы найти запись в блоге от Андреаса Ягера на эту тему.
вы можете написать свою программу для использования ncurses, а затем использовать PDCurses, чтобы преобразовать ее в приложение X11 - как реклама в ридми.
Я знаю это, потому что использовал его в качестве портативных проклятий, хотя я никогда не проверял его возможности X11.
Не совсем библиотека, но вы могли бы подумать о написании веб-приложения, которое хорошо деградирует до Lynx.
Ребята из GoboLinux создали свой собственный инструментарий для Python под названием AbsTK, они используют его для своего установщика, который на самом деле работает очень хорошо. Я никогда не использовал этот инструментарий сам, но приложения, созданные с его помощью, кажутся надежными.
Есть Cursed GTK, но он кажется немного устаревшим. Я нашел несколько ссылок на порт Qt для ncurses под названием Qt Console, но, похоже, они исчезли.
Используя библиотеку, предназначенную как для текстового режима, так и для среды с графическим интерфейсом, вы рискуете застрять в худшем из обоих миров.
Вам будет лучше структурировать свой код, используя шаблон MVC, и предоставить отдельные представления и контроллеры для каждой целевой платформы. Перенос всей логики в классы модели имеет несколько других преимуществ:
- Код будет легче тестировать, потому что вы вынуждены держать пользовательский интерфейс вне фактической логики предметной области.
- Ваша программа может иметь пользовательские интерфейсы, которые имеют очень мало общего, например. веб-интерфейс или пользовательский интерфейс, управляемый речью.
- Вы можете легко запустить программу вообще без пользовательского интерфейса (т. е. создать сценарий), обратившись к классам модели напрямую так же, как это делают классы контроллера.
Я думаю, что для настройки ядра Linux при компиляции используется файл dialog/cdialog/xdialog. Но прошло некоторое время с тех пор, как я собирал ядро, поэтому моя память может быть отключена. Самая многообещающая ссылка, которую я могу найти, это ссылка на Xdialog.
Возможно, tcl/tk предоставит то, что вам нужно http://www.tcl.tk/
Вот страница взаимодействия с проклятиями. Там есть претензия на интеграцию с ncurses.