mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-05-31 08:00:47 +00:00
* Source/GSXibLoader.m: Add support for the "array" and
"dictionary" elements found in newer XIB files (Version >= 8). git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gui/trunk@33022 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
18a1c91c6c
commit
dfa18a81da
2 changed files with 120 additions and 83 deletions
|
@ -1,3 +1,8 @@
|
|||
2011-05-11 Fred Kiefer <FredKiefer@gmx.de>
|
||||
|
||||
* Source/GSXibLoader.m: Add support for the "array" and
|
||||
"dictionary" elements found in newer XIB files (Version >= 8).
|
||||
|
||||
2011-05-11 Eric Wasylishen <ewasylishen@gmail.com>
|
||||
|
||||
* Source/Functions.m: For functions which set the fill or stroke
|
||||
|
|
|
@ -794,21 +794,11 @@ didStartElement: (NSString *)elementName
|
|||
}
|
||||
}
|
||||
|
||||
- (id) objectForXib: (GSXibElement*)element
|
||||
{
|
||||
NSString *elementName;
|
||||
NSString *key;
|
||||
|
||||
if (element == nil)
|
||||
return nil;
|
||||
|
||||
NSDebugLLog(@"XIB", @"decoding element %@", element);
|
||||
key = [element attributeForKey: @"id"];
|
||||
elementName = [element type];
|
||||
if ([@"object" isEqualToString: elementName])
|
||||
- (id) decodeObjectForXib: (GSXibElement*)element
|
||||
forClassName: (NSString *)classname
|
||||
withKey: (NSString *)key
|
||||
{
|
||||
GSXibElement *last;
|
||||
NSString *classname = [element attributeForKey: @"class"];
|
||||
Class c = [self classForClassName: classname];
|
||||
id o, r;
|
||||
id delegate = [self delegate];
|
||||
|
@ -826,9 +816,8 @@ didStartElement: (NSString *)elementName
|
|||
originalClasses: nil];
|
||||
if (c == nil)
|
||||
{
|
||||
[NSException raise:
|
||||
NSInvalidUnarchiveOperationException
|
||||
format: @"[%@ +%@]: no class for name '%@'",
|
||||
[NSException raise: NSInvalidUnarchiveOperationException
|
||||
format: @"[%@ -%@]: no class for name '%@'",
|
||||
NSStringFromClass([self class]),
|
||||
NSStringFromSelector(_cmd),
|
||||
classname];
|
||||
|
@ -892,6 +881,25 @@ didStartElement: (NSString *)elementName
|
|||
}
|
||||
return AUTORELEASE(o);
|
||||
}
|
||||
|
||||
- (id) objectForXib: (GSXibElement*)element
|
||||
{
|
||||
NSString *elementName;
|
||||
NSString *key;
|
||||
|
||||
if (element == nil)
|
||||
return nil;
|
||||
|
||||
NSDebugLLog(@"XIB", @"decoding element %@", element);
|
||||
key = [element attributeForKey: @"id"];
|
||||
elementName = [element type];
|
||||
if ([@"object" isEqualToString: elementName])
|
||||
{
|
||||
NSString *classname = [element attributeForKey: @"class"];
|
||||
return [self decodeObjectForXib: element
|
||||
forClassName: classname
|
||||
withKey: key];
|
||||
}
|
||||
else if ([@"string" isEqualToString: elementName])
|
||||
{
|
||||
NSString *type = [element attributeForKey: @"type"];
|
||||
|
@ -998,6 +1006,30 @@ didStartElement: (NSString *)elementName
|
|||
|
||||
return new;
|
||||
}
|
||||
else if ([@"array" isEqualToString: elementName])
|
||||
{
|
||||
NSString *classname = [element attributeForKey: @"class"];
|
||||
|
||||
if (classname == nil)
|
||||
{
|
||||
classname = @"NSArray";
|
||||
}
|
||||
return [self decodeObjectForXib: element
|
||||
forClassName: classname
|
||||
withKey: key];
|
||||
}
|
||||
else if ([@"dictionary" isEqualToString: elementName])
|
||||
{
|
||||
NSString *classname = [element attributeForKey: @"class"];
|
||||
|
||||
if (classname == nil)
|
||||
{
|
||||
classname = @"NSDictionary";
|
||||
}
|
||||
return [self decodeObjectForXib: element
|
||||
forClassName: classname
|
||||
withKey: key];
|
||||
}
|
||||
else
|
||||
{
|
||||
NSLog(@"Unknown element type %@", elementName);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue