motion-kit 0.9.6 → 0.10.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 +75 -15
 - data/lib/motion-kit-cocoa/layouts/sugarcube_compat.rb +10 -0
 - data/lib/motion-kit-osx/layouts/nswindow_frame.rb +1 -0
 - data/lib/motion-kit/layouts/base_layout.rb +6 -1
 - data/lib/motion-kit/layouts/tree_layout.rb +12 -2
 - data/lib/motion-kit/version.rb +1 -1
 - data/spec/ios/custom_root_layout_spec.rb +36 -0
 - data/spec/osx/custom_root_layout_spec.rb +36 -0
 - metadata +6 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 525e32728b35f92e5b149c067887539f4e1fd493
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: e5170c04a01756a4626c943448ab80e169884b19
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 2088f89d374db7d138d4a878ecc88fb59f819485e6aae7cf6a2c01037796cbf4225b0b00db55df2e255c82ec434670016c3babbb5521e73498bafd2c1d2a2d84
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: a7f7d63d194d14835d6d357f64cfb9ad33217f8d060a9d9fc401ea07e1b29c31a8d069e497bea7cbab3d257c772721a3e31e221c0358da8949283fc366647a34
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -11,12 +11,11 @@ 
     | 
|
| 
       11 
11 
     | 
    
         
             
               - [Frame geometry][readmore-frames]
         
     | 
| 
       12 
12 
     | 
    
         
             
               - [CoreAnimation][readmore-coreanimation]
         
     | 
| 
       13 
13 
     | 
    
         
             
               - [NSMenu/NSMenuItem][readmore-nsmenu]
         
     | 
| 
       14 
     | 
    
         
            -
             
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
       19 
     | 
    
         
            -
            7. Written by [the authors][authors] of [ProMotion][] and [Teacup][]
         
     | 
| 
      
 14 
     | 
    
         
            +
            4. Easily extendable to support custom, mini-DSLs
         
     | 
| 
      
 15 
     | 
    
         
            +
            5. Non-polluting
         
     | 
| 
      
 16 
     | 
    
         
            +
            6. ProMotion/RMQ/SugarCube-compatible (kind of goes hand-in-hand with being non-polluting)
         
     | 
| 
      
 17 
     | 
    
         
            +
            7. Styles and layouts are "just code" (not hash-based like in Teacup)
         
     | 
| 
      
 18 
     | 
    
         
            +
            8. Written by [the authors][authors] of [ProMotion][] and [Teacup][]
         
     | 
| 
       20 
19 
     | 
    
         | 
| 
       21 
20 
     | 
    
         
             
            [authors]: CONTRIBUTORS.md
         
     | 
| 
       22 
21 
     | 
    
         
             
            [Colin]: https://github.com/colinta
         
     | 
| 
         @@ -24,14 +23,14 @@ 
     | 
|
| 
       24 
23 
     | 
    
         
             
            [ProMotion]: https://github.com/clearsightstudio/ProMotion
         
     | 
| 
       25 
24 
     | 
    
         
             
            [RMQ]: https://github.com/infinitered/rmq
         
     | 
| 
       26 
25 
     | 
    
         
             
            [Teacup]: https://github.com/rubymotion/teacup
         
     | 
| 
      
 26 
     | 
    
         
            +
            [SweetKit]: https://github.com/rubymotion/sweet-kit
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
      
 28 
     | 
    
         
            +
            [READMORE]: https://github.com/rubymotion/motion-kit/blob/master/READMORE.md
         
     | 
| 
       28 
29 
     | 
    
         
             
            [readmore-uikit]:          https://github.com/rubymotion/motion-kit/blob/master/READMORE.md#uikit
         
     | 
| 
       29 
30 
     | 
    
         
             
            [readmore-applicationkit]: https://github.com/rubymotion/motion-kit/blob/master/READMORE.md#applicationkit
         
     | 
| 
       30 
     | 
    
         
            -
            [readmore-joybox]:         https://github.com/rubymotion/motion-kit/blob/master/READMORE.md#joybox
         
     | 
| 
       31 
     | 
    
         
            -
            [readmore-spritekit]:      https://github.com/rubymotion/motion-kit/blob/master/READMORE.md#spritekit
         
     | 
| 
       32 
