bluepotion 0.0.8 → 0.1.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 +41 -2
- data/lib/project/potion.rb +2 -0
- data/lib/project/pro_motion/pm_screen.rb +0 -1
- data/lib/project/ruby_motion_query/stylers/rmq_view_styler.rb +117 -34
- data/lib/project/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2144e6cc671ff757a2afd611680884628dc5422a
|
4
|
+
data.tar.gz: e067abe21100a273fd70c6a245f99f06e5355b29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3a8f167141409255d7ab4f83cf3172f9c81ed45639cf4ce16eb562779697e9fe31e9188def5994ab5a13b4dabade23d38a080314c9d8c81cfcd2ebbb309eee35
|
7
|
+
data.tar.gz: 5f8826fbdc43efb2f2f7612078d298350a04a4b28348eeb2bd6854d478e7fdadc2f161c5c63a8a88e896cf325556ecef164f826d633798a9b11202aa5c76711f
|
data/README.md
CHANGED
@@ -5,6 +5,45 @@
|
|
5
5
|
BluePotion
|
6
6
|
-----------
|
7
7
|
|
8
|
-
|
8
|
+
## Warning, BluePotion is an alpha release.
|
9
9
|
|
10
|
-
|
10
|
+
BluePotion is the Android version of [RedPotion](http://redpotion.org). We're spending a lot of time working on it right now. It's currently in Alpha.
|
11
|
+
|
12
|
+
We are building RMQ Android, ProMotion Android, and BluePotion all at once, and they all are inside BluePotion.
|
13
|
+
|
14
|
+
We're supporting Android XML layouts, using RMQ stylesheets the standard Android way, and eventually an exact copy of RedPotion's layout system.
|
15
|
+
|
16
|
+
Many things work, but there is a lot to do, so use it at your own risk.
|
17
|
+
|
18
|
+
To try it out:
|
19
|
+
|
20
|
+
```
|
21
|
+
gem install bluepotion
|
22
|
+
bluepotion create myapp
|
23
|
+
cd myapp
|
24
|
+
bundle
|
25
|
+
rake newclear
|
26
|
+
```
|
27
|
+
|
28
|
+
In your REPL, do this for fun:
|
29
|
+
|
30
|
+
```
|
31
|
+
rmq.log_tree
|
32
|
+
find(Potion::View).log
|
33
|
+
# etc
|
34
|
+
```
|
35
|
+
|
36
|
+
If you haven't setup Android yet, read this first: [Gant Laborde's post on Genymotion](http://www.iconoclastlabs.com/blog/rubymotion-android-in-the-emulator-with-genymotion).
|
37
|
+
|
38
|
+
|
39
|
+
Contributing
|
40
|
+
|
41
|
+
0. Create an issue in GitHub to make sure your PR will be accepted.
|
42
|
+
1. Fork it
|
43
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
44
|
+
3. Write tests for your changes
|
45
|
+
4. Make your changes
|
46
|
+
5. Document your changes in the `docs` folder
|
47
|
+
6. Commit your changes (`git commit -am 'Add some feature'`)
|
48
|
+
7. Push to the branch (`git push origin my-new-feature`)
|
49
|
+
8. Create new Pull Request
|
data/lib/project/potion.rb
CHANGED
@@ -2,6 +2,7 @@ module Potion
|
|
2
2
|
Activity = Android::App::Activity
|
3
3
|
View = Android::View::View
|
4
4
|
ViewGroup = Android::View::ViewGroup
|
5
|
+
Integer = Java::Lang::Integer
|
5
6
|
|
6
7
|
# layouts
|
7
8
|
LinearLayout = Android::Widget::LinearLayout
|
@@ -14,6 +15,7 @@ module Potion
|
|
14
15
|
TextView = Android::Widget::TextView
|
15
16
|
ImageView = Android::Widget::ImageView
|
16
17
|
Button = Android::Widget::Button
|
18
|
+
CalendarView = Android::Widget::CalendarView
|
17
19
|
Toast = Android::Widget::Toast
|
18
20
|
|
19
21
|
# graphics
|
@@ -5,26 +5,118 @@ class RMQViewStyler
|
|
5
5
|
attr_accessor :corner_radius
|
6
6
|
|
7
7
|
def initialize(view, context)
|
8
|
+
@needs_finalize = false
|
8
9
|
@view = view
|
9
10
|
@context = context
|
10
11
|
@bg_color = nil
|
11
12
|
@corner_radius = nil
|
12
13
|
end
|
13
14
|
|
15
|
+
def convert_dimension_value(value)
|
16
|
+
case value
|
17
|
+
when :match_parent, :full
|
18
|
+
Android::View::ViewGroup::LayoutParams::MATCH_PARENT
|
19
|
+
when :wrap_content
|
20
|
+
Android::View::ViewGroup::LayoutParams::WRAP_CONTENT
|
21
|
+
else
|
22
|
+
dp2px(value)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def layout_params
|
27
|
+
@layout_params ||= @view.getLayoutParams
|
28
|
+
end
|
29
|
+
|
30
|
+
def layout=(value)
|
31
|
+
lp = layout_params
|
32
|
+
|
33
|
+
if value == :full
|
34
|
+
lp.width = convert_dimension_value(:full)
|
35
|
+
lp.height = convert_dimension_value(:full)
|
36
|
+
@view.setLayoutParams(lp)
|
37
|
+
elsif value.is_a?(Hash)
|
38
|
+
hash = value
|
39
|
+
if w = (hash[:w] || hash[:width])
|
40
|
+
lp.width = convert_dimension_value(w)
|
41
|
+
end
|
42
|
+
if h = (hash[:h] || hash[:height])
|
43
|
+
lp.height = convert_dimension_value(h)
|
44
|
+
end
|
45
|
+
if l = (hash[:l] || hash[:left] || hash[:left_margin])
|
46
|
+
lp.leftMargin = convert_dimension_value(l)
|
47
|
+
end
|
48
|
+
if t = (hash[:t] || hash[:top] || hash[:top_margin])
|
49
|
+
lp.topMargin = convert_dimension_value(t)
|
50
|
+
end
|
51
|
+
if fr = (hash[:fr] || hash[:from_right] || hash[:right_margin])
|
52
|
+
lp.rightMargin = convert_dimension_value(fr)
|
53
|
+
end
|
54
|
+
if fb = (hash[:fb] || hash[:from_bottom] || hash[:bottom_margin])
|
55
|
+
lp.bottomMargin = convert_dimension_value(fb)
|
56
|
+
end
|
57
|
+
|
58
|
+
# TODO do center
|
59
|
+
|
60
|
+
# TODO gravity
|
61
|
+
|
62
|
+
# TODO do the relative bits
|
63
|
+
|
64
|
+
@view.setLayoutParams(lp)
|
65
|
+
|
66
|
+
if pad = hash[:padding]
|
67
|
+
self.padding = pad
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
alias :frame= :layout=
|
73
|
+
|
74
|
+
def padding=(pad)
|
75
|
+
if pad.is_a?(Potion::Integer)
|
76
|
+
pad = convert_dimension_value(pad)
|
77
|
+
@view.setPadding(pad, pad, pad, pad)
|
78
|
+
elsif pad.is_a?(Hash)
|
79
|
+
@view.setPadding(
|
80
|
+
convert_dimension_value(pad[:l] || pad[:left] || 0),
|
81
|
+
convert_dimension_value(pad[:t] || pad[:top] || 0),
|
82
|
+
convert_dimension_value(pad[:r] || pad[:right] || 0),
|
83
|
+
convert_dimension_value(pad[:b] || pad[:bottom] || 0))
|
84
|
+
else
|
85
|
+
mp pad.class.name
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# use this if you need to do something after all style methods have been called (e.g.
|
90
|
+
# applying layout params)
|
91
|
+
def finalize
|
92
|
+
return unless @needs_finalize
|
93
|
+
|
94
|
+
create_rounded_bg if corner_radius
|
95
|
+
layout_params.setMargins(margin[:left],
|
96
|
+
margin[:top],
|
97
|
+
margin[:right],
|
98
|
+
margin[:bottom]) if layout_params.respond_to?(:setMargins)
|
99
|
+
@view.setLayoutParams(layout_params)
|
100
|
+
|
101
|
+
@view.setPadding(padding[:left], padding[:top], padding[:right], padding[:bottom])
|
102
|
+
end
|
103
|
+
|
104
|
+
|
14
105
|
def background_color=(color)
|
15
106
|
@view.backgroundColor = @bg_color = convert_color(color)
|
16
107
|
end
|
17
|
-
alias_method :backgroundColor=, :background_color=
|
18
108
|
|
19
109
|
def background_resource=(bg)
|
20
110
|
@view.backgroundResource = bg
|
21
111
|
end
|
22
112
|
|
23
113
|
def layout_width=(layout_width)
|
114
|
+
@needs_finalize = true
|
24
115
|
layout_params.width = convert_dimension_value(layout_width)
|
25
116
|
end
|
26
117
|
|
27
118
|
def layout_height=(layout_height)
|
119
|
+
@needs_finalize = true
|
28
120
|
layout_params.height = convert_dimension_value(layout_height)
|
29
121
|
end
|
30
122
|
|
@@ -33,110 +125,101 @@ class RMQViewStyler
|
|
33
125
|
end
|
34
126
|
|
35
127
|
def layout_center_in_parent=(center_in_parent)
|
128
|
+
@needs_finalize = true
|
36
129
|
center = center_in_parent ? Android::Widget::RelativeLayout::TRUE :
|
37
130
|
Android::Widget::RelativeLayout::FALSE
|
38
131
|
layout_params.addRule(Android::Widget::RelativeLayout::CENTER_IN_PARENT, center)
|
39
132
|
end
|
40
|
-
alias_method :layout_centerInParent=, :layout_center_in_parent=
|
41
133
|
|
42
134
|
def layout_center_vertical=(center_vertical)
|
135
|
+
@needs_finalize = true
|
43
136
|
center = center_vertical ? Android::Widget::RelativeLayout::TRUE :
|
44
137
|
Android::Widget::RelativeLayout::FALSE
|
45
138
|
layout_params.addRule(Android::Widget::RelativeLayout::CENTER_VERTICAL, center)
|
46
139
|
end
|
47
|
-
|
140
|
+
|
141
|
+
def layout_center_horizontal=(center_horizontal)
|
142
|
+
@needs_finalize = true
|
143
|
+
center = center_horizontal ? Android::Widget::RelativeLayout::TRUE :
|
144
|
+
Android::Widget::RelativeLayout::FALSE
|
145
|
+
layout_params.addRule(Android::Widget::RelativeLayout::CENTER_HORIZONTAL, center)
|
146
|
+
end
|
48
147
|
|
49
148
|
def layout_align_parent_left=(left_in_parent)
|
149
|
+
@needs_finalize = true
|
50
150
|
left = left_in_parent ? Android::Widget::RelativeLayout::TRUE :
|
51
151
|
Android::Widget::RelativeLayout::FALSE
|
52
152
|
layout_params.addRule(Android::Widget::RelativeLayout::ALIGN_PARENT_LEFT, left)
|
53
153
|
end
|
54
|
-
alias_method :layout_alignParentLeft=, :layout_align_parent_left=
|
55
154
|
|
56
155
|
def layout_align_parent_right=(right_in_parent)
|
156
|
+
@needs_finalize = true
|
57
157
|
right = right_in_parent ? Android::Widget::RelativeLayout::TRUE :
|
58
158
|
Android::Widget::RelativeLayout::FALSE
|
59
159
|
layout_params.addRule(Android::Widget::RelativeLayout::ALIGN_PARENT_RIGHT, right)
|
60
160
|
end
|
61
|
-
alias_method :layout_alignParentRight=, :layout_align_parent_right=
|
62
161
|
|
63
162
|
def padding_left=(pad_left)
|
163
|
+
@needs_finalize = true
|
64
164
|
padding[:left] = dp2px(pad_left)
|
65
165
|
end
|
66
|
-
alias_method :paddingLeft=, :padding_left=
|
67
166
|
|
68
167
|
def padding_top=(pad_top)
|
168
|
+
@needs_finalize = true
|
69
169
|
padding[:top] = dp2px(pad_top)
|
70
170
|
end
|
71
|
-
alias_method :paddingTop=, :padding_top=
|
72
171
|
|
73
172
|
def padding_right=(pad_right)
|
173
|
+
@needs_finalize = true
|
74
174
|
padding[:right] = dp2px(pad_right)
|
75
175
|
end
|
76
|
-
alias_method :paddingRight=, :padding_right=
|
77
176
|
|
78
177
|
def padding_bottom=(pad_bottom)
|
178
|
+
@needs_finalize = true
|
79
179
|
padding[:bottom] = dp2px(pad_bottom)
|
80
180
|
end
|
81
|
-
alias_method :paddingBottom=, :padding_bottom=
|
82
|
-
|
83
|
-
def padding=(pad)
|
84
|
-
padding[:left] = padding[:top] = padding[:right] = padding[:bottom] = dp2px(pad)
|
85
|
-
end
|
86
181
|
|
87
182
|
def margin_left=(m_left)
|
183
|
+
@needs_finalize = true
|
88
184
|
margin[:left] = dp2px(m_left)
|
89
185
|
end
|
90
|
-
alias_method :marginLeft=, :margin_left=
|
91
186
|
|
92
187
|
def margin_top=(m_top)
|
188
|
+
@needs_finalize = true
|
93
189
|
margin[:top] = dp2px(m_top)
|
94
190
|
end
|
95
|
-
alias_method :marginTop=, :margin_top=
|
96
191
|
|
97
192
|
def margin_right=(m_right)
|
193
|
+
@needs_finalize = true
|
98
194
|
margin[:right] = dp2px(m_right)
|
99
195
|
end
|
100
|
-
alias_method :marginRight=, :margin_right=
|
101
196
|
|
102
197
|
def margin_bottom=(m_bottom)
|
198
|
+
@needs_finalize = true
|
103
199
|
margin[:bottom] = dp2px(m_bottom)
|
104
200
|
end
|
105
|
-
alias_method :marginBottom=, :margin_bottom=
|
106
201
|
|
107
202
|
def margin=(m)
|
203
|
+
@needs_finalize = true
|
108
204
|
margin[:left] = margin[:top] = margin[:right] = margin[:bottom] = dp2px(m)
|
109
205
|
end
|
110
206
|
|
111
|
-
#
|
207
|
+
# This can only be used on a widget that's within a LinearLayout
|
112
208
|
def layout_weight=(weight)
|
209
|
+
@needs_finalize = true
|
113
210
|
layout_params.weight = weight
|
114
211
|
end
|
115
212
|
|
116
213
|
def layout_gravity=(gravity)
|
214
|
+
@needs_finalize = true
|
117
215
|
layout_params.gravity = convert_gravity(gravity)
|
118
216
|
end
|
119
217
|
|
120
218
|
def corner_radius(corner_radius)
|
219
|
+
@needs_finalize = true
|
121
220
|
@corner_radius = dp2px(corner_radius)
|
122
221
|
end
|
123
222
|
|
124
|
-
# use this if you need to do something after all style methods have been called (e.g.
|
125
|
-
# applying layout params)
|
126
|
-
def finalize
|
127
|
-
create_rounded_bg if corner_radius
|
128
|
-
@view.setPadding(padding[:left], padding[:top], padding[:right], padding[:bottom])
|
129
|
-
layout_params.setMargins(margin[:left],
|
130
|
-
margin[:top],
|
131
|
-
margin[:right],
|
132
|
-
margin[:bottom]) if layout_params.respond_to?(:setMargins)
|
133
|
-
@view.setLayoutParams(layout_params)
|
134
|
-
end
|
135
|
-
|
136
|
-
def layout_params
|
137
|
-
@layout_params ||= @view.getLayoutParams()
|
138
|
-
end
|
139
|
-
|
140
223
|
def convert_color(color)
|
141
224
|
return ColorFactory.from_hex(color) if color.is_a?(String)
|
142
225
|
color
|
data/lib/project/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bluepotion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- InfiniteRed
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-05-
|
11
|
+
date: 2015-05-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|