class EverydayMenu::Menu

Public Class Methods

create(label, title, options = {}, &block) click to toggle source
# File lib/everyday-menu/menu.rb, line 15
def self.create(label, title, options = {}, &block)
  new(label, &block).tap { |menu| setup_obj(menu, label, title, options) }
end
def_accessors() click to toggle source
# File lib/everyday-menu/menu.rb, line 5
def self.def_accessors
  my_attr_writer :label
  my_attr_accessor_bool :servicesMenu, :windowsMenu, :helpMenu, :mainMenu
  my_attr_reader_bool :statusMenu
  my_attr_reader :statusItemTitle, :statusItemIcon, :statusItemViewClass, :statusItemLength, :statusItem
  attr_reader :menu, :builder
end
def_aliases() click to toggle source
# File lib/everyday-menu/menu.rb, line 145
def self.def_aliases
  alias :statusItemTitle= :setStatusItemTitle
  alias :status_item_title= :setStatusItemTitle

  alias :statusItemIcon= :setStatusItemIcon
  alias :status_item_icon= :setStatusItemIcon

  alias :statusItemViewClass= :setStatusItemViewClass
  alias :status_item_view_class= :setStatusItemViewClass
end
def_build_blocks() click to toggle source
# File lib/everyday-menu/menu.rb, line 80
def self.def_build_blocks
  registerBuildBlock(:services_menu) { |menu| NSApp.servicesMenu = menu.menu }
  registerBuildBlock(:windows_menu) { |menu| NSApp.windowsMenu = menu.menu }
  registerBuildBlock(:help_menu) { |menu| NSApp.helpMenu = menu.menu }
  registerBuildBlock(:status_menu) { |menu| menu.createStatusItem! }
end
new(label, &block) click to toggle source
# File lib/everyday-menu/menu.rb, line 19
def initialize(label, &block)
  @label               = label
  @builder             = block
  @menu                = NSMenu.alloc.init
  @menu.delegate       = self
  @menuItems           = MenuItemList.new(@menu)
  @mainMenu            = false
  @statusMenu          = false
  @servicesMenu        = false
  @windowsMenu         = false
  @helpMenu            = false
  @statusItemTitle     = nil
  @statusItemIcon      = nil
  @statusItemViewClass = nil
  @statusItemLength    = nil
end
registerBuildBlock(field, &block) click to toggle source
# File lib/everyday-menu/menu.rb, line 75
def self.registerBuildBlock(field, &block)
  @@buildBlocks        ||= {}
  @@buildBlocks[field] = block
end

Public Instance Methods

<<(item) click to toggle source
# File lib/everyday-menu/menu.rb, line 61
def <<(item)
  @menuItems << item
end
containedObject() click to toggle source
# File lib/everyday-menu/menu.rb, line 65
def containedObject
  @menu
end
createStatusItem!() click to toggle source
# File lib/everyday-menu/menu.rb, line 117
def createStatusItem!
  statusBar                 = NSStatusBar.systemStatusBar
  @statusItem               = statusBar.statusItemWithLength(@statusItemLength || NSSquareStatusItemLength)
  @statusItem.highlightMode = true

  @statusItem.menu = self.menu

  unless @statusItemViewClass.nil?
    statusItemView            = @statusItemViewClass.viewWithStatusItem(@statusItem)
    @statusItem.menu.delegate = @statusItemView
    @statusItem.view          = statusItemView
  end

  @statusItem.title = @statusItemTitle
  @statusItem.image = @statusItemIcon

  @statusItem
end
items() click to toggle source
# File lib/everyday-menu/menu.rb, line 136
def items
  @menuItems
end
label() click to toggle source
# File lib/everyday-menu/menu.rb, line 89
def label
  @label ||= nil
end
menuItem() click to toggle source
Also aliased as: menu_item
menuItemFromMenu!() click to toggle source
Also aliased as: menu_item_for_menu!
menuNeedsUpdate(menu) click to toggle source
menu_item()
Alias for: menuItem
menu_item_for_menu!()
Alias for: menuItemFromMenu!
runOnBuild() click to toggle source
# File lib/everyday-menu/menu.rb, line 69
def runOnBuild
  @@buildBlocks ||= {}
  @@buildBlocks.each { |block| block[1].call(self) if self.is(block[0]) }
  @menuItems.each { |item| item.runOnBuild }
end
selectItem(label) click to toggle source
# File lib/everyday-menu/menu.rb, line 140
def selectItem(label)
  item = self.items[label]
  item.execute
end
setStatusItemIcon(icon) click to toggle source
# File lib/everyday-menu/menu.rb, line 99
def setStatusItemIcon(icon)
  @mainMenu       = false unless icon.nil?
  @statusItemIcon = icon
  @statusMenu     = true unless icon.nil?
end
setStatusItemLength(length) click to toggle source
# File lib/everyday-menu/menu.rb, line 111
def setStatusItemLength(length)
  @mainMenu         = false unless length.nil?
  @statusItemLength = length
  @statusMenu       = true unless length.nil?
end
setStatusItemTitle(title) click to toggle source
# File lib/everyday-menu/menu.rb, line 93
def setStatusItemTitle(title)
  @mainMenu        = false unless title.nil?
  @statusItemTitle = title
  @statusMenu      = true unless title.nil?
end
setStatusItemViewClass(viewClass) click to toggle source
# File lib/everyday-menu/menu.rb, line 105
def setStatusItemViewClass(viewClass)
  @mainMenu            = false unless viewClass.nil?
  @statusItemViewClass = viewClass
  @statusMenu          = true unless viewClass.nil?
end
subscribe(label, command_id = nil, &block) click to toggle source
# File lib/everyday-menu/menu.rb, line 57
def subscribe(label, command_id = nil, &block)
  self.items[label].subscribe(command_id, &block)
end