mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-05-29 20:37:39 +00:00
Add handling for resources. Currently only works for images.
This commit is contained in:
parent
c542f5df99
commit
d6cfd60462
2 changed files with 41 additions and 3 deletions
|
@ -40,6 +40,7 @@
|
|||
GSXibElement *_flattenedProperties;
|
||||
GSXibElement *_runtimeAttributes;
|
||||
NSMutableDictionary *_orderedObjectsDict;
|
||||
NSArray *_resources;
|
||||
}
|
||||
|
||||
- (NSRange) decodeRangeForKey: (NSString*)key;
|
||||
|
|
|
@ -373,6 +373,7 @@ static NSArray *XmlBoolDefaultYes = nil;
|
|||
@"NSNibBindingConnector", @"binding",
|
||||
@"NSWindowTemplate5", @"window",
|
||||
@"NSView", @"tableCellView",
|
||||
@"NSImage", @"image",
|
||||
nil];
|
||||
RETAIN(XmltagToObjectClassCrossReference);
|
||||
|
||||
|
@ -453,7 +454,6 @@ static NSArray *XmlBoolDefaultYes = nil;
|
|||
@"prefersToBeShown", @"NSToolbarPrefersToBeShown",
|
||||
@"label", @"NSToolbarItemLabel",
|
||||
@"paletteLabel", @"NSToolbarItemPaletteLabel",
|
||||
//@"image", @"NSToolbarItemImage",
|
||||
@"tag", @"NSToolbarItemTag",
|
||||
@"implicitItemIdentifier", @"NSToolbarItemIdentifier",
|
||||
@"bordered", @"NSIsBordered",
|
||||
|
@ -569,7 +569,8 @@ static NSArray *XmlBoolDefaultYes = nil;
|
|||
@"decodeSegmentItemImageForElement:", @"NSSegmentItemImage",
|
||||
@"decodeBackgroundColorsForElement:", @"NSBackgroundColors",
|
||||
@"decodeDividerStyleForElement:", @"NSDividerStyle",
|
||||
@"decodeToolsbarIdentifiedItemsForElement:", @"NSToolbarIBIdentifiedItems",
|
||||
@"decodeToolbarIdentifiedItemsForElement:", @"NSToolbarIBIdentifiedItems",
|
||||
@"decodeToolbarImageForElement:", @"NSToolbarItemImage",
|
||||
nil];
|
||||
RETAIN(XmlKeyToDecoderSelectorMap);
|
||||
|
||||
|
@ -830,6 +831,9 @@ static NSArray *XmlBoolDefaultYes = nil;
|
|||
NS_ENDHANDLER
|
||||
|
||||
DESTROY(theParser);
|
||||
|
||||
// Decode optional resources
|
||||
_resources = RETAIN([self decodeObjectForKey: @"resources"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -900,6 +904,7 @@ static NSArray *XmlBoolDefaultYes = nil;
|
|||
RELEASE(_runtimeAttributes);
|
||||
RELEASE(_orderedObjects);
|
||||
RELEASE(_orderedObjectsDict);
|
||||
RELEASE(_resources);
|
||||
[super dealloc];
|
||||
}
|
||||
|
||||
|
@ -1039,6 +1044,22 @@ didStartElement: (NSString*)elementName
|
|||
}
|
||||
}
|
||||
|
||||
- (id) findResourceWithName: (NSString*)name
|
||||
{
|
||||
NSEnumerator *iter = [_resources objectEnumerator];
|
||||
id resource = nil;
|
||||
|
||||
while ((resource = [iter nextObject]))
|
||||
{
|
||||
if ([[resource name] isEqual: name])
|
||||
{
|
||||
return resource;
|
||||
}
|
||||
}
|
||||
|
||||
return nil;
|
||||
}
|
||||
|
||||
// All this code should eventually move into their respective initWithCoder class
|
||||
// methods - however note - there are a couple that may be duplicated...
|
||||
|
||||
|
@ -2880,7 +2901,7 @@ didStartElement: (NSString*)elementName
|
|||
return [NSNumber numberWithBool: value];
|
||||
}
|
||||
|
||||
- (id) decodeToolsbarIdentifiedItemsForElement: (GSXibElement*)element
|
||||
- (id) decodeToolbarIdentifiedItemsForElement: (GSXibElement*)element
|
||||
{
|
||||
NSArray *allowedItems = [self decodeObjectForKey: @"allowedToolbarItems"];
|
||||
NSMutableDictionary *map = [NSMutableDictionary dictionary];
|
||||
|
@ -2895,6 +2916,13 @@ didStartElement: (NSString*)elementName
|
|||
return map;
|
||||
}
|
||||
|
||||
- (id) decodeToolbarImageForElement: (GSXibElement*)element
|
||||
{
|
||||
NSString *name = [self decodeObjectForKey: @"image"];
|
||||
|
||||
return [self findResourceWithName: name];
|
||||
}
|
||||
|
||||
- (id) objectForXib: (GSXibElement*)element
|
||||
{
|
||||
id object = [super objectForXib: element];
|
||||
|
@ -3204,6 +3232,11 @@ didStartElement: (NSString*)elementName
|
|||
{
|
||||
size = [self decodeSizeForKey: [XmlKeyMapTable objectForKey: key]];
|
||||
}
|
||||
else if ([key isEqual: @"NSSize"])
|
||||
{
|
||||
size.width = [[currentElement attributeForKey: @"width"] doubleValue];
|
||||
size.height = [[currentElement attributeForKey: @"height"] doubleValue];
|
||||
}
|
||||
else if ([key hasPrefix: @"NS"])
|
||||
{
|
||||
NSString *newKey = [self alternateName: key];
|
||||
|
@ -3307,6 +3340,10 @@ didStartElement: (NSString*)elementName
|
|||
{
|
||||
hasValue = [currentElement attributeForKey: @"autoenablesItems"] != nil;
|
||||
}
|
||||
else if ([@"NSToolbarItemImage" isEqualToString: key])
|
||||
{
|
||||
hasValue = [currentElement attributeForKey: @"image"] != nil;
|
||||
}
|
||||
else if ([XmlKeysDefined containsObject: key])
|
||||
{
|
||||
// These are arbitrarily defined through hard-coding...
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue