motion-kit 0.17.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f5e920f2573c2ee36b557a87123717d8c4e8eede
4
- data.tar.gz: 1e0eb4395e42b78b11964ec15d8184187e41ea44
3
+ metadata.gz: 35471767d3b359768976d596f1c8c6e97231c02b
4
+ data.tar.gz: 0278f47cc49bf7aa77906ef06f143f36ea52faf0
5
5
  SHA512:
6
- metadata.gz: d4279eaf70ce6cf8c776df309df9d26f136aed4519f955d6e143f4e1338989a36957cd31e3e4a2929088668330e6e76ea24308ba4d9a740970a4692511801ef1
7
- data.tar.gz: 260ab1fef50781ce07bbdf3ac8bc875e69cc62ade984ccbc454ea54ea879396223cd8fbe5cc2f4890b3c347681f23285213e3fe47b488983c3f794a94b9e1487
6
+ metadata.gz: c460d3c67c1f3cb4fa50f074061ead9c34c2e9c9dacda427bd728f8f2f1e4ff354c33907b3a00c6e498d6378668e6c359776d20dd51ff881890d54874ea13fe5
7
+ data.tar.gz: fc2ec0c29a6244223a7ac889d98128e8dca3ec1b6a6d61bf350669b030eb0c48cbb2ff6640a72e2c121eb9b291ef09944acb02e4c8ab7b954a307b5e459a8aee
data/README.md CHANGED
@@ -717,10 +717,10 @@ One common use case is to use a child layout to create many instances of the
717
717
  same layout that repeat, for instance a "row" of content. In this case you will
718
718
  probably have many views with the same id, and you will not know the index of
719
719
  the container view that you want to add constraints to. In this situation, use
720
- the `nearest`, `previous` or `next` method to find a container, sibling, or
720
+ the `nearest`, `prev` or `next` method to find a container, sibling, or
721
721
  child view.
722
722
 
723
- `previous` and `next` are easy; they just search for a sibling view. No
723
+ `prev` and `next` are easy; they just search for a sibling view. No
724
724
  superviews or subviews are searched.
725
725
 
726
726
  `nearest` will search child views, siblings, and superviews, in that order. The
@@ -55,6 +55,7 @@ module MotionKit
55
55
  @constant = 0
56
56
  @priority = nil
57
57
  @compare_flag = false
58
+ @active = true
58
59
  end
59
60
 
60
61
  # like `equals`, but also sets `compare_flag` to true, so you can use ==,
@@ -270,6 +271,72 @@ module MotionKit
270
271
  end
271
272
  end
272
273
 
274
+ def active
275
+ @active
276
+ end
277
+
278
+ def active=(active)
279
+ if @resolved
280
+ if active
281
+ @resolved.each do |constraint|
282
+ common_ancestor.addConstraint(constraint)
283
+ end
284
+ else
285
+ @resolved.each do |constraint|
286
+ common_ancestor.removeConstraint(constraint)
287
+ end
288
+ end
289
+ else
290
+ @active = active
291
+ end
292
+ end
293
+
294
+ def activate
295
+ self.active = true
296
+ self
297
+ end
298
+
299
+ def deactivate
300
+ self.active = false
301
+ self
302
+ end
303
+
304
+ def common_ancestor
305
+ if @resolved
306
+ @common_ancestor ||= begin
307
+ constraint = @resolved[0]
308
+ base_view_class = MotionKit.base_view_class
309
+
310
+ if constraint.firstItem.is_a?(base_view_class) && constraint.secondItem.is_a?(base_view_class)
311
+ common_ancestor = nil
312
+
313
+ ancestors = [constraint.firstItem]
314
+ parent_view = constraint.firstItem
315
+ while parent_view = parent_view.superview
316
+ ancestors << parent_view
317
+ end
318
+
319
+ current_view = constraint.secondItem
320
+ while current_view
321
+ if ancestors.include? current_view
322
+ common_ancestor = current_view
323
+ break
324
+ end
325
+ current_view = current_view.superview
326
+ end
327
+
328
+ unless common_ancestor
329
+ raise NoCommonAncestorError.new("No common ancestors between #{constraint.firstItem} and #{constraint.secondItem}")
330
+ end
331
+ else
332
+ common_ancestor = constraint.firstItem
333
+ end
334
+
335
+ common_ancestor
336
+ end
337
+ end
338
+ end
339
+
273
340
  class << self
274
341
 
275
342
  def axis_lookup(axis)
@@ -23,34 +23,9 @@ module MotionKit
23
23
  def apply_all_constraints(layout, target)
24
24
  @constraints.map do |mk_constraint|
25
25
  mk_constraint.resolve_all(layout, target).map do |constraint|
26
- base_view_class = MotionKit.base_view_class
27
-
28
- if constraint.firstItem.is_a?(base_view_class) && constraint.secondItem.is_a?(base_view_class)
29
- common_ancestor = nil
30
-
31
- ancestors = [constraint.firstItem]
32
- parent_view = constraint.firstItem
33
- while parent_view = parent_view.superview
34
- ancestors << parent_view
35
- end
36
-
37
- current_view = constraint.secondItem
38
- while current_view
39
- if ancestors.include? current_view
40
- common_ancestor = current_view
41
- break
42
- end
43
- current_view = current_view.superview
44
- end
45
-
46
- unless common_ancestor
47
- raise NoCommonAncestorError.new("No common ancestors between #{constraint.firstItem} and #{constraint.secondItem}")
48
- end
49
- else
50
- common_ancestor = constraint.firstItem
26
+ if mk_constraint.active
27
+ mk_constraint.common_ancestor.addConstraint(constraint)
51
28
  end
52
-
53
- common_ancestor.addConstraint(constraint)
54
29
  constraint
55
30
  end
56
31
  end.flatten
@@ -0,0 +1,11 @@
1
+ class NSTabViewHelpers < MK::NSViewHelpers
2
+ targets NSTabView
3
+
4
+ def add_tab(identifier, label, &block)
5
+ tab_view_item = NSTabViewItem.alloc.initWithIdentifier(identifier)
6
+ tab_view_item.label = label
7
+ target.addTabViewItem(tab_view_item)
8
+ tab_view_item.view = NSView.alloc.initWithFrame(target.contentRect)
9
+ context(tab_view_item.view, &block)
10
+ end
11
+ end
@@ -39,7 +39,7 @@ module MotionKit
39
39
  when :fill_bottom
40
40
  value |= NSViewWidthSizable | NSViewMaxYMargin
41
41
  when :fill_width
42
- value |= NSViewMinYMargin | NSViewWidthSizable | NSViewMaxXMargin
42
+ value |= NSViewMinYMargin | NSViewWidthSizable | NSViewMaxYMargin
43
43
  when :fill_left
44
44
  value |= NSViewHeightSizable | NSViewMaxXMargin
45
45
  when :fill_right
@@ -197,7 +197,7 @@ module MotionKit
197
197
 
198
198
  def initial(&block)
199
199
  raise ArgumentError.new('Block required') unless block
200
- puts('this method is no longer necessary! all code that *isn\'t in a `reapply` block is now only applied during initial setup.')
200
+ puts('the `initial` method is no longer necessary! all code that *isn\'t in a `reapply` block is now only applied during initial setup.')
201
201
 
202
202
  if initial?
203
203
  yield
@@ -1,3 +1,3 @@
1
1
  module MotionKit
2
- VERSION = '0.17.0'
2
+ VERSION = '0.18.0'
3
3
  end
@@ -0,0 +1,25 @@
1
+ describe 'Constraints - activate/deactivate helpers' do
2
+
3
+ before do
4
+ @layout = MotionKit::Layout.new
5
+ @constraint = nil
6
+ @view = UIView.new
7
+ end
8
+
9
+ should 'should activate/deactivate constraints' do
10
+
11
+ @layout.context(@view) do
12
+ @layout.constraints do
13
+ @constraint = @layout.height(10)
14
+ end
15
+ end
16
+
17
+ @view.constraints.count.should == 1
18
+ @constraint.deactivate
19
+ @view.constraints.count.should == 0
20
+ @constraint.activate
21
+ @view.constraints.count.should == 1
22
+
23
+ end
24
+
25
+ end
@@ -0,0 +1,25 @@
1
+ describe 'Constraints - activate/deactivate helpers' do
2
+
3
+ before do
4
+ @layout = MotionKit::Layout.new
5
+ @constraint = nil
6
+ @view = NSView.new
7
+ end
8
+
9
+ should 'should activate/deactivate constraints' do
10
+
11
+ @layout.context(@view) do
12
+ @layout.constraints do
13
+ @constraint = @layout.height(10)
14
+ end
15
+ end
16
+
17
+ @view.constraints.count.should == 1
18
+ @constraint.deactivate
19
+ @view.constraints.count.should == 0
20
+ @constraint.activate
21
+ @view.constraints.count.should == 1
22
+
23
+ end
24
+
25
+ end
@@ -50,8 +50,8 @@ describe 'Custom Root Layouts' do
50
50
  it "should allow bare styles in layout when root is specified in initializer" do