31 
     | 
    
         
             
            [readmore-coreanimation]:  https://github.com/rubymotion/motion-kit/blob/master/READMORE.md#coreanimation
         
     | 
| 
       33 
     | 
    
         
            -
            [readmore-frames]: 
     | 
| 
       34 
     | 
    
         
            -
            [readmore-autolayout]: 
     | 
| 
      
 32 
     | 
    
         
            +
            [readmore-frames]:         https://github.com/rubymotion/motion-kit/blob/master/READMORE.md#frames
         
     | 
| 
      
 33 
     | 
    
         
            +
            [readmore-autolayout]:     https://github.com/rubymotion/motion-kit/blob/master/READMORE.md#autolayout
         
     | 
| 
       35 
34 
     | 
    
         
             
            [readmore-nsmenu]:         https://github.com/rubymotion/motion-kit/blob/master/READMORE.md#nsmenu
         
     | 
| 
       36 
35 
     | 
    
         | 
| 
       37 
36 
     | 
    
         | 
| 
         @@ -370,6 +369,16 @@ class CustomLayout < MK::UIViewLayout 
     | 
|
| 
       370 
369 
     | 
    
         
             
            end
         
     | 
| 
       371 
370 
     | 
    
         
             
            ```
         
     | 
| 
       372 
371 
     | 
    
         | 
| 
      
 372 
     | 
    
         
            +
            ### Even more information...
         
     | 
| 
      
 373 
     | 
    
         
            +
             
     | 
| 
      
 374 
     | 
    
         
            +
            ...is in the [READMORE][] document.  I re-explain some of these topics, go into
         
     | 
| 
      
 375 
     | 
    
         
            +
            some more detail, that kinda thing.  Basically an overflow document for topics I
         
     | 
| 
      
 376 
     | 
    
         
            +
            don't want to stuff into the README.
         
     | 
| 
      
 377 
     | 
    
         
            +
             
     | 
| 
      
 378 
     | 
    
         
            +
             
     | 
| 
      
 379 
     | 
    
         
            +
            ## MotionKit extensions
         
     | 
| 
      
 380 
     | 
    
         
            +
             
     | 
| 
      
 381 
     | 
    
         
            +
            These are all built-in, unless otherwise specified.
         
     | 
| 
       373 
382 
     | 
    
         | 
| 
       374 
383 
     | 
    
         
             
            ### Frames
         
     | 
| 
       375 
384 
     | 
    
         | 
| 
         @@ -641,10 +650,21 @@ class MainController < UIViewController 
     | 
|
| 
       641 
650 
     | 
    
         
             
            end
         
     | 
| 
       642 
651 
     | 
    
         
             
            ```
         
     | 
| 
       643 
652 
     | 
    
         | 
| 
      
 653 
     | 
    
         
            +
            ### MotionKit::Events
         
     | 
| 
      
 654 
     | 
    
         
            +
             
     | 
| 
      
 655 
     | 
    
         
            +
                gem install motion-kit-events
         
     | 
| 
      
 656 
     | 
    
         
            +
             
     | 
| 
      
 657 
     | 
    
         
            +
            Adds `on :event` and `trigger :event` methods to `MK::Layout` objects.  These
         
     | 
| 
      
 658 
     | 
    
         
            +
            can be used to send events from the Layout to your controller, further
         
     | 
| 
      
 659 
     | 
    
         
            +
            simplifying the controller code (and usually making it more testable).  See the
         
     | 
| 
      
 660 
     | 
    
         
            +
            [MotionKit::Events documentation][motion-kit-events] for more information.
         
     | 
| 
      
 661 
     | 
    
         
            +
             
     | 
| 
      
 662 
     | 
    
         
            +
            [motion-kit-events]: https://github.com/rubymotion/motion-kit-events
         
     | 
| 
      
 663 
     | 
    
         
            +
             
     | 
| 
       644 
664 
     | 
    
         | 
| 
       645 
     | 
    
         
            -
             
     | 
| 
      
 665 
     | 
    
         
            +
            ## Some handy tricks and Features
         
     | 
| 
       646 
666 
     | 
    
         | 
| 
       647 
     | 
    
         
            -
             
     | 
| 
      
 667 
     | 
    
         
            +
            ### Orientation specific styles
         
     | 
| 
       648 
