diff --git a/Gemfile b/Gemfile index c70dc6f..79d9ccd 100644 --- a/Gemfile +++ b/Gemfile @@ -1,4 +1,5 @@ source 'https://rubygems.org' +gem 'motion-require' # Specify your gem's dependencies in ProMotion.gemspec gemspec diff --git a/Gemfile.lock b/Gemfile.lock index 442300d..bc966f7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -3,29 +3,26 @@ PATH specs: ProMotion (1.1.0) methadone + motion-require (>= 0.0.6) GEM remote: https://rubygems.org/ specs: - bubble-wrap (1.4.0) - formotion (1.6) - bubble-wrap (~> 1.4.0) - motion-require (~> 0.0.3) methadone (1.3.1) bundler motion-redgreen (0.1.0) motion-require (0.0.7) motion-stump (0.3.0) rake (10.1.0) - webstub (0.6.1) + webstub (1.0.1) PLATFORMS ruby DEPENDENCIES ProMotion! - formotion motion-redgreen + motion-require motion-stump rake webstub diff --git a/ProMotion.gemspec b/ProMotion.gemspec index 85e9ed4..067197e 100644 --- a/ProMotion.gemspec +++ b/ProMotion.gemspec @@ -21,10 +21,10 @@ Gem::Specification.new do |gem| gem.require_paths = ["lib"] gem.version = ProMotion::VERSION + gem.add_dependency "motion-require", ">= 0.0.6" gem.add_development_dependency("webstub") gem.add_development_dependency("motion-stump") gem.add_development_dependency("motion-redgreen") - gem.add_development_dependency("formotion") gem.add_development_dependency("rake") gem.add_dependency("methadone") end diff --git a/Rakefile b/Rakefile index 284dfae..ccc29ad 100644 --- a/Rakefile +++ b/Rakefile @@ -18,7 +18,7 @@ Motion::Project::App.setup do |app| app.deployment_target = "6.0" app.device_family = [:ipad] # so we can test split screen capability - app.detect_dependencies = true + app.detect_dependencies = false end def all_files diff --git a/lib/ProMotion.rb b/lib/ProMotion.rb index 6d8ce9b..5d2b0d8 100644 --- a/lib/ProMotion.rb +++ b/lib/ProMotion.rb @@ -1,13 +1,3 @@ -unless defined?(Motion::Project::Config) - raise "This file must be required within a RubyMotion project Rakefile." -end +require 'motion-require' -require "ProMotion/version" - -Motion::Project::App.setup do |app| - app.detect_dependencies = true - original_files = app.files - delegate = File.join(File.dirname(__FILE__), 'ProMotion/delegate/delegate.rb') - promotion_files = FileList[File.join(File.dirname(__FILE__), 'ProMotion/**/*.rb')].exclude(delegate).to_a - app.files = (promotion_files << delegate) + original_files -end +Motion::Require.all(Dir.glob(File.expand_path('../ProMotion/**/*.rb', __FILE__))) \ No newline at end of file diff --git a/lib/ProMotion/cocoatouch/table_view_cell.rb b/lib/ProMotion/cocoatouch/table_view_cell.rb index e2d65a9..9a3347a 100644 --- a/lib/ProMotion/cocoatouch/table_view_cell.rb +++ b/lib/ProMotion/cocoatouch/table_view_cell.rb @@ -1,3 +1,5 @@ +motion_require '../table/cell/table_view_cell_module' + module ProMotion class TableViewCell < UITableViewCell include TableViewCellModule diff --git a/lib/ProMotion/containers/tabs.rb b/lib/ProMotion/containers/tabs.rb index 4ee12ed..4624f2c 100644 --- a/lib/ProMotion/containers/tabs.rb +++ b/lib/ProMotion/containers/tabs.rb @@ -1,3 +1,5 @@ +motion_require '../extensions/conversions' + module ProMotion module Tabs include Conversions diff --git a/lib/ProMotion/delegate/delegate.rb b/lib/ProMotion/delegate/delegate.rb index 3fd47f3..73b157e 100644 --- a/lib/ProMotion/delegate/delegate.rb +++ b/lib/ProMotion/delegate/delegate.rb @@ -1,3 +1,6 @@ +motion_require 'delegate_module' +motion_require 'delegate_parent' + module ProMotion class Delegate < DelegateParent include ProMotion::DelegateModule diff --git a/lib/ProMotion/delegate/delegate_module.rb b/lib/ProMotion/delegate/delegate_module.rb index 79ffd85..10004f0 100644 --- a/lib/ProMotion/delegate/delegate_module.rb +++ b/lib/ProMotion/delegate/delegate_module.rb @@ -1,3 +1,7 @@ +motion_require '../containers/tabs' +motion_require '../containers/split_screen' +motion_require 'delegate_notifications' + module ProMotion module DelegateModule include ProMotion::Tabs diff --git a/lib/ProMotion/map/map_screen.rb b/lib/ProMotion/map/map_screen.rb index e015c94..5e6dfd4 100644 --- a/lib/ProMotion/map/map_screen.rb +++ b/lib/ProMotion/map/map_screen.rb @@ -1,3 +1,7 @@ +motion_require '../cocoatouch/view_controller' +motion_require '../screen/screen_module' +motion_require 'map_screen_module' + module ProMotion class MapScreen < ViewController include ProMotion::ScreenModule diff --git a/lib/ProMotion/screen/screen.rb b/lib/ProMotion/screen/screen.rb index 2c8e425..0496f1f 100644 --- a/lib/ProMotion/screen/screen.rb +++ b/lib/ProMotion/screen/screen.rb @@ -1,3 +1,6 @@ +motion_require '../cocoatouch/view_controller' +motion_require 'screen_module' + module ProMotion class Screen < ViewController # You can inherit a screen from any UIViewController if you include the ScreenModule diff --git a/lib/ProMotion/screen/screen_module.rb b/lib/ProMotion/screen/screen_module.rb index f02544c..0814789 100644 --- a/lib/ProMotion/screen/screen_module.rb +++ b/lib/ProMotion/screen/screen_module.rb @@ -1,3 +1,8 @@ +motion_require 'screen_navigation' +motion_require '../view/styling' +motion_require '../containers/tabs' +motion_require '../containers/split_screen' + module ProMotion module ScreenModule include ProMotion::ScreenNavigation diff --git a/lib/ProMotion/table/cell/table_view_cell_module.rb b/lib/ProMotion/table/cell/table_view_cell_module.rb index f5b6415..6cb0cc8 100644 --- a/lib/ProMotion/table/cell/table_view_cell_module.rb +++ b/lib/ProMotion/table/cell/table_view_cell_module.rb @@ -1,3 +1,5 @@ +motion_require '../../view/styling' + module ProMotion module TableViewCellModule include Styling diff --git a/lib/ProMotion/table/grouped_table_screen.rb b/lib/ProMotion/table/grouped_table_screen.rb index 0fa2dff..2bcd97e 100644 --- a/lib/ProMotion/table/grouped_table_screen.rb +++ b/lib/ProMotion/table/grouped_table_screen.rb @@ -1,3 +1,8 @@ +motion_require '../cocoatouch/table_view_controller' +motion_require '../screen/screen_module' +motion_require 'table' +motion_require 'grouped_table' + module ProMotion class GroupedTableScreen < TableViewController include ProMotion::ScreenModule diff --git a/lib/ProMotion/table/table.rb b/lib/ProMotion/table/table.rb index 38d5eda..7a2b38a 100644 --- a/lib/ProMotion/table/table.rb +++ b/lib/ProMotion/table/table.rb @@ -1,3 +1,8 @@ +motion_require '../view/styling' +motion_require 'extensions/searchable' +motion_require 'extensions/refreshable' +motion_require 'extensions/indexable' + module ProMotion module Table diff --git a/lib/ProMotion/table/table_screen.rb b/lib/ProMotion/table/table_screen.rb index 441a768..862470b 100644 --- a/lib/ProMotion/table/table_screen.rb +++ b/lib/ProMotion/table/table_screen.rb @@ -1,3 +1,7 @@ +motion_require '../cocoatouch/table_view_controller' +motion_require '../screen/screen_module' +motion_require 'table' + module ProMotion class TableScreen < TableViewController include ProMotion::ScreenModule diff --git a/lib/ProMotion/thirdparty/formotion_screen.rb b/lib/ProMotion/thirdparty/formotion_screen.rb deleted file mode 100644 index ee68719..0000000 --- a/lib/ProMotion/thirdparty/formotion_screen.rb +++ /dev/null @@ -1,87 +0,0 @@ -module ProMotion - if defined?(Formotion) && defined?(Formotion::FormController) - class FormotionScreen < Formotion::FormController - include ProMotion::ScreenModule - - def self.new(args = {}) - s = self.alloc.initWithStyle(UITableViewStyleGrouped) - s.on_create(args) if s.respond_to?(:on_create) - - if s.respond_to?(:table_data) - s.form = s.table_data - elsif args[:form] - s.form = args[:form] - else - PM.logger.error "PM::FormotionScreen requires a `table_data` method or form: to be passed into `new`." - end - - t = s.title # Formotion kills the title when you request tableView. - s.tableView.allowsSelectionDuringEditing = true - s.title = t - - s.form.on_submit { |form| s.on_submit(form) if s.respond_to?(:on_submit) } - - s - end - - # emulate the ProMotion table update for formotion - def update_table_data - self.form = table_data - self.form.controller = self - self.tableView.reloadData - end - - def screen_setup - self.title = self.class.send(:get_title) - end - - def loadView - super - self.send(:on_load) if self.respond_to?(:on_load) - end - - def viewDidLoad - super - self.view_did_load if self.respond_to?(:view_did_load) - end - - def viewWillAppear(animated) - super - self.view_will_appear(animated) if self.respond_to?("view_will_appear:") - end - - def viewDidAppear(animated) - super - self.view_did_appear(animated) if self.respond_to?("view_did_appear:") - end - - def viewWillDisappear(animated) - self.view_will_disappear(animated) if self.respond_to?("view_will_disappear:") - super - end - - def viewDidDisappear(animated) - if self.respond_to?("view_did_disappear:") - self.view_did_disappear(animated) - end - super - end - - def shouldAutorotateToInterfaceOrientation(orientation) - self.should_rotate(orientation) - end - - def shouldAutorotate - self.should_autorotate - end - - def willRotateToInterfaceOrientation(orientation, duration:duration) - self.will_rotate(orientation, duration) - end - - def didRotateFromInterfaceOrientation(orientation) - self.on_rotate - end - end - end -end diff --git a/lib/ProMotion/view/styling.rb b/lib/ProMotion/view/styling.rb index 96d58a7..b1933a3 100644 --- a/lib/ProMotion/view/styling.rb +++ b/lib/ProMotion/view/styling.rb @@ -1,3 +1,5 @@ +motion_require '../extensions/conversions' + module ProMotion module Styling include Conversions diff --git a/lib/ProMotion/web/web_screen.rb b/lib/ProMotion/web/web_screen.rb index e26523f..8f19518 100644 --- a/lib/ProMotion/web/web_screen.rb +++ b/lib/ProMotion/web/web_screen.rb @@ -1,3 +1,7 @@ +motion_require '../cocoatouch/view_controller' +motion_require '../screen/screen_module' +motion_require 'web_screen_module' + module ProMotion class WebScreen < ViewController include ProMotion::ScreenModule diff --git a/spec/helpers/table_screen_formotion.rb b/spec/helpers/table_screen_formotion.rb deleted file mode 100644 index dd72147..0000000 --- a/spec/helpers/table_screen_formotion.rb +++ /dev/null @@ -1,30 +0,0 @@ -class TestFormotionScreen < PM::FormotionScreen - attr_accessor :submitted_form - - title "Formotion Test" - - def table_data - @data ||= { - sections: [{ - title: "Currency", - key: :currency, - select_one: true, - rows: [{ - title: "EUR", - key: :eur, - value: true, - type: :check - }, { - title: "USD", - key: :usd, - type: :check - }] - }] - } - end - - def on_submit(form) - self.submitted_form = form - end - -end diff --git a/spec/unit/tables/formotion_screen_spec.rb b/spec/unit/tables/formotion_screen_spec.rb deleted file mode 100644 index 502b928..0000000 --- a/spec/unit/tables/formotion_screen_spec.rb +++ /dev/null @@ -1,22 +0,0 @@ -describe "PM::FormotionScreen" do - - before do - @screen = TestFormotionScreen.new - end - - it "should store title" do - TestFormotionScreen.get_title.should == 'Formotion Test' - @screen.class.get_title.should == "Formotion Test" - end - - it "should set default title on new instances" do - @screen.title.should == "Formotion Test" - end - - it "should fire the on_submit method when form is submitted" do - @screen.form.submit - @screen.submitted_form.should.not.be.nil - @screen.submitted_form.render.should.be.kind_of(Hash) - end - -end