everyday-menu 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/README.md +8 -0
- data/examples/basic_main_menu/app_delegate.rb +1 -0
- data/examples/basic_main_menu/main_menu.rb +3 -0
- data/lib/everyday-menu/menu.rb +8 -8
- data/lib/everyday-menu/menu_item.rb +19 -8
- data/lib/everyday-menu/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7d7c7d4de6de96f60a5b03671122223e76d49793
|
4
|
+
data.tar.gz: 4348ae4701f08f4671479d6c904451cc63088221
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e365b939bba2f9c0879f5df17a645e19920937f2495d5d192b559c7d38d00878c0ad6c15565f3ad814b378bd74634bf6cf44ce98c8e09372798fce14ebbdb25
|
7
|
+
data.tar.gz: 768d6958aaa85c2d315a498e635a0a53461e8340466202183471b5019b4c8b57276e83d9ad0b729b02e6b344ef3874317ed52827745c31dfe5903841033cd51c
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -31,6 +31,7 @@ Everyday Menu separates menu layout from menu definition. Menu definition looks
|
|
31
31
|
class MainMenu
|
32
32
|
extend EverydayMenu::MenuBuilder
|
33
33
|
|
34
|
+
menuItem :hide_others, 'Hide Others', key_equivalent: 'H', key_equivalent_modifier_mask: NSCommandKeyMask|NSAlternateKeyMask
|
34
35
|
menuItem :quit, 'Quit', key_equivalent: 'q'
|
35
36
|
|
36
37
|
menuItem :open, 'Open', key_equivalent: 'o'
|
@@ -47,6 +48,8 @@ class MainMenu
|
|
47
48
|
extend EverydayMenu::MenuBuilder
|
48
49
|
|
49
50
|
mainMenu(:app, 'Blah') {
|
51
|
+
hide_others
|
52
|
+
___
|
50
53
|
quit
|
51
54
|
}
|
52
55
|
|
@@ -66,6 +69,7 @@ class AppDelegate
|
|
66
69
|
@has_open = false
|
67
70
|
MainMenu.build!
|
68
71
|
|
72
|
+
MainMenu[:app].subscribe(:hide_others) { |_, _| NSApp.hideOtherApplications(self) }
|
69
73
|
MainMenu[:app].subscribe(:quit) { |_, _| NSApp.terminate(self) }
|
70
74
|
|
71
75
|
MainMenu[:file].subscribe(:new) { |_, _|
|
@@ -85,7 +89,11 @@ class AppDelegate
|
|
85
89
|
end
|
86
90
|
end
|
87
91
|
```
|
92
|
+
## Known Issues
|
93
|
+
|
94
|
+
Here are known issues. If you encounter one, please log a bug ticket in the issue tracker (link above)
|
88
95
|
|
96
|
+
1. Some methods in `NSMenuItem` that set values don't like being called with `send`. I have to handle these on a case-by-case basis. Please log a bug in my issue tracker (link above) with any you find. It is possible that `NSMenu` might have the same issue.
|
89
97
|
|
90
98
|
## Running the Examples
|
91
99
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
class MainMenu
|
2
2
|
extend EverydayMenu::MenuBuilder
|
3
3
|
|
4
|
+
menuItem :hide_others, 'Hide Others', key_equivalent: 'H', key_equivalent_modifier_mask: NSCommandKeyMask|NSAlternateKeyMask
|
4
5
|
menuItem :quit, 'Quit', key_equivalent: 'q'
|
5
6
|
|
6
7
|
menuItem :open, 'Open', key_equivalent: 'o'
|
@@ -8,6 +9,8 @@ class MainMenu
|
|
8
9
|
menuItem :close, 'Close', key_equivalent: 'w'
|
9
10
|
|
10
11
|
mainMenu(:app, 'Blah') {
|
12
|
+
hide_others
|
13
|
+
___
|
11
14
|
quit
|
12
15
|
}
|
13
16
|
|
data/lib/everyday-menu/menu.rb
CHANGED
@@ -41,36 +41,36 @@ module EverydayMenu
|
|
41
41
|
|
42
42
|
def has(key)
|
43
43
|
name = key_to_name(key, 'has')
|
44
|
-
|
44
|
+
if self.respond_to?(name)
|
45
45
|
self.send(name)
|
46
|
-
|
46
|
+
else
|
47
47
|
@menu.send(name)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
51
|
def is(key)
|
52
52
|
name = key_to_name(key, 'is')
|
53
|
-
|
53
|
+
if self.respond_to?(name)
|
54
54
|
self.send(name)
|
55
|
-
|
55
|
+
else
|
56
56
|
@menu.send(name)
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
60
|
def [](key)
|
61
61
|
name = key_to_name(key)
|
62
|
-
|
62
|
+
if self.respond_to?(name)
|
63
63
|
self.send(name)
|
64
|
-
|
64
|
+
else
|
65
65
|
@menu.send(name)
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
69
|
def []=(key, value)
|
70
70
|
name = key_to_name(key, 'set')
|
71
|
-
|
71
|
+
if self.respond_to?(name)
|
72
72
|
self.send(name, value)
|
73
|
-
|
73
|
+
else
|
74
74
|
@menu.send(name, value)
|
75
75
|
end
|
76
76
|
end
|
@@ -27,36 +27,36 @@ module EverydayMenu
|
|
27
27
|
|
28
28
|
def has(key)
|
29
29
|
name = key_to_name(key, 'has')
|
30
|
-
|
30
|
+
if self.respond_to?(name)
|
31
31
|
self.send(name)
|
32
|
-
|
32
|
+
else
|
33
33
|
@menuItem.send(name)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
37
|
def is(key)
|
38
38
|
name = key_to_name(key, 'is')
|
39
|
-
|
39
|
+
if self.respond_to?(name)
|
40
40
|
self.send(name)
|
41
|
-
|
41
|
+
else
|
42
42
|
@menuItem.send(name)
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
46
|
def [](key)
|
47
47
|
name = key_to_name(key)
|
48
|
-
|
48
|
+
if self.respond_to?(name)
|
49
49
|
self.send(name)
|
50
|
-
|
50
|
+
else
|
51
51
|
@menuItem.send(name)
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
55
|
def []=(key, value)
|
56
56
|
name = key_to_name(key, 'set')
|
57
|
-
|
57
|
+
if self.respond_to?(name)
|
58
58
|
self.send(name, value)
|
59
|
-
|
59
|
+
else
|
60
60
|
@menuItem.send(name, value)
|
61
61
|
end
|
62
62
|
end
|
@@ -97,6 +97,17 @@ module EverydayMenu
|
|
97
97
|
|
98
98
|
alias :tag= :setTag
|
99
99
|
|
100
|
+
def keyEquivalentModifierMask
|
101
|
+
@menuItem.keyEquivalentModifierMask
|
102
|
+
end
|
103
|
+
|
104
|
+
def setKeyEquivalentModifierMask(value)
|
105
|
+
@menuItem.keyEquivalentModifierMask = value
|
106
|
+
end
|
107
|
+
|
108
|
+
alias :keyEquivalentModifierMask= :setKeyEquivalentModifierMask
|
109
|
+
alias :key_equivalent_modifier_mask= :setKeyEquivalentModifierMask
|
110
|
+
|
100
111
|
def subscribe(&block)
|
101
112
|
@menuItem.subscribe(self.label, &block)
|
102
113
|
end
|