668 
     | 
    
         | 
| 
       649 
669 
     | 
    
         
             
            These are available on iOS.
         
     | 
| 
       650 
670 
     | 
    
         | 
| 
         @@ -659,7 +679,7 @@ add UIView, :container do 
     | 
|
| 
       659 
679 
     | 
    
         
             
            end
         
     | 
| 
       660 
680 
     | 
    
         
             
            ```
         
     | 
| 
       661 
681 
     | 
    
         | 
| 
       662 
     | 
    
         
            -
             
     | 
| 
      
 682 
     | 
    
         
            +
            ### Update views via 'initial', 'reapply', and 'deferred'
         
     | 
| 
       663 
683 
     | 
    
         | 
| 
       664 
684 
     | 
    
         
             
            If you call 'layout.reapply!', your style methods will be called again (but
         
     | 
| 
       665 
685 
     | 
    
         
             
            NOT the `layout` method). You very well might want to control what methods get
         
     | 
| 
         @@ -698,7 +718,7 @@ end 
     | 
|
| 
       698 
718 
     | 
    
         
             
            ```
         
     | 
| 
       699 
719 
     | 
    
         | 
| 
       700 
720 
     | 
    
         | 
| 
       701 
     | 
    
         
            -
             
     | 
| 
      
 721 
     | 
    
         
            +
            ### Apply styles via module
         
     | 
| 
       702 
722 
     | 
    
         | 
| 
       703 
723 
     | 
    
         
             
            ```ruby
         
     | 
| 
       704 
724 
     | 
    
         
             
            module AppStyles
         
     | 
| 
         @@ -727,8 +747,25 @@ class LoginLayout < MotionKit::Layout 
     | 
|
| 
       727 
747 
     | 
    
         
             
            end
         
     | 
| 
       728 
748 
     | 
    
         
             
            ```
         
     | 
| 
       729 
749 
     | 
    
         | 
| 
      
 750 
     | 
    
         
            +
            ### Using SweetKit
         
     | 
| 
      
 751 
     | 
    
         
            +
             
     | 
| 
      
 752 
     | 
    
         
            +
            The [SweetKit][] gem combines MotionKit and SugarCube.  The helpers it provides
         
     | 
| 
      
 753 
     | 
    
         
            +
            allow for even more expressiveness, for instance:
         
     | 
| 
      
 754 
     | 
    
         
            +
             
     | 
| 
      
 755 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 756 
     | 
    
         
            +
            add UITextField do
         
     | 
| 
      
 757 
     | 
    
         
            +
              return_key_type :email
         
     | 
| 
      
 758 
     | 
    
         
            +
              text_alignment :right
         
     | 
| 
      
 759 
     | 
    
         
            +
            end
         
     | 
| 
      
 760 
     | 
    
         
            +
            ```
         
     | 
| 
      
 761 
     | 
    
         
            +
             
     | 
| 
      
 762 
     | 
    
         
            +
            The OS X helpers are really nice, because it tries to hide most of the
         
     | 
| 
      
 763 
     | 
    
         
            +
            annoying subtletees of the NSCell/NSControl dichotomy.
         
     | 
| 
      
 764 
     | 
    
         
            +
             
     | 
| 
      
 765 
     | 
    
         
            +
                gem install sweet-kit
         
     | 
| 
      
 766 
     | 
    
         
            +
             
     | 
| 
       730 
767 
     | 
    
         | 
| 
       731 
     | 
    
         
            -
             
     | 
| 
      
 768 
     | 
    
         
            +
            ### Setting a custom root view
         
     | 
| 
       732 
769 
     | 
    
         | 
| 
       733 
770 
     | 
    
         
             
            If you need to use a custom root view, you can use the `root` method from within
         
     | 
| 
       734 
771 
     | 
    
         
             
            the `layout` method.  When you create or assign the root view this way, you must
         
     | 
| 
         @@ -742,6 +779,29 @@ def layout 
     | 
|
| 
       742 
779 
     | 
    
         
             
            end
         
     | 
| 
       743 
780 
     | 
    
         
             
            ```
         
     | 
| 
       744 
781 
     | 
    
         | 
| 
      
 782 
     | 
    
         
            +
            You can also pass in a root view to your layout, like this:
         
     | 
