class SublimeDSL::SublimeText::Mouse
Attributes
modifiers[R]
name[R]
to_s[R]
Public Class Methods
create_sublime_mouse()
click to toggle source
# File lib/sublime_dsl/sublime_text/mouse.rb, line 12 def self.create_sublime_mouse mouse = new('Sublime Text') (1..9).each { |i| mouse.add_button "button#{i}" } mouse.add_button "scroll_up" mouse.add_button "scroll_down" %w(shift ctrl alt super).each { |m| mouse.add_modifier m } mouse.modifiers.concat mouse.buttons mouse end
new(name)
click to toggle source
# File lib/sublime_dsl/sublime_text/mouse.rb, line 24 def initialize(name) @name = name @buttons = [] @modifiers = [] @clicks = [] end
sublime()
click to toggle source
# File lib/sublime_dsl/sublime_text/mouse.rb, line 8 def self.sublime @sublime ||= create_sublime_mouse end
Public Instance Methods
add_modifier(st_name, name = nil)
click to toggle source
# File lib/sublime_dsl/sublime_text/mouse.rb, line 53 def add_modifier(st_name, name = nil) @modifiers << Button.new(st_name, name) end
clicks_hash()
click to toggle source
# File lib/sublime_dsl/sublime_text/mouse.rb, line 57 def clicks_hash @clicks_hash ||= {} end
clone(name)
click to toggle source
# File lib/sublime_dsl/sublime_text/mouse.rb, line 33 def clone(name) clone = Mouse.new(name) buttons.each { |b| clone.add_button b.st_name, b.name } (modifiers - buttons).each { |m| clone.add_modifier m.st_name, m.name } clone.modifiers.concat clone.buttons clone end
ensure_click(spec)
click to toggle source
# File lib/sublime_dsl/sublime_text/mouse.rb, line 69 def ensure_click(spec) *modifier_names, button_name = spec.split('+') button = button(button_name) or raise Error, "invalid button #{button_name.inspect}" # check & reorder the modifiers unless modifier_names.empty? sorted = [] modifier_names.each do |name| i = modifiers_index_hash[name] i or raise Error, "invalid modifier #{name.inspect}" sorted[i] = name end modifier_names = sorted.compact end # if there is a registered click for this spec, return it std_spec = [*modifier_names, button_name].join('+') click = clicks_hash[std_spec] return click if click # can't have the button in the modifiers modifier_names.include?(button_name) and raise Error, "can't have the button in the modifiers: #{spec.inspect}" # create and register the click modifiers = modifier_names.map { |n| modifier(n) } click = Click.new(modifiers, button) clicks_hash[click.to_spec] = click click end
modifier(name)
click to toggle source
# File lib/sublime_dsl/sublime_text/mouse.rb, line 45 def modifier(name) modifiers.find { |b| b.name == name } end
modifiers_index_hash()
click to toggle source
# File lib/sublime_dsl/sublime_text/mouse.rb, line 61 def modifiers_index_hash @modifiers_index_hash ||= begin h = {} modifiers.each_with_index { |b,i| h[b.name] = i } h end end