[macruby-changes] [369] MacRuby/trunk/lib/hotcocoa

source_changes at macosforge.org source_changes at macosforge.org
Thu Jul 10 19:17:30 PDT 2008


Revision: 369
          http://trac.macosforge.org/projects/ruby/changeset/369
Author:   rich at infoether.com
Date:     2008-07-10 19:17:29 -0700 (Thu, 10 Jul 2008)
Log Message:
-----------
add module to support classes that want to be able to be laid out

Modified Paths:
--------------
    MacRuby/trunk/lib/hotcocoa/layout_view.rb
    MacRuby/trunk/lib/hotcocoa/mappings/view.rb

Modified: MacRuby/trunk/lib/hotcocoa/layout_view.rb
===================================================================
--- MacRuby/trunk/lib/hotcocoa/layout_view.rb	2008-07-11 01:37:46 UTC (rev 368)
+++ MacRuby/trunk/lib/hotcocoa/layout_view.rb	2008-07-11 02:17:29 UTC (rev 369)
@@ -1,4 +1,17 @@
 module HotCocoa
+  
+module LayoutManaged
+  
+  def layout=(options)
+    @layout = LayoutOptions.new(self, options)
+    @layout.update_layout_views!
+  end
+  
+  def layout
+    @layout
+  end
+  
+end
 
 class LayoutOptions
   
@@ -39,7 +52,7 @@
   #      :fill
   #        Will be filled to the maximum size.
   def initialize(view, options={})
-    @view           = view
+    @view = view
     @start          = options[:start]
     @expand         = options[:expand]
     @padding        = options[:padding]
@@ -48,10 +61,9 @@
     @top_padding    = options[:top_padding]     || @padding
     @bottom_padding = options[:bottom_padding]  || @padding
     @other          = options[:other]
-    update_layout_views!
     @defaults_view  = options[:defaults_view]
   end
-
+  
   def start=(value)
     return if value == @start
     @start = value
@@ -175,6 +187,11 @@
   def inspect
     "#<#{self.class} start=#{start?}, expand=#{expand?}, left_padding=#{left_padding}, right_padding=#{right_padding}, top_padding=#{top_padding}, bottom_padding=#{bottom_padding}, other=#{other.inspect}, view=#{view.inspect}>"
   end
+
+  def update_layout_views!
+    @view.superview.views_updated! if in_layout_view?
+    @defaults_view.views_updated! if @defaults_view
+  end
   
   private
   
@@ -182,10 +199,6 @@
       @view && @view.superview.kind_of?(LayoutView)
     end
 
-    def update_layout_views!
-      @view.superview.views_updated! if in_layout_view?
-      @defaults_view.views_updated! if @defaults_view
-    end
     
 end
 
@@ -255,7 +268,11 @@
   
   def addSubview(view)
     super
-    relayout! if view.respond_to?(:layout)
+    if view.respond_to?(:layout)
+      relayout!
+    else
+      raise ArgumentError, "view #{view} does not support the #layout method"
+    end
   end
   
   def views_updated!
@@ -264,7 +281,7 @@
 
   def remove_view(view)
     unless subviews.include?(view)
-      raise ArgumentError, "view #{view} not packed"
+      raise ArgumentError, "view #{view} not a subview of this LayoutView"
     end
     view.removeFromSuperview
     relayout!

Modified: MacRuby/trunk/lib/hotcocoa/mappings/view.rb
===================================================================
--- MacRuby/trunk/lib/hotcocoa/mappings/view.rb	2008-07-11 01:37:46 UTC (rev 368)
+++ MacRuby/trunk/lib/hotcocoa/mappings/view.rb	2008-07-11 02:17:29 UTC (rev 369)
@@ -1,3 +1,4 @@
+
 HotCocoa::Mappings.map :view => :NSView do
 
   constant :auto_resize, {
@@ -28,16 +29,8 @@
     end
     
     def layout=(options)
-      if @layout
-        if options.nil?
-          superview.views_updated! if superview.kind_of?(LayoutView)
-          @layout = nil
-        else
-          @layout = LayoutOptions.new(self, options)
-        end
-      else
-        @layout = LayoutOptions.new(self, options)
-      end
+      @layout = LayoutOptions.new(self, options)
+      @layout.update_layout_views!
     end
     
     def layout
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080710/c5b29e43/attachment.html 


More information about the macruby-changes mailing list