class HypertextDemo
# Copyright © 2016 Ruby-GNOME2 Project Team # This program is licenced under the same licence as Ruby-GNOME2. #
Text View/Hypertext¶ ↑
Usually, tags modify the appearance of text in the view, e.g. making it bold or colored or underlined. But tags are not restricted to appearance. They can also affect the behavior of mouse and key presses, as this demo shows.
Public Class Methods
new(main_window)
click to toggle source
# File gtk3/sample/gtk-demo/hypertext.rb, line 13 def initialize(main_window) @hovering = false initialize_window(main_window) initialize_cursors(main_window) initialize_view @view.signal_connect "key-press-event" do |_widget, event| case event.keyval when Gdk::Keyval::KEY_Return, Gdk::Keyval::KEY_KP_Enter iter = @buffer.get_iter_at_mark(@buffer.get_mark("insert")) follow_if_link(iter) if iter end false end # Links can also be activated by clicking or tapping. @view.signal_connect "event-after" do |widget, event| if event.is_a?(Gdk::EventButton) && event.button == 1 buffer = widget.buffer # we shouldn't follow a link if the user has selected something range = buffer.selection_bounds return false if range && range[0].offset != range[1].offset x, y = widget.window_to_buffer_coords(:widget, event.x, event.y) iter = widget.get_iter_at_location(x, y) follow_if_link(iter) if iter else false end end @view.signal_connect "motion-notify-event" do |widget, event| x, y = widget.window_to_buffer_coords(:widget, event.x, event.y) set_cursor_if_appropriate(widget, x, y) widget.window.pointer false end sw = Gtk::ScrolledWindow.new sw.set_policy(:automatic, :automatic) @window.add(sw) sw.add(@view) show_page(1) sw.show_all end
Public Instance Methods
run()
click to toggle source
# File gtk3/sample/gtk-demo/hypertext.rb, line 63 def run if !@window.visible? @window.show_all else @window.destroy end @window end