| 
      
 783 
     | 
    
         
            +
             
     | 
| 
      
 784 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 785 
     | 
    
         
            +
            def loadView
         
     | 
| 
      
 786 
     | 
    
         
            +
              @layout = MyLayout.new(root: self.view)
         
     | 
| 
      
 787 
     | 
    
         
            +
            end
         
     | 
| 
      
 788 
     | 
    
         
            +
            ```
         
     | 
| 
      
 789 
     | 
    
         
            +
             
     | 
| 
      
 790 
     | 
    
         
            +
            In this case, if you want to style the root view, just refer to it in your layout:
         
     | 
| 
      
 791 
     | 
    
         
            +
             
     | 
| 
      
 792 
     | 
    
         
            +
            ```ruby
         
     | 
| 
      
 793 
     | 
    
         
            +
            def layout
         
     | 
| 
      
 794 
     | 
    
         
            +
              root :my_root_view do
         
     | 
| 
      
 795 
     | 
    
         
            +
                # ...
         
     | 
| 
      
 796 
     | 
    
         
            +
              end
         
     | 
| 
      
 797 
     | 
    
         
            +
            end
         
     | 
| 
      
 798 
     | 
    
         
            +
             
     | 
| 
      
 799 
     | 
    
         
            +
            def my_root_view_style
         
     | 
| 
      
 800 
     | 
    
         
            +
              background_color UIColor.grayColor
         
     | 
| 
      
 801 
     | 
    
         
            +
            end
         
     | 
