mirror of
https://github.com/gnustep/apps-gorm.git
synced 2025-04-22 22:20:44 +00:00
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:
parent
9b9575fb7f
commit
69bc03eb7e
3 changed files with 81 additions and 41 deletions
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue