Class: MenuMotion::MenuItem

Inherits:
NSMenuItem
  • Object
show all
Defined in:
lib/menu-motion/menu_item.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params = {}) ⇒ MenuItem

Returns a new instance of MenuItem.



25
26
27
28
29
# File 'lib/menu-motion/menu_item.rb', line 25

def initialize(params = {})
  super()
  update(params)
  self
end

Instance Attribute Details

#item_actionObject

Returns the value of attribute item_action.



5
6
7
# File 'lib/menu-motion/menu_item.rb', line 5

def item_action
  @item_action
end

#item_targetObject

Returns the value of attribute item_target.



5
6
7
# File 'lib/menu-motion/menu_item.rb', line 5

def item_target
  @item_target
end

#root_menuObject

Returns the value of attribute root_menu.



5
6
7
# File 'lib/menu-motion/menu_item.rb', line 5

def root_menu
  @root_menu
end

#tagObject

Returns the value of attribute tag.



5
6
7
# File 'lib/menu-motion/menu_item.rb', line 5

def tag
  @tag
end

#validateObject

Returns the value of attribute validate.



5
6
7
# File 'lib/menu-motion/menu_item.rb', line 5

def validate
  @validate
end

Instance Method Details

#checkedObject Also known as: checked?



11
12
13
# File 'lib/menu-motion/menu_item.rb', line 11

def checked
  self.state == NSOnState
end

#checked=(value) ⇒ Object



16
17
18
# File 'lib/menu-motion/menu_item.rb', line 16

def checked=(value)
  self.state = (value ? NSOnState : NSOffState)
end

#image=(value) ⇒ Object



20
21
22
23
# File 'lib/menu-motion/menu_item.rb', line 20

def image=(value)
  value = NSImage.imageNamed(value) unless value.is_a?(NSImage)
  self.setImage(value)
end

#perform_actionObject



31
32
33
34
35
36
37
38
39
# File 'lib/menu-motion/menu_item.rb', line 31

def perform_action
  if self.valid? && self.valid_target_and_action?
    if self.item_action.to_s.end_with?(":")
      self.item_target.performSelector(self.item_action, withObject: self)
    else
      self.item_target.performSelector(self.item_action)
    end
  end
end

#update(params) ⇒ Object



41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/menu-motion/menu_item.rb', line 41

def update(params)
  assign_attributes(params)

  self.item_action = params[:action] if params.has_key?(:action)
  self.item_target = params[:target] if params.has_key?(:target)

  # Set NSApp as the default target if no other target is given
  if self.item_action && self.item_target.nil?
    self.item_target = NSApp
  end

  # Setup submenu and keyboard shortcut
  set_submenu_from_params(params)
  set_keyboard_shortcut(params[:shortcut]) if params.has_key?(:shortcut)

  self
end

#valid?Boolean

Returns:

  • (Boolean)


59
60
61
62
63
64
65
66
67
68
69
# File 'lib/menu-motion/menu_item.rb', line 59

def valid?
  if self.submenu || self.valid_target_and_action?
    if self.validate.nil?
      true
    else
      self.validate.call(self)
    end
  else
    false
  end
end

#valid_target_and_action?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'lib/menu-motion/menu_item.rb', line 71

def valid_target_and_action?
  self.item_target && self.item_action && self.item_target.respond_to?(self.item_action.gsub(":", ""))
end