ProMotion 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -15,3 +15,7 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ .repl_history
19
+ build
20
+ build/*
21
+ *.000
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source :rubygems
2
2
 
3
3
  # Specify your gem's dependencies in ProMotion.gemspec
4
4
  gemspec
data/ProMotion.gemspec CHANGED
@@ -2,13 +2,15 @@
2
2
  require File.expand_path('../lib/ProMotion/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
- gem.authors = ["Jamon Holmgren"]
5
+ gem.authors = ["Jamon Holmgren", "Silas Matson", "ClearSight Studio"]
6
6
  gem.email = ["jamon@clearsightstudio.com"]
7
- gem.description = "ProMotion is a new way to organize RubyMotion apps."
8
- gem.summary = "ProMotion is a new way to organize RubyMotion apps. Instead of dealing
7
+ gem.description = "ProMotion is a new way to organize RubyMotion apps. Currently a proof of concept."
8
+ gem.summary = "
9
+ ProMotion is a new way to organize RubyMotion apps. Instead of dealing
9
10
  with UIViewControllers and UIViews, you work with Screens. Screens are
10
- a logical way to think of your app."
11
- gem.homepage = ""
11
+ a logical way to think of your app -- similar in some ways to Storyboards.
12
+ "
13
+ gem.homepage = "https://github.com/clearsightstudio/ProMotion"
12
14
 
13
15
  gem.files = `git ls-files`.split($\)
14
16
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
data/README.md CHANGED
@@ -45,13 +45,13 @@ Or install it yourself as:
45
45
 
46
46
  ## Usage
47
47
 
48
- It's easy to load your first view with a navigation bar (the view is opened in a UINavigationController):
48
+ It's easy to load your first screen with a navigation bar (the screen is opened in a UINavigationController behind the scenes):
49
49
 
50
50
  ```ruby
51
- # In /app/app_delegate.rb:
52
- class AppDelegate
51
+ # In /app/app_delegate.rb (note that AppDelegate extends ProMotion::AppDelegate)
52
+ class AppDelegate < ProMotion::AppDelegate
53
53
  def application(application, didFinishLaunchingWithOptions:launchOptions)
54
- @window = HomeScreen.open_with_nav_bar
54
+ open_with_nav_bar HomeScreen
55
55
 
56
56
  true
57
57
  end
@@ -66,7 +66,7 @@ class HomeScreen < ProMotion::Screen
66
66
  # Set the title for use in nav bars and other containers
67
67
  title "Home"
68
68
 
69
- # Called when this view is first "opened" and allows you to set up your view
69
+ # Called when this screen is first "opened" and allows you to set up your view components
70
70
  def on_load
71
71
  @default_image = add_image(:default_image, src: "default.png", frame: [10, 50, 100, 100])
72
72
  end
@@ -81,7 +81,6 @@ class HomeScreen < ProMotion::Screen
81
81
  # Set the title for use in nav bars and other containers
82
82
  title "Home"
83
83
 
84
- # Called when this view is first "opened" and allows you to set up your view
85
84
  def on_load
86
85
  # Add view items as instance vars so you can access them in other methods
87
86
 
@@ -100,7 +99,7 @@ class HomeScreen < ProMotion::Screen
100
99
  end
101
100
  ```
102
101
 
103
- View items can be bound to events (like jQuery) and run methods or run a block.
102
+ View components can be bound to events (like jQuery) and run methods or run a block.
104
103
 
105
104
  ```ruby
106
105
  # settings_pushed is executed when the button is tapped
@@ -117,11 +116,19 @@ end
117
116
  @edit_button.on(:tap, :edit_pushed, id: 4)
118
117
  ```
119
118
 
120
- To open other screens, just call their "open" method:
119
+ To open other screens, just call the built-in "open" method on a new instance or class:
121
120
 
122
121
  ```ruby
123
122
  def settings_button_tapped
124
- SettingsScreen.open
123
+ # ...with a class...
124
+ open SettingsScreen
125
+
126
+ # ...or with an instance...
127
+ @settings_screen = SettingsScreen.new(some_attr: 4)
128
+ open @settings_screen
129
+
130
+ # ...or if you like...
131
+ open SettingsScreen.new
125
132
  end
126
133
  ```
127
134
 
@@ -146,7 +153,7 @@ class HomeScreen < ProMotion::Screen
146
153
  # ...
147
154
 
148
155
  def settings_button_tapped
149
- SettingsScreen.open(user_type: "Admin")
156
+ open SettingsScreen.new(user_type: "Admin")
150
157
  end
151
158
  end
152
159
  ```
@@ -156,7 +163,7 @@ When you're done with a screen, just close it:
156
163
  ```ruby
157
164
  def save_and_close
158
165
  if @model.save
159
- self.close
166
+ close
160
167
  end
161
168
  end
162
169
  ```
@@ -168,7 +175,7 @@ class SettingsScreen < ProMotion::Screen
168
175
  # ...
169
176
 
170
177
  def save_and_close
171
- self.close(saved_changes: true)
178
+ close(saved_changes: true)
172
179
  end
173
180
  end
174
181
 
@@ -238,7 +245,7 @@ class HomeScreen < ProMotion::Screen
238
245
  # Defaults to :normal. :plain_table, :grouped_table are options.
239
246
  screen_type :plain_table
240
247
 
241
- # Called when this view is first "opened" and allows you to set up your view
248
+ # Called when this screen is first "opened" and allows you to set up your view components
242
249
  def on_load
243
250
  # Add view items as instance vars so you can access them in other methods
244
251
  # This adds a right nav bar button. on_tap allows you to set a method to call when it's tapped.
@@ -294,12 +301,12 @@ class HomeScreen < ProMotion::Screen
294
301
  # Assuming some sort of ORM, like ParseModel
295
302
  @my_model.save
296
303
 
297
- # When you want to close the current view (usually in a navigation controller), just run this.
298
- self.close
304
+ # When you want to close the current screen (usually in a navigation controller), just run this.
305
+ close
299
306
 
300
- # You can also pass back arguments to the previous view as you close.
307
+ # You can also pass back arguments to the previous screen as you close.
301
308
  # If the previous screen has an `on_return` method, this will be passed into that method
302
- self.close(did_stuff: true)
309
+ close(did_stuff: true)
303
310
  end
304
311
 
305
312
  # This is called any time a screen "above" this screen is closed. args = {} is required.
@@ -312,17 +319,20 @@ class HomeScreen < ProMotion::Screen
312
319
  # Custom method
313
320
  def settings_pushed
314
321
  # Just open a settings screen
315
- SettingsScreen.open
322
+ open SettingsScreen
323
+
324
+ # If you prefer to pass in an instance, that works too:
325
+ open SettingsScreen.new
316
326
  end
317
327
 
318
328
  def close_pushed
319
- self.close
329
+ close
320
330
  end
321
331
 
322
332
  # Custom method with passed in arguments
323
333
  def edit_pushed(args)
324
334
  # Open a screen and set some of its attributes
325
- EditScreen.open(id: args[:id])
335
+ open EditScreen.new(id: args[:id])
326
336
  end
327
337
  end
328
338
  ```
data/Rakefile CHANGED
@@ -1,2 +1,5 @@
1
- #!/usr/bin/env rake
2
- require "bundler/gem_tasks"
1
+ $:.unshift("/Library/RubyMotion/lib")
2
+ require 'motion/project'
3
+ require 'bundler/gem_tasks'
4
+ Bundler.setup
5
+ Bundler.require
data/lib/ProMotion.rb CHANGED
@@ -1,5 +1,11 @@
1
+ unless defined?(Motion::Project::Config)
2
+ raise "This file must be required within a RubyMotion project Rakefile."
3
+ end
4
+
1
5
  require "ProMotion/version"
2
6
 
3
- module ProMotion
4
- # Your code goes here...
5
- end
7
+ Motion::Project::App.setup do |app|
8
+ Dir.glob(File.join(File.dirname(__FILE__), "ProMotion/*.rb")).each do |file|
9
+ app.files.unshift(file)
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ module ProMotion
2
+ class AppDelegate
3
+ class << self
4
+
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,11 @@
1
+ module ProMotion
2
+ class Screen
3
+ def open_with_nav_bar
4
+ # Create UINavigationController, insert view
5
+ end
6
+
7
+ def open
8
+ # Push view onto existing UINavigationController
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module ProMotion
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2" unless defined?(MotionTable::VERSION)
3
3
  end
metadata CHANGED
@@ -1,17 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ProMotion
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jamon Holmgren
9
+ - Silas Matson
10
+ - ClearSight Studio
9
11
  autorequire:
10
12
  bindir: bin
11
13
  cert_chain: []
12
- date: 2012-08-30 00:00:00.000000000 Z
14
+ date: 2012-08-31 00:00:00.000000000 Z
13
15
  dependencies: []
14
- description: ProMotion is a new way to organize RubyMotion apps.
16
+ description: ProMotion is a new way to organize RubyMotion apps. Currently a proof
17
+ of concept.
15
18
  email:
16
19
  - jamon@clearsightstudio.com
17
20
  executables: []
@@ -25,8 +28,10 @@ files:
25
28
  - README.md
26
29
  - Rakefile
27
30
  - lib/ProMotion.rb
31
+ - lib/ProMotion/AppDelegate.rb
32
+ - lib/ProMotion/Screen.rb
28
33
  - lib/ProMotion/version.rb
29
- homepage: ''
34
+ homepage: https://github.com/clearsightstudio/ProMotion
30
35
  licenses: []
31
36
  post_install_message:
32
37
  rdoc_options: []
@@ -51,5 +56,5 @@ signing_key:
51
56
  specification_version: 3
52
57
  summary: ProMotion is a new way to organize RubyMotion apps. Instead of dealing with
53
58
  UIViewControllers and UIViews, you work with Screens. Screens are a logical way
54
- to think of your app.
59
+ to think of your app -- similar in some ways to Storyboards.
55
60
  test_files: []