Adding logic for .gorm file directories

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@14892 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
gcasa 2002-10-31 14:59:18 +00:00
parent 89ef1d72c9
commit 00c2564afb
2 changed files with 53 additions and 27 deletions

View file

@ -1,3 +1,10 @@
2002-10-31 Gregory John Casamento <greg_casamento@yahoo.com>
* Source/NSBundleAdditions.m:
+[loadNibFile:externalNameTable:withZone:]: Added logic
to load .gorm directories and also maintained backwards compatibility
with .gorm files.
2002-10-29 Pierre-Yves Rivaille <pyrivail@ens-lyon.fr> 2002-10-29 Pierre-Yves Rivaille <pyrivail@ens-lyon.fr>
* Source/NSSplitView.m ([NSSplitView -resizeSubviewsWithOldSize:]): * Source/NSSplitView.m ([NSSplitView -resizeSubviewsWithOldSize:]):

View file

@ -259,38 +259,57 @@ Class gmodel_class(void)
NSDebugLog(@"Loading Nib `%@'...\n", fileName); NSDebugLog(@"Loading Nib `%@'...\n", fileName);
NS_DURING NS_DURING
{ {
NSData *data = [NSData dataWithContentsOfFile: fileName]; NSFileManager *mgr = [NSFileManager defaultManager];
NSDebugLog(@"Loaded data..."); BOOL isDir = NO;
if (data != nil)
{
unarchiver = [[NSUnarchiver alloc] initForReadingWithData: data];
if (unarchiver != nil)
{
id obj;
NSDebugLog(@"Invoking unarchiver"); if([mgr fileExistsAtPath: fileName isDirectory: &isDir])
[unarchiver setObjectZone: zone]; {
obj = [unarchiver decodeObject]; NSData *data = nil;
if (obj != nil)
// if the data is in a directory, then load from objects.gorm in the directory
if(isDir == NO)
{
data = [NSData dataWithContentsOfFile: fileName];
NSDebugLog(@"Loaded data from file...");
}
else
{
NSString *newFileName = [fileName stringByAppendingPathComponent: @"objects.gorm"];
data = [NSData dataWithContentsOfFile: newFileName];
NSDebugLog(@"Loaded data from %@...",newFileName);
}
if (data != nil)
{
unarchiver = [[NSUnarchiver alloc] initForReadingWithData: data];
if (unarchiver != nil)
{ {
if ([obj isKindOfClass: [GSNibContainer class]]) id obj;
NSDebugLog(@"Invoking unarchiver");
[unarchiver setObjectZone: zone];
obj = [unarchiver decodeObject];
if (obj != nil)
{ {
NSDebugLog(@"Calling awakeWithContext"); if ([obj isKindOfClass: [GSNibContainer class]])
[obj awakeWithContext: context]; {
/* NSDebugLog(@"Calling awakeWithContext");
*Ok - it's all done now - just retain the nib container [obj awakeWithContext: context];
*so that it will not be released when the unarchiver /*
*is released, and the nib contents will persist. *Ok - it's all done now - just retain the nib container
*/ *so that it will not be released when the unarchiver
RETAIN(obj); *is released, and the nib contents will persist.
loaded = YES; */
} RETAIN(obj);
else loaded = YES;
{ }
NSLog(@"Nib '%@' without container object!", fileName); else
{
NSLog(@"Nib '%@' without container object!", fileName);
}
} }
RELEASE(unarchiver);
} }
RELEASE(unarchiver);
} }
} }
} }