This is MyObject.m in view mode; [Download] [Up]
#import "MyObject.h"
#import "StringList.h"
@implementation MyObject
-awakeFromNib;
{
static NXDefaultsVector defaults = {
{"Command", "/etc/ppp/bin/pppd"},
{NULL}
};
NXRegisterDefaults("DialOnDemand", defaults);
[[fileScroller window] setFrameAutosaveName:"FileWindow"];
[[command window] setFrameAutosaveName:"PrefPanel"];
[NXApp setDelegate:self];
[[Application workspace] beginListeningForApplicationStatusChanges];
[fileScroller setTarget:self];
[fileScroller setAction:@selector(clickScroller:)];
strcpy(filePath, [[NXBundle mainBundle] directory]);
strcat(filePath, "/");
strcat(filePath, "fileList");
fileStream = NXOpenTypedStreamForFile(filePath, NX_READONLY);
if (fileStream == NULL) {
fileStream = NXOpenTypedStreamForFile(filePath, NX_WRITEONLY);
[fileList write:fileStream];
NXCloseTypedStream(fileStream);
fileStream = NXOpenTypedStreamForFile(filePath, NX_READONLY);
if (fileStream == NULL) {
NXRunAlertPanel(NULL, "Can't create file list inside app wrapper",
NULL, NULL, NULL);
[NXApp terminate:self];
}
}
[fileList read:fileStream];
[fileScroller loadColumnZero];
NXCloseTypedStream(fileStream);
[command setStringValue:NXGetDefaultValue("DialOnDemand", "Command")];
[fileName selectText:self];
return self;
}
- addFileName:sender;
{
if (strlen([fileName stringValue]) > 0)
[fileList addStringIfAbsent:[fileName stringValue]];
[fileScroller loadColumnZero];
fileStream = NXOpenTypedStreamForFile(filePath, NX_WRITEONLY);
[fileList write:fileStream];
NXCloseTypedStream(fileStream);
[fileName selectText:self];
return self;
}
- delFileName:sender;
{
[fileList removeString:[fileName stringValue]];
[fileScroller loadColumnZero];
fileStream = NXOpenTypedStreamForFile(filePath, NX_WRITEONLY);
[fileList write:fileStream];
NXCloseTypedStream(fileStream);
[fileName selectText:self];
return self;
}
- cancelFileOp:sender;
{
[fileName setStringValue:NXUniqueString("")];
[fileName selectText:self];
return self;
}
- clickScroller:sender;
{
if ([fileScroller selectedCell]) {
[fileName setStringValue:[[fileScroller selectedCell] stringValue]];
}
return self;
}
- commandDefault:sender;
{
NXWriteDefault("DialOnDemand", "Command", [command stringValue]);
return self;
}
- selectCommand:sender;
{
id openPanel = [OpenPanel new];
if ([openPanel runModal] == NX_OKTAG) {
[command setStringValue:[openPanel filename]];
}
return self;
}
- selectApp:sender;
{
id openPanel = [OpenPanel new];
[openPanel chooseDirectories:YES];
if ([openPanel runModal] == NX_OKTAG) {
[fileName setStringValue:[openPanel filename]];
}
return self;
}
- infoPanel:sender;
{
if (!infoPanel) {
[NXApp loadNibSection:"Info.nib" owner:self];
}
[infoPanel orderFront:self];
return self;
}
-appWillTerminate:sender;
{
[[Application workspace] endListeningForApplicationStatusChanges];
return (id)1;
}
-app:sender applicationWillLaunch:(const char *)appName;
{
int i;
for (i = 0; i < [fileList count]; i++) {
if (strstr(appName, [fileList stringAt:i]) != NULL) {
system(NXGetDefaultValue("DialOnDemand", "Command"));
}
}
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.