ftp.nice.ch/pub/next/developer/resources/classes/MOKit.1.0.0.s.tar.gz#/MOKit_1.0.0/Palettes/MODocWellPalette/MODocWellInspector.m

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.