Various bug fixes and a hack to open NovaTools until custom editors are properly supported.

This commit is contained in:
Nicholas Shanks 2002-04-04 16:57:07 +00:00
parent 4b5624b606
commit f4ac76473f
7 changed files with 1078 additions and 18 deletions

View File

@ -3,6 +3,6 @@
@interface NSOutlineView (SelectedItems) @interface NSOutlineView (SelectedItems)
- (id)selectedItem; - (id)selectedItem;
- (id)selectedItems; - (NSArray *)selectedItems;
@end @end

View File

@ -77,8 +77,8 @@
[[filePropertyForm cellAtIndex:1] setStringValue:[currentDocument type]]; [[filePropertyForm cellAtIndex:1] setStringValue:[currentDocument type]];
// [[filePropertyForm cellAtIndex:2] setObjectValue:[NSNumber numberWithUnsignedLongLong:dataLogicalSize]]; // [[filePropertyForm cellAtIndex:2] setObjectValue:[NSNumber numberWithUnsignedLongLong:dataLogicalSize]];
// [[filePropertyForm cellAtIndex:3] setObjectValue:[NSNumber numberWithUnsignedLongLong:rsrcLogicalSize]]; // [[filePropertyForm cellAtIndex:3] setObjectValue:[NSNumber numberWithUnsignedLongLong:rsrcLogicalSize]];
[[filePropertyForm cellAtIndex:2] setStringValue:[NSNumber numberWithUnsignedLongLong:dataLogicalSize]]; [[filePropertyForm cellAtIndex:2] setStringValue:[NSString stringWithUnsignedLongLong:dataLogicalSize]];
[[filePropertyForm cellAtIndex:3] setStringValue:[NSNumber numberWithUnsignedLongLong:rsrcLogicalSize]]; [[filePropertyForm cellAtIndex:3] setStringValue:[NSString stringWithUnsignedLongLong:rsrcLogicalSize]];
[placeholderView setContentView:documentView]; [placeholderView setContentView:documentView];
} }
} }

View File

@ -266,8 +266,18 @@ static NSString *RKShowInfoItemIdentifier = @"com.nickshanks.resknife.toolbar.sh
- (void)openResourceUsingEditor:(Resource *)resource - (void)openResourceUsingEditor:(Resource *)resource
{ {
// Placeholder, change at some point. #warning openResourceUsingEditor: shortcuts to NovaTools !!
[self openResource:resource usingTemplate:[resource type]]; // opens resource in template using TMPL resource with name templateName
NSBundle *editor = [NSBundle bundleWithPath:[[[NSBundle mainBundle] builtInPlugInsPath] stringByAppendingPathComponent:@"NovaTools.plugin"]];
// open the resources, passing in the template to use
if( editor /* && [[editor principalClass] respondsToSelector:@selector(initWithResource:)] */ )
{
// bug: I alloc a plug instance here, but have no idea where I should dealloc it, perhaps the plug ought to call [self autorelease] when it's last window is closed?
[(id <ResKnifePluginProtocol>)[[editor principalClass] alloc] initWithResource:resource];
}
// if no editor exists, or the editor is broken, open using template
else [self openResource:resource usingTemplate:[resource type]];
} }
- (void)openResource:(Resource *)resource usingTemplate:(NSString *)templateName - (void)openResource:(Resource *)resource usingTemplate:(NSString *)templateName
@ -279,7 +289,7 @@ static NSString *RKShowInfoItemIdentifier = @"com.nickshanks.resknife.toolbar.sh
Resource *tmpl = [dataSource resourceNamed:[resource type] ofType:@"TMPL"]; Resource *tmpl = [dataSource resourceNamed:[resource type] ofType:@"TMPL"];
// open the resources, passing in the template to use // open the resources, passing in the template to use
if( tmpl /*&& [[templateEditor principalClass] respondsToSelector:@selector(initWithResources:)]*/ ) if( tmpl && [[templateEditor principalClass] respondsToSelector:@selector(initWithResources:)] )
{ {
// bug: I alloc a plug instance here, but have no idea where I should dealloc it, perhaps the plug ought to call [self autorelease] when it's last window is closed? // bug: I alloc a plug instance here, but have no idea where I should dealloc it, perhaps the plug ought to call [self autorelease] when it's last window is closed?
[(id <ResKnifePluginProtocol>)[[templateEditor principalClass] alloc] initWithResources:resource, tmpl, nil]; [(id <ResKnifePluginProtocol>)[[templateEditor principalClass] alloc] initWithResources:resource, tmpl, nil];

View File

@ -137,7 +137,7 @@
else byteSelection = [[self delegate] byteRangeFromAsciiRange:selection]; else byteSelection = [[self delegate] byteRangeFromAsciiRange:selection];
// adjust selection if is insertion point // adjust selection if is insertion point
if( byteSelection.length == 0 ) if( byteSelection.length == 0 && selection.location > 0 )
{ {
byteSelection.location -= 1; byteSelection.location -= 1;
byteSelection.length = 1; byteSelection.length = 1;
@ -166,7 +166,7 @@
else byteSelection = [[self delegate] byteRangeFromAsciiRange:selection]; else byteSelection = [[self delegate] byteRangeFromAsciiRange:selection];
// adjust selection if is insertion point // adjust selection if is insertion point
if( byteSelection.length == 0 ) if( byteSelection.length == 0 && selection.location < [[self string] length] -1 )
byteSelection.length = 1; byteSelection.length = 1;
// replace bytes (updates views implicitly) // replace bytes (updates views implicitly)

View File

@ -1,4 +1,5 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import "ResKnifeResourceProtocol.h"
/* Your plug-in's principle class must implement initWithResource: else it won't be loaded by ResKnife (so neh-neh!), all other methods are optional */ /* Your plug-in's principle class must implement initWithResource: else it won't be loaded by ResKnife (so neh-neh!), all other methods are optional */
@ -7,7 +8,7 @@
/*! @function initWithResource: /*! @function initWithResource:
* @abstract Your plug-in is inited with this call. This allows immediate access to the resource you are about to edit, and with this information you can set up different windows, etc. * @abstract Your plug-in is inited with this call. This allows immediate access to the resource you are about to edit, and with this information you can set up different windows, etc.
*/ */
- (id)initWithResource:(id)newResource; - (id)initWithResource:(id <ResKnifeResourceProtocol>)newResource;
- (id)initWithResources:(id)newResource, ...; - (id)initWithResources:(id <ResKnifeResourceProtocol>)newResource, ...;
@end @end

View File

@ -15,7 +15,7 @@
#define Use_Nibs 0 #define Use_Nibs 0
#define Use_GWorlds 1 #define Use_GWorlds 1
// Easire constants // Easier constants
#define RGBColour RGBColor #define RGBColour RGBColor
// Easier API call names // Easier API call names

File diff suppressed because it is too large Load Diff