ProMotion 2.5.0 → 2.6.0
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/README.md +10 -10
- data/lib/ProMotion/cocoatouch/tab_bar_controller.rb +36 -13
- data/lib/ProMotion/delegate/delegate_module.rb +4 -0
- data/lib/ProMotion/screen/screen_module.rb +8 -4
- data/lib/ProMotion/version.rb +1 -1
- data/spec/unit/delegate_spec.rb +18 -0
- data/spec/unit/screen_helpers_spec.rb +6 -1
- data/spec/unit/tab_bar_spec.rb +30 -0
- metadata +10 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18aba155900b900206601bcf9a0758bfce9408dd
|
4
|
+
data.tar.gz: 5bc594a3e0c965bfe2f15ebb88df5da5d7e88f94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aac102a4899e41da994269077fba1a7a71659e35a8324981fdbb34f0d440e10d6db0a1888cfdde72131113824f7b1e988462ef6635ab1b331bd1935a20247214
|
7
|
+
data.tar.gz: 49a32c00365af4338df6d3bbae82caf60a14bd0208d9a8b28b89d418e2bbc9268257c46fb1944c5dfa917e351c422b3c230ba1fe1d3f61303cf7666f6ba12f84
|
data/README.md
CHANGED
@@ -4,6 +4,8 @@
|
|
4
4
|
[](https://travis-ci.org/infinitered/ProMotion)
|
5
5
|
[](https://codeclimate.com/github/infinitered/ProMotion)
|
6
6
|
|
7
|
+
ProMotion is maintained by [Infinite Red](http://infinite.red), a web and mobile development company based in Portland, OR and San Francisco, CA.
|
8
|
+
|
7
9
|
## iPhone Apps, Ruby-style
|
8
10
|
|
9
11
|
ProMotion is a RubyMotion gem that makes iOS development more like Ruby and less like Objective-C.
|
@@ -87,6 +89,14 @@ end
|
|
87
89
|
|
88
90
|
# Changelog
|
89
91
|
|
92
|
+
## Version 2.6.0
|
93
|
+
|
94
|
+
This release includes a few new features and bugfixes and is backwards compatible with all 2.x releases.
|
95
|
+
|
96
|
+
* PR #773 Add a `on_continue_user_activity` delegate method
|
97
|
+
* PR #766 Fix nav_bar_button class method
|
98
|
+
* Other minor bugfixes and documentation updates
|
99
|
+
|
90
100
|
## Version 2.5.0
|
91
101
|
|
92
102
|
This release includes some new features and bugfixes and is backwards compatible with all 2.x releases.
|
@@ -96,16 +106,6 @@ This release includes some new features and bugfixes and is backwards compatible
|
|
96
106
|
* PR #736 Adds the index path when deleting a cell
|
97
107
|
* Several other bugfix PRs
|
98
108
|
|
99
|
-
## Version 2.4.0
|
100
|
-
|
101
|
-
This release includes several new features and is backwards compatible with all 2.x releases.
|
102
|
-
|
103
|
-
* PR #686 Adds :searchable to the whitelisted properties a cell can have so that a warning is not generated.
|
104
|
-
* PR #688 Adds support for SDWebImage and takes preference over JMImageCache. _JMImageCache will still be supported till ProMotion 3.0 but we highly recommend you switch to SDWebImage._
|
105
|
-
* PR #679 Extract methods from tablescreen for reuse in modules for [redpotion](https://github.com/infinitered/redpotion).
|
106
|
-
* PR #677 Added `add_child_screen` and `remove_child_screen` methods to `PM::Screen`.
|
107
|
-
* PR #687 Adds persisting tab order when changed by the user for tab bars over 5 screens.
|
108
|
-
|
109
109
|
# Apps built on ProMotion
|
110
110
|
|
111
111
|
[Apps built on ProMotion](http://promotion.readthedocs.org/en/master/ProMotion%20Apps/)
|
@@ -42,15 +42,17 @@ module ProMotion
|
|
42
42
|
selected_tab_vc = viewControllers[tab]
|
43
43
|
end
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
selected_tab_vc
|
50
|
-
else
|
51
|
-
mp "Unable to open tab #{tab.to_s} -- not found.", force_color: :red
|
52
|
-
nil
|
45
|
+
unless selected_tab_vc
|
46
|
+
mp "Unable to open tab #{tab} -- not found.", force_color: :red
|
47
|
+
return
|
53
48
|
end
|
49
|
+
|
50
|
+
return unless should_select_tab_try(selected_tab_vc)
|
51
|
+
|
52
|
+
self.selectedViewController = selected_tab_vc
|
53
|
+
on_tab_selected_try(selected_tab_vc)
|
54
|
+
|
55
|
+
selected_tab_vc
|
54
56
|
end
|
55
57
|
|
56
58
|
def find_tab(tab_title)
|
@@ -58,13 +60,17 @@ module ProMotion
|
|
58
60
|
end
|
59
61
|
|
60
62
|
# Cocoa touch methods below
|
63
|
+
def tabBarController(tbc, shouldSelectViewController: vc)
|
64
|
+
should_select_tab_try(vc)
|
65
|
+
end
|
66
|
+
|
61
67
|
def tabBarController(tbc, didSelectViewController: vc)
|
62
68
|
on_tab_selected_try(vc)
|
63
69
|
end
|
64
70
|
|
65
71
|
def tabBarController(tbc, didEndCustomizingViewControllers:vcs, changed:changed)
|
66
72
|
if changed
|
67
|
-
tab_order = vcs.map{ |vc| vc.tabBarItem.tag }
|
73
|
+
tab_order = vcs.map { |vc| vc.tabBarItem.tag }
|
68
74
|
NSUserDefaults.standardUserDefaults.setObject(tab_order, forKey:"tab_bar_order_#{@name}")
|
69
75
|
NSUserDefaults.standardUserDefaults.synchronize
|
70
76
|
end
|
@@ -84,10 +90,19 @@ module ProMotion
|
|
84
90
|
|
85
91
|
private
|
86
92
|
|
93
|
+
# Defaults to true if :should_select_tab tab is not implemented by the tab delegate.
|
94
|
+
def should_select_tab_try(vc)
|
95
|
+
method_name = :should_select_tab
|
96
|
+
return true unless can_send_method_to_delegate?(method_name)
|
97
|
+
|
98
|
+
pm_tab_delegate.send(method_name, vc)
|
99
|
+
end
|
100
|
+
|
87
101
|
def on_tab_selected_try(vc)
|
88
|
-
|
89
|
-
|
90
|
-
|
102
|
+
method_name = :on_tab_selected
|
103
|
+
return unless can_send_method_to_delegate?(method_name)
|
104
|
+
|
105
|
+
pm_tab_delegate.send(method_name, vc)
|
91
106
|
end
|
92
107
|
|
93
108
|
def current_view_controller
|
@@ -95,8 +110,16 @@ module ProMotion
|
|
95
110
|
end
|
96
111
|
|
97
112
|
def current_view_controller_try(method, *args)
|
98
|
-
|
113
|
+
return unless current_view_controller.respond_to?(method)
|
114
|
+
|
115
|
+
current_view_controller.send(method, *args)
|
99
116
|
end
|
100
117
|
|
118
|
+
def can_send_method_to_delegate?(method)
|
119
|
+
pm_tab_delegate &&
|
120
|
+
pm_tab_delegate.respond_to?(:weakref_alive?) &&
|
121
|
+
pm_tab_delegate.weakref_alive? &&
|
122
|
+
pm_tab_delegate.respond_to?("#{method}:")
|
123
|
+
end
|
101
124
|
end
|
102
125
|
end
|
@@ -43,6 +43,10 @@ module ProMotion
|
|
43
43
|
try :on_open_url, { url: url, source_app: source_app, annotation: annotation }
|
44
44
|
end
|
45
45
|
|
46
|
+
def application(application, continueUserActivity:user_activity, restorationHandler:restoration_handler)
|
47
|
+
try :on_continue_user_activity, { user_activity: user_activity, restoration_handler: restoration_handler }
|
48
|
+
end
|
49
|
+
|
46
50
|
def ui_window
|
47
51
|
(defined?(Motion) && defined?(Motion::Xray) && defined?(Motion::Xray::XrayWindow)) ? Motion::Xray::XrayWindow : UIWindow
|
48
52
|
end
|
@@ -198,7 +198,9 @@ module ProMotion
|
|
198
198
|
end
|
199
199
|
|
200
200
|
def add_nav_bar_buttons
|
201
|
-
|
201
|
+
self.class.get_nav_bar_button.each do |button_args|
|
202
|
+
set_nav_bar_button(button_args[:side], button_args)
|
203
|
+
end
|
202
204
|
end
|
203
205
|
|
204
206
|
def status_bar_hidden(hidden)
|
@@ -276,12 +278,14 @@ module ProMotion
|
|
276
278
|
end
|
277
279
|
|
278
280
|
def nav_bar_button(side, args={})
|
279
|
-
|
280
|
-
|
281
|
+
button_args = args.merge(:side => side)
|
282
|
+
|
283
|
+
@nav_bar_button_args ||= []
|
284
|
+
@nav_bar_button_args << button_args
|
281
285
|
end
|
282
286
|
|
283
287
|
def get_nav_bar_button
|
284
|
-
@nav_bar_button_args
|
288
|
+
@nav_bar_button_args ||= []
|
285
289
|
end
|
286
290
|
end
|
287
291
|
|
data/lib/ProMotion/version.rb
CHANGED
data/spec/unit/delegate_spec.rb
CHANGED
@@ -79,6 +79,24 @@ describe "PM::Delegate" do
|
|
79
79
|
|
80
80
|
@subject.application(UIApplication.sharedApplication, openURL: url, sourceApplication:sourceApplication, annotation: annotation)
|
81
81
|
end
|
82
|
+
|
83
|
+
describe "#on_continue_user_activity" do
|
84
|
+
before do
|
85
|
+
@subject.application(UIApplication.sharedApplication, continueUserActivity: {}, restorationHandler: [])
|
86
|
+
end
|
87
|
+
|
88
|
+
it "should call on_continue_user_activity when launching with a user activity" do
|
89
|
+
@subject.called_on_continue_user_activity.should == true
|
90
|
+
end
|
91
|
+
|
92
|
+
it "should pass the user activity" do
|
93
|
+
@subject.user_activity.should == {}
|
94
|
+
end
|
95
|
+
|
96
|
+
it "should pass the restoration_handler" do
|
97
|
+
@subject.restoration_handler.should == []
|
98
|
+
end
|
99
|
+
end
|
82
100
|
end
|
83
101
|
|
84
102
|
# iOS 7 ONLY tests
|
@@ -89,8 +89,13 @@ describe "screen helpers" do
|
|
89
89
|
|
90
90
|
end
|
91
91
|
|
92
|
-
it "allows setting
|
92
|
+
it "allows setting nav bar buttons via nav_bar_button class method" do
|
93
93
|
screen = DetailScreen.new(nav_bar: true)
|
94
|
+
|
95
|
+
screen.navigationItem.leftBarButtonItem.title.should == 'Back'
|
96
|
+
screen.navigationItem.rightBarButtonItem.title.should == 'More'
|
97
|
+
|
98
|
+
screen.navigationItem.leftBarButtonItem.class.should == UIBarButtonItem
|
94
99
|
screen.navigationItem.rightBarButtonItem.class.should == UIBarButtonItem
|
95
100
|
end
|
96
101
|
end
|
data/spec/unit/tab_bar_spec.rb
CHANGED
@@ -24,12 +24,42 @@ describe "PM::Tabs" do
|
|
24
24
|
tab_bar.delegate.should.equal(tab_bar)
|
25
25
|
end
|
26
26
|
|
27
|
+
it "should call should_select_tab before a tab is selected" do
|
28
|
+
tab_bar.pm_tab_delegate.called_should_select_tab = false
|
29
|
+
@screen1.open_tab "Screen 2"
|
30
|
+
tab_bar.pm_tab_delegate.called_should_select_tab.should.be.true
|
31
|
+
end
|
32
|
+
|
27
33
|
it "should call on_tab_selected when a tab is selected" do
|
28
34
|
tab_bar.pm_tab_delegate.called_on_tab_selected = false
|
29
35
|
@screen1.open_tab "Screen 2"
|
30
36
|
tab_bar.pm_tab_delegate.called_on_tab_selected.should.be.true
|
31
37
|
end
|
32
38
|
|
39
|
+
it "should call on_tab_selected when delegate does not respond to should_select_tab" do
|
40
|
+
method_to_stub = :can_send_method_to_delegate?
|
41
|
+
tab_bar.pm_tab_delegate.stub!(method_to_stub) do |method|
|
42
|
+
method == :should_select_tab ? false : send("__original_#{method_to_stub}", method)
|
43
|
+
end
|
44
|
+
|
45
|
+
tab_bar.pm_tab_delegate.called_on_tab_selected = false
|
46
|
+
@screen1.open_tab "Screen 2"
|
47
|
+
tab_bar.pm_tab_delegate.called_on_tab_selected.should.be.true
|
48
|
+
|
49
|
+
tab_bar.pm_tab_delegate.reset(method_to_stub)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "does not call on_tab_selected when should_select_tab returns false" do
|
53
|
+
method_to_stub = :should_select_tab
|
54
|
+
tab_bar.pm_tab_delegate.stub!(method_to_stub) { |_vc| false }
|
55
|
+
|
56
|
+
tab_bar.pm_tab_delegate.called_on_tab_selected = false
|
57
|
+
@screen1.open_tab "Screen 2"
|
58
|
+
tab_bar.pm_tab_delegate.called_on_tab_selected.should.be.false
|
59
|
+
|
60
|
+
tab_bar.pm_tab_delegate.reset(method_to_stub)
|
61
|
+
end
|
62
|
+
|
33
63
|
it "should have four tabs" do
|
34
64
|
tab_bar.viewControllers.length.should == 4
|
35
65
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ProMotion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamon Holmgren
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2016-03-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: methadone
|
@@ -96,11 +96,11 @@ dependencies:
|
|
96
96
|
- - ">="
|
97
97
|
- !ruby/object:Gem::Version
|
98
98
|
version: '0'
|
99
|
-
description: ProMotion
|
99
|
+
description: ProMotion gives RubyMotion iOS view controllers a more Ruby-like API.
|
100
100
|
email:
|
101
|
-
- jamon@
|
102
|
-
- mark@
|
103
|
-
- silas@
|
101
|
+
- jamon@infinite.red
|
102
|
+
- mark@infinite.red
|
103
|
+
- silas@infinite.red
|
104
104
|
executables:
|
105
105
|
- promotion
|
106
106
|
extensions: []
|
@@ -193,7 +193,7 @@ files:
|
|
193
193
|
- spec/unit/view_helper_spec.rb
|
194
194
|
- spec/unit/view_title_screen_spec.rb
|
195
195
|
- spec/unit/web_spec.rb
|
196
|
-
homepage: https://github.com/
|
196
|
+
homepage: https://github.com/infinitered/ProMotion
|
197
197
|
licenses:
|
198
198
|
- MIT
|
199
199
|
metadata: {}
|
@@ -219,8 +219,8 @@ specification_version: 4
|
|
219
219
|
summary: ProMotion is a fast way to get started building RubyMotion apps. Instead
|
220
220
|
of dealing with UIViewControllers, UITableViewControllers, and the like, you work
|
221
221
|
with Screens. We abstract the view controller boilerplate to make iOS development
|
222
|
-
more like Ruby and less like Objective-C. With a memorable, concise
|
223
|
-
|
222
|
+
more like Ruby and less like Objective-C. With a memorable, concise API and a friendly,
|
223
|
+
helpful community, ProMotion is a great way to get started with iOS development.
|
224
224
|
test_files:
|
225
225
|
- spec/functional/func_screen_spec.rb
|
226
226
|
- spec/functional/func_split_screen_spec.rb
|
@@ -255,3 +255,4 @@ test_files:
|
|
255
255
|
- spec/unit/view_helper_spec.rb
|
256
256
|
- spec/unit/view_title_screen_spec.rb
|
257
257
|
- spec/unit/web_spec.rb
|
258
|
+
has_rdoc:
|