Add implementation of decodeIntegerForKey: to allow decoding of enums, add non keyed decoding to NSGridView.

This commit is contained in:
Gregory John Casamento 2020-11-22 23:29:58 -05:00
parent a10b869710
commit 269103e1e9
2 changed files with 51 additions and 5 deletions

View file

@ -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;

View file

@ -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;
}