Class: WebviewRuby::Webview

Inherits:
Object
  • Object
show all
Defined in:
lib/webview_ruby.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(debug: false) ⇒ Webview

Returns a new instance of Webview.



25
26
27
28
29
# File 'lib/webview_ruby.rb', line 25

def initialize(debug:false)
  @is_running = false
  @bindings = {}
  @window = WebviewRuby.webview_create(debug ? 1 : 0, nil)
end

Instance Attribute Details

#is_runningObject (readonly)

Returns the value of attribute is_running.



23
24
25
# File 'lib/webview_ruby.rb', line 23

def is_running
  @is_running
end

Instance Method Details

#bind(name, func = nil, &block) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/webview_ruby.rb', line 57

def bind(name, func=nil, &block)
  callback = FFI::Function.new(:void, [:string, :string, :pointer]) do |seq, req, arg|
    begin 
      params = JSON.parse(req)
      if func
        func(*params)
      else
        block.call(*params)
      end
    rescue StandardError => e
      print("Error occured: #{e.full_message}. \n\n Going to terminate\n")
      terminate
    end
  end
  @bindings[callback] = true # save a reference
  WebviewRuby.webview_bind(@window, name, callback, nil)
end

#destroyObject



53
54
55
# File 'lib/webview_ruby.rb', line 53

def destroy
  WebviewRuby.webview_destroy(@window)
end

#eval(js) ⇒ Object



75
76
77
# File 'lib/webview_ruby.rb', line 75

def eval(js)
  WebviewRuby.webview_eval(@window, js)
end

#init(js) ⇒ Object



79
80
81
# File 'lib/webview_ruby.rb', line 79

def init(js)
  WebviewRuby.webview_init(@window, js)
end


39
40
41
# File 'lib/webview_ruby.rb', line 39

def navigate(page)
  WebviewRuby.webview_navigate(@window, page)
end

#runObject



43
44
45
46
# File 'lib/webview_ruby.rb', line 43

def run
  @is_running = true
  WebviewRuby.webview_run(@window)
end

#set_size(width, height, hint = 0) ⇒ Object



35
36
37
# File 'lib/webview_ruby.rb', line 35

def set_size(width, height, hint=0)
  WebviewRuby.webview_set_size(@window, width, height, hint)
end

#set_title(title) ⇒ Object



31
32
33
# File 'lib/webview_ruby.rb', line 31

def set_title(title)
  WebviewRuby.webview_set_title(@window, title)
end

#terminateObject



48
49
50
51
# File 'lib/webview_ruby.rb', line 48

def terminate
  @is_running = false
  WebviewRuby.webview_terminate(@window)
end