7

是否有任何 UI 库可以从同一来源构建文本用户界面(ncurses)和图形用户界面(GTK?QT?)?我知道 debconf 可以与各种前端一起使用,我想构建一些类似但可编程的东西。

4

8 回答 8

4

支持 YaST 独立性以使用一个代码库执行 ncurses、gtk 和 qt 的库提供了您正在寻找的内容,并且它不依赖于 YaST 本身。

实际上 libyui 只需要标准 C++ 库和 phtreads (IIRC)。UI 插件当然需要各自的库(Qt、ncurses)。YaST 通过一组 YCP 绑定使用 libyui,这些绑定在 libyui 之上导出类似 YCP 的 API。

该库有点低级(事件循环下方的一层),我的同事 Klaus Kämpf 不久前在他的博客中写过使用它,包括使用 swig 绑定到脚本语言。

唯一特定于 SUSE 的部分是打包,因此您需要自己打包。Stackoverflow 不允许我多次链接。该库的代码链接自 Klaus 博客。将 libyui 替换为“qt”,将插件代码替换为“ncurses”。

还可以在 Google 上搜索“YaST 独立于 YCP”,以找到 Andreas Jäger 关于该主题的博客条目。

于 2010-04-28T14:31:29.907 回答
2

您可以编写程序以使用 ncurses,然后使用PDCurses将其转换为 X11 应用程序 - 正如自述文件所宣传的那样。

我知道它是因为我将它用作便携式诅咒,尽管我从未测试过它的 X11 功能

于 2008-09-30T23:15:17.423 回答
2

不完全是一个库,但您可以考虑编写一个可以很好地降级到 Lynx 的 Web 应用程序

于 2008-10-05T17:31:32.977 回答
2

GoboLinux开发人员创建了他们自己的名为 AbsTK 的 Python 工具包,他们将其用于安装程序,实际上效果非常好。我自己从未使用过该工具包,但用它构建的应用程序似乎很可靠。

于 2008-10-05T17:37:43.277 回答
1

通过使用同时针对文本模式和 GUI 环境的库,您将面临陷入两全其美的巨大风险。

您最好使用MVC 模式来构建您的代码,并为您所针对的每个平台提供单独的视图和控制器。将所有逻辑下推到模型类还有其他几个好处:

  • 代码将更容易测试,因为您被迫将用户界面排除在实际的域逻辑之外。
  • 您的程序可以具有很少有共同点的用户界面,例如 Web UI 或由语音驱动的 UI。
  • 通过以与控制器类相同的方式直接访问模型类,您可以在完全没有 UI 的情况下轻松运行程序(即编写脚本)。
于 2008-10-06T11:07:44.890 回答
1

Cursed GTK,但似乎有点过时了。我发现了一些对 Qt 端口的引用到 ncurses 称为 Qt 控制台,但它似乎已经消失了。

于 2008-09-02T20:31:22.833 回答
0

也许 tcl/tk 会提供你想要的http://www.tcl.tk/

这是与诅咒接口的页面。有人声称与 ncurses 集成。

http://www2.tcl.tk/2372

于 2008-09-02T19:43:22.323 回答
0

我认为编译时用于配置linux内核的是dialog/cdialog/xdialog。但是我已经有一段时间没有编译内核了,所以我的记忆可能已经关闭。我能找到的最有希望的链接是Xdialog的这个链接。

于 2008-10-05T17:50:11.817 回答