mirror of
https://github.com/gnustep/libs-gui.git
synced 2025-04-23 10:01:14 +00:00
Add method to pull subclasses and compare them to the xml elements so we can handle subclasses of NSWindowController and NSViewController, or future subclasses
This commit is contained in:
parent
fd14a3c591
commit
0c278cc74b
1 changed files with 20 additions and 6 deletions
|
@ -462,12 +462,11 @@
|
|||
[objects detach];
|
||||
[doc addChild: objects];
|
||||
}
|
||||
|
||||
- (NSArray *) findSubclassesOf: (Class)clz
|
||||
inDocument: (NSXMLDocument *)document
|
||||
|
||||
- (NSArray *) subclassesOfClass: (Class)clz
|
||||
{
|
||||
NSArray *result = nil;
|
||||
NSMutableArray *subclasses = [GSObjCAllSubclassesOfClass(clz) mutableCopy];
|
||||
NSMutableArray *result = [NSMutableArray arrayWithCapacity: [subclasses count]];
|
||||
|
||||
[subclasses insertObject: clz atIndex: 0];
|
||||
FOR_IN(Class, cls, subclasses)
|
||||
|
@ -477,9 +476,24 @@
|
|||
NSString *xmlClassName = [NSString stringWithFormat: @"%@%@",
|
||||
[[classNameNoNamespace substringToIndex: 1] lowercaseString],
|
||||
[classNameNoNamespace substringFromIndex: 1]];
|
||||
NSString *xpath = [NSString stringWithFormat: @"//%@",xmlClassName];
|
||||
result = [document nodesForXPath: xpath error: NULL];
|
||||
|
||||
[result addObject: xmlClassName];
|
||||
}
|
||||
END_FOR_IN(subclasses);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
- (NSArray *) findSubclassesOf: (Class)clz
|
||||
inDocument: (NSXMLDocument *)document
|
||||
{
|
||||
NSArray *result = nil;
|
||||
NSArray *xmlClassNames = [self subclassesOfClass: clz];
|
||||
|
||||
FOR_IN(NSString*, xmlClassName, xmlClassNames)
|
||||
{
|
||||
NSString *xpath = [NSString stringWithFormat: @"//%@",xmlClassName];
|
||||
result = [document nodesForXPath: xpath error: NULL];
|
||||
if ([result count] > 0)
|
||||
{
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue