状态栏中的换行符

时间:2014-06-04 23:01:54

标签: haskell pango gtk2hs

我这里有一个使用GTK状态栏的程序,我想在其中输入多行输出。当我尝试输入多行时,我会得到字形,如下所示:

glyphs

我希望它能像emacs一样工作:

noglyphs

经过一番搜索后,我发现layoutSetSingleParagraphMode似乎完全符合我的要求。对于大多数小部件,默认设置为False,我们不会在任何地方设置它,这使我认为Statusbar默认为单段模式。

我的问题是我不知道如何从Statusbar转到PangoLayout我可以使用此功能。

我最接近的是找到widgetGetPangoContext然后让我PangoLayout获得layoutEmpty,但顾名思义,这似乎只是创建一个单独的PangoLayout操作时不会影响状态栏:推送或弹出文本的行为与此之前相同。

我缺少一个功能吗?不可否认,gtk2hs在类型的海洋中游泳以模仿OO,这对于生成的文档的可读性没有贡献。这似乎应该是一项简单的任务。

如果我们从未打算从现有的小部件中获取PangoLayout,那么我该如何实现我想要的?在状态栏创建时似乎没有选择段落模式的选项。

请参阅this了解与此相关的此项目的GitHub问题。

1 个答案:

答案 0 :(得分:1)

请试试这个:

使用statusbarGetMessageArea获取状态栏文本标签所在的Gtk.Box

然后使用containerGetChildren <status bar message area>获取文本标签。此函数返回Gtk.Widget的列表,其中只包含一个元素,即标签。

使用castToLabel将小部件投射到标签。

现在,您可以使用labelSetSingleLineMode <label> False设置多行模式。

使用labelSetTextlabelSetMarkup设置标签内容。

我已经成功尝试了(来自Hackage的gtk 0.12.5,使用GTK2,还没有尝试使用GTK3)。