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