[MacRuby-devel] NSImage issue?
Brad Wilson
brad at lucky-dip.net
Thu Nov 13 02:09:45 PST 2008
I think there's a problem with your method call. If you look at the
cocoa doc is has a selector with the signature:
drawInRect:fromRect:operation:fraction.
To call that from MacRuby you'd want to do something like:
icon.drawInRect(rect, fromRect:NSZeroRect,
operationNSCompositeSourceOver, fraction:1.0.
See the way the named arguments line up? That'll work for any cocoa
call. There's some discussion on the MacRuby tutorial under "Sending
Messages" at http://www.macruby.org/trac/wiki/MacRubyTutorial
Another tip I got from somebody on the list:
object.methods(true, true) will give you a list of all methods on an
object, including objective-c methods. That might help in future if
you're not sure what the method call should be.
Hope that helps.
Brad
On 13/11/2008, at 8:11 PM, pedro gutierrez wrote:
> Hi everybody,
>
> This is my first message to the mailing list, I am a newbie in Cocoa
> so please bear with me...
>
> In my first serious MacRuby project, I have subclassed
> NSTextFieldCell and I have redefined drawInteriorWithFrame with the
> following code:
>
> def drawInteriorWithFrame( rect, inView:view )
>
> icon = NSImage.imageNamed( "example" )
>
> puts icon.methods.join( " " )
> puts "icon is valid: #{icon.isValid} and has size #{icon.size}"
>
> icon.drawInRect( rect, NSZeroRect, NSCompositeSourceOver, 1.0 )
>
> end
>
> (i.e: I am just trying to draw an icon)
>
> Here is what I get from the console:
>
> [Session started at 2008-11-13 09:01:01 +0000.]
> gem __super_objc_send__ enum_for to_enum object_id __id__
> define_singleton_method public_method method display extend
> respond_to? public_send send __send__ instance_exec instance_eval
> __native__? tap is_a? kind_of? instance_of?
> instance_variable_defined? instance_variable_set
> instance_variable_get instance_variables public_methods
> private_methods protected_methods singleton_methods methods inspect
> to_s frozen? freeze untaint tainted? taint dup clone eql? !~ =~ ===
> nil? != ! equal? == hash
> icon is valid: true and has size #<NSSize width=30.0 height=24.0>
> /Users/sicozu/Projects/iAmbient/build/Release/iAmbient.app/Contents/
> Resources/PlaylistCell.rb:26:in `drawInteriorWithFrame:inView:':
> undefined method `drawInRect' for #<NSImage:0x10f2480> (NoMethodError)
> from /Users/sicozu/Projects/iAmbient/build/Release/iAmbient.app/
> Contents/Resources/PlaylistCell.rb:15:in `drawWithFrame:inView:'
> from /Users/sicozu/Projects/iAmbient/build/Release/iAmbient.app/
> Contents/Resources/PlaylistCell.rb:15:in `drawWithFrame:inView:'
> from /Users/sicozu/Projects/iAmbient/build/Release/iAmbient.app/
> Contents/Resources/rb_main.rb:22:in `NSApplicationMain'
> from /Users/sicozu/Projects/iAmbient/build/Release/iAmbient.app/
> Contents/Resources/rb_main.rb:22:in `<main>'
>
> Can anybody please give me a hint of what I am doing wrong?
> Shouldn't I expect my instance of NSImage to respond to :drawInRect?
>
> And by the way, thanks a lot for this sweet MacRuby project !!
> Cheers,
> Pedro.
>
>
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20081113/1e79c82d/attachment-0001.html>
More information about the MacRuby-devel
mailing list