Class: EverydayMenu::Menu

Inherits:
Object
  • Object
show all
Includes:
MyAccessors
Defined in:
lib/everyday-menu/menu.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from MyAccessors

#[], #[]=, #has, #is, key_to_name, my_attr_accessor, my_attr_accessor_bool, my_attr_reader, my_attr_reader_bool, my_attr_writer, name_to_key

Constructor Details

#initialize(label, &block) ⇒ Menu

Returns a new instance of Menu.



23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/everyday-menu/menu.rb', line 23

def initialize(label, &block)
  @label               = label
  @builder             = block
  @menu                = NSMenu.alloc.init
  @menuItems           = MenuItemList.new(@menu)
  @mainMenu            = false
  @statusMenu          = false
  @servicesMenu        = false
  @windowsMenu         = false
  @helpMenu            = false
  @statusItemTitle     = nil
  @statusItemIcon      = nil
  @statusItemViewClass = nil
end

Instance Attribute Details

#builderObject (readonly)

Returns the value of attribute builder.



13
14
15
# File 'lib/everyday-menu/menu.rb', line 13

def builder
  @builder
end

Returns the value of attribute menu.



13
14
15
# File 'lib/everyday-menu/menu.rb', line 13

def menu
  @menu
end

Class Method Details

.create(label, title, options = {}, &block) ⇒ Object



15
16
17
18
19
20
21
# File 'lib/everyday-menu/menu.rb', line 15

def self.create(label, title, options = {}, &block)
  new(label, &block).tap { |menu|
    menu[:label] = label
    menu[:title] = title
    options.each { |option| menu[option[0]] = option[1] }
  }
end

.registerBuildBlock(field, &block) ⇒ Object



69
70
71
72
# File 'lib/everyday-menu/menu.rb', line 69

def self.registerBuildBlock(field, &block)
  @@buildBlocks        ||= {}
  @@buildBlocks[field] = block
end

Instance Method Details

#<<(item) ⇒ Object



55
56
57
# File 'lib/everyday-menu/menu.rb', line 55

def <<(item)
  @menuItems << item
end

#containedObjectObject



59
60
61
# File 'lib/everyday-menu/menu.rb', line 59

def containedObject
  @menu
end

#createStatusItem!Object



110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
# File 'lib/everyday-menu/menu.rb', line 110

def createStatusItem!
  statusBar                 = NSStatusBar.systemStatusBar
  @statusItem               = statusBar.statusItemWithLength(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

#itemsObject



129
130
131
# File 'lib/everyday-menu/menu.rb', line 129

def items
  @menuItems
end

#labelObject



79
80
81
# File 'lib/everyday-menu/menu.rb', line 79

def label
  @label ||= nil
end


45
46
47
# File 'lib/everyday-menu/menu.rb', line 45

def menuItem
  @mainMenuItem.item
end


38
39
40
41
# File 'lib/everyday-menu/menu.rb', line 38

def menuItemFromMenu!
  @mainMenuItem ||= MenuItem.create(self[:label], self[:title], submenu: self)
  self
end

#runOnBuildObject



63
64
65
66
67
# File 'lib/everyday-menu/menu.rb', line 63

def runOnBuild
  @@buildBlocks ||= {}
  @@buildBlocks.each { |block| block[1].call(self) if self.is(block[0]) }
  @menuItems.each { |item| item.runOnBuild }
end

#setStatusItemIcon(icon) ⇒ Object Also known as: statusItemIcon=, status_item_icon=



92
93
94
95
96
# File 'lib/everyday-menu/menu.rb', line 92

def setStatusItemIcon(icon)
  @mainMenu       = false unless icon.nil?
  @statusItemIcon = icon
  @statusMenu     = true unless icon.nil?
end

#setStatusItemTitle(title) ⇒ Object Also known as: statusItemTitle=, status_item_title=



83
84
85
86
87
# File 'lib/everyday-menu/menu.rb', line 83

def setStatusItemTitle(title)
  @mainMenu        = false unless title.nil?
  @statusItemTitle = title
  @statusMenu      = true unless title.nil?
end

#setStatusItemViewClass(viewClass) ⇒ Object Also known as: statusItemViewClass=, status_item_view_class=



101
102
103
104
105
# File 'lib/everyday-menu/menu.rb', line 101

def setStatusItemViewClass(viewClass)
  @mainMenu            = false unless viewClass.nil?
  @statusItemViewClass = viewClass
  @statusMenu          = true unless viewClass.nil?
end

#subscribe(label, command_id = nil, &block) ⇒ Object



51
52
53
# File 'lib/everyday-menu/menu.rb', line 51

def subscribe(label, command_id = nil, &block)
  self.items[label].subscribe(command_id, &block)
end