This is WoodDoc_Name.m in view mode; [Download] [Up]
#import "wooddoc.h"
@implementation WoodDoc (Name)
static char *defaultFormat = NULL; // Default title format
static const char *extension = NULL; // Document extension
+ setDocExtension:(const char *)newExtension
{
extension = newExtension;
return self;
}
+ (const char *)docExtension
{
return extension;
}
+ setDefaultTitleFormat:(const char *)newDefault
{
char temp[MAXPATHLEN+1];
if (defaultFormat)
NX_FREE(defaultFormat);
sprintf(temp,"%s.%s",newDefault,[self docExtension]);
defaultFormat = NXCopyStringBufferFromZone(temp,[self zone]);
return self;
}
+ (const char *)defaultTitleFormat
{
return defaultFormat;
}
- (const char *)fileName
{
static char filenameBuf[MAXPATHLEN+1];
if (!directory && !name)
[self setName:NULL andDirectory:NULL];
if (directory) {
strcpy(filenameBuf, directory);
strcat(filenameBuf, "/");
} else
filenameBuf[0] = '\0';
if (name)
strcat(filenameBuf, name);
return filenameBuf;
}
- (const char *)directory
{
return directory;
}
- (const char *)name
{
return name;
}
- setName:(const char *)newName andDirectory:(const char *)newDirectory
{
char newNameBuf[MAXPATHLEN+1];
static int uniqueCount = 1;
if ((newName && *newName) || !name) {
if (!newName || !*newName) {
sprintf(newNameBuf, [[self class] defaultTitleFormat], uniqueCount++);
newName = newNameBuf;
} else if (name)
NX_FREE(name);
name = NXCopyStringBufferFromZone(newName, [self zone]);
}
if ((newDirectory && (*newDirectory == '/')) || !directory) {
if (!newDirectory || (*newDirectory != '/'))
newDirectory = [NXApp currentDirectory];
else if (directory)
NX_FREE(directory);
directory = NXCopyStringBufferFromZone(newDirectory, [self zone]);
}
if(theOOEClient != nil || isOOEServer) {
[self setTitle_OOE:self];
return self;
}
[window setTitleAsFilename:[self fileName]];
NXNameZone([self zone], [self fileName]);
return self;
}
- setName:(const char *)file
{
char *lastComponent;
char path[MAXPATHLEN+1];
if (file) {
strcpy(path, file);
lastComponent = rindex(path, '.');
if(lastComponent && !strcmp(lastComponent + 1, "diagram2"))
return self;
lastComponent = rindex(path, '/');
if (lastComponent) {
*lastComponent++ = '\0';
return [self setName:lastComponent andDirectory:path];
} else
return [self setName:file andDirectory:NULL];
}
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.