motion-prime 0.3.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/CHANGELOG.md +8 -0
- data/Gemfile +1 -2
- data/Gemfile.lock +27 -40
- data/README.md +5 -5
- data/Rakefile +0 -1
- data/bin/{prime.rb → prime} +4 -4
- data/files/Gemfile +2 -4
- data/files/Rakefile +10 -1
- data/files/app/app_delegate.rb +9 -6
- data/files/app/config/base.rb +6 -0
- data/files/app/screens/application_screen.rb +1 -1
- data/files/app/screens/help_screen.rb +2 -1
- data/files/app/screens/home_screen.rb +2 -1
- data/files/app/styles/sidebar.rb +8 -16
- data/files/resources/Default-568h@2x.png +0 -0
- data/files/resources/Default.png +0 -0
- data/files/resources/Default@2x.png +0 -0
- data/files/resources/Icon.png +0 -0
- data/{resources → files/resources}/fonts/ubuntu.ttf +0 -0
- data/files/resources/images/arrow.png +0 -0
- data/lib/motion-prime.rb +0 -1
- data/motion-prime/app_delegate.rb +22 -10
- data/motion-prime/config/base.rb +3 -0
- data/motion-prime/elements/base.rb +6 -4
- data/motion-prime/elements/draw/label.rb +4 -1
- data/motion-prime/helpers/has_authorization.rb +2 -2
- data/motion-prime/screens/_navigation_mixin.rb +55 -61
- data/motion-prime/screens/sidebar_container_screen.rb +1 -1
- data/motion-prime/sections/base.rb +10 -7
- data/motion-prime/sections/form.rb +7 -42
- data/motion-prime/sections/form/base_field_section.rb +4 -11
- data/motion-prime/sections/form/base_header_section.rb +4 -9
- data/motion-prime/sections/table.rb +38 -17
- data/motion-prime/sections/table/base_cell_section.rb +26 -0
- data/motion-prime/version.rb +1 -1
- data/motion-prime/views/styles.rb +18 -11
- data/motion-prime/views/view_builder.rb +4 -0
- data/motion-prime/views/view_styler.rb +6 -3
- data/resources/Icon.png +0 -0
- data/travis.sh +2 -1
- metadata +12 -9
- data/files/resources/images/navigation/bg.png +0 -0
- data/files/resources/images/navigation/bg@2x.png +0 -0
- data/files/resources/images/navigation/button.png +0 -0
- data/files/resources/images/navigation/button@2x.png +0 -0
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MDQ1ZmFmOTg1ZWQ4MTliMDI3ZmY4ZmE0NGM5OTA2YjJjZjk4NmIxYQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ODQzMzg0NGZiYzgxMDM5MTMwZGEzNGM4ODcwOTg5ZGEzNWE1OTEwMA==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZjkyZGFmYTg3NzQ3ZDM0ZGRmOTg4MThiNTNlMDNjNGEwZDc3YTI5YmRhZGFi
|
10
|
+
MGU5ZjQ2MTJiNmIzMzc0YWFmMTg0ZTBhNzY0NzQxMzU3OTFlZDVjNjRkNzA4
|
11
|
+
YjVlM2EzNmU0MTkyOWYxM2I2MTg0N2VlYjg2NmE0NzY4NzA1NWQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NzEwYTA3NjRkMTUxZGQ1NGQzMjk2MTQzMWFlYWM2NzkxZmZkNzkxN2E5NTAy
|
14
|
+
OTg2MWY1ZmMzMzcwYzhmNzYyODIyZTFhNzczM2ZlZTY1OGQ0ZWUwM2E0MDcy
|
15
|
+
ODA2ZTI2MmVkZGRiODljM2NjNmY2MzIzNzRmMTBlNjI1NTFhYjU=
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
=== 0.3.1.beta
|
2
|
+
* Added universal AppDelegate#open_screen method for opening screens.
|
3
|
+
* Old AppDelegate#open_screen method renamed to AppDelegate#open_content_screen
|
4
|
+
* Ability to add inherited styles
|
5
|
+
* Small refactoring
|
6
|
+
* Update project template
|
7
|
+
|
8
|
+
|
1
9
|
=== 0.3.0
|
2
10
|
* Added iOS 7 support
|
3
11
|
* Added command line tools
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
motion-prime (0.3.
|
4
|
+
motion-prime (0.3.1)
|
5
5
|
bubble-wrap
|
6
6
|
cocoapods
|
7
7
|
methadone
|
@@ -17,70 +17,57 @@ GEM
|
|
17
17
|
activesupport (3.2.15)
|
18
18
|
i18n (~> 0.6, >= 0.6.4)
|
19
19
|
multi_json (~> 1.0)
|
20
|
-
addressable (2.3.5)
|
21
20
|
bubble-wrap (1.3.0)
|
22
|
-
claide (0.
|
23
|
-
cocoapods (0.
|
24
|
-
activesupport (
|
25
|
-
claide (~> 0.
|
26
|
-
cocoapods-core (= 0.
|
27
|
-
cocoapods-downloader (~> 0.
|
21
|
+
claide (0.4.0)
|
22
|
+
cocoapods (0.28.0)
|
23
|
+
activesupport (>= 3.2.15, < 4)
|
24
|
+
claide (~> 0.4.0)
|
25
|
+
cocoapods-core (= 0.28.0)
|
26
|
+
cocoapods-downloader (~> 0.2.0)
|
28
27
|
colored (~> 1.2)
|
29
28
|
escape (~> 0.0.4)
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
cocoapods-downloader (0.1.2)
|
29
|
+
json_pure (~> 1.8)
|
30
|
+
open4 (~> 1.3)
|
31
|
+
xcodeproj (~> 0.14.1)
|
32
|
+
cocoapods-core (0.28.0)
|
33
|
+
activesupport (>= 3.2.15, < 4)
|
34
|
+
fuzzy_match (~> 2.0.4)
|
35
|
+
json (~> 1.8)
|
36
|
+
nap (~> 0.5)
|
37
|
+
cocoapods-downloader (0.2.0)
|
40
38
|
colored (1.2)
|
41
39
|
escape (0.0.4)
|
42
|
-
|
43
|
-
multipart-post (~> 1.2.0)
|
44
|
-
faraday_middleware (0.9.0)
|
45
|
-
faraday (>= 0.7.4, < 0.9)
|
46
|
-
hashie (2.0.5)
|
40
|
+
fuzzy_match (2.0.4)
|
47
41
|
i18n (0.6.5)
|
48
|
-
json (1.
|
42
|
+
json (1.8.1)
|
43
|
+
json_pure (1.8.1)
|
49
44
|
methadone (1.3.1)
|
50
45
|
bundler
|
51
|
-
motion-cocoapods (1.
|
52
|
-
cocoapods (>= 0.
|
46
|
+
motion-cocoapods (1.4.0)
|
47
|
+
cocoapods (>= 0.26.2)
|
53
48
|
motion-redgreen (0.1.0)
|
54
49
|
motion-require (0.0.7)
|
55
50
|
motion-stump (0.3.0)
|
56
51
|
motion-support (0.2.5)
|
57
52
|
motion-require (>= 0.0.6)
|
58
53
|
multi_json (1.8.2)
|
59
|
-
multipart-post (1.2.0)
|
60
54
|
nano-store (0.6.3)
|
61
55
|
motion-cocoapods (>= 1.2.1)
|
62
|
-
|
63
|
-
octokit (1.25.0)
|
64
|
-
addressable (~> 2.2)
|
65
|
-
faraday (~> 0.8)
|
66
|
-
faraday_middleware (~> 0.9)
|
67
|
-
hashie (~> 2.0)
|
68
|
-
multi_json (~> 1.3)
|
69
|
-
netrc (~> 0.7.7)
|
56
|
+
nap (0.5.1)
|
70
57
|
open4 (1.3.0)
|
71
|
-
rake (10.0
|
58
|
+
rake (10.1.0)
|
72
59
|
sugarcube (0.20.25)
|
73
|
-
xcodeproj (0.
|
74
|
-
activesupport (~> 3.
|
60
|
+
xcodeproj (0.14.1)
|
61
|
+
activesupport (~> 3.0)
|
75
62
|
colored (~> 1.2)
|
63
|
+
rake
|
76
64
|
|
77
65
|
PLATFORMS
|
78
66
|
ruby
|
79
67
|
|
80
68
|
DEPENDENCIES
|
81
69
|
bubble-wrap (~> 1.3.0)
|
82
|
-
cocoapods (~>
|
83
|
-
motion-cocoapods (~> 1.3.2)
|
70
|
+
motion-cocoapods (~> 1.4.0)
|
84
71
|
motion-prime!
|
85
72
|
motion-redgreen
|
86
73
|
motion-stump
|
data/README.md
CHANGED
@@ -9,13 +9,13 @@ The main feature of MotionPrime is one more layer on UI elements: Section.
|
|
9
9
|
|
10
10
|
## Getting Started
|
11
11
|
|
12
|
-
### 1.
|
12
|
+
### 1. Install MotionPrime:
|
13
13
|
|
14
|
-
$
|
14
|
+
$ gem install motion-prime
|
15
15
|
|
16
|
-
### 2.
|
16
|
+
### 2. Create MotionPrime project:
|
17
17
|
|
18
|
-
|
18
|
+
$ prime new myapp
|
19
19
|
|
20
20
|
### 3. Run application
|
21
21
|
|
@@ -27,7 +27,7 @@ The main feature of MotionPrime is one more layer on UI elements: Section.
|
|
27
27
|
# app/app_delegate.rb
|
28
28
|
class AppDelegate < Prime::BaseAppDelegate
|
29
29
|
def on_load(app, options)
|
30
|
-
|
30
|
+
open_screen MainScreen.new
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
data/Rakefile
CHANGED
data/bin/{prime.rb → prime}
RENAMED
@@ -28,12 +28,12 @@ class App
|
|
28
28
|
return puts "Usage: prime new <appname>" unless name.to_s.length > 0
|
29
29
|
info "Creating new MotionPrime iOS app: #{name}"
|
30
30
|
sh "motion create --template=git@github.com:droidlabs/motion-prime.git #{name}"
|
31
|
-
sh "cd ./#{name}"
|
32
31
|
info "Command: bundle instal"
|
33
|
-
sh "bundle install"
|
32
|
+
sh "cd ./#{name} & bundle install"
|
34
33
|
info "Command: pod setup"
|
35
|
-
sh "pod setup"
|
36
|
-
|
34
|
+
sh "cd ./#{name} & pod setup"
|
35
|
+
info "Command: rake pod:install"
|
36
|
+
sh "cd ./#{name} & rake pod:install"
|
37
37
|
end
|
38
38
|
|
39
39
|
description "Command line tools for MotionPrime"
|
data/files/Gemfile
CHANGED
@@ -1,10 +1,8 @@
|
|
1
1
|
source 'http://rubygems.org'
|
2
2
|
|
3
|
-
gem 'cocoapods', '~>
|
4
|
-
gem 'motion-cocoapods', '~> 1.3.2'
|
3
|
+
gem 'motion-cocoapods', '~> 1.4.0'
|
5
4
|
gem 'motion-support', '~> 0.2.4'
|
6
5
|
gem 'sugarcube', '~> 0.20.23'
|
7
6
|
gem 'bubble-wrap', '~> 1.3.0'
|
8
|
-
gem 'nano-store', '~> 0.6.3'
|
9
7
|
|
10
|
-
gem 'motion-prime',
|
8
|
+
gem 'motion-prime', '~> 0.3.1'
|
data/files/Rakefile
CHANGED
@@ -13,6 +13,15 @@ Motion::Project::App.setup do |app|
|
|
13
13
|
app.name = 'MotionPrimeProject'
|
14
14
|
|
15
15
|
app.pods do
|
16
|
-
|
16
|
+
pod 'NanoStore', '~> 2.7.7'
|
17
|
+
pod 'SDWebImage'
|
18
|
+
pod 'SVPullToRefresh'
|
19
|
+
pod 'MBAlertView'
|
20
|
+
pod 'SDSegmentedControl'
|
21
|
+
pod 'RESideMenu', git: 'https://github.com/feklistov/RESideMenu.git'
|
17
22
|
end
|
23
|
+
|
24
|
+
app.version = '0.0.1'
|
25
|
+
app.icons = %w{Icon.png}
|
26
|
+
app.fonts = ['fonts/ubuntu.ttf']
|
18
27
|
end
|
data/files/app/app_delegate.rb
CHANGED
@@ -1,14 +1,17 @@
|
|
1
1
|
class AppDelegate < Prime::BaseAppDelegate
|
2
2
|
def on_load(app, options)
|
3
3
|
setup_navigation_styles
|
4
|
-
|
4
|
+
open_screen HomeScreen.new(navigation: true), sidebar: SidebarScreen.new
|
5
5
|
end
|
6
6
|
|
7
7
|
def setup_navigation_styles
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
bar_appearance = UINavigationBar.appearance
|
9
|
+
bar_appearance.barTintColor = Prime::Config.color.dark.uicolor
|
10
|
+
|
11
|
+
settings = {
|
12
|
+
UITextAttributeFont => MP::Config.font.name.uifont(17),
|
13
|
+
UITextAttributeTextColor => :white.uicolor
|
14
|
+
}
|
15
|
+
bar_appearance.setTitleTextAttributes(settings)
|
13
16
|
end
|
14
17
|
end
|
data/files/app/config/base.rb
CHANGED
@@ -9,5 +9,11 @@ Prime::Config.api do |api|
|
|
9
9
|
api.client_secret = ""
|
10
10
|
end
|
11
11
|
|
12
|
+
Prime::Config.sidebar do |sidebar|
|
13
|
+
sidebar.background_image = "images/sidebar/bg.jpg".uiimage
|
14
|
+
end
|
15
|
+
|
16
|
+
Prime::Config.font.name = "Ubuntu"
|
17
|
+
|
12
18
|
# setup model's store
|
13
19
|
Prime::Store.connect
|
data/files/app/styles/sidebar.rb
CHANGED
@@ -1,29 +1,21 @@
|
|
1
1
|
Prime::Styles.define :sidebar do
|
2
|
-
# navigation layout
|
3
|
-
# ----------
|
4
2
|
style :screen,
|
5
|
-
background_color:
|
6
|
-
opaque: true
|
7
|
-
|
3
|
+
background_color: :clear
|
8
4
|
style :table,
|
9
|
-
top:
|
5
|
+
top: 150,
|
10
6
|
left: 0,
|
11
7
|
width: 320,
|
12
8
|
bottom: 0,
|
13
|
-
background_color:
|
14
|
-
separator_color:
|
15
|
-
opaque: true
|
9
|
+
background_color: :clear,
|
10
|
+
separator_color: :clear
|
16
11
|
|
17
12
|
style :table_cell,
|
18
|
-
selection_style: UITableViewCellSelectionStyleNone
|
19
|
-
opaque: true
|
13
|
+
selection_style: UITableViewCellSelectionStyleNone
|
20
14
|
|
21
15
|
style :action_title,
|
22
|
-
background_color: Prime::Config.color.base,
|
23
16
|
text_color: :white,
|
24
17
|
top: 10,
|
25
18
|
width: 320,
|
26
|
-
opaque: true,
|
27
19
|
font: proc { :system.uifont(20) },
|
28
20
|
size_to_fit: true,
|
29
21
|
left: 20,
|
@@ -32,7 +24,7 @@ Prime::Styles.define :sidebar do
|
|
32
24
|
style :action_arrow,
|
33
25
|
width: 9,
|
34
26
|
height: 14,
|
35
|
-
right:
|
36
|
-
top:
|
37
|
-
image: "images/sidebar/
|
27
|
+
right: 150,
|
28
|
+
top: 17,
|
29
|
+
image: "images/sidebar/arrow.png"
|
38
30
|
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
File without changes
|
Binary file
|
data/lib/motion-prime.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
include EM::Eventable
|
2
1
|
motion_require './helpers/has_authorization'
|
3
2
|
module MotionPrime
|
4
3
|
class BaseAppDelegate
|
@@ -20,6 +19,17 @@ module MotionPrime
|
|
20
19
|
self.app_delegate.window
|
21
20
|
end
|
22
21
|
|
22
|
+
def open_screen(screen, options = {})
|
23
|
+
if options[:sidebar]
|
24
|
+
open_with_sidebar(screen, options.delete(:sidebar), options)
|
25
|
+
elsif options[:root]
|
26
|
+
open_root_screen(screen)
|
27
|
+
else
|
28
|
+
open_content_screen(screen)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
# TODO: move to private methods
|
23
33
|
def open_root_screen(screen)
|
24
34
|
screen.send(:on_screen_load) if screen.respond_to?(:on_screen_load)
|
25
35
|
screen.ensure_wrapper_controller_in_place if screen.respond_to?(:ensure_wrapper_controller_in_place)
|
@@ -32,7 +42,8 @@ module MotionPrime
|
|
32
42
|
screen
|
33
43
|
end
|
34
44
|
|
35
|
-
|
45
|
+
# TODO: move to private methods
|
46
|
+
def open_content_screen(screen)
|
36
47
|
if sidebar?
|
37
48
|
sidebar_container.content_controller = screen
|
38
49
|
else
|
@@ -40,16 +51,17 @@ module MotionPrime
|
|
40
51
|
end
|
41
52
|
end
|
42
53
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
def open_with_sidebar(content, menu, options={})
|
48
|
-
self.sidebar_container = SidebarContainerScreen.new(menu, content, options)
|
54
|
+
# TODO: move to private methods
|
55
|
+
def open_with_sidebar(content, sidebar, options={})
|
56
|
+
self.sidebar_container = SidebarContainerScreen.new(sidebar, content, options)
|
49
57
|
self.sidebar_container.delegate = self
|
50
58
|
open_root_screen(sidebar_container)
|
51
59
|
end
|
52
60
|
|
61
|
+
def sidebar?
|
62
|
+
self.window.rootViewController.is_a?(SidebarContainerScreen)
|
63
|
+
end
|
64
|
+
|
53
65
|
def show_sidebar
|
54
66
|
sidebar_container.show_sidebar
|
55
67
|
end
|
@@ -64,10 +76,10 @@ module MotionPrime
|
|
64
76
|
end
|
65
77
|
end
|
66
78
|
|
67
|
-
def
|
79
|
+
def reset_current_user
|
68
80
|
user_was = @current_user
|
69
81
|
@current_user = nil
|
70
|
-
NSNotificationCenter.defaultCenter.postNotificationName(:
|
82
|
+
NSNotificationCenter.defaultCenter.postNotificationName(:on_current_user_reset, object: user_was)
|
71
83
|
end
|
72
84
|
end
|
73
85
|
end
|
data/motion-prime/config/base.rb
CHANGED
@@ -11,6 +11,9 @@ MotionPrime::Config.color do |color|
|
|
11
11
|
color.base = 0x424242
|
12
12
|
color.error = 0xef471f
|
13
13
|
end
|
14
|
+
MotionPrime::Config.sidebar do |sidebar|
|
15
|
+
sidebar.background_image = "images/sidebar/background.png".uiimage
|
16
|
+
end
|
14
17
|
MotionPrime::Config.api do |api|
|
15
18
|
api.base = "http://example.com"
|
16
19
|
api.client_id = ""
|
@@ -65,8 +65,8 @@ module MotionPrime
|
|
65
65
|
suffixes = {common: [@view_name.to_sym, name.try(:to_sym)].compact, specific: []}
|
66
66
|
|
67
67
|
if section
|
68
|
-
|
69
|
-
if
|
68
|
+
cell_section = section.is_a?(BaseCellSection)
|
69
|
+
if cell_section
|
70
70
|
section.section_styles.each { |type, values| base_styles[type] += values }
|
71
71
|
end
|
72
72
|
if section.respond_to?(:observing_errors?) && observing_errors? && has_errors?
|
@@ -76,11 +76,13 @@ module MotionPrime
|
|
76
76
|
|
77
77
|
# common + specific base - common suffixes
|
78
78
|
@styles += build_styles_chain(base_styles[:common], suffixes[:common])
|
79
|
-
@styles <<
|
79
|
+
@styles << [section.name, name].compact.join('_').to_sym if section
|
80
80
|
@styles += build_styles_chain(base_styles[:specific], suffixes[:common])
|
81
81
|
# specific base - specific suffixes
|
82
82
|
@styles += build_styles_chain(base_styles[:specific], suffixes[:specific])
|
83
|
-
|
83
|
+
if cell_section && section.table.present?
|
84
|
+
@styles << [section.table.name, section.cell_type, section.name, name].compact.join('_').to_sym
|
85
|
+
end
|
84
86
|
# custom style (from options or block options)
|
85
87
|
custom_styles = style_sources.map do |source|
|
86
88
|
normalize_object(source.delete(:styles), section)
|
@@ -45,7 +45,10 @@ module MotionPrime
|
|
45
45
|
|
46
46
|
def size_to_fit_if_needed
|
47
47
|
if computed_options[:size_to_fit]
|
48
|
-
@computed_options[:
|
48
|
+
@computed_options[:width] = content_width
|
49
|
+
if computed_options[:width]
|
50
|
+
@computed_options[:height] = content_height
|
51
|
+
end
|
49
52
|
reset_computed_values
|
50
53
|
end
|
51
54
|
end
|
@@ -4,42 +4,36 @@ module MotionPrime
|
|
4
4
|
UIApplication.sharedApplication.delegate
|
5
5
|
end
|
6
6
|
|
7
|
+
def show_sidebar
|
8
|
+
app_delegate.show_sidebar
|
9
|
+
end
|
10
|
+
|
11
|
+
def hide_sidebar
|
12
|
+
app_delegate.hide_sidebar
|
13
|
+
end
|
14
|
+
|
7
15
|
def open_screen(screen, args = {})
|
8
|
-
# Apply properties to instance
|
9
16
|
if args[:modal] || has_navigation?
|
10
17
|
screen = setup_screen_for_open(screen, args)
|
11
18
|
screen.send(:on_screen_load) if screen.respond_to?(:on_screen_load)
|
19
|
+
args[:animated] = args.has_key?(:animated) ? args[:animated] : true
|
12
20
|
if args[:modal] || !has_navigation?
|
13
|
-
|
21
|
+
open_screen_modal(screen, args)
|
14
22
|
else
|
15
|
-
|
23
|
+
open_screen_navigational(screen, args)
|
16
24
|
end
|
17
25
|
else
|
18
26
|
app_delegate.open_screen(screen.main_controller)
|
19
27
|
end
|
20
28
|
end
|
21
29
|
|
22
|
-
def open_root_screen(screen)
|
23
|
-
app_delegate.open_root_screen(screen)
|
24
|
-
end
|
25
|
-
|
26
|
-
def show_sidebar
|
27
|
-
app_delegate.show_sidebar
|
28
|
-
end
|
29
|
-
|
30
|
-
def hide_sidebar
|
31
|
-
app_delegate.hide_sidebar
|
32
|
-
end
|
33
|
-
|
34
30
|
def close_screen(args = {})
|
35
|
-
args ||= {}
|
36
31
|
args[:animated] = args.has_key?(:animated) ? args[:animated] : true
|
37
32
|
# Pop current view, maybe with arguments, if in navigation controller
|
38
33
|
if modal?
|
39
|
-
|
34
|
+
close_screen_modal(args)
|
40
35
|
elsif has_navigation?
|
41
|
-
|
42
|
-
send_on_return(args)
|
36
|
+
close_screen_navigational(args)
|
43
37
|
end
|
44
38
|
end
|
45
39
|
|
@@ -53,10 +47,6 @@ module MotionPrime
|
|
53
47
|
end
|
54
48
|
end
|
55
49
|
|
56
|
-
def push_view_controller(vc, args = {})
|
57
|
-
navigation_controller.pushViewController(vc, animated: (args.has_key?(:animated) ? args[:animated] : true))
|
58
|
-
end
|
59
|
-
|
60
50
|
def ensure_wrapper_controller_in_place(args = {})
|
61
51
|
# Wrap in a NavigationController?
|
62
52
|
if wrap_in_navigation? && !args[:modal]
|
@@ -64,54 +54,58 @@ module MotionPrime
|
|
64
54
|
end
|
65
55
|
end
|
66
56
|
|
67
|
-
|
57
|
+
private
|
58
|
+
def setup_screen_for_open(screen, args = {})
|
59
|
+
# Instantiate screen if given a class
|
60
|
+
screen = screen.new if screen.respond_to?(:new)
|
68
61
|
|
69
|
-
|
70
|
-
|
71
|
-
|
62
|
+
# Set parent, title & modal properties
|
63
|
+
screen.parent_screen = self if screen.respond_to?("parent_screen=")
|
64
|
+
screen.title = args[:title] if args[:title] && screen.respond_to?("title=")
|
65
|
+
screen.modal = args[:modal] if args[:modal] && screen.respond_to?("modal=")
|
72
66
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
screen.modal = args[:modal] if args[:modal] && screen.respond_to?("modal=")
|
67
|
+
# Return modified screen instance
|
68
|
+
screen
|
69
|
+
end
|
77
70
|
|
78
|
-
|
79
|
-
|
80
|
-
|
71
|
+
def open_screen_modal(screen, args)
|
72
|
+
self.presentModalViewController(screen.main_controller, animated: args[:animated])
|
73
|
+
end
|
81
74
|
|
82
|
-
|
83
|
-
|
84
|
-
|
75
|
+
def open_screen_navigational(screen, args = {})
|
76
|
+
navigation_controller.pushViewController(screen, animated: args[:animated])
|
77
|
+
end
|
85
78
|
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
79
|
+
def close_screen_modal(args = {})
|
80
|
+
parent_screen.dismissViewControllerAnimated(args[:animated], completion: lambda {
|
81
|
+
send_on_return(args)
|
82
|
+
})
|
83
|
+
end
|
91
84
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
85
|
+
def close_screen_navigational(args = {})
|
86
|
+
if args[:to_screen] && args[:to_screen].is_a?(UIViewController)
|
87
|
+
self.parent_screen = args[:to_screen]
|
88
|
+
self.navigation_controller.popToViewController(args[:to_screen], animated: args[:animated])
|
89
|
+
else
|
90
|
+
self.navigation_controller.popViewControllerAnimated(args[:animated])
|
91
|
+
end
|
92
|
+
send_on_return(args)
|
98
93
|
end
|
99
|
-
end
|
100
94
|
|
101
|
-
|
102
|
-
|
103
|
-
|
95
|
+
def has_navigation?
|
96
|
+
!navigation_controller.nil?
|
97
|
+
end
|
104
98
|
|
105
|
-
|
106
|
-
|
107
|
-
|
99
|
+
def navigation_controller
|
100
|
+
@navigation_controller ||= self.navigationController
|
101
|
+
end
|
108
102
|
|
109
|
-
|
110
|
-
|
111
|
-
|
103
|
+
def navigation_controller=(val)
|
104
|
+
@navigation_controller = val
|
105
|
+
end
|
112
106
|
|
113
|
-
|
114
|
-
|
115
|
-
|
107
|
+
def add_navigation_controller
|
108
|
+
self.navigation_controller = NavigationController.alloc.initWithRootViewController(self)
|
109
|
+
end
|
116
110
|
end
|
117
111
|
end
|
@@ -4,7 +4,7 @@ module MotionPrime
|
|
4
4
|
|
5
5
|
def self.new(menu, content, options={})
|
6
6
|
screen = self.alloc.initWithContentViewController(nil, menuViewController: nil)
|
7
|
-
screen.backgroundImage =
|
7
|
+
screen.backgroundImage = MotionPrime::Config.sidebar.background_image
|
8
8
|
|
9
9
|
full_width = UIScreen.mainScreen.bounds.size.width
|
10
10
|
|
@@ -18,7 +18,7 @@ module MotionPrime
|
|
18
18
|
include MotionPrime::HasAuthorization
|
19
19
|
include MotionPrime::HasNormalizer
|
20
20
|
|
21
|
-
attr_accessor :screen, :model, :name, :options, :elements
|
21
|
+
attr_accessor :screen, :model, :name, :options, :elements, :section_styles
|
22
22
|
class_attribute :elements_options, :container_options, :keyboard_close_bindings
|
23
23
|
define_callbacks :render
|
24
24
|
|
@@ -30,6 +30,14 @@ module MotionPrime
|
|
30
30
|
load_section
|
31
31
|
end
|
32
32
|
|
33
|
+
def style_options
|
34
|
+
@style_options ||= if section_styles.present?
|
35
|
+
Styles.for(section_styles.values.flatten)
|
36
|
+
else
|
37
|
+
{}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
33
41
|
def container_options
|
34
42
|
@normalized_container_options or begin
|
35
43
|
# priority: class; from styles; passed directly
|
@@ -37,16 +45,11 @@ module MotionPrime
|
|
37
45
|
passed_container_options = options.delete(:container) || {}
|
38
46
|
raw_container_options.merge!(passed_container_options)
|
39
47
|
@normalized_container_options = normalize_options(raw_container_options)
|
40
|
-
|
41
48
|
style_container_options = style_options.delete(:container) || {}
|
42
49
|
@normalized_container_options.merge!(style_container_options.except(*passed_container_options.keys))
|
43
50
|
end
|
44
51
|
end
|
45
52
|
|
46
|
-
def style_options
|
47
|
-
{}
|
48
|
-
end
|
49
|
-
|
50
53
|
def default_name
|
51
54
|
self.class_name_without_kvo.demodulize.underscore.gsub(/\_section$/, '')
|
52
55
|
end
|
@@ -80,7 +83,7 @@ module MotionPrime
|
|
80
83
|
index = opts.delete(:at)
|
81
84
|
options = build_options_for_element(opts)
|
82
85
|
options[:name] ||= key
|
83
|
-
options[:type] ||= :label
|
86
|
+
options[:type] ||= options[:text] ? :label : :view
|
84
87
|
element = MotionPrime::BaseElement.factory(options.delete(:type), options)
|
85
88
|
if index
|
86
89
|
self.elements = Hash[self.elements.to_a.insert index, [key, element]]
|
@@ -2,8 +2,6 @@ motion_require './table.rb'
|
|
2
2
|
motion_require '../helpers/has_style_chain_builder'
|
3
3
|
module MotionPrime
|
4
4
|
class FormSection < TableSection
|
5
|
-
include HasStyleChainBuilder
|
6
|
-
|
7
5
|
# MotionPrime::FormSection is container for Field Sections.
|
8
6
|
# Forms are located inside Screen and can contain multiple Field Sections.
|
9
7
|
# On render, each field will be added to parent screen.
|
@@ -41,48 +39,15 @@ module MotionPrime
|
|
41
39
|
end
|
42
40
|
end
|
43
41
|
|
44
|
-
def
|
45
|
-
|
46
|
-
base_styles << :base_form_with_sections unless flat_data?
|
47
|
-
item_styles = [name.to_sym]
|
48
|
-
{common: base_styles, specific: item_styles}
|
49
|
-
end
|
50
|
-
|
51
|
-
def field_styles(field)
|
52
|
-
suffixes = [:field]
|
53
|
-
if field.is_a?(BaseFieldSection)
|
54
|
-
suffixes << field.class_name_without_kvo.demodulize.underscore.gsub(/\_section$/, '')
|
55
|
-
end
|
56
|
-
|
57
|
-
styles = {
|
58
|
-
common: build_styles_chain(form_styles[:common], suffixes),
|
59
|
-
specific: build_styles_chain(form_styles[:specific], suffixes)
|
60
|
-
}
|
61
|
-
|
62
|
-
if field.respond_to?(:container_styles) && field.container_styles.present?
|
63
|
-
styles[:specific] += Array.wrap(field.container_styles)
|
64
|
-
end
|
65
|
-
styles
|
66
|
-
end
|
67
|
-
|
68
|
-
def header_styles(header)
|
69
|
-
suffixes = [:header, :"#{header.name}_header"]
|
70
|
-
styles = {
|
71
|
-
common: build_styles_chain(form_styles[:common], suffixes),
|
72
|
-
specific: build_styles_chain(form_styles[:specific], suffixes)
|
73
|
-
}
|
74
|
-
|
75
|
-
if header.respond_to?(:container_styles) && header.container_styles.present?
|
76
|
-
styles[:specific] += Array.wrap(header.container_styles)
|
77
|
-
end
|
78
|
-
styles
|
42
|
+
def data
|
43
|
+
@data ||= table_data
|
79
44
|
end
|
80
45
|
|
81
46
|
def render_table
|
82
47
|
init_form_fields
|
83
48
|
reset_data_stamps
|
84
49
|
options = {
|
85
|
-
styles:
|
50
|
+
styles: table_styles.values.flatten,
|
86
51
|
delegate: self,
|
87
52
|
dataSource: self,
|
88
53
|
style: (UITableViewStyleGrouped unless flat_data?)}
|
@@ -91,7 +56,7 @@ module MotionPrime
|
|
91
56
|
|
92
57
|
def render_cell(index, table)
|
93
58
|
field = rows_for_section(index.section)[index.row]
|
94
|
-
screen.table_view_cell styles:
|
59
|
+
screen.table_view_cell section: field, styles: cell_styles(field).values.flatten, reuse_identifier: cell_name(table, index), parent_view: table_view do |cell_view|
|
95
60
|
field.cell_view = cell_view if field.respond_to?(:cell_view)
|
96
61
|
field.render(to: screen)
|
97
62
|
end
|
@@ -233,7 +198,7 @@ module MotionPrime
|
|
233
198
|
|
234
199
|
def load_field(field)
|
235
200
|
klass = "MotionPrime::#{field[:type].classify}FieldSection".constantize
|
236
|
-
klass.new(field.merge(
|
201
|
+
klass.new(field.merge(table: self))
|
237
202
|
end
|
238
203
|
|
239
204
|
def render_field?(name, options)
|
@@ -249,7 +214,7 @@ module MotionPrime
|
|
249
214
|
|
250
215
|
def render_header(section)
|
251
216
|
return unless options = self.class.section_header_options.try(:[], section)
|
252
|
-
self.section_headers[section] ||= BaseHeaderSection.new(options.merge(
|
217
|
+
self.section_headers[section] ||= BaseHeaderSection.new(options.merge(table: self))
|
253
218
|
end
|
254
219
|
|
255
220
|
def header_for_section(section)
|
@@ -259,7 +224,7 @@ module MotionPrime
|
|
259
224
|
|
260
225
|
def tableView(table, viewForHeaderInSection: section)
|
261
226
|
return unless header = header_for_section(section)
|
262
|
-
wrapper = MotionPrime::BaseElement.factory(:view, styles:
|
227
|
+
wrapper = MotionPrime::BaseElement.factory(:view, styles: cell_styles(header).values.flatten, parent_view: table_view)
|
263
228
|
wrapper.render(to: screen) do |cell_view|
|
264
229
|
header.cell_view = cell_view if header.respond_to?(:cell_view)
|
265
230
|
header.render(to: screen)
|
@@ -1,26 +1,19 @@
|
|
1
|
+
motion_require '../table/base_cell_section'
|
1
2
|
module MotionPrime
|
2
|
-
class BaseFieldSection <
|
3
|
+
class BaseFieldSection < BaseCellSection
|
3
4
|
include CellSection
|
4
5
|
include BW::KVO
|
5
|
-
attr_accessor :form
|
6
6
|
|
7
|
+
attr_reader :form
|
7
8
|
after_render :on_section_render
|
8
9
|
|
9
10
|
def initialize(options = {})
|
10
|
-
@form = options
|
11
|
+
@form = options[:table]
|
11
12
|
@errors_observer_options = normalize_options(options.delete(:observe_errors).clone, self) if options[:observe_errors]
|
12
13
|
super
|
13
14
|
observe_model_errors
|
14
15
|
end
|
15
16
|
|
16
|
-
def style_options
|
17
|
-
@style_options ||= Styles.for(section_styles.values.flatten)
|
18
|
-
end
|
19
|
-
|
20
|
-
def section_styles
|
21
|
-
form.try(:field_styles, self)
|
22
|
-
end
|
23
|
-
|
24
17
|
def render_element?(element_name)
|
25
18
|
case element_name.to_sym
|
26
19
|
when :error_message
|
@@ -1,23 +1,18 @@
|
|
1
|
+
motion_require '../table/base_cell_section'
|
1
2
|
module MotionPrime
|
2
|
-
class BaseHeaderSection <
|
3
|
+
class BaseHeaderSection < BaseCellSection
|
3
4
|
include CellSection
|
4
5
|
DEFAULT_HEADER_HEIGHT = 20
|
5
6
|
|
6
7
|
element :title, text: proc { @options[:title] }
|
7
8
|
|
8
|
-
attr_accessor :form
|
9
|
-
|
10
9
|
def initialize(options = {})
|
11
|
-
@
|
10
|
+
@cell_type = :header
|
12
11
|
super
|
13
12
|
end
|
14
13
|
|
15
|
-
def style_options
|
16
|
-
@style_options ||= Styles.for(section_styles.values.flatten)
|
17
|
-
end
|
18
|
-
|
19
14
|
def section_styles
|
20
|
-
|
15
|
+
table.cell_styles(self)
|
21
16
|
end
|
22
17
|
|
23
18
|
def container_height
|
@@ -2,6 +2,7 @@ motion_require './table/refresh_mixin'
|
|
2
2
|
module MotionPrime
|
3
3
|
class TableSection < BaseSection
|
4
4
|
include TableSectionRefreshMixin
|
5
|
+
include HasStyleChainBuilder
|
5
6
|
include HasSearchBar
|
6
7
|
|
7
8
|
attr_accessor :table_element, :did_appear
|
@@ -12,7 +13,11 @@ module MotionPrime
|
|
12
13
|
end
|
13
14
|
|
14
15
|
def data
|
15
|
-
@data ||= table_data
|
16
|
+
@data ||= table_data.tap { |cells| set_cells_table(cells) }
|
17
|
+
end
|
18
|
+
|
19
|
+
def set_cells_table(cells)
|
20
|
+
cells.each { |cell| cell.table = self if cell.respond_to?(:table=) }
|
16
21
|
end
|
17
22
|
|
18
23
|
def data_stamp_for(id)
|
@@ -46,15 +51,41 @@ module MotionPrime
|
|
46
51
|
end
|
47
52
|
|
48
53
|
def table_styles
|
49
|
-
|
50
|
-
|
54
|
+
type = self.is_a?(FormSection) ? :base_form : :base_table
|
55
|
+
|
56
|
+
base_styles = [type]
|
57
|
+
base_styles << :"#{type}_with_sections" unless flat_data?
|
58
|
+
item_styles = [name.to_sym]
|
59
|
+
item_styles << @styles if @styles.present?
|
60
|
+
{common: base_styles, specific: item_styles}
|
61
|
+
end
|
62
|
+
|
63
|
+
def cell_styles(cell)
|
64
|
+
# type: cell/field/header
|
65
|
+
type = cell.respond_to?(:cell_type) ? cell.cell_type : 'cell'
|
66
|
+
|
67
|
+
suffixes = [type]
|
68
|
+
if cell.is_a?(BaseFieldSection)
|
69
|
+
suffixes << cell.default_name
|
70
|
+
elsif cell.respond_to?(:cell_name)
|
71
|
+
suffixes << cell.cell_name
|
72
|
+
end
|
73
|
+
|
74
|
+
styles = {
|
75
|
+
common: build_styles_chain(table_styles[:common], suffixes),
|
76
|
+
specific: build_styles_chain(table_styles[:specific], suffixes)
|
77
|
+
}
|
78
|
+
|
79
|
+
if cell.respond_to?(:container_styles) && cell.container_styles.present?
|
80
|
+
styles[:specific] += Array.wrap(cell.container_styles)
|
81
|
+
end
|
51
82
|
styles
|
52
83
|
end
|
53
84
|
|
54
85
|
def render_table
|
55
86
|
reset_data_stamps
|
56
87
|
options = {
|
57
|
-
styles: table_styles,
|
88
|
+
styles: table_styles.values.flatten,
|
58
89
|
delegate: self,
|
59
90
|
data_source: self,
|
60
91
|
style: (UITableViewStyleGrouped unless flat_data?)
|
@@ -90,29 +121,19 @@ module MotionPrime
|
|
90
121
|
rows_for_section(index.section)[index.row]
|
91
122
|
end
|
92
123
|
|
124
|
+
|
93
125
|
def render_cell(index, table)
|
94
126
|
item = row_by_index(index)
|
95
127
|
|
96
|
-
# define default styles for cell
|
97
|
-
styles = [:"#{name}_cell"]
|
98
|
-
Array.wrap(@styles).each do |table_style|
|
99
|
-
styles << :"#{table_style}_cell"
|
100
|
-
end
|
101
|
-
if item.respond_to?(:container_styles) && item.container_styles.present?
|
102
|
-
styles += Array.wrap(item.container_styles)
|
103
|
-
end
|
104
|
-
if item.respond_to?(:name) && item.name.present?
|
105
|
-
styles += [item.name.to_sym]
|
106
|
-
end
|
107
128
|
# DrawSection allows as to draw inside the cell view, so we can setup
|
108
129
|
# to use cell view as container
|
109
130
|
if item.is_a?(MotionPrime::DrawSection)
|
110
131
|
item.render(to: screen, as: :cell,
|
111
|
-
styles:
|
132
|
+
styles: cell_styles(item).values.flatten,
|
112
133
|
reuse_identifier: cell_name(table, index)
|
113
134
|
)
|
114
135
|
else
|
115
|
-
screen.table_view_cell
|
136
|
+
screen.table_view_cell section: item, styles: cell_styles(item).values.flatten, reuse_identifier: cell_name(table, index), parent_view: table_view do
|
116
137
|
item.render(to: screen)
|
117
138
|
end
|
118
139
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module MotionPrime
|
2
|
+
class BaseCellSection < BaseSection
|
3
|
+
attr_accessor :table, :cell_type
|
4
|
+
|
5
|
+
def initialize(options = {})
|
6
|
+
@table ||= options[:table]
|
7
|
+
super
|
8
|
+
end
|
9
|
+
|
10
|
+
def section_styles
|
11
|
+
@table.try(:cell_styles, self) || {}
|
12
|
+
end
|
13
|
+
|
14
|
+
def cell_type
|
15
|
+
@cell_type ||= begin
|
16
|
+
self.is_a?(BaseFieldSection) ? :field : :cell
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def cell_name
|
21
|
+
return name unless table
|
22
|
+
table_name = table.name.gsub('_table', '')
|
23
|
+
name.gsub("#{table_name}_", '')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/motion-prime/version.rb
CHANGED
@@ -7,21 +7,28 @@ module MotionPrime
|
|
7
7
|
@namespace = namespace
|
8
8
|
end
|
9
9
|
|
10
|
-
def style(*args)
|
10
|
+
def style(*args, &block)
|
11
11
|
names = Array.wrap(args)
|
12
12
|
options = names.pop if args.last.is_a?(Hash)
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
14
|
+
if block_given?
|
15
|
+
raise "Only style names are available for nested styles, received: `#{args.inspect}`. Namespace: `#{@namespace}`" if options.present?
|
16
|
+
names.each do |name|
|
17
|
+
puts namespace = [@namespace, name].compact.join('_')
|
18
|
+
self.class.new(namespace).instance_eval(&block)
|
19
|
+
end
|
20
|
+
else
|
21
|
+
raise "No style rules specified for `#{names.join(', ')}`. Namespace: `#{@namespace}`" unless options
|
22
|
+
parent = options.delete(:parent)
|
23
|
+
namespace = options.delete(:parent_namspace) || @namespace
|
24
|
+
parent ="#{namespace}_#{parent}".to_sym if namespace
|
25
|
+
|
26
|
+
names.each do |name|
|
27
|
+
name = "#{@namespace}_#{name}".to_sym if @namespace
|
28
|
+
@@repo[name] ||= {}
|
29
|
+
@@repo[name].deep_merge!(self.class.for(parent)) if parent
|
30
|
+
@@repo[name].deep_merge! options
|
23
31
|
end
|
24
|
-
@@repo[name].deep_merge! options
|
25
32
|
end
|
26
33
|
end
|
27
34
|
|
@@ -37,6 +37,10 @@ module MotionPrime
|
|
37
37
|
text: options.delete(:text),
|
38
38
|
line_spacing: options.delete(:line_spacing)
|
39
39
|
}
|
40
|
+
[:text_alignment].each do |key|# add keys which must follow after attributed text here
|
41
|
+
value = options.delete(key)
|
42
|
+
options[key] = value unless value.nil?
|
43
|
+
end
|
40
44
|
end
|
41
45
|
klass.alloc.initWithFrame CGRectZero
|
42
46
|
},
|
@@ -169,19 +169,22 @@ module MotionPrime
|
|
169
169
|
attributes[NSParagraphStyleAttributeName] = paragrahStyle
|
170
170
|
end
|
171
171
|
|
172
|
-
|
173
172
|
attributedString = NSAttributedString.alloc.initWithString(value[:text], attributes: attributes)
|
174
173
|
if underline_range = value[:underline]
|
175
174
|
attributedString = NSMutableAttributedString.alloc.initWithAttributedString(attributedString)
|
176
175
|
attributedString.addAttributes({NSUnderlineStyleAttributeName => NSUnderlineStyleSingle}, range: underline_range)
|
177
176
|
end
|
178
|
-
|
179
177
|
if view.is_a?(UIButton)
|
180
178
|
view.setAttributedTitle attributedString, forState: UIControlStateNormal
|
181
179
|
else
|
182
180
|
view.attributedText = attributedString
|
183
181
|
end
|
184
|
-
|
182
|
+
elsif key == 'gradient'
|
183
|
+
gradient = CAGradientLayer.layer
|
184
|
+
gradient.frame = CGRectMake(value[:frame_x].to_f, value[:frame_y].to_f, value[:frame_width].to_f, value[:frame_height].to_f)
|
185
|
+
gradient.colors = value[:colors].map(&:uicolor).map(&:cgcolor)
|
186
|
+
gradient.locations = value[:locations] if value[:locations]
|
187
|
+
view.layer.insertSublayer(gradient, atIndex: 0)
|
185
188
|
elsif value.is_a?(Hash)
|
186
189
|
self.class.new(view.send(key.camelize(:lower).to_sym), nil, value).apply
|
187
190
|
else
|
data/resources/Icon.png
ADDED
Binary file
|
data/travis.sh
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: motion-prime
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Iskander Haziev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -168,7 +168,7 @@ description: RubyMotion apps development framework
|
|
168
168
|
email:
|
169
169
|
- gvalmon@gmail.com
|
170
170
|
executables:
|
171
|
-
- prime
|
171
|
+
- prime
|
172
172
|
extensions: []
|
173
173
|
extra_rdoc_files: []
|
174
174
|
files:
|
@@ -180,7 +180,7 @@ files:
|
|
180
180
|
- README.md
|
181
181
|
- Rakefile
|
182
182
|
- app/app_delegate.rb
|
183
|
-
- bin/prime
|
183
|
+
- bin/prime
|
184
184
|
- doc/FAQ.md
|
185
185
|
- doc/SECTION.md
|
186
186
|
- doc/STYLE.md
|
@@ -196,10 +196,12 @@ files:
|
|
196
196
|
- files/app/sections/sidebar/action.rb
|
197
197
|
- files/app/sections/sidebar/table.rb
|
198
198
|
- files/app/styles/sidebar.rb
|
199
|
-
- files/resources/
|
200
|
-
- files/resources/
|
201
|
-
- files/resources/
|
202
|
-
- files/resources/
|
199
|
+
- files/resources/Default-568h@2x.png
|
200
|
+
- files/resources/Default.png
|
201
|
+
- files/resources/Default@2x.png
|
202
|
+
- files/resources/Icon.png
|
203
|
+
- files/resources/fonts/ubuntu.ttf
|
204
|
+
- files/resources/images/arrow.png
|
203
205
|
- lib/motion-prime.rb
|
204
206
|
- motion-prime.gemspec
|
205
207
|
- motion-prime/api_client.rb
|
@@ -261,6 +263,7 @@ files:
|
|
261
263
|
- motion-prime/sections/form/text_with_button_field_section.rb
|
262
264
|
- motion-prime/sections/tabbed.rb
|
263
265
|
- motion-prime/sections/table.rb
|
266
|
+
- motion-prime/sections/table/base_cell_section.rb
|
264
267
|
- motion-prime/sections/table/refresh_mixin.rb
|
265
268
|
- motion-prime/styles/base.rb
|
266
269
|
- motion-prime/styles/form.rb
|
@@ -280,7 +283,7 @@ files:
|
|
280
283
|
- motion-prime/views/view_builder.rb
|
281
284
|
- motion-prime/views/view_styler.rb
|
282
285
|
- resources/Default-568h@2x.png
|
283
|
-
- resources/
|
286
|
+
- resources/Icon.png
|
284
287
|
- spec/config/store_spec.rb
|
285
288
|
- spec/delegate/base_delegate_spec.rb
|
286
289
|
- spec/helpers/base_delegate.rb
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|