mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-05-30 17:01:16 +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 *_flattenedProperties;
|
||||||
GSXibElement *_runtimeAttributes;
|
GSXibElement *_runtimeAttributes;
|
||||||
NSMutableDictionary *_orderedObjectsDict;
|
NSMutableDictionary *_orderedObjectsDict;
|
||||||
|
NSArray *_resources;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (NSRange) decodeRangeForKey: (NSString*)key;
|
- (NSRange) decodeRangeForKey: (NSString*)key;
|
||||||
|
|
|
@ -373,6 +373,7 @@ static NSArray *XmlBoolDefaultYes = nil;
|
||||||
@"NSNibBindingConnector", @"binding",
|
@"NSNibBindingConnector", @"binding",
|
||||||
@"NSWindowTemplate5", @"window",
|
@"NSWindowTemplate5", @"window",
|
||||||
@"NSView", @"tableCellView",
|
@"NSView", @"tableCellView",
|
||||||
|
@"NSImage", @"image",
|
||||||
nil];
|
nil];
|
||||||
RETAIN(XmltagToObjectClassCrossReference);
|
RETAIN(XmltagToObjectClassCrossReference);
|
||||||
|
|
||||||
|
@ -453,7 +454,6 @@ static NSArray *XmlBoolDefaultYes = nil;
|
||||||
@"prefersToBeShown", @"NSToolbarPrefersToBeShown",
|
@"prefersToBeShown", @"NSToolbarPrefersToBeShown",
|
||||||
@"label", @"NSToolbarItemLabel",
|
@"label", @"NSToolbarItemLabel",
|
||||||
@"paletteLabel", @"NSToolbarItemPaletteLabel",
|
@"paletteLabel", @"NSToolbarItemPaletteLabel",
|
||||||
//@"image", @"NSToolbarItemImage",
|
|
||||||
@"tag", @"NSToolbarItemTag",
|
@"tag", @"NSToolbarItemTag",
|
||||||
@"implicitItemIdentifier", @"NSToolbarItemIdentifier",
|
@"implicitItemIdentifier", @"NSToolbarItemIdentifier",
|
||||||
@"bordered", @"NSIsBordered",
|
@"bordered", @"NSIsBordered",
|
||||||
|
@ -569,7 +569,8 @@ static NSArray *XmlBoolDefaultYes = nil;
|
||||||
@"decodeSegmentItemImageForElement:", @"NSSegmentItemImage",
|
@"decodeSegmentItemImageForElement:", @"NSSegmentItemImage",
|
||||||
@"decodeBackgroundColorsForElement:", @"NSBackgroundColors",
|
@"decodeBackgroundColorsForElement:", @"NSBackgroundColors",
|
||||||
@"decodeDividerStyleForElement:", @"NSDividerStyle",
|
@"decodeDividerStyleForElement:", @"NSDividerStyle",
|
||||||
@"decodeToolsbarIdentifiedItemsForElement:", @"NSToolbarIBIdentifiedItems",
|
@"decodeToolbarIdentifiedItemsForElement:", @"NSToolbarIBIdentifiedItems",
|
||||||
|
@"decodeToolbarImageForElement:", @"NSToolbarItemImage",
|
||||||
nil];
|
nil];
|
||||||
RETAIN(XmlKeyToDecoderSelectorMap);
|
RETAIN(XmlKeyToDecoderSelectorMap);
|
||||||
|
|
||||||
|
@ -830,6 +831,9 @@ static NSArray *XmlBoolDefaultYes = nil;
|
||||||
NS_ENDHANDLER
|
NS_ENDHANDLER
|
||||||
|
|
||||||
DESTROY(theParser);
|
DESTROY(theParser);
|
||||||
|
|
||||||
|
// Decode optional resources
|
||||||
|
_resources = RETAIN([self decodeObjectForKey: @"resources"]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -900,6 +904,7 @@ static NSArray *XmlBoolDefaultYes = nil;
|
||||||
RELEASE(_runtimeAttributes);
|
RELEASE(_runtimeAttributes);
|
||||||
RELEASE(_orderedObjects);
|
RELEASE(_orderedObjects);
|
||||||
RELEASE(_orderedObjectsDict);
|
RELEASE(_orderedObjectsDict);
|
||||||
|
RELEASE(_resources);
|
||||||
[super dealloc];
|
[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
|
// All this code should eventually move into their respective initWithCoder class
|
||||||
// methods - however note - there are a couple that may be duplicated...
|
// methods - however note - there are a couple that may be duplicated...
|
||||||
|
|
||||||
|
@ -2880,7 +2901,7 @@ didStartElement: (NSString*)elementName
|
||||||
return [NSNumber numberWithBool: value];
|
return [NSNumber numberWithBool: value];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (id) decodeToolsbarIdentifiedItemsForElement: (GSXibElement*)element
|
- (id) decodeToolbarIdentifiedItemsForElement: (GSXibElement*)element
|
||||||
{
|
{
|
||||||
NSArray *allowedItems = [self decodeObjectForKey: @"allowedToolbarItems"];
|
NSArray *allowedItems = [self decodeObjectForKey: @"allowedToolbarItems"];
|
||||||
NSMutableDictionary *map = [NSMutableDictionary dictionary];
|
NSMutableDictionary *map = [NSMutableDictionary dictionary];
|
||||||
|
@ -2895,6 +2916,13 @@ didStartElement: (NSString*)elementName
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (id) decodeToolbarImageForElement: (GSXibElement*)element
|
||||||
|
{
|
||||||
|
NSString *name = [self decodeObjectForKey: @"image"];
|
||||||
|
|
||||||
|
return [self findResourceWithName: name];
|
||||||
|
}
|
||||||
|
|
||||||
- (id) objectForXib: (GSXibElement*)element
|
- (id) objectForXib: (GSXibElement*)element
|
||||||
{
|
{
|
||||||
id object = [super objectForXib: element];
|
id object = [super objectForXib: element];
|
||||||
|
@ -3204,6 +3232,11 @@ didStartElement: (NSString*)elementName
|
||||||
{
|
{
|
||||||
size = [self decodeSizeForKey: [XmlKeyMapTable objectForKey: key]];
|
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"])
|
else if ([key hasPrefix: @"NS"])
|
||||||
{
|
{
|
||||||
NSString *newKey = [self alternateName: key];
|
NSString *newKey = [self alternateName: key];
|
||||||
|
@ -3307,6 +3340,10 @@ didStartElement: (NSString*)elementName
|
||||||
{
|
{
|
||||||
hasValue = [currentElement attributeForKey: @"autoenablesItems"] != nil;
|
hasValue = [currentElement attributeForKey: @"autoenablesItems"] != nil;
|
||||||
}
|
}
|
||||||
|
else if ([@"NSToolbarItemImage" isEqualToString: key])
|
||||||
|
{
|
||||||
|
hasValue = [currentElement attributeForKey: @"image"] != nil;
|
||||||
|
}
|
||||||
else if ([XmlKeysDefined containsObject: key])
|
else if ([XmlKeysDefined containsObject: key])
|
||||||
{
|
{
|
||||||
// These are arbitrarily defined through hard-coding...
|
// These are arbitrarily defined through hard-coding...
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue