mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 20:01:11 +00:00
Add implementation of decodeIntegerForKey: to allow decoding of enums, add non keyed decoding to NSGridView.
This commit is contained in:
parent
a10b869710
commit
269103e1e9
2 changed files with 51 additions and 5 deletions
|
@ -416,9 +416,6 @@ static NSArray *XmlBoolDefaultYes = nil;
|
|||
@"decodeSecondAttribute:", @"NSSecondAttribute",
|
||||
@"decodeRelation:", @"NSRelation",
|
||||
@"decodeTransitionStyle:", @"NSTransitionStyle",
|
||||
@"decodeXPlacementForElement:", @"NSGrid_xPlacement",
|
||||
@"decodeYPlacementForElement:", @"NSGrid_yPlacement",
|
||||
@"decodeRowAlignmentForElement:", @"NSGrid_rowAlignment",
|
||||
nil];
|
||||
RETAIN(XmlKeyToDecoderSelectorMap);
|
||||
|
||||
|
@ -3293,6 +3290,42 @@ didStartElement: (NSString*)elementName
|
|||
return flag;
|
||||
}
|
||||
|
||||
- (NSInteger) decodeIntegerForKey: (NSString *)key
|
||||
{
|
||||
NSInteger num = 0;
|
||||
|
||||
if ([super containsValueForKey: key])
|
||||
{
|
||||
num = [super decodeIntegerForKey: key];
|
||||
}
|
||||
else if ([currentElement attributeForKey: key])
|
||||
{
|
||||
num = [[currentElement attributeForKey: key] integerValue];
|
||||
}
|
||||
else if ([XmlKeyMapTable objectForKey: key])
|
||||
{
|
||||
num = [self decodeIntegerForKey: [XmlKeyMapTable objectForKey: key]];
|
||||
}
|
||||
else if ([XmlKeyToDecoderSelectorMap objectForKey: key])
|
||||
{
|
||||
SEL selector = NSSelectorFromString([XmlKeyToDecoderSelectorMap objectForKey: key]);
|
||||
num = [[self performSelector: selector withObject: currentElement] integerValue];
|
||||
}
|
||||
else if ([key hasPrefix:@"NS"])
|
||||
{
|
||||
NSString *newKey = [self alternateName: key];
|
||||
num = [self decodeIntegerForKey: newKey];
|
||||
}
|
||||
#if DEBUG_XIB5
|
||||
else
|
||||
{
|
||||
NSWarnMLog(@"no NSInteger for key: %@", key);
|
||||
}
|
||||
#endif
|
||||
|
||||
return num;
|
||||
}
|
||||
|
||||
- (NSPoint) decodePointForKey: (NSString *)key
|
||||
{
|
||||
NSPoint point = NSZeroPoint;
|
||||
|
|
|
@ -244,7 +244,7 @@
|
|||
}
|
||||
if ([coder containsValueForKey: @"NSGrid_columns"])
|
||||
{
|
||||
_columns = [coder decodeObjectForKey: @"NSGrid_columns"];
|
||||
ASSIGN(_columns, [coder decodeObjectForKey: @"NSGrid_columns"]);
|
||||
}
|
||||
if ([coder containsValueForKey: @"NSGrid_rowSpacing"])
|
||||
{
|
||||
|
@ -252,7 +252,7 @@
|
|||
}
|
||||
if ([coder containsValueForKey: @"NSGrid_rows"])
|
||||
{
|
||||
_rows = [coder decodeObjectForKey: @"NSGrid_rows"];
|
||||
ASSIGN(_rows, [coder decodeObjectForKey: @"NSGrid_rows"]);
|
||||
}
|
||||
if ([coder containsValueForKey: @"NSGrid_xPlacement"])
|
||||
{
|
||||
|
@ -265,7 +265,20 @@
|
|||
}
|
||||
else
|
||||
{
|
||||
[coder decodeValueOfObjCType:@encode(NSUInteger)
|
||||
at:&_rowAlignment];
|
||||
[coder decodeValueOfObjCType:@encode(CGFloat)
|
||||
at:&_columnSpacing];
|
||||
ASSIGN(_columns, [coder decodeObject]);
|
||||
[coder decodeValueOfObjCType:@encode(CGFloat)
|
||||
at:&_rowSpacing];
|
||||
ASSIGN(_rows, [coder decodeObject]);
|
||||
[coder decodeValueOfObjCType:@encode(NSUInteger)
|
||||
at:&_xPlacement];
|
||||
[coder decodeValueOfObjCType:@encode(NSUInteger)
|
||||
at:&_yPlacement];
|
||||
}
|
||||
|
||||
return self;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue