我基于http://smartdict.net处理GUI项目(ruby-gnome2)。 我想在Gtk::TextBuffer元素中插入一个Web链接。我怎么能这样做?
这是一个红宝石项目,但C或Python上的解决方案也很有用。 感谢。
答案 0 :(得分:1)
虽然我自己也没有这样做,但我想你可以通过两种方式做到这一点:
使用文本标签自行设置文本样式(带下划线的蓝色)并自行处理URL的启动。
使用gtk_text_buffer_insert_child_anchor
指定缓冲区中插入链接的位置,然后gtk_text_view_add_child_at_anchor
将GtkLinkButton
插入文本视图。
答案 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: