Re: [Pyobjc-dev] New NibLoader.py
Brought to you by:
ronaldoussoren
From: <bb...@ma...> - 2002-11-16 22:39:07
|
On Saturday, November 16, 2002, at 05:24 AM, Just van Rossum wrote: > Agreed, except I would leave out the "ForNib" part, it's part of > NibLoader after > all. Mind if I change that once my commit rights are actually working? Actually, yes, I do mind. :-) Not for the basic loadClassesForNib() method -- simply loadClasses( pathToNib ) makes sense and reduces redundancy. However, for loadClassesForNibInBundle(), it would be reduced to loadClassesInBundle() which doesn't really make sense in that it implies that all the classes in a bundle are to be loaded. None of this means I'm married to the existing naming scheme. Not at all -- I would just like a naming scheme that gives a bit more indication as to what is going on than just dropping the 'ForNib' from the two methods. Actually, loadClassesForNibInBundle() should really be... loadClassesForNibNamed( aName, targetBundle=aBundle ) ... as this follows the NSNibLoading API a bit more closely while also adding the ability to optionally specify the bundle from which the NIBs should be loaded. > Perhaps the NibInfo should keep track of what nibs it already has > parsed. That > way you can call loadClasses[FromBundle] multiple times for one nib > without > doing double work. It likely should. The common idiom I have been using to define classes that are source from NIBs is this: NibLoader.loadClassesForNibFromBundle( "MainMenu" ) class AppDelegate (NSDraggingDestination): __metaclass__ = NibLoader.NibClassBuilder ..... That is, immediately before the class declaration, I make sure the NIB file that defines the class has had its classes extracted and created. I would have expected that if I were to do the following, it would fail on the second load of MainMenu, but it doesn't. NibLoader.loadClassesForNibFromBundle( "MainMenu" ) NibLoader.loadClassesForNibFromBundle( "MainMenu" ) class AppDelegate (NSDraggingDestination): __metaclass__ = NibLoader.NibClassBuilder ..... So, all things considered, nothing really need be changed. I'm not sure what happens in Cocoa if you load two NIB files that have the same class defined but the intention was that they were to be different classes. (The lack of true namespaces has long been one serious disadvantage to ObjC and is the reason why classes are all prefixed w/NS -- back in the NS 3.3 and prior days, they weren't and it caused no end of confusion.) b.bum |