| 
      
 802 
     | 
    
         
            +
            ```
         
     | 
| 
      
 803 
     | 
    
         
            +
             
     | 
| 
      
 804 
     | 
    
         
            +
            This is especially useful with collection views, table views, and table cells.
         
     | 
| 
       745 
805 
     | 
    
         | 
| 
       746 
806 
     | 
    
         
             
            # Contributing
         
     | 
| 
       747 
807 
     | 
    
         | 
| 
         @@ -5,14 +5,24 @@ 
     | 
|
| 
       5 
5 
     | 
    
         
             
            module MotionKit
         
     | 
| 
       6 
6 
     | 
    
         
             
              class BaseLayout
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
      
 8 
     | 
    
         
            +
                delegate_method_fix :adjust
         
     | 
| 
       8 
9 
     | 
    
         
             
                delegate_method_fix :frame
         
     | 
| 
       9 
10 
     | 
    
         
             
                delegate_method_fix :left
         
     | 
| 
       10 
11 
     | 
    
         
             
                delegate_method_fix :right
         
     | 
| 
       11 
12 
     | 
    
         
             
                delegate_method_fix :up
         
     | 
| 
       12 
13 
     | 
    
         
             
                delegate_method_fix :down
         
     | 
| 
       13 
14 
     | 
    
         
             
                delegate_method_fix :origin
         
     | 
| 
      
 15 
     | 
    
         
            +
                delegate_method_fix :thinner
         
     | 
| 
      
 16 
     | 
    
         
            +
                delegate_method_fix :wider
         
     | 
| 
      
 17 
     | 
    
         
            +
                delegate_method_fix :shorter
         
     | 
| 
      
 18 
     | 
    
         
            +
                delegate_method_fix :taller
         
     | 
| 
       14 
19 
     | 
    
         
             
                delegate_method_fix :size
         
     | 
| 
       15 
20 
     | 
    
         
             
                delegate_method_fix :center
         
     | 
| 
      
 21 
     | 
    
         
            +
                delegate_method_fix :shadow
         
     | 
| 
      
 22 
     | 
    
         
            +
                delegate_method_fix :tree
         
     | 
| 
      
 23 
     | 
    
         
            +
                delegate_method_fix :root
         
     | 
| 
      
 24 
     | 
    
         
            +
                delegate_method_fix :restore
         
     | 
| 
      
 25 
     | 
    
         
            +
                delegate_method_fix :blink
         
     | 
| 
       16 
26 
     | 
    
         | 
| 
       17 
27 
     | 
    
         
             
              end
         
     | 
| 
       18 
28 
     | 
    
         
             
            end
         
     | 
| 
         @@ -16,13 +16,18 @@ module MotionKit 
     | 
|
| 
       16 
16 
     | 
    
         | 
| 
       17 
17 
     | 
    
         
             
                attr :parent
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
                def initialize
         
     | 
| 
      
 19 
     | 
    
         
            +
                def initialize(args={})
         
     | 
| 
       20 
20 
     | 
    
         
             
                  # @layout is the object we look in for style methods
         
     | 
| 
       21 
21 
     | 
    
         
             
                  @layout = self
         
     | 
| 
       22 
22 
     | 
    
         
             
                  # the Layout object that implements custom style methods. Leave this as nil
         
     | 
| 
       23 
23 
     | 
    
         
             
                  # in the initializer.
         
     | 
| 
       24 
24 
     | 
    
         
             
                  @layout_delegate = nil
         
     | 
| 
       25 
25 
     | 
    
         
             
                  @layout_state = :initial
         
     | 
| 
      
 26 
     | 
    
         
            +
                  # You can set a root view by using .new(root: some_view)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  if args[:root]
         
     | 
| 
      
 28 
     | 
    
         
            +
                    @preset_root = args[:root]
         
     | 
| 
      
 29 
     | 
    
         
            +
                    view # Prebuild the view
         
     | 
| 
      
 30 
     | 
    
         
            +
                  end
         
     | 
| 
       26 
31 
     | 
    
         
             
                end
         
     | 
| 
       27 
32 
     | 
    
         | 
| 
       28 
33 
     | 
    
         
             
                def set_layout(layout)
         
     | 
| 
         @@ -48,7 +48,7 @@ module MotionKit 
     | 
|
| 
       48 
48 
     | 
    
         | 
| 
       49 
49 
     | 
    
         
             
                end
         
     | 
| 
       50 
50 
     | 
    
         | 
| 
       51 
     | 
    
         
            -
                # The  
     | 
| 
      
 51 
     | 
    
         
            +
                # The main view.  This method builds the layout and returns the root view.
         
     | 
| 
       52 
52 
     | 
    
         
             
                def view
         
     | 
| 
       53 
53 
     | 
    
         
             
                  if @layout != self
         
     | 
| 
       54 
54 
     | 
    
         
             
                    return @layout.view
         
     | 
| 
         @@ -77,7 +77,11 @@ module MotionKit 
     | 
|
| 
       77 
77 
     | 
    
         
             
                  if element.is_a?(Symbol)
         
     | 
| 
       78 
78 
     | 
    
         
             
                    element_id = element
         
     | 
| 
       79 
79 
     | 
    
         
             
                    # See note below about why we don't need to `apply(:default_root)`
         
     | 
| 
       80 
     | 
    
         
            -
                    element = default_root
         
     | 
| 
      
 80 
     | 
    
         
            +
                    element = preset_root || default_root
         
     | 
| 
      
 81 
     | 
    
         
            +
                  elsif @preset_root
         
     | 
| 
      
 82 
     | 
    
         
            +
                    # You're trying to make two roots, one at initialization
         
     | 
| 
      
 83 
     | 
    
         
            +
                    # and one in your layout itself.
         
     | 
| 
      
 84 
     | 
    
         
            +
                    raise ContextConflictError.new("Already created the root view")
         
     | 
| 
       81 
85 
     | 
    
         
             
                  end
         
     | 
| 
       82 
86 
     | 
    
         | 
| 
       83 
87 
     | 
    
         
             
                  @view = initialize_view(element)
         
     | 
| 
         @@ -268,6 +272,12 @@ module MotionKit 
     | 
|
| 
       268 
272 
     | 
    
         | 
| 
       269 
273 
     | 
    
         
             
              protected
         
     | 
| 
       270 
274 
     | 
    
         | 
| 
      
 275 
     | 
    
         
            +
                def preset_root
         
     | 
| 
      
 276 
     | 
    
         
            +
                  # Set in the initializer
         
     | 
| 
      
 277 
     | 
    
         
            +
                  # TreeLayout.new(root: some_view)
         
     | 
| 
      
 278 
     | 
    
         
            +
                  @preset_root
         
     | 
| 
      
 279 
     | 
    
         
            +
                end
         
     | 
| 
      
 280 
     | 
    
         
            +
             
     | 
| 
       271 
281 
     | 
    
         
             
                # This method builds the layout and returns the root view.
         
     | 
| 
       272 
282 
     | 
    
         
             
                def build_view
         
     | 
| 
       273 
283 
     | 
    
         
             
                  # Only in the 'layout' method will we allow default container to be
         
     | 
    
        data/lib/motion-kit/version.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,36 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            describe MotionKit::Layout do
         
     | 
| 
      
 2 
     | 
    
         
            +
              before do
         
     | 
| 
      
 3 
     | 
    
         
            +
                @view = UIView.new
         
     | 
| 
      
 4 
     | 
    
         
            +
                @subject = TestCustomRootLayout.new(root: @view)
         
     | 
| 
      
 5 
     | 
    
         
            +
              end
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              it "should set the root view to the @view instance" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                @subject.view.should == @view
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              it "should still create subviews" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                @subject.view.subviews.first.should.be.kind_of UIButton
         
     | 
| 
      
 13 
     | 
    
         
            +
                @subject.view.subviews.first.subviews.first.should.be.kind_of UILabel
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              it "should call style method" do
         
     | 
| 
      
 17 
     | 
    
         
            +
                @subject.view.backgroundColor.should == UIColor.blueColor
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              it "should raise exception if you try to specify a root inside the layout too" do
         
     | 
| 
      
 21 
     | 
    
         
            +
                -> do
         
     | 
| 
      
 22 
     | 
    
         
            +
                  subject = TestCustomDuplicateRootLayout.new(root: @view)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  subject.view
         
     | 
| 
      
 24 
     | 
    
         
            +
                end.should.raise(MotionKit::ContextConflictError)
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              it "should allow multiple nested layouts" do
         
     | 
| 
      
 28 
     | 
    
         
            +
                @subject = TestMultipleNestedLayout.new
         
     | 
| 
      
 29 
     | 
    
         
            +
                @subject.view.backgroundColor.should == UIColor.purpleColor
         
     | 
| 
      
 30 
     | 
    
         
            +
                @subject.view.subviews.first.should.be.kind_of TestNestedView
         
     | 
| 
      
 31 
     | 
    
         
            +
                @subject.view.subviews.first.backgroundColor.should == UIColor.yellowColor
         
     | 
| 
      
 32 
     | 
    
         
            +
                @subject.view.subviews.first.subviews.first.should.be.kind_of UIButton
         
     | 
| 
      
 33 
     | 
    
         
            +
                @subject.view.subviews.first.subviews.first.backgroundColor.should == UIColor.blackColor
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,36 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            describe MotionKit::Layout do
         
     | 
| 
      
 2 
     | 
    
         
            +
              before do
         
     | 
| 
      
 3 
     | 
    
         
            +
                @view = NSView.new
         
     | 
| 
      
 4 
     | 
    
         
            +
                @subject = TestCustomRootLayout.new(root: @view)
         
     | 
| 
      
 5 
     | 
    
         
            +
              end
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              it "should set the root view to the @view instance" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                @subject.view.should == @view
         
     | 
| 
      
 9 
     | 
    
         
            +
              end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              it "should still create subviews" do
         
     | 
| 
      
 12 
     | 
    
         
            +
                @subject.view.subviews.first.should.be.kind_of NSButton
         
     | 
| 
      
 13 
     | 
    
         
            +
                @subject.view.subviews.first.subviews.first.should.be.kind_of NSTextField
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              it "should call style method" do
         
     | 
| 
      
 17 
     | 
    
         
            +
                @subject.view.backgroundColor.should == NSColor.blueColor
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              it "should raise exception if you try to specify a root inside the layout too" do
         
     | 
| 
      
 21 
     | 
    
         
            +
                -> do
         
     | 
| 
      
 22 
     | 
    
         
            +
                  subject = TestCustomDuplicateRootLayout.new(root: @view)
         
     | 
| 
      
 23 
     | 
    
         
            +
                  subject.view
         
     | 
| 
      
 24 
     | 
    
         
            +
                end.should.raise(MotionKit::ContextConflictError)
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              it "should allow multiple nested layouts" do
         
     | 
| 
      
 28 
     | 
    
         
            +
                @subject = TestMultipleNestedLayout.new
         
     | 
| 
      
 29 
     | 
    
         
            +
                @subject.view.backgroundColor.should == NSColor.purpleColor
         
     | 
| 
      
 30 
     | 
    
         
            +
                @subject.view.subviews.first.should.be.kind_of TestNestedView
         
     | 
| 
      
 31 
     | 
    
         
            +
                @subject.view.subviews.first.backgroundColor.should == NSColor.yellowColor
         
     | 
| 
      
 32 
     | 
    
         
            +
                @subject.view.subviews.first.subviews.first.should.be.kind_of NSButton
         
     | 
| 
      
 33 
     | 
    
         
            +
                @subject.view.subviews.first.subviews.first.backgroundColor.should == NSColor.blackColor
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            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. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.10.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-05- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2014-05-20 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: dbt
         
     | 
| 
         @@ -95,6 +95,7 @@ files: 
     | 
|
| 
       95 
95 
     | 
    
         
             
            - spec/ios/constraints_helpers/view_lookup_constraints_spec.rb
         
     | 
| 
       96 
96 
     | 
    
         
             
            - spec/ios/create_layout_spec.rb
         
     | 
| 
       97 
97 
     | 
    
         
             
            - spec/ios/custom_layout_spec.rb
         
     | 
| 
      
 98 
     | 
    
         
            +
            - spec/ios/custom_root_layout_spec.rb
         
     | 
| 
       98 
99 
     | 
    
         
             
            - spec/ios/deferred_spec.rb
         
     | 
| 
       99 
100 
     | 
    
         
             
            - spec/ios/device_helpers_spec.rb
         
     | 
| 
       100 
101 
     | 
    
         
             
            - spec/ios/frame_helper_spec.rb
         
     | 
| 
         @@ -121,6 +122,7 @@ files: 
     | 
|
| 
       121 
122 
     | 
    
         
             
            - spec/osx/constraints_helpers/size_constraints_spec.rb
         
     | 
| 
       122 
123 
     | 
    
         
             
            - spec/osx/create_menu_spec.rb
         
     | 
| 
       123 
124 
     | 
    
         
             
            - spec/osx/create_via_extensions_spec.rb
         
     | 
| 
      
 125 
     | 
    
         
            +
            - spec/osx/custom_root_layout_spec.rb
         
     | 
| 
       124 
126 
     | 
    
         
             
            - spec/osx/deferred_spec.rb
         
     | 
| 
       125 
127 
     | 
    
         
             
            - spec/osx/frame_helper_spec.rb
         
     | 
| 
       126 
128 
     | 
    
         
             
            - spec/osx/menu_extensions_spec.rb
         
     | 
| 
         @@ -169,6 +171,7 @@ test_files: 
     | 
|
| 
       169 
171 
     | 
    
         
             
            - spec/ios/constraints_helpers/view_lookup_constraints_spec.rb
         
     | 
| 
       170 
172 
     | 
    
         
             
            - spec/ios/create_layout_spec.rb
         
     | 
| 
       171 
173 
     | 
    
         
             
            - spec/ios/custom_layout_spec.rb
         
     | 
| 
      
 174 
     | 
    
         
            +
            - spec/ios/custom_root_layout_spec.rb
         
     | 
| 
       172 
175 
     | 
    
         
             
            - spec/ios/deferred_spec.rb
         
     | 
| 
       173 
176 
     | 
    
         
             
            - spec/ios/device_helpers_spec.rb
         
     | 
| 
       174 
177 
     | 
    
         
             
            - spec/ios/frame_helper_spec.rb
         
     | 
| 
         @@ -195,6 +198,7 @@ test_files: 
     | 
|
| 
       195 
198 
     | 
    
         
             
            - spec/osx/constraints_helpers/size_constraints_spec.rb
         
     | 
| 
       196 
199 
     | 
    
         
             
            - spec/osx/create_menu_spec.rb
         
     | 
| 
       197 
200 
     | 
    
         
             
            - spec/osx/create_via_extensions_spec.rb
         
     | 
| 
      
 201 
     | 
    
         
            +
            - spec/osx/custom_root_layout_spec.rb
         
     | 
| 
       198 
202 
     | 
    
         
             
            - spec/osx/deferred_spec.rb
         
     | 
| 
       199 
203 
     | 
    
         
             
            - spec/osx/frame_helper_spec.rb
         
     | 
| 
       200 
204 
     | 
    
         
             
            - spec/osx/menu_extensions_spec.rb
         
     |