class YardView::ApplicationWindow

Attributes

port[RW]

Public Class Methods

init() click to toggle source
# File lib/yardview/application_window.rb, line 9
def self.init
  set_template resource: '/com/github/kojix2/yardview/yardview.ui'
  bind_template_child 'box'
  set_connect_func do |handler_name|
    lambda do
      YardView.application.active_window.__send__(handler_name)
    end
  end
end
new(application, port: port_num) click to toggle source
Calls superclass method
# File lib/yardview/application_window.rb, line 21
def initialize(application, port: port_num)
  super application: application
  set_title 'YardView'
  set_icon GdkPixbuf::Pixbuf.new resource: '/com/github/kojix2/yardview/ruby.png'

  @port = port
  start_yard_server
  create_gui
end

Public Instance Methods

create_gui() click to toggle source
# File lib/yardview/application_window.rb, line 31
def create_gui
  signal_connect('destroy') do
    Process.kill(:INT, @yard)
    @yard = nil
  end
  at_exit { Process.kill(:INT, @yard) unless @yard.nil? }
  @view = WebKit2Gtk::WebView.new
  @view.load_uri("http://localhost:#{port}")
  box.add @view, expand: true, fill: true
  @view.show
end
on_back_clicked() click to toggle source
# File lib/yardview/application_window.rb, line 51
def on_back_clicked
  @view.go_back
end
on_home_clicked() click to toggle source
# File lib/yardview/application_window.rb, line 47
def on_home_clicked
  @view.load_uri("http://localhost:#{port}")
end
on_refresh_clicked() click to toggle source
# File lib/yardview/application_window.rb, line 59
def on_refresh_clicked
  @view.reload
end
on_top_clicked() click to toggle source
# File lib/yardview/application_window.rb, line 55
def on_top_clicked
  @view.run_javascript('window.scrollTo(0,0);')
end
port_open?(port) click to toggle source
# File lib/yardview/application_window.rb, line 43
def port_open?(port)
  !system("lsof -i:#{port}", out: '/dev/null')
end
start_yard_server() click to toggle source
# File lib/yardview/application_window.rb, line 63
def start_yard_server
  if port_open? port
    @yard = spawn("yard server -g -p #{port} -s thin --reload")
    sleep 1
  else
    raise "port #{port} is in use!"
  end
end