class MenuMotion::Menu

Attributes

menu_items[RW]
root_menu[RW]

Public Class Methods

new(params = {}, root_menu = nil) click to toggle source
Calls superclass method
# File lib/menu-motion/menu.rb, line 52
def initialize(params = {}, root_menu = nil)
  if params[:title]
    initWithTitle(params[:title])
  else
    super()
  end

  self.root_menu = root_menu
  self.build_menu_from_params(self, params)

  self
end

Public Instance Methods

add_rows_to_menu(menu, rows) click to toggle source
# File lib/menu-motion/menu.rb, line 7
def add_rows_to_menu(menu, rows)
  rows.each do |row|
    row[:root_menu] = WeakRef.new(self.root_menu || self)
    menu_item = MenuMotion::MenuItem.new(row)
    menu_item.target = self
    menu_item.action = "perform_action:"

    if tag = row[:tag]
      tag = tag.to_sym
      menu_item.tag = tag

      if self.root_menu
        self.root_menu.menu_items ||= {}
        self.root_menu.menu_items[tag] = WeakRef.new(menu_item)
      else
        self.menu_items ||= {}
        self.menu_items[tag] = WeakRef.new(menu_item)
      end
    end

    menu.addItem(menu_item)
  end
end
add_sections_to_menu(menu, sections) click to toggle source
# File lib/menu-motion/menu.rb, line 31
def add_sections_to_menu(menu, sections)
  sections.each_with_index do |section, index|
    if section[:rows]
      if index > 0
        # Add the separator before the new section,
        # skipping the first section
        menu.addItem(NSMenuItem.separatorItem)
      end
      add_rows_to_menu(menu, section[:rows])
    end
  end
end
build_menu_from_params(menu, params) click to toggle source
# File lib/menu-motion/menu.rb, line 44
def build_menu_from_params(menu, params)
  if params[:sections]
    add_sections_to_menu(menu, params[:sections])
  elsif params[:rows]
    add_rows_to_menu(menu, params[:rows])
  end
end
item_with_tag(tag) click to toggle source
# File lib/menu-motion/menu.rb, line 65
def item_with_tag(tag)
  @menu_items ||= {}
  @menu_items[tag.to_sym]
end
perform_action(menu_item) click to toggle source
# File lib/menu-motion/menu.rb, line 70
def perform_action(menu_item)
  menu_item.perform_action
end
update_item_with_tag(tag, params) click to toggle source
# File lib/menu-motion/menu.rb, line 74
def update_item_with_tag(tag, params)
  menu_item = self.item_with_tag(tag)
  menu_item.update(params)
end
validateMenuItem(menu_item) click to toggle source
# File lib/menu-motion/menu.rb, line 79
def validateMenuItem(menu_item)
  menu_item.valid?
end