Revision: 636 http://trac.macosforge.org/projects/ruby/changeset/636 Author: rich@infoether.com Date: 2008-09-28 18:51:41 -0700 (Sun, 28 Sep 2008) Log Message: ----------- add timer Added Paths: ----------- MacRuby/trunk/lib/hotcocoa/mappings/timer.rb Added: MacRuby/trunk/lib/hotcocoa/mappings/timer.rb =================================================================== --- MacRuby/trunk/lib/hotcocoa/mappings/timer.rb (rev 0) +++ MacRuby/trunk/lib/hotcocoa/mappings/timer.rb 2008-09-29 01:51:41 UTC (rev 636) @@ -0,0 +1,25 @@ +HotCocoa::Mappings.map :timer => :NSTimer do + + defaults :scheduled => true, :repeats => false + + def alloc_with_options(options) + raise ArgumentError, "timer requires :interval" unless options.has_key?(:interval) + target = options.delete(:target) + selector = options.delete(:selector) + if !target || !selector + raise ArgumentError, "timer requires either :target and :selector or :on_action" unless options.has_key?(:on_action) + target = Object.new + target.instance_variable_set(:@block, options.delete(:on_action)) + def target.fire(timer) + @block.call(timer) + end + selector = "fire:" + end + if options.delete(:scheduled) + NSTimer.scheduledTimerWithTimeInterval(options.delete(:interval), target:target, selector:selector, userInfo:options.delete(:info), repeats:options.delete(:repeats)) + else + NSTimer.timerWithTimeInterval(options.delete(:interval), target:target, selector:selector, userInfo:options.delete(:info), repeats:options.delete(:repeats)) + end + end + +end \ No newline at end of file