我这里有一个使用GTK状态栏的程序,我想在其中输入多行输出。当我尝试输入多行时,我会得到字形,如下所示:
我希望它能像emacs一样工作:
经过一番搜索后,我发现layoutSetSingleParagraphMode似乎完全符合我的要求。对于大多数小部件,默认设置为False,我们不会在任何地方设置它,这使我认为Statusbar默认为单段模式。
我的问题是我不知道如何从Statusbar
转到PangoLayout
我可以使用此功能。
我最接近的是找到widgetGetPangoContext然后让我PangoLayout
获得layoutEmpty,但顾名思义,这似乎只是创建一个单独的PangoLayout
操作时不会影响状态栏:推送或弹出文本的行为与此之前相同。
我缺少一个功能吗?不可否认,gtk2hs
在类型的海洋中游泳以模仿OO,这对于生成的文档的可读性没有贡献。这似乎应该是一项简单的任务。
如果我们从未打算从现有的小部件中获取PangoLayout
,那么我该如何实现我想要的?在状态栏创建时似乎没有选择段落模式的选项。
请参阅this了解与此相关的此项目的GitHub问题。
答案 0 :(得分:1)
请试试这个:
使用statusbarGetMessageArea
获取状态栏文本标签所在的Gtk.Box
。
然后使用containerGetChildren <status bar message area>
获取文本标签。此函数返回Gtk.Widget
的列表,其中只包含一个元素,即标签。
使用castToLabel
将小部件投射到标签。
现在,您可以使用labelSetSingleLineMode <label> False
设置多行模式。
使用labelSetText
或labelSetMarkup
设置标签内容。
我已经成功尝试了(来自Hackage的gtk 0.12.5,使用GTK2,还没有尝试使用GTK3)。