This is MODocWellInspector.m in view mode; [Download] [Up]
// MODocWellInspector.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 "MODocWellInspector.h"
#import <objc/objc-runtime.h>
#define CLASS_VERSION 0
#define CLASS_NAME "MODocWellInspector"
#define BUNDLE_TYPE "bundle"
#define MODOCUMENTWELL_CLASS_NAME "MODocumentWell"
#define NIB_TYPE "nib"
#define NIB_NAME "MODocWellInspector"
@interface MODocWellInspector(Private)
+ (Class)MO_loadClassBundle:(const char *)className;
@end
@implementation MODocWellInspector
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 the MODocumentWell class if necessary
MODocumentWellClass =
[self MO_loadClassBundle:MODOCUMENTWELL_CLASS_NAME];
}
return self;
}
- init
// Load our nib file.
{
char buf[MAXPATHLEN+1];
id bundle;
[super init];
// load our nib file.
bundle = [NXBundle bundleForClass:[self class]];
[bundle getPath:buf forResource:NIB_NAME ofType:NIB_TYPE];
[NXApp loadNibFile:buf owner:self withNames:NO fromZone:[self zone]];
return self;
}
- ok:sender
// set the tag and enabled flag. The patternButtonAction takes care of the
// other stuff.
{
[object setEnabled:![disabledCheckbox state]];
[object setIsDragDestination:[isDragDestinationCheckbox state]];
[object setIsDragSource:[isDragSourceCheckbox state]];
[object setDoesOpenFiles:[doesOpenFilesCheckbox state]];
[object setBordered:[borderedCheckbox state]];
[object setAcceptsFans:[acceptsFansCheckbox state]];
[object setPath:[defaultPathDocWell path] andIcon:nil];
[object display];
return [super ok:sender];
}
- revert:sender
// fill in the inspector with the attributes of "object"
{
[disabledCheckbox setState:![object isEnabled]];
[isDragDestinationCheckbox setState:[object isDragDestination]];
[isDragSourceCheckbox setState:[object isDragSource]];
[doesOpenFilesCheckbox setState:[object doesOpenFiles]];
[borderedCheckbox setState:[object isBordered]];
[acceptsFansCheckbox setState:[object acceptsFans]];
[defaultPathDocWell setPath:[object path] andIcon:nil];
return [super revert:sender];
}
- (BOOL)wantsButtons
// Our inspector does not have OK or Revert buttons.
{
return NO;
}
- docWellDidAcceptDocument:(MODocumentWell *)sender
{
[self ok:self];
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.