Improved gmodel decoding and start of code for class browser.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/gorm/trunk@21192 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Gregory John Casamento 2005-05-07 10:34:26 +00:00
parent 9b9575fb7f
commit 69bc03eb7e
3 changed files with 81 additions and 41 deletions

View file

@ -1,3 +1,9 @@
2005-05-07 06:35 Gregory John Casamento <greg_casamento@yahoo.com>
* GormCore/GModelDecoder.m: Code to remove uneeded
classes from the model during processing.
* GormCore/GormClassEditor.m: Beginnings of class browser code.
2005-05-04 05:32 Gregory John Casamento <greg_casamento@yahoo.com>
* GormCore/GormClassEditor.h: Changed class inheritance added

View file

@ -353,56 +353,73 @@ static BOOL gormFileOwnerDecoded;
inPath: (NSString *)path
{
NSMutableDictionary *customMap = nil;
NSEnumerator *en = [model objectEnumerator];
id obj;
NSEnumerator *en = [model keyEnumerator];
NSMutableArray *deleted = [NSMutableArray array];
id key;
NSLog(@"Processing model...");
while((obj = [en nextObject]) != nil)
while((key = [en nextObject]) != nil)
{
if([obj isKindOfClass: [NSDictionary class]])
NSDictionary *obj = [model objectForKey: key];
if(obj != nil)
{
NSString *objIsa = [(NSMutableDictionary *)obj objectForKey: @"isa"];
Class cls = NSClassFromString(objIsa);
// NSLog(@"isa = %@",objIsa);
if([classManager isKnownClass: objIsa] == NO &&
[objIsa isEqual: @"IMControlConnector"] == NO &&
[objIsa isEqual: @"IMOutletConnector"] == NO &&
[objIsa isEqual: @"IMCustomObject"] == NO &&
[objIsa isEqual: @"IMCustomView"] == NO &&
cls == nil)
if([obj isKindOfClass: [NSDictionary class]])
{
NSString *superClass;
NSString *objIsa = [(NSMutableDictionary *)obj objectForKey: @"isa"];
Class cls = NSClassFromString(objIsa);
NSLog(@"%@ is not a known class",objIsa);
[self defineClass: objIsa inFile: path];
superClass = [classManager superClassNameForClassNamed: objIsa];
[(NSMutableDictionary *)obj setObject: superClass forKey: @"isa"];
// guess at name which will be given in the nameTable...
/*
if([superClass isEqual: @"NSMenu"])
name = @"GormNSMenu";
else if([superClass isEqual: @"NSWindow"])
name = @"GormNSWindow";
else if([superClass isEqual: @"NSPanel"])
name = @"GormNSPanel";
else if([superClass isEqual: @"NSBrowser"])
name = @"GormNSBrowser";
else if([superClass isEqual: @"NSTableView"])
name = @"GormNSTableView";
else if([superClass isEqual: @"NSOutlineView"])
name = @"GormNSOutlineView";
else if([superClass isEqual: @"NSPopUpButton"])
name = @"GormNSPopUpButton";
else if([superClass isEqual: @"NSPopUpButtonCell"])
name = @"GormNSPopUpButtonCell";
else if([superClass isEqual: @"NSOutlineView"])
name = @"GormNSOutlineView";
*/
if(cls == nil)
{
// Remove this class. It's not defined on GNUstep and it's generally
// useless.
if([objIsa isEqual: @"NSNextStepFrame"])
{
NSString *subviewsKey = [obj objectForKey: @"subviews"];
NSDictionary *subviews = [model objectForKey: subviewsKey];
NSArray *elements = [subviews objectForKey: @"elements"];
NSEnumerator *subViewEnum = [elements objectEnumerator];
NSString *svkey = nil;
while((svkey = [subViewEnum nextObject]) != nil)
{
[deleted addObject: svkey];
}
[deleted addObject: key];
[deleted addObject: subviewsKey];
continue;
}
if([objIsa isEqual: @"NSImageCacheView"])
{
// this is eliminated in the NSNextStepFrame section above.
continue;
}
if([classManager isKnownClass: objIsa] == NO &&
[objIsa isEqual: @"IMControlConnector"] == NO &&
[objIsa isEqual: @"IMOutletConnector"] == NO &&
[objIsa isEqual: @"IMCustomObject"] == NO &&
[objIsa isEqual: @"IMCustomView"] == NO)
{
NSString *superClass;
NSLog(@"%@ is not a known class",objIsa);
[self defineClass: objIsa inFile: path];
superClass = [classManager superClassNameForClassNamed: objIsa];
[(NSMutableDictionary *)obj setObject: superClass forKey: @"isa"];
}
}
}
}
}
// remove objects marked for deletion the model.
en = [deleted objectEnumerator];
while((key = [en nextObject]) != nil)
{
[model removeObjectForKey: key];
}
return customMap;
}

View file

@ -129,6 +129,14 @@ NSString *GormClassPboardType = @"GormClassPboardType";
// expand all of the items in the classesView...
[outlineView expandItem: @"NSObject"];
// allocate the NSBrowser view.
/*
browserView = [[NSBrowser alloc] initWithFrame: mainRect];
[browserView setDelegate: self];
[browserView loadColumnZero];
[browserView selectRow: 0 inColumn: 0];
*/
// register for types...
[IBResourceManager registerForAllPboardTypes: self
inDocument: document];
@ -1025,3 +1033,12 @@ shouldEditTableColumn: (NSTableColumn *)tableColumn
}
@end // end of data source
@implementation GormClassEditor (NSBrowserDelegate)
- (void) browser: (NSBrowser *)browser createRowsForColumn: (int)column inMatrix: (NSMatrix *)matrix
{
}
@end