如何从Haskell中的textView获取文本

时间:2013-08-29 15:46:48

标签: haskell user-interface gtk

如何从Haskell中的textView获取文本?

我不确定我做得对。我可以在TextView类中找到的唯一“get”函数是textViewGetBuffer,它评估为IO TextBuffer,而不是字符串。

我正在尝试使用textBufferGetText :: self - >获取IO TextBuffer的字符串值。 TextIter - > TextIter - >布尔 - >字符串,但无法弄清楚要指定什么作为TextIter值。

TextIter值指定获取文本的范围的开始和结束,但是当我查找TextIter数据类型时,它没有指定我可以使用的任何值构造函数。

    name = textBufferGetText (textViewGetBuffer txtView) start end True

非常感谢任何建议/帮助。

1 个答案:

答案 0 :(得分:1)

(免责声明:我不知道如何在Haskell中使用GTK,我不能在这台机器上安装它,所以我无法测试这个)

查看文档,有几种方法可以从TextIter获取TextBufferClass值。您可能感兴趣的是textBufferGetStartItertextBufferGetEndIter,每个TextBufferClass并返回IO TextIter,因此您可以编写类似

textViewGetValue :: TextViewClass self => self -> IO String
textViewGetValue tv = do
    buf <- textViewGetBuffer tv
    start <- textBufferGetStartIter buf
    end <- textBufferGetEndIter buf
    value <- textBufferGetText buf start end True
    return value

哪个应该有效。从技术上讲,最后两行可能只是textBufferGetText buf start end True,但我认为这会使发生的事情变得更清楚。

编辑:我应该说我在Graphics.UI.Gtk.Multiline.TextViewGraphics.UI.Gtk.Multiline.TextBufferGraphics.UI.Gtk.Multiline.TextIter中找到了这些方法,因此您可能还必须导入这些方法。但我不知道你的命名空间中已有的内容。