1

我从事基于ruby​​-gnome2的 GUI 项目(http://smartdict.net ) 。我想在Gtk::TextBuffer元素中插入一个网络链接。我怎样才能做到这一点?

这是一个 ruby​​ 项目,但 C 或 Python 上的解决方案也很有用。谢谢。

4

2 回答 2

3

我是这样做的:

正如 Micah 所说,您创建了一个标签,使文本看起来像一个链接(蓝色和下划线)。然后给TextView连接一个信号,这样当用户点击它时,它会调用一个方法打开url。您需要设计一种方法,让该方法知道要打开的链接,方法是在数组中跟踪它们,或者根据光标位置解析链接。那部分取决于你。

class myTextView  < Gtk::TextView

  def initialize
    signal_connect("button_release_event") { open_url() }   
    buffer.create_tag("blue", { "foreground" => "#0000FF", "underline" => Pango::UNDERLINE_SINGLE  })
    start_iter, end_iter = get_line_iters()
    buffer.apply_tag("blue", start_iter, end_iter)
  end

  def open_url()
     # open link here
  end

end

这是一个标准的 Gtk 解决方案。我建议使用visualruby:

http://visualruby.net

于 2012-06-18T05:41:07.673 回答
2

虽然我自己没有这样做,但我想你可以通过两种方式做到这一点:

  1. 使用文本标签自己设置文本样式(带下划线的蓝色)并自己处理 URL 的启动。

  2. 使用 agtk_text_buffer_insert_child_anchor指定在缓冲区中的何处插入链接,然后gtk_text_view_add_child_at_anchor将 aGtkLinkButton插入到文本视图中。

于 2012-06-11T14:25:21.103 回答