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
34
|
# 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
|
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
145
146
147
148
149
150
151
152
153
154
|
# 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 ⇒ Object
80
81
82
83
84
85
|
# File 'lib/everyday-menu/menu.rb', line 80
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
75
76
77
78
|
# File 'lib/everyday-menu/menu.rb', line 75
def self.registerBuildBlock(field, &block)
@@buildBlocks ||= {}
@@buildBlocks[field] = block
end
|
Instance Method Details
#<<(item) ⇒ Object
61
62
63
|
# File 'lib/everyday-menu/menu.rb', line 61
def <<(item)
@menuItems << item
end
|
#containedObject ⇒ Object
65
66
67
|
# File 'lib/everyday-menu/menu.rb', line 65
def containedObject
@menu
end
|
#createStatusItem! ⇒ Object
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
# File 'lib/everyday-menu/menu.rb', line 117
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
136
137
138
|
# File 'lib/everyday-menu/menu.rb', line 136
def items
@menuItems
end
|
#label ⇒ Object
89
90
91
|
# File 'lib/everyday-menu/menu.rb', line 89
def label
@label ||= nil
end
|
51
52
53
|
# File 'lib/everyday-menu/menu.rb', line 51
def
@mainMenuItem.item
end
|
44
45
46
47
|
# File 'lib/everyday-menu/menu.rb', line 44
def
@mainMenuItem ||= MenuItem.create(self[:label], self[:title], submenu: self)
self
end
|
36
37
38
39
40
41
42
|
# File 'lib/everyday-menu/menu.rb', line 36
def ()
flags = (NSEvent.modifierFlags & NSDeviceIndependentModifierFlagsMask)
= !(flags == NSAlternateKeyMask)
@menuItems.each { ||
.item.setHidden() if .opt?
}
end
|
#runOnBuild ⇒ Object
69
70
71
72
73
|
# 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) ⇒ Object
140
141
142
143
|
# File 'lib/everyday-menu/menu.rb', line 140
def selectItem(label)
item = self.items[label]
item.execute
end
|
#setStatusItemIcon(icon) ⇒ Object
99
100
101
102
103
|
# 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) ⇒ Object
111
112
113
114
115
|
# 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) ⇒ Object
93
94
95
96
97
|
# 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) ⇒ Object
105
106
107
108
109
|
# 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) ⇒ Object
57
58
59
|
# File 'lib/everyday-menu/menu.rb', line 57
def subscribe(label, command_id = nil, &block)
self.items[label].subscribe(command_id, &block)
end
|