51
51
  @subject = TestNoRootLayout.new(root: @view).build
52
52
  @subject.view.should == @view
53
- @subject.view.backgroundColor.should == UIColor.redColor
54
- @subject.view.subviews.first.should.be.kind_of?(UILabel)
53
+ @subject.view.backgroundColor.should == NSColor.redColor
54
+ @subject.view.subviews.first.should.be.kind_of?(NSTextField)
55
55
  end
56
56
 
57
57
  end
@@ -0,0 +1,27 @@
1
+ describe 'NSTabView helpers' do
2
+ class TestTabViewLayout < MK::Layout
3
+ def layout
4
+ add NSTabView, :tab_view do
5
+ add_tab "tab_identifier", "tab_label" do
6
+ wantsLayer true
7
+ backgroundColor NSColor.redColor
8
+ end
9
+ end
10
+ end
11
+ end
12
+
13
+ it 'should support `add_tab` method' do
14
+ @layout = TestTabViewLayout.new
15
+
16
+ view = NSView.alloc.initWithFrame([[0, 0], [500, 500]])
17
+ view.addSubview(@layout.view)
18
+
19
+ @tab_view = @layout.get(:tab_view)
20
+
21
+ @tab_view.numberOfTabViewItems.should == 1
22
+ @tab_view.tabViewItems.first.identifier.should == "tab_identifier"
23
+ @tab_view.tabViewItems.first.label.should == "tab_label"
24
+ @tab_view.tabViewItems.first.view.wantsLayer.should == true
25
+ @tab_view.tabViewItems.first.view.backgroundColor.should == NSColor.redColor
26
+ end
27
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motion-kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Colin T.A. Gray
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-12-10 00:00:00.000000000 Z
12
+ date: 2015-07-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: dbt
@@ -34,19 +34,7 @@ executables: []
34
34
  extensions: []
35
35
  extra_rdoc_files: []
36
36
  files:
37
- - lib/motion-kit/calculator/calculate.rb
38
- - lib/motion-kit/calculator/calculator.rb
39
- - lib/motion-kit/calculator/frame_calculator.rb
40
- - lib/motion-kit/calculator/origin_calculator.rb
41
- - lib/motion-kit/calculator/size_calculator.rb
42
- - lib/motion-kit/helpers/base_layout.rb
43
- - lib/motion-kit/helpers/base_layout_class_methods.rb
44
- - lib/motion-kit/helpers/parent.rb
45
- - lib/motion-kit/helpers/tree_layout.rb
46
- - lib/motion-kit/motion-kit.rb
47
- - lib/motion-kit/object.rb
48
- - lib/motion-kit/util.rb
49
- - lib/motion-kit/version.rb
37
+ - README.md
50
38
  - lib/motion-kit-cocoa/calculator/view_calculator.rb
51
39
  - lib/motion-kit-cocoa/cocoa_util.rb
52
40
  - lib/motion-kit-cocoa/constraints/constraint.rb
@@ -79,6 +67,7 @@ files:
79
67
  - lib/motion-kit-osx/helpers/nsmenuitem_extensions.rb
80
68
  - lib/motion-kit-osx/helpers/nstablecolumn_helpers.rb
81
69
  - lib/motion-kit-osx/helpers/nstableview_helpers.rb
70
+ - lib/motion-kit-osx/helpers/nstabview_helpers.rb
82
71
  - lib/motion-kit-osx/helpers/nsview_autoresizing_helpers.rb
83
72
  - lib/motion-kit-osx/helpers/nsview_constraints_helpers.rb
84
73
  - lib/motion-kit-osx/helpers/nsview_frame_helpers.rb
@@ -87,13 +76,26 @@ files:
87
76
  - lib/motion-kit-osx/helpers/nswindow_helpers.rb
88
77
  - lib/motion-kit-osx/osx_util.rb
89
78
  - lib/motion-kit.rb
