This is MyObject.m in view mode; [Download] [Up]
#import "MyObject.h"
@implementation MyObject
- init;
{
NSMutableDictionary *defaults = [NSMutableDictionary dictionary];
[super init];
[defaults setObject:@"/etc/ppp/bin/pppd" forKey:@"Command"];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
return self;
}
- (void)dealloc;
{
[filePath release];
[fileList release];
[super dealloc];
}
- (void)awakeFromNib;
{
[[fileScroller window] setFrameAutosaveName:@"FileWindow"];
[[command window] setFrameAutosaveName:@"PrefPanel"];
[NSApp setDelegate:self];
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self
selector:@selector(appNotice:)
name:NSWorkspaceWillLaunchApplicationNotification
object:nil];
[fileScroller setDelegate:self];
[fileScroller setTarget:self];
[fileScroller setAction:@selector(clickScroller:)];
// if there isn't a fileList already, this will screw up
filePath = [[[NSBundle mainBundle] pathForResource:@"fileList" ofType:@""] retain];
NS_DURING
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
fileList = [[NSUnarchiver unarchiveObjectWithFile:filePath] retain];
} else {
fileList = [[NSMutableSet setWithCapacity:10] retain];
[NSArchiver archiveRootObject:fileList toFile:filePath];
}
NS_HANDLER
NSRunAlertPanel(0, @"Unable to open file name archive inside app wrapper", @"OK", 0, 0);
NSLog(@"bit of a problem");
[NSApp terminate:self];
NS_ENDHANDLER
[fileScroller loadColumnZero];
[command setStringValue:[[NSUserDefaults standardUserDefaults] objectForKey:@"Command"]];
[fileName selectText:self];
}
- (void)addFileName:sender;
{
if ([[fileName stringValue] length] > 0)
[fileList addObject:[fileName stringValue]];
[fileScroller loadColumnZero];
[NSArchiver archiveRootObject:fileList toFile:filePath];
[fileName selectText:self];
}
- (void)delFileName:sender;
{
[fileList removeObject:[fileName stringValue]];
[fileScroller loadColumnZero];
[NSArchiver archiveRootObject:fileList toFile:filePath];
[fileName selectText:self];
}
- (void)cancelFileOp:sender;
{
[fileName setStringValue:@""];
[fileName selectText:self];
}
- (void)clickScroller:sender;
{
if ([fileScroller selectedCell]) {
[fileName setStringValue:[[fileScroller selectedCell] stringValue]];
}
}
- (void)commandDefault:sender;
{
[[NSUserDefaults standardUserDefaults] setObject:[command stringValue] forKey:@"Command"];
[[sender window] orderOut:self];
}
- (void)selectCommand:sender;
{
id openPanel = [NSOpenPanel openPanel];
if ([openPanel runModal] == NSOKButton) {
[command setStringValue:[openPanel filename]];
}
}
- (void)selectApp:sender;
{
id openPanel = [NSOpenPanel openPanel];
[openPanel setCanChooseDirectories:YES];
if ([openPanel runModal] == NSOKButton) {
[fileName setStringValue:[openPanel filename]];
}
}
- (void)infoPanel:sender;
{
if (!infoPanel) {
[NSBundle loadNibNamed:@"Info.nib" owner:self];
}
[infoPanel orderFront:self];
}
- (BOOL)applicationShouldTerminate:(id)sender;
{
[[NSNotificationCenter defaultCenter] removeObserver:self
name:NSWorkspaceWillLaunchApplicationNotification
object:nil];
return YES;
}
- appNotice:(NSNotification *)notification;
{
NSEnumerator *i = [fileList objectEnumerator];
id string;
NSLog(@"appNotice:%@", [[notification userInfo] objectForKey:@"NSApplicationName"]);
while (string = [i nextObject]) {
// NSRange range = [[[[notification object] mainMenu] title]
// rangeOfString:string];
NSRange range = [[[notification userInfo] objectForKey:@"NSApplicationName"]
rangeOfString:string];
if (range.length != 0) {
system([[[NSUserDefaults standardUserDefaults] objectForKey:@"Command"] cString]);
}
}
return self;
}
- (void)browser:sender createRowsForColumn:(int)column inMatrix:(NSMatrix *)matrix;
{
NSEnumerator *cellLoop, *fileLoop = [fileList objectEnumerator];
NSString *string = nil;
NSBrowserCell *theCell = nil;
// Set matrix to have the right number of cells.
[matrix renewRows:[fileList count] columns:1];
// For each cell set its value, set whether it is a leaf or not
cellLoop = [[matrix cells] objectEnumerator];
while((string = [fileLoop nextObject])
&& (theCell = [cellLoop nextObject])) {
[theCell setStringValue:string];
[theCell setLeaf:YES];
}
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.