From 4a2c00a0a24bdc9a5660dfdb2685ec3e3cdac937 Mon Sep 17 00:00:00 2001 From: Uli Kusterer Date: Tue, 12 Aug 2003 02:33:32 +0200 Subject: [PATCH] Fixed bug in NuTemplateEditor that messed up element values. -- it wasn't in copying the template elements, but rather the table got out of sync when an exception was thrown inNuTemplateElement::setStringValue: --- Cocoa/English.lproj/Application.nib/info.nib | 6 +- .../English.lproj/Application.nib/objects.nib | Bin 9376 -> 9359 bytes NuTemplateEditor/NuTemplateElement.m | 11 +++- NuTemplateEditor/NuTemplateLSTBElement.h | 8 ++- NuTemplateEditor/NuTemplateLSTBElement.m | 54 +++++++++++++++--- NuTemplateEditor/NuTemplateLSTEElement.h | 5 +- NuTemplateEditor/NuTemplateLSTEElement.m | 32 ++++++++++- NuTemplateEditor/NuTemplateWindowController.m | 4 +- ResKnife.pbproj/project.pbxproj | 4 +- 9 files changed, 102 insertions(+), 22 deletions(-) diff --git a/Cocoa/English.lproj/Application.nib/info.nib b/Cocoa/English.lproj/Application.nib/info.nib index bf6f114..b2a2e02 100644 --- a/Cocoa/English.lproj/Application.nib/info.nib +++ b/Cocoa/English.lproj/Application.nib/info.nib @@ -7,16 +7,16 @@ IBEditorPositions 246 - 12 513 340 222 0 0 1024 746 + 344 386 340 222 0 0 1024 746 29 - 28 222 347 44 0 0 1024 746 + 33 294 347 44 0 0 1024 746 IBFramework Version 326.0 IBOpenObjects - 246 29 + 246 IBSystem Version 7A202 diff --git a/Cocoa/English.lproj/Application.nib/objects.nib b/Cocoa/English.lproj/Application.nib/objects.nib index fc5f804b90c6db355238408f5b52778b1e514af3..f6bf6db95bfadb28acc07d9851dc408a7f16f05e 100644 GIT binary patch literal 9359 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 HXUqD3MM$u1 literal 9376 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 diff --git a/NuTemplateEditor/NuTemplateElement.m b/NuTemplateEditor/NuTemplateElement.m index a4de1e0..263db7f 100644 --- a/NuTemplateEditor/NuTemplateElement.m +++ b/NuTemplateEditor/NuTemplateElement.m @@ -39,7 +39,8 @@ -(id) copyWithZone: (NSZone*)zone { NuTemplateElement* el = [[[self class] allocWithZone: zone] initForType: type withLabel: label]; - //NuTemplateElement* el = [[[self class] alloc] initForType:type withLabel:label]; + + [el setContaining: [self containing]]; return el; } @@ -72,7 +73,7 @@ -(void) setContaining: (NSMutableArray*)arr { - containing = arr; // It contains *us*, so it's unlikely it survives longer than we'd do, and we don't want to create a ring. + containing = arr; // It contains *us*, so it's unlikely we survive longer than it'd do, and we don't want to create a ring. } -(NSMutableArray*) containing @@ -123,5 +124,11 @@ } +-(void) setStringValue: (NSString*)str +{ + // We need this method. Otherwise key/value coding throws an exception which screws up the table. + NSLog(@"This template item can't accept any values, especially not \"%@\".",str); +} + @end diff --git a/NuTemplateEditor/NuTemplateLSTBElement.h b/NuTemplateEditor/NuTemplateLSTBElement.h index c195f57..49327c2 100644 --- a/NuTemplateEditor/NuTemplateLSTBElement.h +++ b/NuTemplateEditor/NuTemplateLSTBElement.h @@ -10,11 +10,17 @@ #import "NuTemplateGroupElement.h" +@class NuTemplateLSTEElement; + + @interface NuTemplateLSTBElement : NuTemplateGroupElement { - + NuTemplateLSTEElement* endElement; // Template to create our "list end" element from. } -(IBAction) showCreateResourceSheet: (id)sender; +-(void) setEndElement: (NuTemplateLSTEElement*)e; +-(NuTemplateLSTEElement*) endElement; + @end diff --git a/NuTemplateEditor/NuTemplateLSTBElement.m b/NuTemplateEditor/NuTemplateLSTBElement.m index f45df23..6a4c370 100644 --- a/NuTemplateEditor/NuTemplateLSTBElement.m +++ b/NuTemplateEditor/NuTemplateLSTBElement.m @@ -12,6 +12,13 @@ @implementation NuTemplateLSTBElement +-(void) dealloc +{ + [endElement release]; + [super dealloc]; +} + + -(void) readSubElementsFrom: (NuTemplateStream*)stream { while( [stream bytesToGo] > 0 ) @@ -19,7 +26,10 @@ NuTemplateElement* obj = [stream readOneElement]; if( [[obj type] isEqualToString: @"LSTE"] ) + { + endElement = [obj retain]; break; + } [subElements addObject: obj]; } } @@ -45,17 +55,19 @@ { while( [stream bytesToGo] > 0 ) { - nextItem = [self copy]; // Make another list item just like this one. - [containing addObject: nextItem]; // Add it below ourselves. - [nextItem readDataFrom:stream]; // Read it the same way we were. + nextItem = [[self copy] autorelease]; // Make another list item just like this one. + [nextItem setContaining: nil]; // Make sure it doesn't get into this "if" clause. + [containing addObject: nextItem]; // Add it below ourselves. + [nextItem readDataFrom:stream]; // Read it the same way we were. [nextItem setContaining: containing]; // Set "containing" *after* readDataFrom so it doesn't pass the "containing == nil" check above. } // Now add a terminating 'LSTE' item: NuTemplateLSTEElement* tlee; - tlee = [NuTemplateLSTEElement elementForType:@"LSTE" withLabel:label]; + tlee = [[endElement copy] autorelease]; [containing addObject: tlee]; [tlee setContaining: containing]; + [tlee setGroupElemTemplate: self]; if( bytesToGoAtStart == 0 ) // It's an empty list. Delete this LSTB again, so we only have the empty LSTE. { @@ -63,7 +75,7 @@ [containing removeObject:self]; // Remove the LSTB. } else - [tlee setSubElements: [subElements copy]]; // Make a copy. So each has its own array. + [tlee setSubElements: [[subElements copy] autorelease]]; // Make a copy. So each has its own array. } } @@ -74,10 +86,34 @@ } +-(id) copyWithZone: (NSZone*)zone +{ + NuTemplateLSTBElement* el = [super copyWithZone: zone]; + + [el setEndElement: [self endElement]]; + + return el; +} + +-(void) setEndElement: (NuTemplateLSTEElement*)e +{ + [e retain]; + [endElement release]; + endElement = e; +} + + +-(NuTemplateLSTEElement*) endElement +{ + return endElement; +} + + -(IBAction) showCreateResourceSheet: (id)sender { - unsigned idx = [containing indexOfObject:self]; - NuTemplateElement* te = [self copy]; + unsigned idx = [containing indexOfObject:self]; + NuTemplateGroupElement* te = [[self copy] autorelease]; + [containing insertObject:te atIndex:idx+1]; [te setContaining:containing]; } @@ -85,8 +121,8 @@ -(IBAction) clear: (id)sender { - [containing removeObject: self]; - [self autorelease]; + [[self retain] autorelease]; // Make sure we don't go away right now. That may surprise the one who called clear, or otherwise be bad. + [containing removeObject: self]; // Remove us from the array we're in. (this releases us once) } diff --git a/NuTemplateEditor/NuTemplateLSTEElement.h b/NuTemplateEditor/NuTemplateLSTEElement.h index 280e854..ecd2f6a 100644 --- a/NuTemplateEditor/NuTemplateLSTEElement.h +++ b/NuTemplateEditor/NuTemplateLSTEElement.h @@ -12,9 +12,12 @@ @interface NuTemplateLSTEElement : NuTemplateGroupElement { - + NuTemplateGroupElement* groupElemTemplate; // The item of which we're to create a copy. } -(IBAction) showCreateResourceSheet: (id)sender; +-(void) setGroupElemTemplate: (NuTemplateGroupElement*)e; +-(NuTemplateGroupElement*) groupElemTemplate; + @end diff --git a/NuTemplateEditor/NuTemplateLSTEElement.m b/NuTemplateEditor/NuTemplateLSTEElement.m index f81b439..e69d538 100644 --- a/NuTemplateEditor/NuTemplateLSTEElement.m +++ b/NuTemplateEditor/NuTemplateLSTEElement.m @@ -12,6 +12,25 @@ @implementation NuTemplateLSTEElement +-(void) dealloc +{ + [groupElemTemplate release]; + [super dealloc]; +} + + +-(void) setGroupElemTemplate: (NuTemplateGroupElement*)e +{ + [e retain]; + [groupElemTemplate release]; + groupElemTemplate = e; +} + +-(NuTemplateGroupElement*) groupElemTemplate +{ + return groupElemTemplate; +} + -(void) readSubElementsFrom: (NuTemplateStream*)stream { @@ -55,12 +74,21 @@ } +-(id) copyWithZone: (NSZone*)zone +{ + NuTemplateLSTEElement* el = [super copyWithZone: zone]; + + [el setGroupElemTemplate: [self groupElemTemplate]]; + + return el; +} + + -(IBAction) showCreateResourceSheet: (id)sender { unsigned idx = [containing indexOfObject:self]; - NuTemplateGroupElement* ge = [NuTemplateLSTBElement elementForType:@"LSTB" withLabel:[self label]]; + NuTemplateGroupElement* ge = [[groupElemTemplate copy] autorelease]; - [ge setSubElements: [subElements copy]]; [containing insertObject:ge atIndex:idx]; [ge setContaining: containing]; } diff --git a/NuTemplateEditor/NuTemplateWindowController.m b/NuTemplateEditor/NuTemplateWindowController.m index 4420707..d108598 100644 --- a/NuTemplateEditor/NuTemplateWindowController.m +++ b/NuTemplateEditor/NuTemplateWindowController.m @@ -149,7 +149,7 @@ // Loop over template and read each field: while( currElement = [enny nextObject] ) { - currElement = [currElement copy]; // Copy the template object. + currElement = [[currElement copy] autorelease]; // Copy the template object. [resourceStructure addObject: currElement]; // Add it to our parsed resource data list. Do this right away so the element can append other items should it desire to. [currElement setContaining: resourceStructure]; @@ -319,7 +319,7 @@ return( [selElement validateMenuItem: item] ); else if( [item action] == @selector(clear:) ) return( selElement != nil && [selElement respondsToSelector: @selector(clear:)] ); - else return [super validateMenuItem:item]; + else return NO; } diff --git a/ResKnife.pbproj/project.pbxproj b/ResKnife.pbproj/project.pbxproj index 00965de..3236a15 100644 --- a/ResKnife.pbproj/project.pbxproj +++ b/ResKnife.pbproj/project.pbxproj @@ -2654,11 +2654,11 @@ CFBundlePackageType APPL CFBundleShortVersionString - Development version 0.5d1 + Development version 0.5d2 CFBundleSignature ResK CFBundleVersion - 0.5d1 + 0.5d2 NSMainNibFile Application NSPrincipalClass