Class: EverydayMenu::Menu
- Inherits:
-
Object
- Object
- EverydayMenu::Menu
show all
- Includes:
- MyAccessors
- Defined in:
- lib/everyday-menu/menu.rb
Class Method Summary
collapse
Instance Method Summary
collapse
#[], #[]=, common_names, def_getter, def_setter, define_methods, fill_options, #get_val, getter_names, #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, #set_val, setter_names, setup_obj
Constructor Details
#initialize(label, &block) ⇒ Menu
Returns a new instance of Menu.
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/everyday-menu/menu.rb', line 19
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
@statusItemLength = nil
end
|
Class Method Details
.create(label, title, options = {}, &block) ⇒ Object
15
16
17
|
# File 'lib/everyday-menu/menu.rb', line 15
def self.create(label, title, options = {}, &block)
new(label, &block).tap { || setup_obj(, label, title, options) }
end
|
.def_accessors ⇒ Object
5
6
7
8
9
10
11
|
# 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 ⇒ Object
136
137
138
139
140
141
142
143
144
145
|
# File 'lib/everyday-menu/menu.rb', line 136
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 ⇒ Object
71
72
73
74
75
76
|
# File 'lib/everyday-menu/menu.rb', line 71
def self.def_build_blocks
registerBuildBlock(:services_menu) { || NSApp. = . }
registerBuildBlock(:windows_menu) { || NSApp. = . }
registerBuildBlock(:help_menu) { || NSApp. = . }
registerBuildBlock(:status_menu) { || .createStatusItem! }
end
|
.registerBuildBlock(field, &block) ⇒ Object
66
67
68
69
|
# File 'lib/everyday-menu/menu.rb', line 66
def self.registerBuildBlock(field, &block)
@@buildBlocks ||= {}
@@buildBlocks[field] = block
end
|
Instance Method Details
#<<(item) ⇒ Object
52
53
54
|
# File 'lib/everyday-menu/menu.rb', line 52
def <<(item)
@menuItems << item
end
|
#containedObject ⇒ Object
56
57
58
|
# File 'lib/everyday-menu/menu.rb', line 56
def containedObject
@menu
end
|
#createStatusItem! ⇒ Object
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
# File 'lib/everyday-menu/menu.rb', line 108
def createStatusItem!
statusBar = NSStatusBar.systemStatusBar
@statusItem = statusBar.statusItemWithLength(@statusItemLength || NSSquareStatusItemLength)
@statusItem.highlightMode = true
@statusItem. = self.
unless @statusItemViewClass.nil?
statusItemView = @statusItemViewClass.viewWithStatusItem(@statusItem)
@statusItem..delegate = @statusItemView
@statusItem.view = statusItemView
end
@statusItem.title = @statusItemTitle
@statusItem.image = @statusItemIcon
@statusItem
end
|
#items ⇒ Object
127
128
129
|
# File 'lib/everyday-menu/menu.rb', line 127
def items
@menuItems
end
|
#label ⇒ Object
80
81
82
|
# File 'lib/everyday-menu/menu.rb', line 80
def label
@label ||= nil
end
|
42
43
44
|
# File 'lib/everyday-menu/menu.rb', line 42
def
@mainMenuItem.item
end
|
35
36
37
38
|
# File 'lib/everyday-menu/menu.rb', line 35
def
@mainMenuItem ||= MenuItem.create(self[:label], self[:title], submenu: self)
self
end
|
#runOnBuild ⇒ Object
60
61
62
63
64
|
# File 'lib/everyday-menu/menu.rb', line 60
def runOnBuild
@@buildBlocks ||= {}
@@buildBlocks.each { |block| block[1].call(self) if self.is(block[0]) }
@menuItems.each { |item| item.runOnBuild }
end
|
#selectItem(label) ⇒ Object
131
132
133
134
|
# File 'lib/everyday-menu/menu.rb', line 131
def selectItem(label)
item = self.items[label]
item.execute
end
|
#setStatusItemIcon(icon) ⇒ Object
90
91
92
93
94
|
# File 'lib/everyday-menu/menu.rb', line 90
def setStatusItemIcon(icon)
@mainMenu = false unless icon.nil?
@statusItemIcon = icon
@statusMenu = true unless icon.nil?
end
|
#setStatusItemLength(length) ⇒ Object
102
103
104
105
106
|
# File 'lib/everyday-menu/menu.rb', line 102
def setStatusItemLength(length)
@mainMenu = false unless length.nil?
@statusItemLength = length
@statusMenu = true unless length.nil?
end
|
#setStatusItemTitle(title) ⇒ Object
84
85
86
87
88
|
# File 'lib/everyday-menu/menu.rb', line 84
def setStatusItemTitle(title)
@mainMenu = false unless title.nil?
@statusItemTitle = title
@statusMenu = true unless title.nil?
end
|
#setStatusItemViewClass(viewClass) ⇒ Object
96
97
98
99
100
|
# File 'lib/everyday-menu/menu.rb', line 96
def setStatusItemViewClass(viewClass)
@mainMenu = false unless viewClass.nil?
@statusItemViewClass = viewClass
@statusMenu = true unless viewClass.nil?
end
|
#subscribe(label, command_id = nil, &block) ⇒ Object
48
49
50
|
# File 'lib/everyday-menu/menu.rb', line 48
def subscribe(label, command_id = nil, &block)
self.items[label].subscribe(command_id, &block)
end
|