Linux-библиотека GUI/TUI

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


person Penz    schedule 02.09.2008    source источник


Ответы (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», чтобы найти запись в блоге от Андреаса Ягера на эту тему.

person duncan    schedule 28.04.2010
comment
Обратите внимание, что существует текущий проект Google SoC, призванный сделать libyui еще более независимым: nbprashanth.wordpress.com/category/ гсоц - person duncan; 05.09.2011

вы можете написать свою программу для использования ncurses, а затем использовать PDCurses, чтобы преобразовать ее в приложение X11 - как реклама в ридми.

Я знаю это, потому что использовал его в качестве портативных проклятий, хотя я никогда не проверял его возможности X11.

person Lorenzo Boccaccia    schedule 30.09.2008

Не совсем библиотека, но вы могли бы подумать о написании веб-приложения, которое хорошо деградирует до Lynx.

person Brendan    schedule 05.10.2008
comment
Хорошее мышление из коробки - person Waslap; 13.04.2019

Ребята из GoboLinux создали свой собственный инструментарий для Python под названием AbsTK, они используют его для своего установщика, который на самом деле работает очень хорошо. Я никогда не использовал этот инструментарий сам, но приложения, созданные с его помощью, кажутся надежными.

person olle    schedule 05.10.2008

Есть Cursed GTK, но он кажется немного устаревшим. Я нашел несколько ссылок на порт Qt для ncurses под названием Qt Console, но, похоже, они исчезли.

person Community    schedule 02.09.2008

Используя библиотеку, предназначенную как для текстового режима, так и для среды с графическим интерфейсом, вы рискуете застрять в худшем из обоих миров.

Вам будет лучше структурировать свой код, используя шаблон MVC, и предоставить отдельные представления и контроллеры для каждой целевой платформы. Перенос всей логики в классы модели имеет несколько других преимуществ:

  • Код будет легче тестировать, потому что вы вынуждены держать пользовательский интерфейс вне фактической логики предметной области.
  • Ваша программа может иметь пользовательские интерфейсы, которые имеют очень мало общего, например. веб-интерфейс или пользовательский интерфейс, управляемый речью.
  • Вы можете легко запустить программу вообще без пользовательского интерфейса (т. е. создать сценарий), обратившись к классам модели напрямую так же, как это делают классы контроллера.
person noid    schedule 06.10.2008

Я думаю, что для настройки ядра Linux при компиляции используется файл dialog/cdialog/xdialog. Но прошло некоторое время с тех пор, как я собирал ядро, поэтому моя память может быть отключена. Самая многообещающая ссылка, которую я могу найти, это ссылка на Xdialog.

person Community    schedule 05.10.2008

Возможно, tcl/tk предоставит то, что вам нужно http://www.tcl.tk/

Вот страница взаимодействия с проклятиями. Там есть претензия на интеграцию с ncurses.

http://www2.tcl.tk/2372

person Joseph Bui    schedule 02.09.2008
comment
Я знаю об этом, работающем в графических средах. Не могли бы вы дать ссылку на информацию о его запуске на ncurses? - person Grzegorz Wierzowiecki; 07.02.2012