This is MODocWellPalette.m in view mode; [Download] [Up]
// MODocWellPalette.m // // by Mike Ferris // Part of MOKit - MORegexPalette // Copyright 1993, all rights reserved. // ABOUT MOKit // by Mike Ferris (mike@lorax.com) // // MOKit is a collection of useful and general objects. Permission is // granted by the author to use MOKit in your own programs in any way // you see fit. All other rights pertaining to the kit are reserved by the // author including the right to sell these objects as objects, as part // of a LIBRARY, or as SOURCE CODE. In plain English, I wish to retain // rights to these objects as objects, but allow the use of the objects // as pieces in a fully functional program. Permission is also granted to // redistribute the source code of MOKit for FREE as long as this copyright // notice is left intact and unchanged. NO WARRANTY is expressed or implied. // The author will under no circumstances be held responsible for ANY // consequences from the use of these objects. Since you don't have to pay // for them, and full source is provided, I think this is perfectly fair. #import "MODocWellPalette.h" #import "MOKit/MODocumentWell.h" #import <appkit/appkit.h> #import <objc/objc-runtime.h> #define CLASS_VERSION 0 #define CLASS_NAME "MODocWellPalette" #define BUNDLE_TYPE "bundle" #define MOSTRING_CLASS_NAME "MOString" #define MOPATHSTRING_CLASS_NAME "MOPathString" #define MODOCUMENTWELL_CLASS_NAME "MODocumentWell" @interface MODocWellPalette(Private) + (Class)MO_loadClassBundle:(const char *)className; @end @implementation MODocWellPalette static id MOStringClass; static id MOPathStringClass; static id MODocumentWellClass; + (Class)MO_loadClassBundle:(const char *)className // Finds the bundle of the same name as the class, grabs it and loads the // class from it and returns the named class. { char pathBuff[MAXPATHLEN+1]; id classBundle = nil; Class class = nil; // Load the bundle if ((class = objc_lookUpClass(className)) == nil) { // class is not already loaded... load it. // Look for the bundle in the main bundle first, // else try in this class's bundle. if (![[NXBundle mainBundle] getPath:pathBuff forResource:className ofType:BUNDLE_TYPE]) { if (![[NXBundle bundleForClass:[self class]] getPath:pathBuff forResource:className ofType:BUNDLE_TYPE]) { NXLogError("[%s loadClassBundle] failed to " "find %s class bundle.", [self name], className); return nil; } } classBundle = [[NXBundle allocFromZone:[self zone]] initForDirectory:pathBuff]; if (!classBundle) { NXLogError("[%s loadClassBundle] failed to " "create bundle for class %s.", [self name], className); return nil; } if ((class = [classBundle classNamed:className]) == nil) { NXLogError("[%s loadClassBundle] failed to " "load %s class from bundle.", [self name], className); return nil; } } return class; } + initialize // Set the version. { if (self == objc_lookUpClass(CLASS_NAME)) { [self setVersion:CLASS_VERSION]; // Load all the classes we need MOStringClass = [self MO_loadClassBundle:MOSTRING_CLASS_NAME]; MOPathStringClass = [self MO_loadClassBundle:MOPATHSTRING_CLASS_NAME]; MODocumentWellClass = [self MO_loadClassBundle:MODOCUMENTWELL_CLASS_NAME]; } return self; } - finishInstantiate { return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.