将url链接插入Gtk :: TextBuffer

时间:2012-06-10 20:13:33

标签: ruby hyperlink web gtk ruby-gnome2

我基于http://smartdict.net处理GUI项目(ruby-gnome2)。 我想在Gtk::TextBuffer元素中插入一个Web链接。我怎么能这样做?

这是一个红宝石项目,但C或Python上的解决方案也很有用。 感谢。

2 个答案:

答案 0 :(得分:1)

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

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

  2. 使用gtk_text_buffer_insert_child_anchor指定缓冲区中插入链接的位置,然后gtk_text_view_add_child_at_anchorGtkLinkButton插入文本视图。

答案 1 :(得分:1)

我就这样做了:

正如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