90
- - README.md
79
+ - lib/motion-kit/calculator/calculate.rb
80
+ - lib/motion-kit/calculator/calculator.rb
81
+ - lib/motion-kit/calculator/frame_calculator.rb
82
+ - lib/motion-kit/calculator/origin_calculator.rb
83
+ - lib/motion-kit/calculator/size_calculator.rb
84
+ - lib/motion-kit/helpers/base_layout.rb
85
+ - lib/motion-kit/helpers/base_layout_class_methods.rb
86
+ - lib/motion-kit/helpers/parent.rb
87
+ - lib/motion-kit/helpers/tree_layout.rb
88
+ - lib/motion-kit/motion-kit.rb
89
+ - lib/motion-kit/object.rb
90
+ - lib/motion-kit/util.rb
91
+ - lib/motion-kit/version.rb
91
92
  - spec/ios/apply_styles_spec.rb
92
93
  - spec/ios/autoresizing_helper_spec.rb
93
94
  - spec/ios/calayer_spec.rb
94
95
  - spec/ios/calculate_spec.rb
95
96
  - spec/ios/calculator_spec.rb
96
97
  - spec/ios/child_layouts_spec.rb
98
+ - spec/ios/constraints_helpers/active_constraints_spec.rb
97
99
  - spec/ios/constraints_helpers/attribute_lookup_spec.rb
98
100
  - spec/ios/constraints_helpers/axis_lookup_spec.rb
99
101
  - spec/ios/constraints_helpers/center_constraints_spec.rb
@@ -134,6 +136,7 @@ files:
134
136
  - spec/ios/uitextfield_spec.rb
135
137
  - spec/ios/view_attr_spec.rb
136
138
  - spec/osx/autoresizing_helper_spec.rb
139
+ - spec/osx/constraints_helpers/active_constraints_spec.rb
137
140
  - spec/osx/constraints_helpers/orientation_lookup_spec.rb
138
141
  - spec/osx/constraints_helpers/simple_constraints_spec.rb
139
142
  - spec/osx/constraints_helpers/size_constraints_spec.rb
@@ -145,6 +148,7 @@ files:
145
148
  - spec/osx/menu_extensions_spec.rb
146
149
  - spec/osx/menu_layout_spec.rb
147
150
  - spec/osx/menu_spec.rb
151
+ - spec/osx/nstabview_helper_spec.rb
148
152
  - spec/osx/nsview_frame_helper_spec.rb
149
153
  - spec/osx/nswindow_frame_helper_spec.rb
150
154
  - spec/osx/root_menu_spec.rb
@@ -169,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
173
  version: '0'
170
174
  requirements: []
171
175
  rubyforge_project:
172
- rubygems_version: 2.0.3
176
+ rubygems_version: 2.4.5
173
177
  signing_key:
174
178
  specification_version: 4
175
179
  summary: The RubyMotion layout and styling gem.
@@ -180,6 +184,7 @@ test_files:
180
184
  - spec/ios/calculate_spec.rb
181
185
  - spec/ios/calculator_spec.rb
182
186
  - spec/ios/child_layouts_spec.rb
187
+ - spec/ios/constraints_helpers/active_constraints_spec.rb
183
188
  - spec/ios/constraints_helpers/attribute_lookup_spec.rb
184
189
  - spec/ios/constraints_helpers/axis_lookup_spec.rb
185
190
  - spec/ios/constraints_helpers/center_constraints_spec.rb
@@ -220,6 +225,7 @@ test_files:
220
225
  - spec/ios/uitextfield_spec.rb
221
226
  - spec/ios/view_attr_spec.rb
222
227
  - spec/osx/autoresizing_helper_spec.rb
228
+ - spec/osx/constraints_helpers/active_constraints_spec.rb
223
229
  - spec/osx/constraints_helpers/orientation_lookup_spec.rb
224
230
  - spec/osx/constraints_helpers/simple_constraints_spec.rb
225
231
  - spec/osx/constraints_helpers/size_constraints_spec.rb
@@ -231,6 +237,7 @@ test_files:
231
237
  - spec/osx/menu_extensions_spec.rb
232
238
  - spec/osx/menu_layout_spec.rb
233
239
  - spec/osx/menu_spec.rb
240
+ - spec/osx/nstabview_helper_spec.rb
234
241
  - spec/osx/nsview_frame_helper_spec.rb
235
242
  - spec/osx/nswindow_frame_helper_spec.rb
236
243
  - spec/osx/root_menu_spec.rb