ProMotion 0.1.1 → 0.1.2

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.
data/README.md CHANGED
@@ -76,8 +76,8 @@ element before it is dropped into the view.
76
76
  Add a nav_bar button and a tab_bar icon:
77
77
 
78
78
  ```ruby
79
- add_right_nav_button(label: "Save", action: :save)
80
- set_tab_bar_item(title: "Contacts", system_icon: UITabBarSystemItemContacts)
79
+ set_nav_bar_right_button "Save", action: :save_something, type: UIBarButtonItemStyleDone
80
+ set_tab_bar_item title: "Contacts", system_icon: UITabBarSystemItemContacts
81
81
  ```
82
82
 
83
83
  Open a new screen:
@@ -162,7 +162,7 @@ it to the current view. Screens include this helper by default.
162
162
  backgroundColor: UIColor.whiteColor
163
163
  }
164
164
 
165
- @element = set_attributes(UIView.alloc.initWithFrame(CGRectMake(0, 0, 20, 20)), {
165
+ @element = set_attributes UIView.alloc.initWithFrame(CGRectMake(0, 0, 20, 20)), {
166
166
  backgroundColor: UIColor.whiteColor
167
167
  }
168
168
  ```
@@ -45,8 +45,8 @@ module ProMotion
45
45
  end
46
46
 
47
47
  def open_home_screen
48
- root = get_home_screen.main_controller
49
- load_root_view root
48
+ get_home_screen.send(:on_load) if get_home_screen.respond_to?(:on_load)
49
+ load_root_view get_home_screen.main_controller
50
50
  end
51
51
 
52
52
  def get_home_screen
@@ -3,18 +3,26 @@ module ProMotion
3
3
  def open_screen(screen, args = {})
4
4
  # Instantiate screen if given a class instead
5
5
  screen = screen.new if screen.respond_to? :new
6
- screen.add_nav_bar if args[:nav_bar]
6
+
7
7
  screen.parent_screen = self
8
+ screen.view_controller.title = args[:title] if args[:title]
8
9
 
9
- screen.main_controller.hidesBottomBarWhenPushed = true if args[:hide_tab_bar]
10
+ screen.add_nav_bar if args[:nav_bar]
11
+ unless args[:close_all] || args[:modal]
12
+ screen.navigation_controller ||= self.navigation_controller
13
+ end
10
14
 
15
+ screen.main_controller.hidesBottomBarWhenPushed = args[:hide_tab_bar] if args[:hide_tab_bar]
16
+
17
+ screen.modal = args[:modal] if args[:modal]
18
+
19
+ screen.send(:on_load) if screen.respond_to?(:on_load)
20
+
11
21
  if args[:close_all]
12
22
  fresh_start(screen)
13
23
  elsif args[:modal]
14
- screen.modal = true
15
24
  self.view_controller.presentModalViewController(screen.main_controller, animated:true)
16
25
  elsif self.navigation_controller
17
- screen.navigation_controller = self.navigation_controller
18
26
  push_view_controller screen.view_controller
19
27
  else
20
28
  open_view_controller screen.main_controller
@@ -32,14 +40,24 @@ module ProMotion
32
40
  end
33
41
 
34
42
  def close_screen(args = {})
43
+ args ||= {}
44
+
35
45
  # Pop current view, maybe with arguments, if in navigation controller
46
+ previous_screen = self.parent_screen
36
47
  if self.is_modal?
37
48
  self.parent_screen.view_controller.dismissModalViewControllerAnimated(true)
38
49
  elsif self.navigation_controller
39
- self.navigation_controller.popViewControllerAnimated(true)
50
+ if args[:to_screen]
51
+ self.navigation_controller.popToViewController(args[:to_screen].view_controller, animated: true)
52
+ previous_screen = args[:to_screen]
53
+ else
54
+ self.navigation_controller.popViewControllerAnimated(true)
55
+ end
40
56
  else
41
- # What do we do now? Nothing to "pop". For now, don't do anything.
57
+ Console.log("Tried to close #{self.to_s}; however, this screen isn't modal or in a nav bar.", withColor: Console::PURPLE_COLOR)
42
58
  end
59
+
60
+ previous_screen.send(:on_return, args) if previous_screen && previous_screen.respond_to?(:on_return)
43
61
  end
44
62
 
45
63
  def tab_bar_controller(*screens)
@@ -61,21 +79,35 @@ module ProMotion
61
79
 
62
80
  def open_tab_bar(*screens)
63
81
  tab_bar = tab_bar_controller(*screens)
82
+
83
+ screens.each do |s|
84
+ s.parent_screen = self if s.respond_to? "parent_screen="
85
+ s.on_load if s.respond_to? :on_load
86
+ end
87
+
64
88
  open_view_controller tab_bar
89
+
65
90
  screens.each do |s|
66
91
  s.on_opened if s.respond_to? :on_opened
67
- s.parent_screen = self if s.respond_to? "parent_screen="
68
92
  end
93
+
69
94
  tab_bar
70
95
  end
71
96
 
72
97
  def push_tab_bar(*screens)
73
98
  tab_bar = tab_bar_controller(*screens)
99
+
100
+ screens.each do |s|
101
+ s.parent_screen = self if s.respond_to? "parent_screen="
102
+ s.on_load if s.respond_to? :on_load
103
+ end
104
+
74
105
  push_view_controller tab_bar
106
+
75
107
  screens.each do |s|
76
108
  s.on_opened if s.respond_to? :on_opened
77
- s.parent_screen = self if s.respond_to? "parent_screen="
78
109
  end
110
+
79
111
  tab_bar
80
112
  end
81
113
 
@@ -6,26 +6,28 @@ module ProMotion
6
6
 
7
7
  attr_accessor :view_controller, :navigation_controller, :parent_screen, :first_screen, :tab_bar_item, :modal
8
8
 
9
- def initialize(attrs = {})
10
- attrs.each do |k, v|
9
+ def initialize(args = {})
10
+ args.each do |k, v|
11
11
  self.send "#{k}=", v if self.respond_to? "#{k}="
12
12
  end
13
-
14
13
  self.load_view_controller
15
-
16
14
  self.view_controller.title = self.title
17
-
18
- self.add_nav_bar if attrs[:nav_bar]
19
-
20
- self.on_load if self.respond_to? :on_load
21
15
 
16
+ self.add_nav_bar if args[:nav_bar]
17
+ self.on_init if self.respond_to? :on_init
22
18
  self
23
19
  end
24
20
 
25
21
  def is_modal?
26
- self.modal
22
+ $stderr.puts self.modal
23
+ self.modal == true
24
+ end
25
+
26
+ def has_nav_bar?
27
+ self.navigation_controller.nil? != true
27
28
  end
28
29
 
30
+ # Note: this is overridden in TableScreen
29
31
  def load_view_controller
30
32
  self.view_controller ||= ViewController
31
33
  end
@@ -40,10 +42,8 @@ module ProMotion
40
42
  end
41
43
 
42
44
  def add_nav_bar
43
- unless self.navigation_controller
44
- self.navigation_controller = NavigationController.alloc.initWithRootViewController(self.view_controller)
45
- self.first_screen = true
46
- end
45
+ self.navigation_controller = NavigationController.alloc.initWithRootViewController(self.view_controller)
46
+ self.first_screen = true
47
47
  end
48
48
 
49
49
  def set_nav_bar_right_button(title, args={})
@@ -53,6 +53,17 @@ module ProMotion
53
53
 
54
54
  right_button = UIBarButtonItem.alloc.initWithTitle(title, style: args[:style], target: args[:target], action: args[:action])
55
55
  self.view_controller.navigationItem.rightBarButtonItem = right_button
56
+ right_button
57
+ end
58
+
59
+ def set_nav_bar_left_button(title, args={})
60
+ args[:style] ||= UIBarButtonItemStyleBordered
61
+ args[:target] ||= self
62
+ args[:action] ||= nil
63
+
64
+ left_button = UIBarButtonItem.alloc.initWithTitle(title, style: args[:style], target: args[:target], action: args[:action])
65
+ self.view_controller.navigationItem.leftBarButtonItem = left_button
66
+ left_button
56
67
  end
57
68
 
58
69
  def view_controller=(vc)
@@ -9,7 +9,8 @@ module ProMotion
9
9
  end
10
10
 
11
11
  def load_view_controller
12
- Console.log("- table_data method needed in table view screen.", withColor: Console::RED_COLOR) unless self.respond_to? :table_data
12
+ check_table_data_method
13
+
13
14
  self.view_controller ||= TableViewController
14
15
  self.view_controller.view = self.createTableViewFromData(self.table_data)
15
16
  if self.class.get_searchable
@@ -17,6 +18,10 @@ module ProMotion
17
18
  end
18
19
  end
19
20
 
21
+ def check_table_data_method
22
+ Console.log("- table_data method needed in table view screen.", withColor: Console::RED_COLOR) unless self.respond_to? :table_data
23
+ end
24
+
20
25
  def update_table_data
21
26
  self.updateTableViewData(table_data)
22
27
  end
@@ -1,8 +1,6 @@
1
1
  module ProMotion::MotionTable
2
2
  module SearchableTable
3
3
  def makeSearchable(params={})
4
- $stderr.puts params
5
-
6
4
  params[:frame] ||= CGRectMake(0, 0, 320, 44)
7
5
  params[:contentController] ||= self
8
6
  params[:delegate] ||= self
@@ -97,7 +97,6 @@ module ProMotion::MotionTable
97
97
  end
98
98
 
99
99
  def triggerAction(action, arguments)
100
- $stderr.puts "Action: #{action.to_s} and args #{arguments.to_s}"
101
100
  if self.respond_to?(action)
102
101
  expectedArguments = self.method(action).arity
103
102
  if expectedArguments == 0
@@ -1,3 +1,3 @@
1
1
  module ProMotion
2
- VERSION = "0.1.1" unless defined?(ProMotion::VERSION)
2
+ VERSION = "0.1.2" unless defined?(ProMotion::VERSION)
3
3
  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: 0.1.1
4
+ version: 0.1.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-09-11 00:00:00.000000000 Z
14
+ date: 2012-09-12 00:00:00.000000000 Z
15
15
  dependencies: []
16
16
  description: ProMotion is a new way to organize RubyMotion apps.
17
17
  email: