[MacRuby-devel] HotCocoa subclassing NSView
Richard Kilmer
rich at infoether.com
Sat Feb 21 10:29:54 PST 2009
Matt,
You can subclass an NSView on the fly, I don't think a CustomView is
needed:
v = view :frame => [10,10,100,100]
def v.drawRect(rect)
#custom stuff here
end
Since you can just redefine methods in ruby this works great.
Maybe we should add a syntax similar to the rails associations proxies
and enable this:
module MyCustomBehaviors
def drawRect(rect)
#custom stuff here
end
end
view :frame => [10,10,100,100], :extend => MyCustomBehaviors
Thoughts?
Rich
On Feb 21, 2009, at 1:36 AM, Matt Aimonetti wrote:
> Oops, I guess the email sent from my iphone never left my 'holy'
> device.
>
> Rich, what do you think about adding a new HotCocoa CustomView
> mapping since subclassing NSView seems to be pretty common.
>
> - Matt
>
> On Tue, Feb 17, 2009 at 10:47 AM, Richard Kilmer
> <rich at infoether.com> wrote:
> They do inherit constants, custom methods, etc (see lib/hotcocoa/
> mapper.rb, NOTE: ugly file right now, is a target for refactor)
>
> They are modules and those modules are mixed in.
>
> Best,
>
> Rich
>
> On Feb 17, 2009, at 12:46 PM, Matt Aimonetti wrote:
>
>> Thanks Rich, but if I do what you recommended, I guess I would not
>> be able to use all the NSView extra stuff defined by the existing
>> NSView mapping (constants, custom methods etc..).
>>
>> Wouldn't be better to make each mapping a mixin? That would allow
>> us to reuse some default settings and subclassing a mapped class
>> would give us all the mapping goodies.
>>
>> - Matt
>>
>>
>>
>> On Tue, Feb 17, 2009 at 4:33 AM, Richard Kilmer
>> <rich at infoether.com> wrote:
>> This is how I would do it:
>>
>> class MyNewView < NSView
>>
>> def drawRect(rect)
>> end
>>
>> end
>>
>> HotCocoa::Mappings.map :my_new_view => :"MyNewView" do
>> defaults :frame => DefaultEmptyRect, :layout => {}
>>
>> def init_with_options(view, options)
>> view.initWithFrame options.delete(:frame)
>> end
>> end
>>
>> Then in your code you can just use it like any HotCocoa mapped class:
>>
>> my_new_view :frame => [0,0,10,10]
>>
>> etc.
>>
>> -rich
>>
>>
>>
>> On Feb 17, 2009, at 4:15 AM, Matt Aimonetti wrote:
>>
>> I'm working on a new HotCocoa sample and I need to subclass NSView
>> to override drawRect and add few more methods.
>> I would like to be able to reuse all the goodies from HotCocoa and
>> the view helper, what's the best way to do that?
>>
>> -Matt
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel at lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel at lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>>
>> _______________________________________________
>> MacRuby-devel mailing list
>> MacRuby-devel at lists.macosforge.org
>> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>
>
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel
>
>
> _______________________________________________
> 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/20090221/d177864f/attachment.html>
More information about the MacRuby-devel
mailing list