Removal of the ObjC++ files and merging their differences into the ObjC versions.

This commit is contained in:
Nicholas Shanks 2010-08-31 10:01:42 +00:00
parent 8093fe18eb
commit 972ca4dde4
23 changed files with 120 additions and 1605 deletions

View File

@ -208,11 +208,21 @@
} }
- (NSArray *)selectedItems; - (NSArray *)selectedItems;
{ {
NSNumber *row;
NSMutableArray *items = [NSMutableArray array]; NSMutableArray *items = [NSMutableArray array];
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_3
NSIndexSet *indicies = [self selectedRowIndexes];
unsigned int rowIndex = [indicies firstIndex];
while (rowIndex != NSNotFound)
{
[items addObject:[self itemAtRow:rowIndex]];
rowIndex = [indicies indexGreaterThanIndex:rowIndex];
}
#else
NSNumber *row;
NSEnumerator *enumerator = [self selectedRowEnumerator]; NSEnumerator *enumerator = [self selectedRowEnumerator];
while(row = [enumerator nextObject]) while(row = [enumerator nextObject])
[items addObject:[self itemAtRow:[row intValue]]]; [items addObject:[self itemAtRow:[row intValue]]];
#endif
return items; return items;
} }
@end @end

View File

@ -31,7 +31,7 @@
/*! /*!
@method awakeFromNib @method awakeFromNib
@change 2003-10-24 NGS: moved icon caching into method called by timer (to speed up app launch time) @updated 2003-10-24 NGS: moved icon caching into method called by timer (to speed up app launch time)
*/ */
- (void)awakeFromNib - (void)awakeFromNib

View File

@ -8,8 +8,8 @@
/*! /*!
@method controlTextDidChange: @method controlTextDidChange:
@abstract Handles updating of the 'Create' button when valid values are present in the sheet's fields. @abstract Handles updating of the 'Create' button when valid values are present in the sheet's fields.
@change 2003-08-01 UK: Changed to use data source's resourceOfType instead of directly messing with the resource list's enumerator. @updated 2003-08-01 UK: Changed to use data source's resourceOfType instead of directly messing with the resource list's enumerator.
@change 2003-08-01 UK: Removed ID > 0 check -- negative IDs are allowed as well.<br/><small>Note from Nick: IIRC this was there as a workaround for another bug which prohibited negative IDs from being used. Not sure if that got fixed though :)</small> @updated 2003-08-01 UK: Removed ID > 0 check -- negative IDs are allowed as well.<br/><small>Note from Nick: IIRC this was there as a workaround for another bug which prohibited negative IDs from being used. Not sure if that got fixed though :)</small>
@description Someone changed the control ID edit field. Check whether this is a unique ID and appropriately enable the "create" button.</p><p>Check "notification" against being nil, which is how we call it when we need to explicitly update the enabled state of the "create" button. @description Someone changed the control ID edit field. Check whether this is a unique ID and appropriately enable the "create" button.</p><p>Check "notification" against being nil, which is how we call it when we need to explicitly update the enabled state of the "create" button.
*/ */
@ -32,8 +32,8 @@
/*! /*!
@method showCreateResourceSheet: @method showCreateResourceSheet:
@abstract Shows the sheet allowing the user to define the properties of a new resource. @abstract Shows the sheet allowing the user to define the properties of a new resource.
@change 2003-08-01 UK: Made it "fake" a popup selection so type field and popup match. @updated 2003-08-01 UK: Made it "fake" a popup selection so type field and popup match.
@change 2003-08-01 UK: Made it suggest an unused resource ID. @updated 2003-08-01 UK: Made it suggest an unused resource ID.
*/ */
- (void)showCreateResourceSheet:(ResourceDocument *)sheetDoc - (void)showCreateResourceSheet:(ResourceDocument *)sheetDoc

View File

