From 40c8861964aece03c7866e7c03b477df33dd0ce5 Mon Sep 17 00:00:00 2001 From: Nicholas Shanks Date: Tue, 12 Feb 2002 01:24:53 +0000 Subject: [PATCH] Restrictions applied to resource creation sheet to prevent type/ID clashes occuring. --- Cocoa/Classes/CreateResourceSheetController.h | 4 ++ Cocoa/Classes/CreateResourceSheetController.m | 24 +++++++++++- Cocoa/Classes/ResourceDocument.h | 1 + Cocoa/Classes/ResourceDocument.m | 5 +++ .../English.lproj/InfoWindow.nib/objects.nib | Bin 3657 -> 3677 bytes .../ResourceDocument.nib/info.nib | 4 -- .../ResourceDocument.nib/objects.nib | Bin 6671 -> 6831 bytes .../English.lproj/HexWindow.nib/objects.nib | Bin 5807 -> 5807 bytes Cocoa/Plug-Ins/Hex Editor/HexEditorDelegate.m | 36 +----------------- .../Plug-Ins/Hex Editor/HexWindowController.h | 2 +- .../Plug-Ins/Hex Editor/HexWindowController.m | 17 +++++---- 11 files changed, 45 insertions(+), 48 deletions(-) diff --git a/Cocoa/Classes/CreateResourceSheetController.h b/Cocoa/Classes/CreateResourceSheetController.h index a93db87..578fc68 100644 --- a/Cocoa/Classes/CreateResourceSheetController.h +++ b/Cocoa/Classes/CreateResourceSheetController.h @@ -1,4 +1,6 @@ #import +#import +#import "Resource.h" #import "ResourceDataSource.h" @interface CreateResourceSheetController : NSWindowController @@ -14,6 +16,8 @@ IBOutlet NSWindow *parent; } +- (void)controlTextDidChange:(NSNotification *)notification; + - (IBAction)showCreateResourceSheet:(id)sender; - (IBAction)hideCreateResourceSheet:(id)sender; - (IBAction)typePopupSelection:(id)sender; diff --git a/Cocoa/Classes/CreateResourceSheetController.m b/Cocoa/Classes/CreateResourceSheetController.m index fb03785..4fed724 100644 --- a/Cocoa/Classes/CreateResourceSheetController.m +++ b/Cocoa/Classes/CreateResourceSheetController.m @@ -1,8 +1,27 @@ #import "CreateResourceSheetController.h" -#import @implementation CreateResourceSheetController +- (void)controlTextDidChange:(NSNotification *)notification +{ + BOOL enableButton = NO, clash = NO; + NSString *type = [typeView stringValue]; + NSNumber *resID = [NSNumber numberWithInt:[resIDView intValue]]; + + if( [type length] == 4 && [[resIDView stringValue] length] > 0 ) + { + Resource *resource; + NSEnumerator *enumerator = [[dataSource resources] objectEnumerator]; + while( resource = [enumerator nextObject] ) + { + if( [type isEqualToString:[resource type]] && [resID isEqualToNumber:[resource resID]] ) + clash = YES; + } + if( !clash ) enableButton = YES; + } + [createButton setEnabled:enableButton]; +} + - (IBAction)showCreateResourceSheet:(id)sender { [NSApp beginSheet:[self window] modalForWindow:parent modalDelegate:self didEndSelector:NULL contextInfo:nil]; @@ -26,7 +45,8 @@ - (IBAction)typePopupSelection:(id)sender { - + [typeView setStringValue:[typePopup titleOfSelectedItem]]; + [typeView selectText:sender]; } @end diff --git a/Cocoa/Classes/ResourceDocument.h b/Cocoa/Classes/ResourceDocument.h index 27fdd1a..5fc8f0b 100644 --- a/Cocoa/Classes/ResourceDocument.h +++ b/Cocoa/Classes/ResourceDocument.h @@ -24,5 +24,6 @@ - (NSOutlineView *)outlineView; - (ResourceDataSource *)dataSource; +- (NSArray *)resources; // return the array as non-mutable @end \ No newline at end of file diff --git a/Cocoa/Classes/ResourceDocument.m b/Cocoa/Classes/ResourceDocument.m index 0ad8984..40c24b8 100644 --- a/Cocoa/Classes/ResourceDocument.m +++ b/Cocoa/Classes/ResourceDocument.m @@ -474,4 +474,9 @@ static NSString *RKShowInfoItemIdentifier = @"com.nickshanks.resknife.toolbar.sh return dataSource; } +- (NSArray *)resources +{ + return resources; +} + @end \ No newline at end of file diff --git a/Cocoa/English.lproj/InfoWindow.nib/objects.nib b/Cocoa/English.lproj/InfoWindow.nib/objects.nib index d628ff4141a679d0bc5d495198a3e3aafc8e2dc2..527d16ae5c73cb9623b22f16d1e77ee11d7ae97a 100644 GIT binary patch literal 3677 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 V)H6OZsw=uYW&n^ga2YtxzX1~D_n80y diff --git a/Cocoa/English.lproj/ResourceDocument.nib/info.nib b/Cocoa/English.lproj/ResourceDocument.nib/info.nib index 3aa26e7..53173e0 100644 --- a/Cocoa/English.lproj/ResourceDocument.nib/info.nib +++ b/Cocoa/English.lproj/ResourceDocument.nib/info.nib @@ -6,10 +6,6 @@ 104 127 480 547 0 0 1024 746 IBFramework Version 248.0 - IBOpenObjects - - 5 - IBSystem Version 5P48 IBUserGuides diff --git a/Cocoa/English.lproj/ResourceDocument.nib/objects.nib b/Cocoa/English.lproj/ResourceDocument.nib/objects.nib index 143eb93cfaa7a371b9e58b406f2ffbdb061df8e2..f54dda3594fab00b18bdd80502e361c861012a92 100644 GIT binary patch literal 6831 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 delta 931 zcmZ8dO-~b16rI;8lnyPe{a}EW+ENSnK@?2H)GiQ`k_P#(Q#8aFZRiw6+m5u2MO+X} znYbhNrV}P~(Uhc#L|OT<*ESk}-f zic%{~TVqhPIlDSb>m^^wUsC(}YlfUhda_s2EFBL&sDN3#I%hmzUEFN-uZ}FNasVWC*@=jf5Yv6Wt)3S?&$M%ic zYE7=!gatm87?R|jqZ-#yAb3d*!IZ2P%0Vv&0k!w92Gzf4Nb|W|e1UwD zR9aWuMcs&?*l?f+-{``(+<2!ACywKq0ms_$ofCM`k9jYiWpS_xSC8Q`!l7pDvf`UA zTsPyS4@aFi-i_xv@r(ms@4#2=c;16qixN<%5^=LeM#sc?F&@sw(+0jEX75VU9~9C| AEdT%j diff --git a/Cocoa/Plug-Ins/Hex Editor/HexEditorDelegate.m b/Cocoa/Plug-Ins/Hex Editor/HexEditorDelegate.m index 299b0d0..2fa78ac 100644 --- a/Cocoa/Plug-Ins/Hex Editor/HexEditorDelegate.m +++ b/Cocoa/Plug-Ins/Hex Editor/HexEditorDelegate.m @@ -182,6 +182,7 @@ - (NSRange)asciiRangeFromByteRange:(NSRange)byteRange; { +#warning There's a bug in this somewhere! // assumes 16 byte wide window NSRange asciiRange = NSMakeRange(0,0); @@ -191,47 +192,14 @@ return asciiRange; } -/* -- (void)textViewDidChangeSelection:(NSNotification *)notification; -{ -} - - (BOOL)textView:(NSTextView *)textView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString; { if( textView == hex ) // we're editing in hexadecimal constrain to 0-9, A-F { + return YES; } else return YES; // we're editing in ASCII -}*/ - -/* -Raphael Sebbe's code -- (void)textViewDidChangeSelection:(NSNotification *)aNotification -{ - BOOL shouldUpdate = NO; - id textView = [aNotification object]; - if(textView == _hexText) - { - NSRange hexRange = [textView selectedRange]; - NSRange byteRange = [HVHexInterpreter byteRangeFromHexRange:hexRange]; - - _selectedByteRange = byteRange; shouldUpdate = YES; - } - else if(textView == _asciiText) - { - NSRange asciiRange = [textView selectedRange]; - NSRange byteRange = [HVHexInterpreter byteRangeFromAsciiRange:asciiRange]; - - _selectedByteRange = byteRange; shouldUpdate = YES; - } - if(shouldUpdate) - { - [self updateSelectionFeedback]; - [self updateSelectionOffsetTF]; - [self updateForms]; - } } -*/ - (NSTextView *)hex { diff --git a/Cocoa/Plug-Ins/Hex Editor/HexWindowController.h b/Cocoa/Plug-Ins/Hex Editor/HexWindowController.h index 2d10271..bc0165c 100644 --- a/Cocoa/Plug-Ins/Hex Editor/HexWindowController.h +++ b/Cocoa/Plug-Ins/Hex Editor/HexWindowController.h @@ -20,8 +20,8 @@ - (id)initWithResource:(id)newResource; // normal methods -- (void)resourceDidChange:(NSNotification *)notification; - (void)viewDidScroll:(NSNotification *)notification; +- (void)resourceDidChange:(NSNotification *)notification; - (void)refreshData:(NSData *)data; // accessors diff --git a/Cocoa/Plug-Ins/Hex Editor/HexWindowController.m b/Cocoa/Plug-Ins/Hex Editor/HexWindowController.m index b4f25b4..eb270fd 100644 --- a/Cocoa/Plug-Ins/Hex Editor/HexWindowController.m +++ b/Cocoa/Plug-Ins/Hex Editor/HexWindowController.m @@ -36,6 +36,9 @@ NSString *ResourceChangedNotification = @"ResourceChangedNotification"; { [super windowDidLoad]; + // swap text views to instances of my class instead + // An experianced NeXT programmer told me that poseAsClass would come back to bite me in the ass at some point, and that I should instead instanciate some HexTextViews and swap them in for now, and use IB do do things properly once IB is fixed. But, for now I think I'll not bother :-P + // we don't want this notification until we have a window! [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resourceDidChange:) name:ResourceChangedNotification object:nil]; @@ -51,13 +54,6 @@ NSString *ResourceChangedNotification = @"ResourceChangedNotification"; [self showWindow:self]; } -- (void)resourceDidChange:(NSNotification *)notification -{ - // see if it's our resource which got changed (we receive notifications for any resource being changed, allowing multi-resource editors) - if( [notification object] == resource ) - [self refreshData:[(id )resource data]]; -} - - (void)viewDidScroll:(NSNotification *)notification { // get object refs for increased speed @@ -97,6 +93,13 @@ NSString *ResourceChangedNotification = @"ResourceChangedNotification"; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(viewDidScroll:) name:NSViewBoundsDidChangeNotification object:asciiClip]; } +- (void)resourceDidChange:(NSNotification *)notification +{ + // see if it's our resource which got changed (we receive notifications for any resource being changed, allowing multi-resource editors) + if( [notification object] == resource ) + [self refreshData:[(id )resource data]]; +} + - (void)refreshData:(NSData *)data; { // clear delegates (see HexEditorDelegate class for explanation of why)