class MenuMotion::MenuItem
Attributes
item_action[RW]
item_target[RW]
tag[RW]
validate[RW]
Public Class Methods
new(params = {})
click to toggle source
Calls superclass method
# File lib/menu-motion/menu_item.rb, line 25 def initialize(params = {}) super() update(params) self end
Public Instance Methods
checked()
click to toggle source
# File lib/menu-motion/menu_item.rb, line 11 def checked self.state == NSOnState end
Also aliased as: checked?
checked=(value)
click to toggle source
# File lib/menu-motion/menu_item.rb, line 16 def checked=(value) self.state = (value ? NSOnState : NSOffState) end
image=(value)
click to toggle source
# 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_action()
click to toggle source
# 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)
click to toggle source
# 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?()
click to toggle source
# 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?()
click to toggle source
# 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
Private Instance Methods
assign_attributes(params)
click to toggle source
# File lib/menu-motion/menu_item.rb, line 123 def assign_attributes(params) [:image, :view, :checked, :object, :root_menu, :title, :validate].each do |key| self.send("#{key}=", params[key]) if params.has_key?(key) end end
set_keyboard_shortcut(shortcut)
click to toggle source
# File lib/menu-motion/menu_item.rb, line 77 def set_keyboard_shortcut(shortcut) if shortcut keys = shortcut.gsub("-", "+").split("+") key = keys.pop modifier_mask = 0 modifier_keys = keys modifier_keys.each do |modifier_key| case modifier_key when "alt", "alternate", "opt", "option" modifier_mask |= NSAlternateKeyMask when "cmd", "command" modifier_mask |= NSCommandKeyMask when "ctl", "ctrl", "control" modifier_mask |= NSControlKeyMask when "shift" modifier_mask |= NSShiftKeyMask end end self.setKeyEquivalent(key) self.setKeyEquivalentModifierMask(modifier_mask) else self.setKeyEquivalent(nil) self.setKeyEquivalentModifierMask(nil) end end