class TkComponent::Builder::Event
Constants
- EVENT_ALIASES
- EVENT_ATTRS
Attributes
data[RW]
key_code[RW]
key_string[RW]
mouse_wheel_delta[RW]
mouse_x[RW]
mouse_y[RW]
name[RW]
root_mouse_x[RW]
root_mouse_y[RW]
sender[RW]
Public Class Methods
bind_command(name, sender, options, lambda)
click to toggle source
# File lib/tk_component/builder/event.rb, line 27 def self.bind_command(name, sender, options, lambda) sender.native_item.command do event = self.new(name, sender) lambda.call(event) end end
bind_event(name, sender, options, lambda, pre_lambda = nil, post_lambda = nil)
click to toggle source
# File lib/tk_component/builder/event.rb, line 42 def self.bind_event(name, sender, options, lambda, pre_lambda = nil, post_lambda = nil) event_string = self.event_string_for(name, options) handler = proc do |x, y, rx, ry, bi, mw, ks, kc, data| event = self.new(name, sender) event.mouse_x = x event.mouse_y = y event.root_mouse_x = rx event.root_mouse_y = ry event.button_index = bi event.mouse_wheel_delta = mw event.key_string = ks event.key_code = kc event.data = data # The pre_lambda returns true if it wants to prevent the event from firing return if pre_lambda.present? && pre_lambda.call(event) lambda.call(event) post_lambda.call(event) if post_lambda.present? end sender.native_item.bind(event_string, handler, EVENT_ATTRS) end
bind_variable(name, sender, options, lambda)
click to toggle source
# File lib/tk_component/builder/event.rb, line 34 def self.bind_variable(name, sender, options, lambda) handler = proc do event = self.new(name, sender) lambda.call(event) end sender.tk_variable.trace('write', handler) end
emit(name, source, data)
click to toggle source
# File lib/tk_component/builder/event.rb, line 23 def self.emit(name, source, data) Tk.event_generate(source, "<#{name}>", data: data) end
new(name, sender)
click to toggle source
# File lib/tk_component/builder/event.rb, line 18 def initialize(name, sender) @name = name.to_sym @sender = sender end
Private Class Methods
event_string_for(name, options)
click to toggle source
# File lib/tk_component/builder/event.rb, line 73 def self.event_string_for(name, options) event_name = self.resolve_event_alias(name).to_s.camelize event_prefix = '' if button = options[:button] event_prefix << "B#{button}" end event_name = event_prefix + '-' + event_name if event_prefix.present? event_name end
resolve_event_alias(name)
click to toggle source
# File lib/tk_component/builder/event.rb, line 89 def self.resolve_event_alias(name) if (found = EVENT_ALIASES[name]) name = found end name end
Public Instance Methods
data_object()
click to toggle source
# File lib/tk_component/builder/event.rb, line 63 def data_object @data_object ||= begin ObjectSpace._id2ref(self.data.to_i) rescue nil end end