GTK可以使用类似库的readline吗?

时间:2014-06-24 11:07:29

标签: c gtk readline editline

图形化GTK程序是否有可能还有一个"命令行界面"类似GNU readlineeditlinelinenoise提供的那些?

如何处理阻止gtk_main()调用,以及阻止这些库中的循环步骤?

1 个答案:

答案 0 :(得分:1)

绝对可以将GNU readline等库与图形程序集成。最简单的选择是生成一个专用于readline的线程,并使用g_idle_add(这是线程安全的)与GUI线程进行通信。

如果您不想使用线程,可以使用GIO机制(g_io_channel_unix_new()g_io_add_watch())来指示GTK主循环通知您待处理的输入,并使用{调用readline {3}}设计用作事件循环回调。 Python的readline支持和PyGTK利用这些功能在一个线程中启用以下功能:

>>> import gtk
>>> w = gtk.Window()
>>> w.add(gtk.Label("foo"))
>>> w.show_all()       # at this point, a window with label is shown

然而,另一个问题是,您是否希望您的程序在21世纪基于终端仿真运行命令行界面。在GTK中,你有一个远远超过readline()的多行编辑工具,它被称为GtkTextView。使用它来构建类似命令行的工具非常简单(而且,我可以添加,很有趣),复制粘贴,多行编辑,Unicode,颜色,比例字体,嵌入式图像或工作都没有问题在Windows上 - 并且它不依赖于奥术终端代码来启动。

相关问题