[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