[MacRuby-devel] Implementing Undo In RaiseMan / MacRuby

s.ross cwdinfo at gmail.com
Sun Oct 25 11:17:44 PDT 2009


I'm trying to implement the RaiseMan example from Aaron Hillegass's  
book in MacRuby. All has gone pretty well until I reached undo. The  
idea is to handle the insertObject message each time a Person is  
inserted and manipulate the undo stack.

   def insertObject(p, inEmployeesAtIndex:index)
     NSLog("adding #{p} to #{employees}") # <= Not called, huh?
     undo = @undoManager
     undo.prepareWithInvocationTarget(self,  
removeObjectFromEmployeesAtIndex:index)
     if !undo.isUndoing
       undo.setActionName("Insert Person")
     end
     employees.insertObject(p, atIndex:index)
   end

The Objective-C signature for this is:

- (void)insertObject:(Person *)p inEmployeesAtIndex:(int)index

Works in Objective-C but in my Ruby, the method is not recognized as a  
handler to be invoked when a Person object is to be inserted in the  
employees array. I should note that I created the employees array  
using Ruby syntax:

@employees ||= []

Changing this to:

@employees ||= NSMutableArray.alloc.init

makes no difference in this scenario.

Any hints with respect to what I'm missing here?

Thanks,

Steve

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20091025/1e895d73/attachment.html>


More information about the MacRuby-devel mailing list