This is HostController.m in view mode; [Download] [Up]
#import "HostController.h"
#import "Defaults.h"
#import "TokenString.h"
#import <appkit/appkit.h>
#import "EnhancedMatrix.h"
@interface HostController (PRIVATE)
-(void)_addHostToList: (const char *) aHost;
@end
@implementation HostController
- init
{
[super init];
[self setDocType: "Hosts"];
_defaults = [Defaults new];
return self;
}
- awakeFromNib
{
[self select: nil];
return self;
}
- setHosts: anObject
{
hosts = anObject;
[hosts loadFromString: [_defaults get: "Hosts"]];
[hosts setTarget: self];
[hosts setAction: @selector(select:)];
[hosts selectCellAt: 0 : 0];
return self;
}
- update: sender
{
const char *ahost,*updateHost;
id hostList = [[TokenString alloc] init: [_defaults get: "Hosts"]];
[hostList setSeparator: ';'];
updateHost = [name stringValue];
if(!updateHost)
return nil;
while(ahost = [hostList popStringValue])
if(!strcmp(ahost,updateHost))
{
[hostList setFStringValue: "%s PPPStart", updateHost];
[_defaults writeDB: [hostList stringValue] as: [start stringValue]];
break;
}
return self;
}
- add:sender
{
const char *hostList = [_defaults get: "Hosts"];
const char *newHost;
id str = [[[StringStorage alloc] init] autorelease];
newHost = [name stringValue];
if(!newHost)
return nil;
if(!hostList)
[str setStringValue: newHost];
else
[str setFStringValue: "%s;%s", hostList, newHost];
[_defaults writeDB: "Hosts" as: [str stringValue]];
[str setFStringValue: "%s PPPStart", newHost];
[_defaults writeDB: [str stringValue] as: [start stringValue]];
[str setFStringValue: "%s TotalTime", newHost];
[_defaults writeDB: [str stringValue] as: "0"];
[str setFStringValue: "%s LastReset", newHost];
[_defaults writeDB: [str stringValue] as: "0"];
[self _addHostToList: newHost];
[self select:nil];
[hosts sizeToCells];
[hosts display];
return self;
}
- remove:sender
{
int rows, cols, x, theRow = 0;
id aCell,cell = [hosts selectedCell];
id hostList = [[[StringStorage alloc] init] autorelease];
[hosts getNumRows: &rows numCols: &cols];
for (x = 0; x < rows; x++)
{
aCell = [hosts cellAt: x : 0];
if (cell == aCell)
{
id str = [[[StringStorage alloc] init] autorelease];
[str setFStringValue: "%s PPPStart", [aCell title]];
[_defaults removeDB: [str stringValue]];
[str setFStringValue: "%s TotalTime", [aCell title]];
[_defaults removeDB: [str stringValue]];
[str setFStringValue: "%s LastReset", [aCell title]];
[_defaults removeDB: [str stringValue]];
theRow = x;
}
else
{
if([hostList strlen])
[hostList appendStringValue: ";"];
[hostList appendStringValue: [aCell title]];
}
}
[_defaults writeDB: "Hosts" as: [hostList stringValue]];
[hosts removeRowAt: theRow andFree: YES];
[hosts sizeToCells];
[hosts display];
[self select: nil];
return self;
}
- select: sender
{
id cell = [hosts selectedCell];
id str = [[[StringStorage alloc] init] autorelease];
if(!cell)
return nil;
[name setStringValue: [cell title]];
[str setFStringValue: "%s PPPStart", [cell title]];
[start setStringValue: [_defaults get: [str stringValue]]];
return self;
}
@end
@implementation HostController (PRIVATE)
-(void)_addHostToList: (const char *) aHost
{
int rows, cols;
id cell;
[hosts getNumRows: &rows numCols: &cols];
[hosts addRow];
cell = [hosts cellAt: rows : 0];
[cell setTitle: aHost];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.