@ -48,8 +48,6 @@
if(selectedResource) if(selectedResource)
{ {
NSLog(@"selected resource data: %@", [selectedResource data]);
// set UI values // set UI values
[[self window] setTitle:NSLocalizedString(@"Resource Info",nil)]; [[self window] setTitle:NSLocalizedString(@"Resource Info",nil)];
[nameView setStringValue:[selectedResource name]]; [nameView setStringValue:[selectedResource name]];

View File

@ -56,7 +56,7 @@
/*! /*!
@function compareResourcesAscending @function compareResourcesAscending
@change 2003-10-25 NGS: now uses KVC methods to obtain the strings to compare @updated 2003-10-25 NGS: now uses KVC methods to obtain the strings to compare
*/ */
int compareResourcesAscending(Resource *r1, Resource *r2, void *context) int compareResourcesAscending(Resource *r1, Resource *r2, void *context)
@ -71,7 +71,7 @@ int compareResourcesAscending(Resource *r1, Resource *r2, void *context)
/*! /*!
@function compareResourcesDescending @function compareResourcesDescending
@change 2003-10-25 NGS: now uses KVC methods to obtain the strings to compare @updated 2003-10-25 NGS: now uses KVC methods to obtain the strings to compare
*/ */
int compareResourcesDescending(Resource *r1, Resource *r2, void *context) int compareResourcesDescending(Resource *r1, Resource *r2, void *context)
@ -93,13 +93,13 @@ int compareResourcesDescending(Resource *r1, Resource *r2, void *context)
/*! /*!
@method outlineView:willDisplayCell:forTableColumn:item: @method outlineView:willDisplayCell:forTableColumn:item:
@change 2003-10-25 NGS: Moved functionality of NameFormatter into this method, removed NameFormatter class. @updated 2003-10-25 NGS: Moved functionality of NameFormatter into this method, removed NameFormatter class.
@change 2003-10-24 NGS: Swapped row colours so first row is white (as per 10.3), conditionalised drawing line background colours to system versions < 10.3, since in 10.3 it is handled by the nib file. @updated 2003-10-24 NGS: Swapped row colours so first row is white (as per 10.3), conditionalised drawing line background colours to system versions < 10.3, since in 10.3 it is handled by the nib file.
@change 2003-10-24 NGS: Added iconForResourceType method to app delegate instead of interrogating the cache here. @updated 2003-10-24 NGS: Added iconForResourceType method to app delegate instead of interrogating the cache here.
@pending remove setting of the cell formatter when that capability is in interface builder @pending remove setting of the cell formatter when that capability is in interface builder
*/ */
- (void)outlineView:(NSOutlineView *)olView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item - (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item
{ {
Resource *resource = (Resource *)item; Resource *resource = (Resource *)item;
NSString *identifier = [tableColumn identifier]; NSString *identifier = [tableColumn identifier];
@ -161,7 +161,7 @@ int compareResourcesDescending(Resource *r1, Resource *r2, void *context)
// draw alternating blue/white backgrounds (if pre-10.3) // draw alternating blue/white backgrounds (if pre-10.3)
if(NSAppKitVersionNumber < 700.0) if(NSAppKitVersionNumber < 700.0)
{ {
int row = [olView rowForItem:item]; int row = [outlineView rowForItem:item];
if(row % 2) [cell setBackgroundColor:[NSColor colorWithCalibratedRed:0.93 green:0.95 blue:1.0 alpha:1.0]]; if(row % 2) [cell setBackgroundColor:[NSColor colorWithCalibratedRed:0.93 green:0.95 blue:1.0 alpha:1.0]];
else [cell setBackgroundColor:[NSColor whiteColor]]; else [cell setBackgroundColor:[NSColor whiteColor]];
[cell setDrawsBackground:YES]; [cell setDrawsBackground:YES];

View File

@ -44,7 +44,7 @@
@method +defaultRegistry @method +defaultRegistry
@author Uli Kusterer @author Uli Kusterer
@created 2003-07-31 @created 2003-07-31
@change 2003-10-28 NS: Changed method name from +mainRegistry (so it more closly matchs +defaultCenter) and moved global var inside method, making it a static. @updated 2003-10-28 NGS: Changed method name from +mainRegistry (so it more closly matchs +defaultCenter) and moved global var inside method, making it a static.
@description Returns the default plugin registry of this application, instantiating it first if there is none yet. As soon as this is instantiated, the plugins are loaded. @description Returns the default plugin registry of this application, instantiating it first if there is none yet. As soon as this is instantiated, the plugins are loaded.
*/ */
+ (RKEditorRegistry *)defaultRegistry + (RKEditorRegistry *)defaultRegistry
@ -74,7 +74,7 @@
@abstract (Re)loads our list of plugins. You can use this as an action for a menu item, if you want. @abstract (Re)loads our list of plugins. You can use this as an action for a menu item, if you want.
@author Uli Kusterer @author Uli Kusterer
@created 2003-07-31 @created 2003-07-31
@change 2003-10-28 NGS: Updated to look for more sophisticated RKSupportedTypes key in addition to (the now deprecated) RKEditedTypes. @updated 2003-10-28 NGS: Updated to look for more sophisticated RKSupportedTypes key in addition to (the now deprecated) RKEditedTypes.
@pending Use NSSearchPathForDirectoriesInDomains() or equivalent to get folder paths instead of hard coding them. @pending Use NSSearchPathForDirectoriesInDomains() or equivalent to get folder paths instead of hard coding them.
@pending Currently, Cocoa classes can't be unloaded, which means we're @pending Currently, Cocoa classes can't be unloaded, which means we're
not leaking the NSBundles we load here. However, if this one not leaking the NSBundles we load here. However, if this one

View File

@ -1,14 +1,14 @@
#import "RKSupportResourceRegistry.h" #import "RKSupportResourceRegistry.h"
#import "NGSCategories.h" #import "../Categories/NGSCategories.h"
@implementation RKSupportResourceRegistry @implementation RKSupportResourceRegistry
+ (void)scanForSupportResources + (void)scanForSupportResources
{ {
// TODO: Instead of hard-coding sysPath we should use some FindFolder-like API!
#if MAC_OS_X_VERSION_10_4 <= MAC_OS_X_VERSION_MAX_ALLOWED #if MAC_OS_X_VERSION_10_4 <= MAC_OS_X_VERSION_MAX_ALLOWED
NSArray *dirsArray = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSAllDomainsMask, YES); NSArray *dirsArray = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSAllDomainsMask, YES);
dirsArray = [dirsArray arrayByMakingObjectsPerformSelector:@selector(stringByAppendingPathComponent:) withObject:@"ResKnife/Support Resources"]; dirsArray = [dirsArray arrayByMakingObjectsPerformSelector:@selector(stringByAppendingPathComponent:) withObject:@"ResKnife/Support Resources"];
// FIXME: log content of dirsArray and merge with the following:
#endif #endif
[RKSupportResourceRegistry scanForSupportResourcesInFolder:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Support Resources"]]; [RKSupportResourceRegistry scanForSupportResourcesInFolder:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Support Resources"]];
[RKSupportResourceRegistry scanForSupportResourcesInFolder:[NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/ResKnife/Support Resources"]]; [RKSupportResourceRegistry scanForSupportResourcesInFolder:[NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/ResKnife/Support Resources"]];
@ -25,7 +25,7 @@
{ {
// NSLog(@"Examining %@", name); // NSLog(@"Examining %@", name);
if([[name pathExtension] isEqualToString:@"rsrc"]) if([[name pathExtension] isEqualToString:@"rsrc"])
// FIXME: this method was deprecate in 10.4 in favour of - (id)openDocumentWithContentsOfURL:(NSURL *)absoluteURL display:(BOOL)displayDocument error:(NSError **)outError; // FIXME: this method was deprecated in 10.4 in favour of - (id)openDocumentWithContentsOfURL:(NSURL *)absoluteURL display:(BOOL)displayDocument error:(NSError **)outError;
[[NSDocumentController sharedDocumentController] openDocumentWithContentsOfFile:[path stringByAppendingPathComponent:name] display:YES]; [[NSDocumentController sharedDocumentController] openDocumentWithContentsOfFile:[path stringByAppendingPathComponent:name] display:YES];
} }
} }

View File

@ -1,25 +0,0 @@
#import "RKSupportResourceRegistry.h"
@implementation RKSupportResourceRegistry
+ (void)scanForSupportResources
{
// TODO: Instead of hard-coding sysPath we should use some FindFolder-like API!
[RKSupportResourceRegistry scanForSupportResourcesInFolder:[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Support Resources"]];
[RKSupportResourceRegistry scanForSupportResourcesInFolder:[NSHomeDirectory() stringByAppendingPathComponent:@"Library/Application Support/ResKnife/Support Resources/"]];
[RKSupportResourceRegistry scanForSupportResourcesInFolder:[@"/" stringByAppendingPathComponent:@"Library/Application Support/ResKnife/Support Resources/"]];
}
+ (void)scanForSupportResourcesInFolder:(NSString *)path
{
// NSLog(@"Looking for resources in %@", path);
NSEnumerator *enumerator = [[[NSFileManager defaultManager] directoryContentsAtPath:path] objectEnumerator];
while(NSString *name = [enumerator nextObject])
{
// NSLog(@"Examining %@", name);
if([[name pathExtension] isEqualToString:@"rsrc"])
[[NSDocumentController sharedDocumentController] openDocumentWithContentsOfFile:[path stringByAppendingPathComponent:name] display:YES];
}
}
@end

View File

@ -8,7 +8,6 @@
@description The Resource class fully complies with key-value coding, with the keys @"name", @"type", @"resID", @"attributes", @"data", @"dirty" and @"representedFork" available. @description The Resource class fully complies with key-value coding, with the keys @"name", @"type", @"resID", @"attributes", @"data", @"dirty" and @"representedFork" available.
*/ */
@class ResourceDocument;
@interface Resource : NSObject <NSCopying, NSCoding, ResKnifeResourceProtocol> @interface Resource : NSObject <NSCopying, NSCoding, ResKnifeResourceProtocol>
{ {
@private @private

View File

@ -90,7 +90,7 @@ NSString *RKResourcePboardType = @"RKResourcePboardType";
return [NSArray arrayWithArray:array]; return [NSArray arrayWithArray:array];
} }
+ (id)resourceOfType:(NSString *)typeValue withName:(NSString *)nameValue inDocument:(NSDocument *)searchDoc + (Resource *)resourceOfType:(NSString *)typeValue withName:(NSString *)nameValue inDocument:(NSDocument *)searchDoc
{ {
NSDocument *doc; NSDocument *doc;
NSEnumerator *enumerator = [[[NSDocumentController sharedDocumentController] documents] objectEnumerator]; NSEnumerator *enumerator = [[[NSDocumentController sharedDocumentController] documents] objectEnumerator];
@ -106,7 +106,7 @@ NSString *RKResourcePboardType = @"RKResourcePboardType";
return nil; return nil;
} }
+ (id)resourceOfType:(NSString *)typeValue andID:(NSNumber *)resIDValue inDocument:(NSDocument *)searchDoc + (Resource *)resourceOfType:(NSString *)typeValue andID:(NSNumber *)resIDValue inDocument:(NSDocument *)searchDoc
{ {
NSDocument *doc; NSDocument *doc;
NSEnumerator *enumerator = [[[NSDocumentController sharedDocumentController] documents] objectEnumerator]; NSEnumerator *enumerator = [[[NSDocumentController sharedDocumentController] documents] objectEnumerator];

View File

@ -1,247 +0,0 @@
#import "ResourceDataSource.h"
#import "ResourceDocument.h"
#import "Resource.h"
#import <limits.h>
NSString *DataSourceWillAddResourceNotification = @"DataSourceWillAddResource";
NSString *DataSourceDidAddResourceNotification = @"DataSourceDidAddResource";
NSString *DataSourceWillRemoveResourceNotification = @"DataSourceWillRemoveResource";
NSString *DataSourceDidRemoveResourceNotification = @"DataSourceDidRemoveResource";
extern NSString *RKResourcePboardType;
@implementation ResourceDataSource
- (id)init
{
self = [super init];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resourceDidChange:) name:ResourceDidChangeNotification object:nil];
return self;
}
- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
- (NSWindow *)window
{
return window;
}
- (NSArray *)resources
{
return resources;
}
- (void)setResources:(NSMutableArray *)newResources
{
id old = resources;
resources = [newResources retain];
[old release];
[outlineView reloadData];
}
- (void)addResource:(Resource *)resource
{
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:self, @"DataSource", resource, @"Resource", nil];
[[NSNotificationCenter defaultCenter] postNotificationName:DataSourceWillAddResourceNotification object:dictionary];
// it seems very inefficient to reload the entire data source when just adding/removing one item
// for large resource files, the data source gets reloaded hundreds of times upon load
[resources addObject:resource];
[outlineView reloadData];
[[NSNotificationCenter defaultCenter] postNotificationName:DataSourceDidAddResourceNotification object:dictionary];
[[document undoManager] registerUndoWithTarget:self selector:@selector(removeResource:) object:resource]; // undo action name set by calling function
}
- (void)removeResource:(Resource *)resource
{
NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:self, @"DataSource", resource, @"Resource", nil];
[[NSNotificationCenter defaultCenter] postNotificationName:DataSourceWillRemoveResourceNotification object:dictionary];
// see comments in addResource: about inefficiency of reloadData
[resources removeObjectIdenticalTo:resource];
[outlineView reloadData];
[[NSNotificationCenter defaultCenter] postNotificationName:DataSourceDidRemoveResourceNotification object:dictionary];
[[document undoManager] registerUndoWithTarget:self selector:@selector(addResource:) object:resource]; // NB: I hope the undo manager retains the resource, because it just got deleted :) - undo action name set by calling function
}
- (void)resourceDidChange:(NSNotification *)notification
{
// reload the data for the changed resource
[outlineView reloadItem:[notification object]];
}
/* Data source protocol implementation */
- (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item
{
#pragma unused(outlineView, item)
return [resources objectAtIndex:index];
}
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item
{
#pragma unused(outlineView, item)
return NO;
}
- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item
{
#pragma unused(outlineView, item)
return [resources count];
}
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item
{
#pragma unused(outlineView)
return [item valueForKey:[tableColumn identifier]];
}
- (void)outlineView:(NSOutlineView *)outlineView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn byItem:(id)item
{
#pragma unused(outlineView)
NSString *identifier = [tableColumn identifier];
if([identifier isEqualToString:@"resID"])
[item setValue:[NSNumber numberWithInt:[object intValue]] forKey:identifier];
else [item setValue:object forKey:identifier];
}
#pragma mark -
/* ACCESSORS */
- (Resource *)resourceOfType:(NSString *)type andID:(NSNumber *)resID
{
Resource *resource;
NSEnumerator *enumerator = [resources objectEnumerator];
while(resource = [enumerator nextObject])
{
if(resID && [[resource resID] isEqualToNumber:resID] && type && [[resource type] isEqualToString:type])
return resource;
}
return nil;
}
- (Resource *)resourceOfType:(NSString *)type withName:(NSString *)name
{
Resource *resource;
NSEnumerator *enumerator = [resources objectEnumerator];
while(resource = [enumerator nextObject])
{
if([[resource name] isEqualToString:name] && [[resource type] isEqualToString:type])
return resource;
}
return nil;
}
- (NSArray *)allResourcesOfType:(NSString *)type
{
Resource *resource;
NSMutableArray *array = [NSMutableArray array];
NSEnumerator *enumerator = [resources objectEnumerator];
while(resource = [enumerator nextObject])
{
if([[resource type] isEqualToString:type])
[array addObject:resource];
}
return [NSArray arrayWithArray:array];
}
/*!
@method allResourceIDsOfType:
@discussion Returns an NSArray full of NSNumber* objects containing the IDs of all resources of specified type. Used by uniqueIDForType:.
@change 2003-08-01 UK Created based on allResourcesOfType:
*/
- (NSArray*)allResourceIDsOfType:(NSString *)type
{
if(!type || [type isEqualToString:@""])
return [NSArray array];
Resource *resource;
NSMutableArray *array = [NSMutableArray array];
NSEnumerator *enumerator = [resources objectEnumerator];
while(resource = [enumerator nextObject])
{
if([[resource type] isEqualToString:type])
[array addObject:[resource resID]];
}
return [NSArray arrayWithArray:array];
}
/*!
@method uniqueIDForType:
@discussion Tries to return an unused resource ID for a new resource of specified type. If all IDs are used up (can't really happen, because the resource manager can't take more than 2727 resources per file without crashing, but just in theory...), this will return 128 no matter whether it's used or not.
@change 2003-08-01 UK Created.
@change 2003-10-21 NS Changed to obtain initial ID from -[resource defaultIDForType:], so we can vary it on a pre-resource-type basis (like Resourcerer can)
*/
- (NSNumber *)uniqueIDForType:(NSString *)type
{
short theID = [[self defaultIDForType:type] shortValue];
NSArray *array = [self allResourceIDsOfType:type];
if([array count] <= USHRT_MAX)
{
while([array containsObject:[NSNumber numberWithShort:theID]])
theID++;
}
return [NSNumber numberWithShort: theID];
}
/*!
@method defaultIDForType:
@pending Method should look for resources specifying what the initial ID is for this resource type (e.g. 'vers' resources start at 0)
*/
- (NSNumber *)defaultIDForType:(NSString *)type
{
short defaultID = 128;
return [NSNumber numberWithShort:defaultID];
}
#pragma mark -
/*!
@method outlineView:writeItems:toPasteboard:
@abstract Called at the start of a drag event.
*/
- (BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray *)items toPasteboard:(NSPasteboard *)pb
{
[pb declareTypes:[NSArray arrayWithObject:RKResourcePboardType] owner:self];
[pb setData:[NSArchiver archivedDataWithRootObject:items] forType:RKResourcePboardType];
return YES;
}
/*!
@method outlineView:validateDrop:proposedItem:proposedChildIndex:
@abstract Called when the user is hovering with a drop over our outline view.
*/
- (NSDragOperation)outlineView:(NSOutlineView *)olView validateDrop:(id <NSDraggingInfo>)info proposedItem:(id)item proposedChildIndex:(int)childIndex
{
if([info draggingSource] != olView)
{
[olView setDropItem:nil dropChildIndex:NSOutlineViewDropOnItemIndex];
return NSDragOperationCopy;
}
else return NSDragOperationNone;
}
/*!
@method outlineView:acceptDrop:item:childIndex:
@abstract Called when the user drops something on our outline view.
*/
- (BOOL)outlineView:(NSOutlineView *)outlineView acceptDrop:(id <NSDraggingInfo>)info item:(id)targetItem childIndex:(int)childIndex
{
NSPasteboard *pb = [info draggingPasteboard];
if([pb availableTypeFromArray:[NSArray arrayWithObject:RKResourcePboardType]])
[document pasteResources:[NSUnarchiver unarchiveObjectWithData:[pb dataForType:RKResourcePboardType]]];
return YES;
}
@end

View File

@ -8,7 +8,7 @@
#import "InfoWindowController.h" #import "InfoWindowController.h"
#import "PrefsWindowController.h" #import "PrefsWindowController.h"
#import "CreateResourceSheetController.h" #import "CreateResourceSheetController.h"
#import "NGSCategories.h" #import "../Categories/NGSCategories.h"
#import "../Categories/NSString-FSSpec.h" #import "../Categories/NSString-FSSpec.h"
#import "../Categories/NSOutlineView-SelectedItems.h" #import "../Categories/NSOutlineView-SelectedItems.h"
@ -82,7 +82,7 @@ extern NSString *RKResourcePboardType;
{ {
// get selected fork from open panel, 10.3+ // get selected fork from open panel, 10.3+
int row = [[openPanelDelegate forkTableView] selectedRow]; int row = [[openPanelDelegate forkTableView] selectedRow];
NSString *selectedFork = [(NSDictionary *)[[openPanelDelegate forks] objectAtIndex:row] valueForKey:@"forkname"]; NSString *selectedFork = [(NSDictionary *)[[openPanelDelegate forks] objectAtIndex:row] objectForKey:@"forkname"];
fork = (HFSUniStr255 *) NewPtrClear(sizeof(HFSUniStr255)); fork = (HFSUniStr255 *) NewPtrClear(sizeof(HFSUniStr255));
fork->length = ([selectedFork length] < 255)? [selectedFork length]:255; fork->length = ([selectedFork length] < 255)? [selectedFork length]:255;
if(fork->length > 0) if(fork->length > 0)
@ -125,13 +125,13 @@ extern NSString *RKResourcePboardType;
if(error || !fileRefNum) if(error || !fileRefNum)
{ {
// bug: should check fork the user selected is empty before trying data fork // bug: should check fork the user selected is empty before trying data fork
NSNumber *fAlloc = [[forks firstObjectReturningValue:[NSString stringWithCharacters:fork->unicode length:fork->length] forKey:@"forkname"] valueForKey:@"forkallocation"]; NSNumber *fAlloc = [[forks firstObjectReturningValue:[NSString stringWithCharacters:fork->unicode length:fork->length] forKey:@"forkname"] objectForKey:@"forkallocation"];
if([fAlloc unsignedLongLongValue] > 0) if([fAlloc unsignedLongLongValue] > 0)
{ {
// data fork is not empty, check resource fork // data fork is not empty, check resource fork
error = FSGetResourceForkName(fork); error = FSGetResourceForkName(fork);
if(error) return NO; if(error) return NO;
fAlloc = [[forks firstObjectReturningValue:[NSString stringWithCharacters:fork->unicode length:fork->length] forKey:@"forkname"] valueForKey:@"forkallocation"]; fAlloc = [[forks firstObjectReturningValue:[NSString stringWithCharacters:fork->unicode length:fork->length] forKey:@"forkname"] objectForKey:@"forkallocation"];
if([fAlloc unsignedLongLongValue] > 0) if([fAlloc unsignedLongLongValue] > 0)
{ {
// resource fork is not empty either, give up (ask user for a fork?) // resource fork is not empty either, give up (ask user for a fork?)
@ -173,7 +173,7 @@ extern NSString *RKResourcePboardType;
NSString *forkName; NSString *forkName;
NSEnumerator *forkEnumerator = [forks objectEnumerator]; NSEnumerator *forkEnumerator = [forks objectEnumerator];
NSString *selectedFork = [NSString stringWithCharacters:fork->unicode length:fork->length]; NSString *selectedFork = [NSString stringWithCharacters:fork->unicode length:fork->length];
while(forkName = [[forkEnumerator nextObject] valueForKey:@"forkname"]) while(forkName = [[forkEnumerator nextObject] objectForKey:@"forkname"])
{ {
// check current fork is not the fork we're going to parse // check current fork is not the fork we're going to parse
if(![forkName isEqualToString:selectedFork]) if(![forkName isEqualToString:selectedFork])
@ -181,7 +181,7 @@ extern NSString *RKResourcePboardType;
} }
// tidy up loose ends // tidy up loose ends
if(fileRefNum) FSClose(fileRefNum); if(fileRefNum) FSCloseFork(fileRefNum);
DisposePtr((Ptr) fileRef); DisposePtr((Ptr) fileRef);
return succeeded; return succeeded;
} }
@ -212,7 +212,7 @@ extern NSString *RKResourcePboardType;
else uniForkName.unicode[0] = 0; else uniForkName.unicode[0] = 0;
// get fork length and create empty buffer, bug: only sizeof(size_t) bytes long // get fork length and create empty buffer, bug: only sizeof(size_t) bytes long
ByteCount forkLength = (ByteCount) [[[[(ApplicationDelegate *)[NSApp delegate] forksForFile:fileRef] firstObjectReturningValue:forkName forKey:@"forkname"] valueForKey:@"forksize"] unsignedLongValue]; ByteCount forkLength = (ByteCount) [[[[(ApplicationDelegate *)[NSApp delegate] forksForFile:fileRef] firstObjectReturningValue:forkName forKey:@"forkname"] objectForKey:@"forksize"] unsignedLongValue];
void *buffer = malloc(forkLength); void *buffer = malloc(forkLength);
if(!buffer) return NO; if(!buffer) return NO;
@ -251,13 +251,12 @@ extern NSString *RKResourcePboardType;
for(unsigned short i = 1; i <= Count1Types(); i++) for(unsigned short i = 1; i <= Count1Types(); i++)
{ {
ResType resType; ResType resTypeCode;
Get1IndType(&resType, i); Get1IndType(&resTypeCode, i);
ResType swappedType = EndianS32_NtoB(resType); // Swapped type for use as string (types are treated as numbers by the resource manager and swapped on Intel). unsigned short n = Count1Resources(resTypeCode);
unsigned short n = Count1Resources(resType);
for(unsigned short j = 1; j <= n; j++) for(unsigned short j = 1; j <= n; j++)
{ {
Handle resourceHandle = Get1IndResource(resType, j); Handle resourceHandle = Get1IndResource(resTypeCode, j);
error = ResError(); error = ResError();
if(error != noErr) if(error != noErr)
{ {
@ -268,22 +267,34 @@ extern NSString *RKResourcePboardType;
Str255 nameStr; Str255 nameStr;
short resIDShort; short resIDShort;
GetResInfo(resourceHandle, &resIDShort, &resType, nameStr); GetResInfo(resourceHandle, &resIDShort, &resTypeCode, nameStr);
long sizeLong = GetResourceSizeOnDisk(resourceHandle); long sizeLong = GetResourceSizeOnDisk(resourceHandle), badSize = 0;
if (sizeLong < 0 || sizeLong > 16777215) // the max size of resource manager file is ~12 MB; I am rounding up to three bytes
{
// this only happens when opening ResEdit using the x86 binary (not under Rosetta, for example)
badSize = sizeLong;
sizeLong = EndianS32_BtoL(sizeLong);
}
short attrsShort = GetResAttrs(resourceHandle); short attrsShort = GetResAttrs(resourceHandle);
HLockHi(resourceHandle); HLockHi(resourceHandle);
#if __LITTLE_ENDIAN__
CoreEndianFlipData(kCoreEndianResourceManagerDomain, resTypeCode, resIDShort, *resourceHandle, sizeLong, true);
#endif
// cool: "The advantage of obtaining a methodÕs implementation and calling it as a function is that you can invoke the implementation multiple times within a loop, or similar C construct, without the overhead of Objective-C messaging." // cool: "The advantage of obtaining a methodÕs implementation and calling it as a function is that you can invoke the implementation multiple times within a loop, or similar C construct, without the overhead of Objective-C messaging."
// create the resource & add it to the array // create the resource & add it to the array
ResType logicalType = EndianS32_NtoB(resTypeCode); // swapped type for use as string (types are treated as numbers by the resource manager and swapped on Intel).
NSString *name = [[NSString alloc] initWithBytes:&nameStr[1] length:nameStr[0] encoding:NSMacOSRomanStringEncoding]; NSString *name = [[NSString alloc] initWithBytes:&nameStr[1] length:nameStr[0] encoding:NSMacOSRomanStringEncoding];
NSString *resType = [[NSString alloc] initWithBytes:(char *) &swappedType length:4 encoding:NSMacOSRomanStringEncoding]; NSString *resType = [[NSString alloc] initWithBytes:(char *) &logicalType length:4 encoding:NSMacOSRomanStringEncoding];
NSNumber *resID = [NSNumber numberWithShort:resIDShort]; NSNumber *resID = [NSNumber numberWithShort:resIDShort];
NSNumber *attributes = [NSNumber numberWithShort:attrsShort]; NSNumber *attributes = [NSNumber numberWithShort:attrsShort];
NSData *data = [NSData dataWithBytes:*resourceHandle length:sizeLong]; NSData *data = [NSData dataWithBytes:*resourceHandle length:sizeLong];
Resource *resource = [Resource resourceOfType:resType andID:resID withName:name andAttributes:attributes data:data]; Resource *resource = [Resource resourceOfType:resType andID:resID withName:name andAttributes:attributes data:data];
[resource setDocumentName:[self displayName]]; [resource setDocumentName:[self displayName]];
[resources addObject:resource]; // array retains resource [resources addObject:resource]; // array retains resource
if (badSize != 0)
NSLog(@"GetResourceSizeOnDisk() reported incorrect size for %@ resource %@ in %@: %li should be %li", resType, resID, [self displayName], badSize, sizeLong);
[name release]; [name release];
[resType release]; [resType release];
@ -298,8 +309,8 @@ extern NSString *RKResourcePboardType;
} }
/*! /*!
@pending Uli's changed this routine - see what I had and unify the two @pending Uli has changed this routine - see what I had and unify the two
@pending Doesn't write correct type/creator info - always ResKnife's! @pending Doesn't write correct type/creator info - always ResKnife's!
*/ */
- (BOOL)writeToFile:(NSString *)fileName ofType:(NSString *)type - (BOOL)writeToFile:(NSString *)fileName ofType:(NSString *)type
@ -348,7 +359,7 @@ extern NSString *RKResourcePboardType;
succeeded = [self writeResourceMap:fileRefNum]; succeeded = [self writeResourceMap:fileRefNum];
// tidy up loose ends // tidy up loose ends
if(fileRefNum) FSClose(fileRefNum); if(fileRefNum) FSCloseFork(fileRefNum);
DisposePtr((Ptr) fileRef); DisposePtr((Ptr) fileRef);
// update info window // update info window
@ -386,7 +397,7 @@ extern NSString *RKResourcePboardType;
error = FSOpenFork(fileRef, [[resource representedFork] length], (UniChar *) uniname, fsWrPerm, &forkRefNum); error = FSOpenFork(fileRef, [[resource representedFork] length], (UniChar *) uniname, fsWrPerm, &forkRefNum);
if(!error && forkRefNum) if(!error && forkRefNum)
error = FSWriteFork(forkRefNum, fsFromStart, 0, [[resource data] length], [[resource data] bytes], NULL); error = FSWriteFork(forkRefNum, fsFromStart, 0, [[resource data] length], [[resource data] bytes], NULL);
if(forkRefNum) FSClose(forkRefNum); if(forkRefNum) FSCloseFork(forkRefNum);
} }
DisposePtr((Ptr) fileRef); DisposePtr((Ptr) fileRef);
return YES; return YES;
@ -410,32 +421,39 @@ extern NSString *RKResourcePboardType;
while(resource = [enumerator nextObject]) while(resource = [enumerator nextObject])
{ {
Str255 nameStr; Str255 nameStr;
char resType[5]; // includes null char for getCString: ResType resTypeCode;
char resTypeStr[5]; // includes null char for getCString:
short resIDShort; short resIDShort;
short attrsShort; short attrsShort;
long sizeLong;
Handle resourceHandle; Handle resourceHandle;
// if the resource represents another fork in the file, skip it // if the resource represents another fork in the file, skip it
if([resource representedFork] != nil) continue; if([resource representedFork] != nil) continue;
sizeLong = [[resource data] length];
resIDShort = [[resource resID] shortValue]; resIDShort = [[resource resID] shortValue];
attrsShort = [[resource attributes] shortValue]; attrsShort = [[resource attributes] shortValue];
resourceHandle = NewHandleClear([[resource data] length]); resourceHandle = NewHandleClear(sizeLong);
// convert unicode name to pascal string // convert unicode name to pascal string
nameStr[0] = [[resource name] lengthOfBytesUsingEncoding:NSMacOSRomanStringEncoding]; nameStr[0] = [[resource name] lengthOfBytesUsingEncoding:NSMacOSRomanStringEncoding];
BlockMoveData([[resource name] cStringUsingEncoding:NSMacOSRomanStringEncoding], &nameStr[1], nameStr[0]); BlockMoveData([[resource name] cStringUsingEncoding:NSMacOSRomanStringEncoding], &nameStr[1], nameStr[0]);
// convert type string to ResType // convert type string to ResType
[[resource type] getCString:resType maxLength:4]; [[resource type] getCString:resTypeStr maxLength:4];
resTypeCode = CFSwapInt32HostToBig(*(ResType *)resTypeStr);
// convert NSData to resource handle // convert NSData to resource handle
HLockHi(resourceHandle); HLockHi(resourceHandle);
[[resource data] getBytes:*resourceHandle]; [[resource data] getBytes:*resourceHandle];
#if __LITTLE_ENDIAN__
CoreEndianFlipData(kCoreEndianResourceManagerDomain, resTypeCode, resIDShort, *resourceHandle, sizeLong, false);
#endif
HUnlock(resourceHandle); HUnlock(resourceHandle);
// now that everything's converted, tell the resource manager we want to create this resource // now that everything's converted, tell the resource manager we want to create this resource
AddResource(resourceHandle, *(ResType *)resType, resIDShort, nameStr); AddResource(resourceHandle, resTypeCode, resIDShort, nameStr);
if(ResError() == addResFailed) if(ResError() == addResFailed)
{ {
NSLog(@"*Saving failed*; could not add resource ID %@ of type %@ to file.", [resource resID], [resource type]); NSLog(@"*Saving failed*; could not add resource ID %@ of type %@ to file.", [resource resID], [resource type]);
@ -494,7 +512,6 @@ extern NSString *RKResourcePboardType;
@method exportResources: @method exportResources:
@author Nicholas Shanks @author Nicholas Shanks
@created 24 October 2003 @created 24 October 2003
@pending note that this method will cause a cascade of sheets to be displayed for each resource being exported! v.bad needs fixing
*/ */
- (IBAction)exportResources:(id)sender - (IBAction)exportResources:(id)sender
@ -530,7 +547,7 @@ extern NSString *RKResourcePboardType;
// basic overrides for file name extensions (assume no plug-ins installed) // basic overrides for file name extensions (assume no plug-ins installed)
NSString *newExtension; NSString *newExtension;
NSDictionary *adjustments = [NSDictionary dictionaryWithObjectsAndKeys: @"ttf", @"sfnt", nil]; NSDictionary *adjustments = [NSDictionary dictionaryWithObjectsAndKeys: @"ttf", @"sfnt", nil];
if(newExtension = [adjustments valueForKey:extension]) if(newExtension = [adjustments objectForKey:extension])
extension = newExtension; extension = newExtension;
// ask for data // ask for data
@ -560,7 +577,7 @@ extern NSString *RKResourcePboardType;
{ {
if(returnCode == NSOKButton) if(returnCode == NSOKButton)
{ {
NSUInteger i = 1; unsigned int i = 1;
Resource *resource; Resource *resource;
NSString *path, *filename, *extension; NSString *path, *filename, *extension;
NSDictionary *adjustments = [NSDictionary dictionaryWithObjectsAndKeys: @"ttf", @"sfnt", @"png", @"PNGf", nil]; NSDictionary *adjustments = [NSDictionary dictionaryWithObjectsAndKeys: @"ttf", @"sfnt", @"png", @"PNGf", nil];
@ -591,7 +608,7 @@ extern NSString *RKResourcePboardType;
} }
else else
{ {
NSUInteger j = 1; unsigned int j = 1;
NSString *tempname = [filename stringByAppendingPathExtension:extension]; NSString *tempname = [filename stringByAppendingPathExtension:extension];
while ([[NSFileManager defaultManager] fileExistsAtPath:tempname]) while ([[NSFileManager defaultManager] fileExistsAtPath:tempname])
{ {
@ -850,12 +867,12 @@ static NSString *RKExportItemIdentifier = @"com.nickshanks.resknife.toolbar.exp
[sheetController showCreateResourceSheet:self]; [sheetController showCreateResourceSheet:self];
} }
/*- (IBAction)showSelectTemplateSheet:(id)sender - (IBAction)showSelectTemplateSheet:(id)sender
{ {
// bug: ResourceDocument allocs a sheet controller, but it's never disposed of // bug: ResourceDocument allocs a sheet controller, but it's never disposed of
// SelectTemplateSheetController *sheetController = [[CreateResourceSheetController alloc] initWithWindowNibName:@"SelectTemplateSheet"]; // SelectTemplateSheetController *sheetController = [[CreateResourceSheetController alloc] initWithWindowNibName:@"SelectTemplateSheet"];
// [sheetController showSelectTemplateSheet:self]; // [sheetController showSelectTemplateSheet:self];
}*/ }
- (IBAction)openResources:(id)sender - (IBAction)openResources:(id)sender
{ {

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
#import "FontWindowController.h" #import "FontWindowController.h"
#import "Categories.h" #import "NGSCategories.h"
#import <stdarg.h> #import <stdarg.h>
UInt32 TableChecksum(UInt32 *table, UInt32 length) UInt32 TableChecksum(UInt32 *table, UInt32 length)

View File

@ -486,7 +486,7 @@ static NSRange draggedRange;
@method selectionRangeForProposedRange:granularity: @method selectionRangeForProposedRange:granularity:
@abstract Puts insertion pointer between bytes during drag operation @abstract Puts insertion pointer between bytes during drag operation
@author Nicholas Shanks @author Nicholas Shanks
@change 2003-11-10 NS: Changed algorithm. @updated 2003-11-10 NGS: Changed algorithm.
*/ */
- (unsigned int)_insertionGlyphIndexForDrag:(id <NSDraggingInfo>)sender - (unsigned int)_insertionGlyphIndexForDrag:(id <NSDraggingInfo>)sender

View File

@ -6,16 +6,18 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
NSString *ResourceWillChangeNotification = @"ResourceWillChange"; NSString *ResourceWillChangeNotification = @"ResourceWillChangeNotification";
NSString *ResourceNameWillChangeNotification = @"ResourceNameWillChange"; NSString *ResourceNameWillChangeNotification = @"ResourceNameWillChangeNotification";
NSString *ResourceTypeWillChangeNotification = @"ResourceTypeWillChange"; NSString *ResourceTypeWillChangeNotification = @"ResourceTypeWillChangeNotification";
NSString *ResourceIDWillChangeNotification = @"ResourceIDWillChange"; NSString *ResourceIDWillChangeNotification = @"ResourceIDWillChangeNotification";
NSString *ResourceAttributesWillChangeNotification = @"ResourceAttributesWillChange"; NSString *ResourceAttributesWillChangeNotification = @"ResourceAttributesWillChangeNotification";
NSString *ResourceDataWillChangeNotification = @"ResourceDataWillChange"; NSString *ResourceDataWillChangeNotification = @"ResourceDataWillChangeNotification";
NSString *ResourceWillBeSavedNotification = @"ResourceWillBeSavedNotification";
NSString *ResourceNameDidChangeNotification = @"ResourceNameDidChange"; NSString *ResourceNameDidChangeNotification = @"ResourceNameDidChangeNotification";
NSString *ResourceTypeDidChangeNotification = @"ResourceTypeDidChange"; NSString *ResourceTypeDidChangeNotification = @"ResourceTypeDidChangeNotification";
NSString *ResourceIDDidChangeNotification = @"ResourceIDDidChange"; NSString *ResourceIDDidChangeNotification = @"ResourceIDDidChangeNotification";
NSString *ResourceAttributesDidChangeNotification = @"ResourceAttributesDidChange"; NSString *ResourceAttributesDidChangeNotification = @"ResourceAttributesDidChangeNotification";
NSString *ResourceDataDidChangeNotification = @"ResourceDataDidChange"; NSString *ResourceDataDidChangeNotification = @"ResourceDataDidChangeNotification";
NSString *ResourceDidChangeNotification = @"ResourceDidChange"; NSString *ResourceDidChangeNotification = @"ResourceDidChangeNotification";
NSString *ResourceWasSavedNotification = @"ResourceWasSavedNotification";

View File

@ -64,6 +64,7 @@ extern NSString *ResourceTypeWillChangeNotification;
extern NSString *ResourceIDWillChangeNotification; extern NSString *ResourceIDWillChangeNotification;
extern NSString *ResourceAttributesWillChangeNotification; extern NSString *ResourceAttributesWillChangeNotification;
extern NSString *ResourceDataWillChangeNotification; extern NSString *ResourceDataWillChangeNotification;
extern NSString *ResourceWillBeSavedNotification;
extern NSString *ResourceNameDidChangeNotification; extern NSString *ResourceNameDidChangeNotification;
extern NSString *ResourceTypeDidChangeNotification; extern NSString *ResourceTypeDidChangeNotification;
@ -71,3 +72,4 @@ extern NSString *ResourceIDDidChangeNotification;
extern NSString *ResourceAttributesDidChangeNotification; extern NSString *ResourceAttributesDidChangeNotification;
extern NSString *ResourceDataDidChangeNotification; extern NSString *ResourceDataDidChangeNotification;
extern NSString *ResourceDidChangeNotification; extern NSString *ResourceDidChangeNotification;
extern NSString *ResourceWasSavedNotification;

View File

@ -2179,6 +2179,7 @@ PBUnlockRangeSync:
return ( result ); return ( result );
} }
#endif #endif
/*****************************************************************************/ /*****************************************************************************/

View File

@ -35,7 +35,7 @@ enum // boom defaults
- (void)update; - (void)update;
- (void)controlTextDidChange:(NSNotification *)notification; - (void)controlTextDidChange:(NSNotification *)notification;
- (IBAction)setSilent:(id)sender; - (IBAction)toggleSilence:(id)sender;
- (IBAction)playSound:(id)sender; - (IBAction)playSound:(id)sender;
@end @end

View File

@ -111,9 +111,11 @@
[self setDocumentEdited:[resource isDirty]]; [self setDocumentEdited:[resource isDirty]];
} }
- (IBAction)setSilent:(id)sender - (IBAction)toggleSilence:(id)sender
{ {
silent = ![soundButton state]; silent = ![soundButton state];
[soundField setEnabled:!silent];
[playButton setEnabled:!silent];
[resource touch]; [resource touch];
[self setDocumentEdited:YES]; [self setDocumentEdited:YES];
} }

View File

@ -82,6 +82,6 @@ ResKnife methods, functions, headers, classes, ivars and practically anything el
3) The pertinent keywords or their equivalents in the above item should retain the specified order wherever reasonably applicable (e.g. for @class and @protocol comments) 3) The pertinent keywords or their equivalents in the above item should retain the specified order wherever reasonably applicable (e.g. for @class and @protocol comments)
4) The value for the @created keyword should take the following form: YYYY-MM-DD 4) The value for the @created keyword should take the following form: YYYY-MM-DD
5) The value for the @change keyword should take the following form: YYYY-MM-DD Author: Description 5) The value for the @updated keyword should take the following form: YYYY-MM-DD Author: Description
where Author is an identifier for the person who made the change, not necessarilly the value in @author. Convention is that it simply contains the initials of the person. where Author is an identifier for the person who made the change, not necessarilly the value in @author. Convention is that it simply contains the initials of the person.
*/ */

View File

@ -7,10 +7,10 @@
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
0EBA8666122CF49800FEC1AC /* NGSCategories.h in Headers */ = {isa = PBXBuildFile; fileRef = 0EBA8664122CF49800FEC1AC /* NGSCategories.h */; };
0EBA8667122CF49800FEC1AC /* NGSCategories.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EBA8665122CF49800FEC1AC /* NGSCategories.m */; };
0EF71540122BD0D0005DF94E /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0EF7153F122BD0D0005DF94E /* Localizable.strings */; }; 0EF71540122BD0D0005DF94E /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0EF7153F122BD0D0005DF94E /* Localizable.strings */; };
E1193609099830D300A3A6EA /* FontDocument.nib in Resources */ = {isa = PBXBuildFile; fileRef = E1193607099830D200A3A6EA /* FontDocument.nib */; }; E1193609099830D300A3A6EA /* FontDocument.nib in Resources */ = {isa = PBXBuildFile; fileRef = E1193607099830D200A3A6EA /* FontDocument.nib */; };
E119363A099833AE00A3A6EA /* Categories.h in Headers */ = {isa = PBXBuildFile; fileRef = E1193638099833AE00A3A6EA /* Categories.h */; };
E119363B099833AE00A3A6EA /* Categories.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1193639099833AE00A3A6EA /* Categories.mm */; };
E11936660998552900A3A6EA /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = E11936650998552900A3A6EA /* Localizable.strings */; }; E11936660998552900A3A6EA /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = E11936650998552900A3A6EA /* Localizable.strings */; };
E1193683099864AD00A3A6EA /* ElementUBYT.h in Headers */ = {isa = PBXBuildFile; fileRef = E119367D099864AD00A3A6EA /* ElementUBYT.h */; }; E1193683099864AD00A3A6EA /* ElementUBYT.h in Headers */ = {isa = PBXBuildFile; fileRef = E119367D099864AD00A3A6EA /* ElementUBYT.h */; };
E1193684099864AD00A3A6EA /* ElementUBYT.m in Sources */ = {isa = PBXBuildFile; fileRef = E119367E099864AD00A3A6EA /* ElementUBYT.m */; }; E1193684099864AD00A3A6EA /* ElementUBYT.m in Sources */ = {isa = PBXBuildFile; fileRef = E119367E099864AD00A3A6EA /* ElementUBYT.m */; };
@ -89,8 +89,8 @@
E18BF574069FEA1300F076B8 /* OutlineViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B5882A0156D40B01000001 /* OutlineViewDelegate.m */; }; E18BF574069FEA1300F076B8 /* OutlineViewDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B5882A0156D40B01000001 /* OutlineViewDelegate.m */; };
E18BF575069FEA1300F076B8 /* PrefsWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B5882C0156D40B01000001 /* PrefsWindowController.m */; }; E18BF575069FEA1300F076B8 /* PrefsWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B5882C0156D40B01000001 /* PrefsWindowController.m */; };
E18BF576069FEA1300F076B8 /* Resource.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B5882E0156D40B01000001 /* Resource.m */; }; E18BF576069FEA1300F076B8 /* Resource.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B5882E0156D40B01000001 /* Resource.m */; };
E18BF577069FEA1300F076B8 /* ResourceDataSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = F5B588300156D40B01000001 /* ResourceDataSource.mm */; }; E18BF577069FEA1300F076B8 /* ResourceDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B588300156D40B01000001 /* ResourceDataSource.m */; };
E18BF578069FEA1300F076B8 /* ResourceDocument.mm in Sources */ = {isa = PBXBuildFile; fileRef = F5B588320156D40B01000001 /* ResourceDocument.mm */; }; E18BF578069FEA1300F076B8 /* ResourceDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B588320156D40B01000001 /* ResourceDocument.m */; };
E18BF579069FEA1300F076B8 /* ResourceNameCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F577A901021215C801A80001 /* ResourceNameCell.m */; }; E18BF579069FEA1300F076B8 /* ResourceNameCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F577A901021215C801A80001 /* ResourceNameCell.m */; };
E18BF57A069FEA1300F076B8 /* SizeFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B588340156D40B01000001 /* SizeFormatter.m */; }; E18BF57A069FEA1300F076B8 /* SizeFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = F5B588340156D40B01000001 /* SizeFormatter.m */; };
E18BF57B069FEA1300F076B8 /* NSOutlineView-SelectedItems.m in Sources */ = {isa = PBXBuildFile; fileRef = F5D0CBD0022744C701A80001 /* NSOutlineView-SelectedItems.m */; }; E18BF57B069FEA1300F076B8 /* NSOutlineView-SelectedItems.m in Sources */ = {isa = PBXBuildFile; fileRef = F5D0CBD0022744C701A80001 /* NSOutlineView-SelectedItems.m */; };
@ -103,7 +103,7 @@
E18BF582069FEA1300F076B8 /* OpenPanelDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F59481B203D077DC01A8010A /* OpenPanelDelegate.m */; }; E18BF582069FEA1300F076B8 /* OpenPanelDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = F59481B203D077DC01A8010A /* OpenPanelDelegate.m */; };
E18BF583069FEA1300F076B8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D35755A04DAEB4300B8225B /* main.m */; }; E18BF583069FEA1300F076B8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D35755A04DAEB4300B8225B /* main.m */; };
E18BF584069FEA1300F076B8 /* RKEditorRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D35755D04DAEB6200B8225B /* RKEditorRegistry.m */; }; E18BF584069FEA1300F076B8 /* RKEditorRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D35755D04DAEB6200B8225B /* RKEditorRegistry.m */; };
E18BF585069FEA1300F076B8 /* RKSupportResourceRegistry.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3D53A9FE04F171DC006651FA /* RKSupportResourceRegistry.mm */; }; E18BF585069FEA1300F076B8 /* RKSupportResourceRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D53A9FE04F171DC006651FA /* RKSupportResourceRegistry.m */; };
E18BF587069FEA1300F076B8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5B5884B0156D40B01000001 /* Cocoa.framework */; }; E18BF587069FEA1300F076B8 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5B5884B0156D40B01000001 /* Cocoa.framework */; };
E18BF588069FEA1300F076B8 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5B5884A0156D40B01000001 /* Carbon.framework */; }; E18BF588069FEA1300F076B8 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F5B5884A0156D40B01000001 /* Carbon.framework */; };
E18BF590069FEA1400F076B8 /* ResKnifeResourceProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CDEBAB01FC893201A80001 /* ResKnifeResourceProtocol.h */; }; E18BF590069FEA1400F076B8 /* ResKnifeResourceProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = F5CDEBAB01FC893201A80001 /* ResKnifeResourceProtocol.h */; };
@ -414,6 +414,8 @@
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
0EBA8664122CF49800FEC1AC /* NGSCategories.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NGSCategories.h; sourceTree = "<group>"; };
0EBA8665122CF49800FEC1AC /* NGSCategories.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NGSCategories.m; sourceTree = "<group>"; };
3D0933A604DEFEE600DD74B1 /* Element.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Element.h; sourceTree = "<group>"; }; 3D0933A604DEFEE600DD74B1 /* Element.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Element.h; sourceTree = "<group>"; };
3D0933A704DEFEE600DD74B1 /* Element.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Element.m; sourceTree = "<group>"; }; 3D0933A704DEFEE600DD74B1 /* Element.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Element.m; sourceTree = "<group>"; };
3D0933BE04DF151C00DD74B1 /* TemplateStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TemplateStream.h; sourceTree = "<group>"; }; 3D0933BE04DF151C00DD74B1 /* TemplateStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TemplateStream.h; sourceTree = "<group>"; };
@ -449,10 +451,8 @@
3D50047304EF122000F3B64D /* ElementLSTC.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = ElementLSTC.mm; sourceTree = "<group>"; }; 3D50047304EF122000F3B64D /* ElementLSTC.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = ElementLSTC.mm; sourceTree = "<group>"; };
3D50047404EF122000F3B64D /* ElementLSTC.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ElementLSTC.h; sourceTree = "<group>"; }; 3D50047404EF122000F3B64D /* ElementLSTC.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ElementLSTC.h; sourceTree = "<group>"; };
3D53A9FD04F171DC006651FA /* RKSupportResourceRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RKSupportResourceRegistry.h; sourceTree = "<group>"; }; 3D53A9FD04F171DC006651FA /* RKSupportResourceRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RKSupportResourceRegistry.h; sourceTree = "<group>"; };
3D53A9FE04F171DC006651FA /* RKSupportResourceRegistry.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RKSupportResourceRegistry.mm; sourceTree = "<group>"; }; 3D53A9FE04F171DC006651FA /* RKSupportResourceRegistry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RKSupportResourceRegistry.m; sourceTree = "<group>"; };
E1193608099830D300A3A6EA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/FontDocument.nib; sourceTree = "<group>"; }; E1193608099830D300A3A6EA /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/FontDocument.nib; sourceTree = "<group>"; };
E1193638099833AE00A3A6EA /* Categories.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = Categories.h; path = ../Categories.h; sourceTree = SOURCE_ROOT; };
E1193639099833AE00A3A6EA /* Categories.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; name = Categories.mm; path = ../Categories.mm; sourceTree = SOURCE_ROOT; };
E11936620998551200A3A6EA /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = "<group>"; }; E11936620998551200A3A6EA /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/Localizable.strings; sourceTree = "<group>"; };
E119367D099864AD00A3A6EA /* ElementUBYT.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ElementUBYT.h; sourceTree = "<group>"; }; E119367D099864AD00A3A6EA /* ElementUBYT.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ElementUBYT.h; sourceTree = "<group>"; };
E119367E099864AD00A3A6EA /* ElementUBYT.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = ElementUBYT.m; sourceTree = "<group>"; }; E119367E099864AD00A3A6EA /* ElementUBYT.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = ElementUBYT.m; sourceTree = "<group>"; };
@ -597,9 +597,9 @@
F5B5882D0156D40B01000001 /* Resource.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Resource.h; sourceTree = "<group>"; }; F5B5882D0156D40B01000001 /* Resource.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = Resource.h; sourceTree = "<group>"; };
F5B5882E0156D40B01000001 /* Resource.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Resource.m; sourceTree = "<group>"; }; F5B5882E0156D40B01000001 /* Resource.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = Resource.m; sourceTree = "<group>"; };
F5B5882F0156D40B01000001 /* ResourceDataSource.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ResourceDataSource.h; sourceTree = "<group>"; }; F5B5882F0156D40B01000001 /* ResourceDataSource.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ResourceDataSource.h; sourceTree = "<group>"; };
F5B588300156D40B01000001 /* ResourceDataSource.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = ResourceDataSource.mm; sourceTree = "<group>"; }; F5B588300156D40B01000001 /* ResourceDataSource.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = ResourceDataSource.m; sourceTree = "<group>"; };
F5B588310156D40B01000001 /* ResourceDocument.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ResourceDocument.h; sourceTree = "<group>"; }; F5B588310156D40B01000001 /* ResourceDocument.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ResourceDocument.h; sourceTree = "<group>"; };
F5B588320156D40B01000001 /* ResourceDocument.mm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.objcpp; path = ResourceDocument.mm; sourceTree = "<group>"; }; F5B588320156D40B01000001 /* ResourceDocument.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = ResourceDocument.m; sourceTree = "<group>"; };
F5B588330156D40B01000001 /* SizeFormatter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SizeFormatter.h; sourceTree = "<group>"; }; F5B588330156D40B01000001 /* SizeFormatter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SizeFormatter.h; sourceTree = "<group>"; };
F5B588340156D40B01000001 /* SizeFormatter.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = SizeFormatter.m; sourceTree = "<group>"; }; F5B588340156D40B01000001 /* SizeFormatter.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = SizeFormatter.m; sourceTree = "<group>"; };
F5B588370156D40B01000001 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/AboutPanel.nib; sourceTree = "<group>"; }; F5B588370156D40B01000001 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/AboutPanel.nib; sourceTree = "<group>"; };
@ -1007,8 +1007,8 @@
F5594EE9021F3E2301A80001 /* Categories */ = { F5594EE9021F3E2301A80001 /* Categories */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
E1193638099833AE00A3A6EA /* Categories.h */, 0EBA8664122CF49800FEC1AC /* NGSCategories.h */,
E1193639099833AE00A3A6EA /* Categories.mm */, 0EBA8665122CF49800FEC1AC /* NGSCategories.m */,
F5D0CBCF022744C701A80001 /* NSOutlineView-SelectedItems.h */, F5D0CBCF022744C701A80001 /* NSOutlineView-SelectedItems.h */,
F5D0CBD0022744C701A80001 /* NSOutlineView-SelectedItems.m */, F5D0CBD0022744C701A80001 /* NSOutlineView-SelectedItems.m */,
F59D5DE40320DFF601A8010C /* NSString-FSSpec.h */, F59D5DE40320DFF601A8010C /* NSString-FSSpec.h */,
@ -1118,9 +1118,9 @@
F5B5882D0156D40B01000001 /* Resource.h */, F5B5882D0156D40B01000001 /* Resource.h */,
F5B5882E0156D40B01000001 /* Resource.m */, F5B5882E0156D40B01000001 /* Resource.m */,
F5B5882F0156D40B01000001 /* ResourceDataSource.h */, F5B5882F0156D40B01000001 /* ResourceDataSource.h */,
F5B588300156D40B01000001 /* ResourceDataSource.mm */, F5B588300156D40B01000001 /* ResourceDataSource.m */,
F5B588310156D40B01000001 /* ResourceDocument.h */, F5B588310156D40B01000001 /* ResourceDocument.h */,
F5B588320156D40B01000001 /* ResourceDocument.mm */, F5B588320156D40B01000001 /* ResourceDocument.m */,
F577A900021215C801A80001 /* ResourceNameCell.h */, F577A900021215C801A80001 /* ResourceNameCell.h */,
F577A901021215C801A80001 /* ResourceNameCell.m */, F577A901021215C801A80001 /* ResourceNameCell.m */,
F59481AD03D0776C01A8010A /* RKDocumentController.h */, F59481AD03D0776C01A8010A /* RKDocumentController.h */,
@ -1128,7 +1128,7 @@
3D35755C04DAEB6200B8225B /* RKEditorRegistry.h */, 3D35755C04DAEB6200B8225B /* RKEditorRegistry.h */,
3D35755D04DAEB6200B8225B /* RKEditorRegistry.m */, 3D35755D04DAEB6200B8225B /* RKEditorRegistry.m */,
3D53A9FD04F171DC006651FA /* RKSupportResourceRegistry.h */, 3D53A9FD04F171DC006651FA /* RKSupportResourceRegistry.h */,
3D53A9FE04F171DC006651FA /* RKSupportResourceRegistry.mm */, 3D53A9FE04F171DC006651FA /* RKSupportResourceRegistry.m */,
F5B588330156D40B01000001 /* SizeFormatter.h */, F5B588330156D40B01000001 /* SizeFormatter.h */,
F5B588340156D40B01000001 /* SizeFormatter.m */, F5B588340156D40B01000001 /* SizeFormatter.m */,
); );
@ -1435,6 +1435,7 @@
E18BF550069FEA1300F076B8 /* OpenPanelDelegate.h in Headers */, E18BF550069FEA1300F076B8 /* OpenPanelDelegate.h in Headers */,
E18BF551069FEA1300F076B8 /* RKEditorRegistry.h in Headers */, E18BF551069FEA1300F076B8 /* RKEditorRegistry.h in Headers */,
E18BF552069FEA1300F076B8 /* RKSupportResourceRegistry.h in Headers */, E18BF552069FEA1300F076B8 /* RKSupportResourceRegistry.h in Headers */,
0EBA8666122CF49800FEC1AC /* NGSCategories.h in Headers */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -1628,7 +1629,6 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
E18BF7D4069FFC7600F076B8 /* FontWindowController.h in Headers */, E18BF7D4069FFC7600F076B8 /* FontWindowController.h in Headers */,
E119363A099833AE00A3A6EA /* Categories.h in Headers */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -2165,8 +2165,8 @@
E18BF574069FEA1300F076B8 /* OutlineViewDelegate.m in Sources */, E18BF574069FEA1300F076B8 /* OutlineViewDelegate.m in Sources */,
E18BF575069FEA1300F076B8 /* PrefsWindowController.m in Sources */, E18BF575069FEA1300F076B8 /* PrefsWindowController.m in Sources */,
E18BF576069FEA1300F076B8 /* Resource.m in Sources */, E18BF576069FEA1300F076B8 /* Resource.m in Sources */,
E18BF577069FEA1300F076B8 /* ResourceDataSource.mm in Sources */, E18BF577069FEA1300F076B8 /* ResourceDataSource.m in Sources */,
E18BF578069FEA1300F076B8 /* ResourceDocument.mm in Sources */, E18BF578069FEA1300F076B8 /* ResourceDocument.m in Sources */,
E18BF579069FEA1300F076B8 /* ResourceNameCell.m in Sources */, E18BF579069FEA1300F076B8 /* ResourceNameCell.m in Sources */,
E18BF57A069FEA1300F076B8 /* SizeFormatter.m in Sources */, E18BF57A069FEA1300F076B8 /* SizeFormatter.m in Sources */,
E18BF57B069FEA1300F076B8 /* NSOutlineView-SelectedItems.m in Sources */, E18BF57B069FEA1300F076B8 /* NSOutlineView-SelectedItems.m in Sources */,
@ -2179,7 +2179,8 @@
E18BF582069FEA1300F076B8 /* OpenPanelDelegate.m in Sources */, E18BF582069FEA1300F076B8 /* OpenPanelDelegate.m in Sources */,
E18BF583069FEA1300F076B8 /* main.m in Sources */, E18BF583069FEA1300F076B8 /* main.m in Sources */,
E18BF584069FEA1300F076B8 /* RKEditorRegistry.m in Sources */, E18BF584069FEA1300F076B8 /* RKEditorRegistry.m in Sources */,
E18BF585069FEA1300F076B8 /* RKSupportResourceRegistry.mm in Sources */, E18BF585069FEA1300F076B8 /* RKSupportResourceRegistry.m in Sources */,
0EBA8667122CF49800FEC1AC /* NGSCategories.m in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@ -2358,7 +2359,6 @@
files = ( files = (
E18BF7D5069FFC7600F076B8 /* FontWindowController.mm in Sources */, E18BF7D5069FFC7600F076B8 /* FontWindowController.mm in Sources */,
E18BF8EB06A0027700F076B8 /* Notifications.m in Sources */, E18BF8EB06A0027700F076B8 /* Notifications.m in Sources */,
E119363B099833AE00A3A6EA /* Categories.mm in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };