everyday-menu 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +14 -3
- data/examples/basic_main_menu/app_delegate.rb +5 -0
- data/examples/basic_main_menu/main_menu.rb +3 -0
- data/lib/everyday-menu/menu_item.rb +3 -3
- data/lib/everyday-menu/utils.rb +8 -6
- 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: a54828a0a7db304a577074de86e42c80ce795a12
|
4
|
+
data.tar.gz: f82ed542d84b73465072a5e8c9c6b55d43924498
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e45812b9c587be046d51056505a761dd8a2439f082fca92cdee33700c8990e3d09c41a59e7b22706fc6695df774c63425e2e7bea399e62927b21d2754135561d
|
7
|
+
data.tar.gz: 411691c2aa1fc7a8aacd7636da4ffb6023f04bb45d244dde1b0801201acbd3506252c878451ffbffdd91bb4c75652501e5bc9233402ca4843e5cd8069a80d634
|
data/README.md
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
# EverydayMenu
|
2
2
|
|
3
3
|
## Updates
|
4
|
-
*
|
5
|
-
* Please see the "Introducing
|
4
|
+
* 0.4.0:
|
5
|
+
* Please see the "Introducing Presets!" section below for an awesome new feature!
|
6
|
+
* 1.0.0:
|
7
|
+
* Please see the "Introducing Statusbar Menus!" section below for another awesome new feature!
|
6
8
|
|
7
9
|
## Issue Tracking
|
8
10
|
Please use <https://everydayprogramminggenius.atlassian.net/browse/EM> for issue tracking.
|
@@ -44,6 +46,7 @@ class MainMenu
|
|
44
46
|
menuItem :open, 'Open', key_equivalent: 'o'
|
45
47
|
menuItem :new, 'New'
|
46
48
|
menuItem :close, 'Close', key_equivalent: 'w'
|
49
|
+
menuItem :start_stop, 'Start'
|
47
50
|
end
|
48
51
|
|
49
52
|
```
|
@@ -67,6 +70,8 @@ class MainMenu
|
|
67
70
|
open
|
68
71
|
___
|
69
72
|
close
|
73
|
+
___
|
74
|
+
start_stop
|
70
75
|
}
|
71
76
|
end
|
72
77
|
```
|
@@ -79,8 +84,12 @@ class AppDelegate
|
|
79
84
|
MainMenu.build!
|
80
85
|
|
81
86
|
MainMenu[:app].subscribe(:hide_others) { |_, _| NSApp.hideOtherApplications(self) }
|
82
|
-
MainMenu[:app].subscribe(:quit) { |_, _| NSApp.terminate(self) }
|
87
|
+
MainMenu[:app].subscribe(:quit) { |_, _| NSApp.terminate(self) }
|
83
88
|
|
89
|
+
MainMenu[:file].subscribe(:start_stop) { |command, _|
|
90
|
+
@started = !@started
|
91
|
+
command.parent[:title] = @started ? 'Stop' : 'Start'
|
92
|
+
}
|
84
93
|
MainMenu[:file].subscribe(:new) { |_, _|
|
85
94
|
@has_open = true
|
86
95
|
puts 'new'
|
@@ -101,6 +110,8 @@ end
|
|
101
110
|
|
102
111
|
You can even put multiple actions on a single item by calling subscribe multiple times.
|
103
112
|
|
113
|
+
The block passed to `subscribe` takes two parameters, the command instance and the sender. The command instance has knowledge of the label (`command.label`) and (as of version 1.1.0) the parent `EverydayMenu::MenuItem` instance (`command.parent`). In the above example, the parent instance is used to toggle the menu item text between 'Start' and 'Stop'.
|
114
|
+
|
104
115
|
## Introducing Presets!
|
105
116
|
With version 0.4.0, I have added the capability to use some presets. Here is the above example with presets:
|
106
117
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
class AppDelegate
|
2
2
|
def applicationDidFinishLaunching(notification)
|
3
3
|
@has_open = false
|
4
|
+
@started = false
|
4
5
|
MainMenu.build!
|
5
6
|
|
6
7
|
MainMenu[:file].subscribe(:new) { |_, _|
|
@@ -15,6 +16,10 @@ class AppDelegate
|
|
15
16
|
@has_open = true
|
16
17
|
puts 'open'
|
17
18
|
}
|
19
|
+
MainMenu[:file].subscribe(:start_stop) { |command, _|
|
20
|
+
@started = !@started
|
21
|
+
command.parent[:title] = @started ? 'Stop' : 'Start'
|
22
|
+
}
|
18
23
|
MainMenu[:statusbar].subscribe(:status_new) { |_, _|
|
19
24
|
@has_open = true
|
20
25
|
puts 'status-new'
|
@@ -10,6 +10,7 @@ class MainMenu
|
|
10
10
|
menuItem :open, 'Open', key_equivalent: 'o'
|
11
11
|
menuItem :new, 'New'
|
12
12
|
menuItem :close, 'Close', key_equivalent: 'w'
|
13
|
+
menuItem :start_stop, 'Start'
|
13
14
|
|
14
15
|
menuItem :status_open, 'Open', key_equivalent: 'o'
|
15
16
|
menuItem :status_new, 'New'
|
@@ -31,6 +32,8 @@ class MainMenu
|
|
31
32
|
open
|
32
33
|
___
|
33
34
|
close
|
35
|
+
___
|
36
|
+
start_stop
|
34
37
|
}
|
35
38
|
|
36
39
|
statusbarMenu(:statusbar, 'Statusbar Menu') {
|
@@ -121,7 +121,7 @@ module EverydayMenu
|
|
121
121
|
end
|
122
122
|
|
123
123
|
def subscribe(&block)
|
124
|
-
@menuItem.subscribe(self.label, &block)
|
124
|
+
@menuItem.subscribe(self, self.label, &block)
|
125
125
|
end
|
126
126
|
|
127
127
|
def execute
|
@@ -133,8 +133,8 @@ end
|
|
133
133
|
class NSMenuItem
|
134
134
|
attr_reader :commands
|
135
135
|
|
136
|
-
def subscribe(label, &block)
|
137
|
-
@commands ||= EverydayMenu::CommandList.new(label)
|
136
|
+
def subscribe(parent, label, &block)
|
137
|
+
@commands ||= EverydayMenu::CommandList.new(parent, label)
|
138
138
|
@commands.add &block
|
139
139
|
command = @commands.last
|
140
140
|
self.enabled = @commands.canExecute
|
data/lib/everyday-menu/utils.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
module EverydayMenu
|
2
2
|
class EverydayCommand
|
3
|
-
attr_reader :label
|
3
|
+
attr_reader :label, :parent
|
4
4
|
attr_writer :canExecute
|
5
5
|
|
6
|
-
def initialize(label, canExecute = true, &block)
|
6
|
+
def initialize(parent, label, canExecute = true, &block)
|
7
|
+
@parent = parent
|
7
8
|
@label = label
|
8
9
|
@block = block
|
9
10
|
@canExecute = canExecute
|
@@ -26,13 +27,14 @@ module EverydayMenu
|
|
26
27
|
class CommandList
|
27
28
|
attr_accessor :label
|
28
29
|
|
29
|
-
def initialize(label)
|
30
|
-
@
|
31
|
-
@
|
30
|
+
def initialize(parent, label)
|
31
|
+
@parent = parent
|
32
|
+
@label = label
|
33
|
+
@items = []
|
32
34
|
end
|
33
35
|
|
34
36
|
def add(&block)
|
35
|
-
@items << EverydayCommand.new(@label, &block)
|
37
|
+
@items << EverydayCommand.new(@parent, @label, &block)
|
36
38
|
end
|
37
39
|
|
38
40
|
def last
|