[macruby-changes] [601] MacRuby/trunk/lib/hotcocoa
source_changes at macosforge.org
source_changes at macosforge.org
Wed Sep 17 15:33:35 PDT 2008
Revision: 601
http://trac.macosforge.org/projects/ruby/changeset/601
Author: lsansonetti at apple.com
Date: 2008-09-17 15:33:35 -0700 (Wed, 17 Sep 2008)
Log Message:
-----------
adding preliminary mappings for toolbar and text view
Modified Paths:
--------------
MacRuby/trunk/lib/hotcocoa/mappings/control.rb
MacRuby/trunk/lib/hotcocoa/mappings.rb
Added Paths:
-----------
MacRuby/trunk/lib/hotcocoa/mappings/text_view.rb
MacRuby/trunk/lib/hotcocoa/mappings/toolbar.rb
MacRuby/trunk/lib/hotcocoa/mappings/toolbar_item.rb
Modified: MacRuby/trunk/lib/hotcocoa/mappings/control.rb
===================================================================
--- MacRuby/trunk/lib/hotcocoa/mappings/control.rb 2008-09-16 01:05:31 UTC (rev 600)
+++ MacRuby/trunk/lib/hotcocoa/mappings/control.rb 2008-09-17 22:33:35 UTC (rev 601)
@@ -1,22 +1,9 @@
HotCocoa::Mappings.map :control => :NSControl do
custom_methods do
+
+ include TargetActionConvenience
- def on_action=(behavior)
- object = Object.new
- object.instance_variable_set("@behavior", behavior)
- def object.perform_action(sender)
- @behavior.call(sender)
- end
- setTarget(object)
- setAction("perform_action:")
- end
-
- def on_action(&behavior)
- self.on_action = behavior
- self
- end
-
def text=(text)
setStringValue(text)
end
Added: MacRuby/trunk/lib/hotcocoa/mappings/text_view.rb
===================================================================
--- MacRuby/trunk/lib/hotcocoa/mappings/text_view.rb (rev 0)
+++ MacRuby/trunk/lib/hotcocoa/mappings/text_view.rb 2008-09-17 22:33:35 UTC (rev 601)
@@ -0,0 +1,9 @@
+HotCocoa::Mappings.map :text_view => :NSTextView do
+
+ defaults :frame => [0,0,0,0]
+
+ def init_with_options(text_view, options)
+ text_view.initWithFrame options.delete(:frame)
+ end
+
+end
Added: MacRuby/trunk/lib/hotcocoa/mappings/toolbar.rb
===================================================================
--- MacRuby/trunk/lib/hotcocoa/mappings/toolbar.rb (rev 0)
+++ MacRuby/trunk/lib/hotcocoa/mappings/toolbar.rb 2008-09-17 22:33:35 UTC (rev 601)
@@ -0,0 +1,59 @@
+HotCocoa::Mappings.map :toolbar => :NSToolbar do
+
+ defaults :identifier => 'DefaultToolbarIdentifier',
+ :allowed => [:separator, :space, :flexible_space, :show_colors,
+ :show_fonts, :customize, :print],
+ :default => [],
+ :allow_customization => true
+
+ def init_with_options(toolbar, options)
+ toolbar.initWithIdentifier options.delete(:identifier)
+
+ allowed = options.delete(:allowed).dup
+ default = options.delete(:default).dup
+
+ ary = default.select { |x| x.is_a?(NSToolbarItem) }
+ default -= ary
+ custom_items = {}
+ ary.each { |x| custom_items[x.itemIdentifier] = x }
+ allowed.concat(custom_items.keys)
+ default.concat(custom_items.keys)
+
+ [allowed, default].each do |a|
+ a.map! do |i|
+ case i
+ when :separator
+ NSToolbarSeparatorItemIdentifier
+ when :space
+ NSToolbarSpaceItemIdentifier
+ when :flexible_space
+ NSToolbarFlexibleSpaceItemIdentifier
+ when :show_colors
+ NSToolbarShowColorsItemIdentifier
+ when :show_fonts
+ NSToolbarShowFontsItemIdentifier
+ when :customize
+ NSToolbarCustomizeToolbarItemIdentifier
+ when :print
+ NSToolbarPrintItemIdentifier
+ else
+ i
+ end
+ end
+ end
+ o = Object.new
+ o.instance_variable_set(:@allowed, allowed)
+ o.instance_variable_set(:@default, default)
+ o.instance_variable_set(:@custom_items, custom_items)
+ def o.toolbarAllowedItemIdentifiers(sender); @allowed; end
+ def o.toolbarDefaultItemIdentifiers(sender); @default; end
+ def o.toolbar(sender, itemForItemIdentifier:identifier,
+ willBeInsertedIntoToolbar:flag)
+ @custom_items[identifier]
+ end
+ toolbar.delegate = o
+ toolbar.allowsUserCustomization = options.delete(:allow_customization)
+ toolbar
+ end
+
+end
Added: MacRuby/trunk/lib/hotcocoa/mappings/toolbar_item.rb
===================================================================
--- MacRuby/trunk/lib/hotcocoa/mappings/toolbar_item.rb (rev 0)
+++ MacRuby/trunk/lib/hotcocoa/mappings/toolbar_item.rb 2008-09-17 22:33:35 UTC (rev 601)
@@ -0,0 +1,20 @@
+HotCocoa::Mappings.map :toolbar_item => :NSToolbarItem do
+
+ def init_with_options(toolbar_item, options)
+ identifier = options.delete(:identifier)
+ unless identifier
+ label = options[:label]
+ if label
+ identifier = label.tr(' ', '_')
+ else
+ raise ArgumentError, ":identifier or :label required"
+ end
+ end
+ toolbar_item.initWithItemIdentifier identifier
+ end
+
+ custom_methods do
+ include TargetActionConvenience
+ end
+
+end
Modified: MacRuby/trunk/lib/hotcocoa/mappings.rb
===================================================================
--- MacRuby/trunk/lib/hotcocoa/mappings.rb 2008-09-16 01:05:31 UTC (rev 600)
+++ MacRuby/trunk/lib/hotcocoa/mappings.rb 2008-09-17 22:33:35 UTC (rev 601)
@@ -8,6 +8,23 @@
end
DefaultEmptyRect = [0,0,0,0]
+
+ module TargetActionConvenience
+ def on_action=(behavior)
+ object = Object.new
+ object.instance_variable_set("@behavior", behavior)
+ def object.perform_action(sender)
+ @behavior.call(sender)
+ end
+ setTarget(object)
+ setAction("perform_action:")
+ end
+
+ def on_action(&behavior)
+ self.on_action = behavior
+ self
+ end
+ end
def self.map(options, &block)
framework = options.delete(:framework)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/macruby-changes/attachments/20080917/5c2e4053/attachment.html
More information about the macruby-changes
mailing list