Sha256: 682381989608dc0c112e976b635224dc38b27a2a31bef5e27389efbdde3252ae
Contents?: true
Size: 1.86 KB
Versions: 1
Compression:
Stored size: 1.86 KB
Contents
# frozen_string_literal: true require "gir_ffi-gtk3" require "mdv/document" GirFFI.setup :WebKit2, "4.0" module MDV # Markdown viewer window class class MarkdownViewer def initialize(file) @document = Document.new(file) setup_gui reload connect_signals @win.show_all end private def connect_signals connect_key_press_event_signal connect_destroy_signal connect_web_view_signals end def connect_destroy_signal @win.signal_connect("destroy") { Gtk.main_quit } end def connect_key_press_event_signal @win.signal_connect "key-press-event" do |_wdg, evt, _ud| handle_key(evt) if evt.state[:control_mask] false end end def connect_web_view_signals web_view.signal_connect("context-menu") { true } web_view.signal_connect("decide-policy") do |_wv, decision, decision_type| handle_decide_policy(decision, decision_type) end end def handle_key(evt) case evt.keyval when "q".ord @win.destroy when "r".ord reload end end def handle_decide_policy(decision, decision_type) case decision_type when :navigation_action action = decision.navigation_action if action.is_user_gesture Gtk.show_uri_on_window(@win, action.request.uri, 0) true end when :new_window_action true end end def setup_gui @win = Gtk::Window.new :toplevel @win.set_default_geometry 700, 500 @win.add scrolled_window end def scrolled_window @scrolled_window ||= Gtk::ScrolledWindow.new(nil, nil).tap do |it| it.add web_view end end def web_view @web_view ||= WebKit2::WebView.new end def reload web_view.load_html @document.html, @document.base_uri end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mdv-0.5.1 | lib/mdv/markdown_viewer.rb |