Laurent you are right, however I noticed a little gotcha: If you use the following code:
panel.beginSheetModalForWindow window, completionHandler: Proc.new do |result| return if (result == NSCancelButton) path = panel.filename dest_path = applicationSupportFolder guid = NSProcessInfo.processInfo.globallyUniqueString dest_path = "#{dest_path}/#{guid}" error = Pointer.new(:id) NSFileManager.defaultManager.copyItemAtPath(path, toPath:dest_path, error:error) NSApp.presentError(error) if error[0] movie.setValue(dest_path, forKey:"imagePath") end You get an argument error: tried to create Proc object without a block (ArgumentError) However using the curly brackets would work: panel.beginSheetModalForWindow window, completionHandler: Proc.new{|result| return if (result == NSCancelButton) path = panel.filename dest_path = applicationSupportFolder guid = NSProcessInfo.processInfo.globallyUniqueString dest_path = "#{dest_path}/#{guid}" error = Pointer.new(:id) NSFileManager.defaultManager.copyItemAtPath(path, toPath:dest_path, error:error) NSApp.presentError(error) if error[0] movie.setValue(dest_path, forKey:"imagePath") } Finally, the only way to get the do/end proc approach to work is to use the parenthesis around the arguments: panel.beginSheetModalForWindow(window, completionHandler: Proc.new do |result| return if (result == NSCancelButton) path = panel.filename dest_path = applicationSupportFolder guid = NSProcessInfo.processInfo.globallyUniqueString dest_path = "#{dest_path}/#{guid}" error = Pointer.new(:id) NSFileManager.defaultManager.copyItemAtPath(path, toPath:dest_path, error:error) NSApp.presentError(error) if error[0] movie.setValue(dest_path, forKey:"imagePath") end) - Matt On Sun, Jan 9, 2011 at 2:22 PM, Laurent Sansonetti <lsansone...@apple.com>wrote: > Hi Rolando, > > The syntax is simple, you simply pass a Proc project. > > Here is an example: > > framework 'Foundation' > a = [1, 2, 3, 4, 5] > a.enumerateObjectsUsingBlock(Proc.new { |obj, index, stop| > p obj > stop.assign(true) if index == 2 > }) > > It looks like the snippet you pasted should just work. Did you find a > problem? > > Laurent > > > On Jan 9, 2011, at 8:09 AM, Rolando Abarca wrote: > > Hi all, > > I've taken a look at the referred issue (#712), but I'm not sure of > the final implemented syntax. I'm trying to use a NSOpenPanel, so far > this is what I'm doing: > > > {{{ > def loadSprite(sender) > @panel.beginSheetModalForWindow(@window, completionHandler:lambda { > |code| > NSLog("code: #{code}") > }) > end > }}} > > what's the Right Way(tm) to use a NSOpenPanel? > thanks! > -- > Rolando Abarca M. > Games For Food S.p.A. > http://www.gamesforfood.com > Phone: +1 (408) 345-5433 > _______________________________________________ > MacRuby-devel mailing list > MacRuby-devel@lists.macosforge.org > http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel > > > > _______________________________________________ > MacRuby-devel mailing list > MacRuby-devel@lists.macosforge.org > http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel > >
_______________________________________________ MacRuby-devel mailing list MacRuby-devel@lists.macosforge.org http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel