Revision: 4963
http://skim-app.svn.sourceforge.net/skim-app/?rev=4963&view=rev
Author: hofman
Date: 2008-11-16 12:26:19 +0000 (Sun, 16 Nov 2008)
Log Message:
-----------
Handle PDF in spotlight importer so we can search skim notes
Modified Paths:
--------------
trunk/SkimImporter/GetMetadataForFile.m
trunk/SkimImporter/Info.plist
trunk/SkimImporter/SkimImporter.xcodeproj/project.pbxproj
Modified: trunk/SkimImporter/GetMetadataForFile.m
===================================================================
--- trunk/SkimImporter/GetMetadataForFile.m 2008-11-16 12:16:20 UTC (rev
4962)
+++ trunk/SkimImporter/GetMetadataForFile.m 2008-11-16 12:26:19 UTC (rev
4963)
@@ -39,6 +39,8 @@
#import <CoreFoundation/CoreFoundation.h>
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
+#import <Quartz/Quartz.h>
+#import <SkimNotesBase/SkimNotesBase.h>
Boolean GetMetadataForFile(void* thisInterface,
CFMutableDictionaryRef attributes,
@@ -50,71 +52,96 @@
/* Return TRUE if successful, FALSE if there was no data provided */
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- NSString *notePath = nil;
- NSString *sourcePath = nil;
- BOOL isSkimNotes = UTTypeEqual(contentTypeUTI,
CFSTR("net.sourceforge.skim-app.skimnotes"));
- BOOL isPDFBundle = isSkimNotes == NO && UTTypeEqual(contentTypeUTI,
CFSTR("net.sourceforge.skim-app.pdfd"));
- Boolean success = [[NSFileManager defaultManager]
fileExistsAtPath:(NSString *)pathToFile] && (isSkimNotes || isPDFBundle);
- if (isSkimNotes) {
- notePath = (NSString *)pathToFile;
- sourcePath = [[(NSString *)pathToFile stringByDeletingPathExtension]
stringByAppendingPathExtension:@"pdf"];
- } else if (isPDFBundle) {
- NSArray *files = [[NSFileManager defaultManager]
subpathsAtPath:(NSString *)pathToFile];
- NSString *noteFilename = [[[(NSString *)pathToFile lastPathComponent]
stringByDeletingPathExtension] stringByAppendingPathExtension:@"skim"];
- if ([files containsObject:noteFilename] == NO) {
- unsigned idx = [[files
valueForKeyPath:@"pathExtension.lowercaseString"] indexOfObject:@"skim"];
- noteFilename = idx == NSNotFound ? nil : [files objectAtIndex:idx];
- }
- if (noteFilename)
- notePath = [(NSString *)pathToFile
stringByAppendingPathComponent:noteFilename];
- }
+ BOOL isSkimNotes = UTTypeConformsTo(contentTypeUTI,
CFSTR("net.sourceforge.skim-app.skimnotes"));
+ BOOL isPDFBundle = isSkimNotes == NO && UTTypeConformsTo(contentTypeUTI,
CFSTR("net.sourceforge.skim-app.pdfd"));
+ BOOL isPDF = isSkimNotes == NO && isPDFBundle == NO &&
UTTypeConformsTo(contentTypeUTI, kUTTypePDF);
+ Boolean success = [[NSFileManager defaultManager]
fileExistsAtPath:(NSString *)pathToFile] && (isSkimNotes || isPDFBundle ||
isPDF);
- NSMutableString *textContent = [[NSMutableString alloc] init];
-
- if (notePath && [[NSFileManager defaultManager]
fileExistsAtPath:notePath]) {
- NSData *data = [[NSData alloc] initWithContentsOfFile:notePath
options:NSUncachedRead error:NULL];
- if (data) {
- NSArray *array = [NSKeyedUnarchiver unarchiveObjectWithData:data];
- [data release];
-
- if (array) {
- NSEnumerator *noteEnum = [array objectEnumerator];
- NSDictionary *note;
- NSMutableArray *notes = [[NSMutableArray alloc] init];
- while (note = [noteEnum nextObject]) {
- NSString *contents = [note objectForKey:@"contents"];
- if (contents) {
- if ([textContent length])
- [textContent appendString:@"\n\n"];
- [textContent appendString:contents];
- [notes addObject:contents];
+ if (success) {
+ NSURL *fileURL = [NSURL fileURLWithPath:(NSString *)pathToFile];
+ NSArray *notes = nil;
+ NSString *pdfText = nil;
+ NSDictionary *info = nil;
+ NSString *sourcePath = nil;
+
+ if (isSkimNotes) {
+ notes = [[NSFileManager defaultManager]
readSkimNotesFromSkimFileAtURL:fileURL error:NULL];
+ sourcePath = [[(NSString *)pathToFile
stringByDeletingPathExtension] stringByAppendingPathExtension:@"pdf"];
+ } else if (isPDF) {
+ notes = [[NSFileManager defaultManager]
readSkimNotesFromExtendedAttributesAtURL:fileURL error:NULL];
+ PDFDocument *pdfDoc = [[PDFDocument alloc] initWithURL:fileURL];
+ if (pdfDoc) {
+ pdfText = [pdfDoc string];
+ info = [[[pdfDoc documentAttributes] mutableCopy] autorelease];
+ unsigned int pageCount = [pdfDoc pageCount];
+ NSSize size = pageCount ? [[pdfDoc pageAtIndex:0]
boundsForBox:kPDFDisplayBoxCropBox].size : NSZeroSize;
+ [(NSMutableDictionary *)info setValue:[NSString
stringWithFormat: @"%d.%d", [pdfDoc majorVersion], [pdfDoc minorVersion]]
forKey:@"Version"];
+ [(NSMutableDictionary *)info setValue:[NSNumber
numberWithBool:[pdfDoc isEncrypted]] forKey:@"Encrypted"];
+ [(NSMutableDictionary *)info setValue:[NSNumber
numberWithUnsignedInt:pageCount] forKey:@"PageCount"];
+ [(NSMutableDictionary *)info setValue:[NSNumber
numberWithFloat:size.width] forKey:@"PageWidth"];
+ [(NSMutableDictionary *)info setValue:[NSNumber
numberWithFloat:size.height] forKey:@"PageHeight"];
+ [pdfDoc release];
+ }
+ } else if (isPDFBundle) {
+ notes = [[NSFileManager defaultManager]
readSkimNotesFromPDFBundleAtURL:fileURL error:NULL];
+ NSString *textPath = [(NSString *)pathToFile
stringByAppendingPathComponent:@"data.txt"];
+ pdfText = [NSString stringWithContentsOfFile:textPath];
+ NSString *plistPath = [(NSString *)pathToFile
stringByAppendingPathComponent:@"data.plist"];
+ NSData *plistData = [NSData dataWithContentsOfFile:plistPath];
+ info = plistData ? [NSPropertyListSerialization
propertyListFromData:plistData mutabilityOption:NSPropertyListImmutable
format:NULL errorDescription:NULL] : nil;
+ if (pdfText == nil || info == nil) {
+ NSString *pdfPath = [[NSFileManager defaultManager]
bundledFileWithExtension:@"pdf" inPDFBundleAtPath:(NSString *)pathToFile
error:NULL];
+ PDFDocument *pdfDoc = [[PDFDocument alloc] initWithURL:[NSURL
fileURLWithPath:pdfPath]];
+ if (pdfDoc) {
+ if (pdfText == nil)
+ pdfText = [pdfDoc string];
+ if (info == nil) {
+ info = [[[pdfDoc documentAttributes] mutableCopy]
autorelease];
+ unsigned int pageCount = [pdfDoc pageCount];
+ NSSize size = pageCount ? [[pdfDoc pageAtIndex:0]
boundsForBox:kPDFDisplayBoxCropBox].size : NSZeroSize;
+ [(NSMutableDictionary *)info setValue:[NSString
stringWithFormat: @"%d.%d", [pdfDoc majorVersion], [pdfDoc minorVersion]]
forKey:@"Version"];
+ [(NSMutableDictionary *)info setValue:[NSNumber
numberWithBool:[pdfDoc isEncrypted]] forKey:@"Encrypted"];
+ [(NSMutableDictionary *)info setValue:[NSNumber
numberWithUnsignedInt:pageCount] forKey:@"PageCount"];
+ [(NSMutableDictionary *)info setValue:[NSNumber
numberWithFloat:size.width] forKey:@"PageWidth"];
+ [(NSMutableDictionary *)info setValue:[NSNumber
numberWithFloat:size.height] forKey:@"PageHeight"];
}
- NSString *text = [[note objectForKey:@"text"] string];
- if (text) {
- if ([textContent length])
- [textContent appendString:@"\n\n"];
- [textContent appendString:text];
- }
+ [pdfDoc release];
}
- [(NSMutableDictionary *)attributes setObject:notes
forKey:@"net_sourceforge_skim_app_notes"];
- [notes release];
}
}
- }
-
- if (isPDFBundle) {
- NSString *textPath = [(NSString *)pathToFile
stringByAppendingPathComponent:@"data.txt"];
- NSString *string = [NSString stringWithContentsOfFile:textPath];
- if ([string length]) {
+
+ NSMutableString *textContent = [[NSMutableString alloc] init];
+
+ if (notes) {
+ NSEnumerator *noteEnum = [notes objectEnumerator];
+ NSDictionary *note;
+ NSMutableArray *noteContents = [[NSMutableArray alloc] init];
+ while (note = [noteEnum nextObject]) {
+ NSString *contents = [note objectForKey:@"contents"];
+ if (contents) {
+ if ([textContent length])
+ [textContent appendString:@"\n\n"];
+ [textContent appendString:contents];
+ [noteContents addObject:contents];
+ }
+ NSString *text = [[note objectForKey:@"text"] string];
+ if (text) {
+ if ([textContent length])
+ [textContent appendString:@"\n\n"];
+ [textContent appendString:text];
+ }
+ }
+ [(NSMutableDictionary *)attributes setObject:noteContents
forKey:@"net_sourceforge_skim_app_notes"];
+ [noteContents release];
+ }
+
+ if ([pdfText length]) {
if ([textContent length])
[textContent appendString:@"\n\n"];
- [textContent appendString:string];
- }
-
- NSString *plistPath = [(NSString *)pathToFile
stringByAppendingPathComponent:@"data.plist"];
- NSData *plistData = [NSData dataWithContentsOfFile:plistPath];
- NSDictionary *info = plistData ? [NSPropertyListSerialization
propertyListFromData:plistData mutabilityOption:NSPropertyListImmutable
format:NULL errorDescription:NULL] : nil;
+ [textContent appendString:pdfText];
+ }
+
if (info) {
id value;
id pageWidth = [info objectForKey:@"PageWidth"], pageHeight =
[info objectForKey:@"PageHeight"];
@@ -138,23 +165,23 @@
[(NSMutableDictionary *)attributes setObject:[NSString
stringWithFormat:@"%@ x %@ points", pageWidth, pageHeight]
forKey:@"net_sourceforge_skim_app_dimensions"];
}
}
+
+ [(NSMutableDictionary *)attributes setObject:textContent
forKey:(NSString *)kMDItemTextContent];
+ [textContent release];
+
+ [(NSMutableDictionary *)attributes setObject:@"Skim" forKey:(NSString
*)kMDItemCreator];
+
+ if (sourcePath && [[NSFileManager defaultManager]
fileExistsAtPath:sourcePath])
+ [(NSMutableDictionary *)attributes setObject:[NSArray
arrayWithObjects:sourcePath, nil] forKey:(NSString *)kMDItemWhereFroms];
+
+ NSDictionary *fileAttributes = [[NSFileManager defaultManager]
fileAttributesAtPath:(NSString *)pathToFile traverseLink:YES];
+ NSDate *date;
+ if (date = [fileAttributes objectForKey:NSFileModificationDate])
+ [(NSMutableDictionary *)attributes setObject:date forKey:(NSString
*)kMDItemContentModificationDate];
+ if (date = [fileAttributes objectForKey:NSFileCreationDate])
+ [(NSMutableDictionary *)attributes setObject:date forKey:(NSString
*)kMDItemContentCreationDate];
}
- [(NSMutableDictionary *)attributes setObject:textContent forKey:(NSString
*)kMDItemTextContent];
- [textContent release];
-
- [(NSMutableDictionary *)attributes setObject:@"Skim" forKey:(NSString
*)kMDItemCreator];
-
- if (sourcePath && [[NSFileManager defaultManager]
fileExistsAtPath:sourcePath])
- [(NSMutableDictionary *)attributes setObject:[NSArray
arrayWithObjects:sourcePath, nil] forKey:(NSString *)kMDItemWhereFroms];
-
- NSDictionary *fileAttributes = [[NSFileManager defaultManager]
fileAttributesAtPath:(NSString *)pathToFile traverseLink:YES];
- NSDate *date;
- if (date = [fileAttributes objectForKey:NSFileModificationDate])
- [(NSMutableDictionary *)attributes setObject:date forKey:(NSString
*)kMDItemContentModificationDate];
- if (date = [fileAttributes objectForKey:NSFileCreationDate])
- [(NSMutableDictionary *)attributes setObject:date forKey:(NSString
*)kMDItemContentCreationDate];
-
[pool release];
return success;
Modified: trunk/SkimImporter/Info.plist
===================================================================
--- trunk/SkimImporter/Info.plist 2008-11-16 12:16:20 UTC (rev 4962)
+++ trunk/SkimImporter/Info.plist 2008-11-16 12:26:19 UTC (rev 4963)
@@ -11,6 +11,14 @@
<string>MDImporter</string>
<key>LSItemContentTypes</key>
<array>
+ <string>com.adobe.pdf</string>
+ </array>
+ </dict>
+ <dict>
+ <key>CFBundleTypeRole</key>
+ <string>MDImporter</string>
+ <key>LSItemContentTypes</key>
+ <array>
<string>net.sourceforge.skim-app.pdfd</string>
</array>
</dict>
Modified: trunk/SkimImporter/SkimImporter.xcodeproj/project.pbxproj
===================================================================
--- trunk/SkimImporter/SkimImporter.xcodeproj/project.pbxproj 2008-11-16
12:16:20 UTC (rev 4962)
+++ trunk/SkimImporter/SkimImporter.xcodeproj/project.pbxproj 2008-11-16
12:26:19 UTC (rev 4963)
@@ -14,11 +14,65 @@
C86B05270671AA6E00DD9006 /* CoreServices.framework in
Frameworks */ = {isa = PBXBuildFile; fileRef = C86B05260671AA6E00DD9006 /*
CoreServices.framework */; };
C88FB7D8067446EC006EBB30 /* schema.xml in Resources */ = {isa =
PBXBuildFile; fileRef = C88FB7D7067446EC006EBB30 /* schema.xml */; };
C88FB7E40674480E006EBB30 /* schema.strings in Resources */ =
{isa = PBXBuildFile; fileRef = C88FB7E30674480E006EBB30 /* schema.strings */; };
+ CEE23DEB0ECFA8370013CDF7 /* Quartz.framework in Frameworks */ =
{isa = PBXBuildFile; fileRef = CEE23DEA0ECFA8370013CDF7 /* Quartz.framework */;
};
+ CEE23E5B0ECFA8F30013CDF7 /* SkimNotesBase.framework in
Frameworks */ = {isa = PBXBuildFile; fileRef = CEE23E540ECFA8D20013CDF7 /*
SkimNotesBase.framework */; };
+ CEE23E5C0ECFA8FA0013CDF7 /* SkimNotesBase.framework in
CopyFiles */ = {isa = PBXBuildFile; fileRef = CEE23E540ECFA8D20013CDF7 /*
SkimNotesBase.framework */; };
CEFD60CF0C01D0E40027B933 /* Foundation.framework in Frameworks
*/ = {isa = PBXBuildFile; fileRef = CEFD60CE0C01D0E40027B933 /*
Foundation.framework */; };
CEFD60D30C01D1040027B933 /* ApplicationServices.framework in
Frameworks */ = {isa = PBXBuildFile; fileRef = CEFD60D20C01D1040027B933 /*
ApplicationServices.framework */; };
F91570600C020DDF008B68E9 /* AppKit.framework in Frameworks */ =
{isa = PBXBuildFile; fileRef = F915705F0C020DDF008B68E9 /* AppKit.framework */;
};
/* End PBXBuildFile section */
+/* Begin PBXContainerItemProxy section */
+ CEE23E510ECFA8D20013CDF7 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = CEE23E450ECFA8D10013CDF7 /*
SkimNotes.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = 8DC2EF5B0486A6940098B216 /*
SkimNotes.framework */;
+ remoteInfo = SkimNotes;
+ };
+ CEE23E530ECFA8D20013CDF7 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = CEE23E450ECFA8D10013CDF7 /*
SkimNotes.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = CEA5F53D0E2CED0E00F65088 /*
SkimNotesBase.framework */;
+ remoteInfo = SkimNotesBase;
+ };
+ CEE23E550ECFA8D20013CDF7 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = CEE23E450ECFA8D10013CDF7 /*
SkimNotes.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = CEBA2B550E0566B00000B2E6 /*
skimnotes */;
+ remoteInfo = "SkimNotes Tool";
+ };
+ CEE23E570ECFA8D20013CDF7 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = CEE23E450ECFA8D10013CDF7 /*
SkimNotes.xcodeproj */;
+ proxyType = 2;
+ remoteGlobalIDString = CEDB9AE90E2E9F090057FD09 /*
SkimNotesTest.app */;
+ remoteInfo = SkimNotesTest;
+ };
+ CEE23E590ECFA8E50013CDF7 /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = CEE23E450ECFA8D10013CDF7 /*
SkimNotes.xcodeproj */;
+ proxyType = 1;
+ remoteGlobalIDString = CEA5F53C0E2CED0E00F65088 /*
SkimNotesBase */;
+ remoteInfo = SkimNotesBase;
+ };
+/* End PBXContainerItemProxy section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ CEE23E410ECFA88E0013CDF7 /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = "";
+ dstSubfolderSpec = 10;
+ files = (
+ CEE23E5C0ECFA8FA0013CDF7 /*
SkimNotesBase.framework in CopyFiles */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
/* Begin PBXFileReference section */
089C167EFE841241C02AAC07 /* English */ = {isa =
PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings;
name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>";
};
08FB77B6FE84183AC02AAC07 /* main.c */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path =
main.c; sourceTree = "<group>"; };
@@ -40,6 +94,8 @@
CED8D41D0D744E060028E3E2 /* Skim-Common.xcconfig */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name =
"Skim-Common.xcconfig"; path = "../Configurations/Skim-Common.xcconfig";
sourceTree = SOURCE_ROOT; };
CED8D41E0D744E060028E3E2 /* Skim-Debug.xcconfig */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name =
"Skim-Debug.xcconfig"; path = "../Configurations/Skim-Debug.xcconfig";
sourceTree = SOURCE_ROOT; };
CED8D41F0D744E060028E3E2 /* Skim-Release.xcconfig */ = {isa =
PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name =
"Skim-Release.xcconfig"; path = "../Configurations/Skim-Release.xcconfig";
sourceTree = SOURCE_ROOT; };
+ CEE23DEA0ECFA8370013CDF7 /* Quartz.framework */ = {isa =
PBXFileReference; lastKnownFileType = wrapper.framework; name =
Quartz.framework; path = /System/Library/Frameworks/Quartz.framework;
sourceTree = "<absolute>"; };
+ CEE23E450ECFA8D10013CDF7 /* SkimNotes.xcodeproj */ = {isa =
PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name =
SkimNotes.xcodeproj; path = ../SkimNotes/SkimNotes.xcodeproj; sourceTree =
SOURCE_ROOT; };
CEFD60CE0C01D0E40027B933 /* Foundation.framework */ = {isa =
PBXFileReference; lastKnownFileType = wrapper.framework; name =
Foundation.framework; path = /System/Library/Frameworks/Foundation.framework;
sourceTree = "<absolute>"; };
CEFD60D20C01D1040027B933 /* ApplicationServices.framework */ =
{isa = PBXFileReference; lastKnownFileType = wrapper.framework; name =
ApplicationServices.framework; path =
/System/Library/Frameworks/ApplicationServices.framework; sourceTree =
"<absolute>"; };
CEFD6C620C01EF770027B933 /* Dutch */ = {isa = PBXFileReference;
fileEncoding = 10; lastKnownFileType = text.plist.strings; name = Dutch; path =
Dutch.lproj/schema.strings; sourceTree = "<group>"; };
@@ -59,6 +115,8 @@
CEFD60CF0C01D0E40027B933 /*
Foundation.framework in Frameworks */,
CEFD60D30C01D1040027B933 /*
ApplicationServices.framework in Frameworks */,
F91570600C020DDF008B68E9 /* AppKit.framework in
Frameworks */,
+ CEE23DEB0ECFA8370013CDF7 /* Quartz.framework in
Frameworks */,
+ CEE23E5B0ECFA8F30013CDF7 /*
SkimNotesBase.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -71,6 +129,7 @@
08FB77AFFE84173DC02AAC07 /* Source */,
089C167CFE841241C02AAC07 /* Resources */,
089C1671FE841209C02AAC07 /* External Frameworks
and Libraries */,
+ CEE23E440ECFA8C20013CDF7 /* Subprojects */,
19C28FB6FE9D52B211CA2CBB /* Products */,
CED8D41C0D744DDE0028E3E2 /* Configurations */,
);
@@ -85,6 +144,7 @@
CEFD60CE0C01D0E40027B933 /*
Foundation.framework */,
C86B05260671AA6E00DD9006 /*
CoreServices.framework */,
0AA1909FFE8422F4C02AAC07 /*
CoreFoundation.framework */,
+ CEE23DEA0ECFA8370013CDF7 /* Quartz.framework */,
);
name = "External Frameworks and Libraries";
sourceTree = "<group>";
@@ -127,32 +187,44 @@
name = Configurations;
sourceTree = "<group>";
};
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- 8D57630E048677EA00EA77CD /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
+ CEE23E440ECFA8C20013CDF7 /* Subprojects */ = {
+ isa = PBXGroup;
+ children = (
+ CEE23E450ECFA8D10013CDF7 /* SkimNotes.xcodeproj
*/,
);
- runOnlyForDeploymentPostprocessing = 0;
+ name = Subprojects;
+ sourceTree = "<group>";
};
-/* End PBXHeadersBuildPhase section */
+ CEE23E460ECFA8D10013CDF7 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ CEE23E520ECFA8D20013CDF7 /* SkimNotes.framework
*/,
+ CEE23E540ECFA8D20013CDF7 /*
SkimNotesBase.framework */,
+ CEE23E560ECFA8D20013CDF7 /* skimnotes */,
+ CEE23E580ECFA8D20013CDF7 /* SkimNotesTest.app
*/,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
/* Begin PBXNativeTarget section */
8D57630D048677EA00EA77CD /* SkimImporter */ = {
isa = PBXNativeTarget;
buildConfigurationList = 70138C840896BE9A00968C2F /*
Build configuration list for PBXNativeTarget "SkimImporter" */;
buildPhases = (
- 8D57630E048677EA00EA77CD /* Headers */,
8D57630F048677EA00EA77CD /* Resources */,
8D576311048677EA00EA77CD /* Sources */,
8D576313048677EA00EA77CD /* Frameworks */,
8D576315048677EA00EA77CD /* Rez */,
+ CEE23E410ECFA88E0013CDF7 /* CopyFiles */,
+ CEE23EA20ED02CBD0013CDF7 /* ShellScript */,
+ CEE23E980ECFB3A30013CDF7 /* ShellScript */,
);
buildRules = (
);
dependencies = (
+ CEE23E5A0ECFA8E50013CDF7 /* PBXTargetDependency
*/,
);
name = SkimImporter;
productInstallPath = /Library/Spotlight;
@@ -181,6 +253,12 @@
);
mainGroup = 089C166AFE841209C02AAC07 /* SkimImporter */;
projectDirPath = "";
+ projectReferences = (
+ {
+ ProductGroup = CEE23E460ECFA8D10013CDF7
/* Products */;
+ ProjectRef = CEE23E450ECFA8D10013CDF7
/* SkimNotes.xcodeproj */;
+ },
+ );
projectRoot = "";
targets = (
8D57630D048677EA00EA77CD /* SkimImporter */,
@@ -188,6 +266,37 @@
};
/* End PBXProject section */
+/* Begin PBXReferenceProxy section */
+ CEE23E520ECFA8D20013CDF7 /* SkimNotes.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.framework;
+ path = SkimNotes.framework;
+ remoteRef = CEE23E510ECFA8D20013CDF7 /*
PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ CEE23E540ECFA8D20013CDF7 /* SkimNotesBase.framework */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.framework;
+ path = SkimNotesBase.framework;
+ remoteRef = CEE23E530ECFA8D20013CDF7 /*
PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ CEE23E560ECFA8D20013CDF7 /* skimnotes */ = {
+ isa = PBXReferenceProxy;
+ fileType = "compiled.mach-o.executable";
+ path = skimnotes;
+ remoteRef = CEE23E550ECFA8D20013CDF7 /*
PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+ CEE23E580ECFA8D20013CDF7 /* SkimNotesTest.app */ = {
+ isa = PBXReferenceProxy;
+ fileType = wrapper.application;
+ path = SkimNotesTest.app;
+ remoteRef = CEE23E570ECFA8D20013CDF7 /*
PBXContainerItemProxy */;
+ sourceTree = BUILT_PRODUCTS_DIR;
+ };
+/* End PBXReferenceProxy section */
+
/* Begin PBXResourcesBuildPhase section */
8D57630F048677EA00EA77CD /* Resources */ = {
isa = PBXResourcesBuildPhase;
@@ -211,6 +320,35 @@
};
/* End PBXRezBuildPhase section */
+/* Begin PBXShellScriptBuildPhase section */
+ CEE23E980ECFB3A30013CDF7 /* ShellScript */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "if [ ${BUILD_STYLE} = \"Debug\" ];
then\nexit 0\nfi\n\necho \"*** stripping header files from frameworks
***\"\nfind \"${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}\" -type file
-name \"*.h\" -delete\nfind \"${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}\"
\\( -type d -or -type l \\) -name Headers -delete\n";
+ };
+ CEE23EA20ED02CBD0013CDF7 /* ShellScript */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "install_name_tool -change
@executable_path/../Frameworks/SkimNotesBase.framework/Versions/A/SkimNotesBase
@loader_path/../Frameworks/SkimNotesBase.framework/Versions/A/SkimNotesBase
\"${BUILT_PRODUCTS_DIR}/${EXECUTABLE_FOLDER_PATH}/${EXECUTABLE_NAME}\"\n";
+ };
+/* End PBXShellScriptBuildPhase section */
+
/* Begin PBXSourcesBuildPhase section */
8D576311048677EA00EA77CD /* Sources */ = {
isa = PBXSourcesBuildPhase;
@@ -223,6 +361,14 @@
};
/* End PBXSourcesBuildPhase section */
+/* Begin PBXTargetDependency section */
+ CEE23E5A0ECFA8E50013CDF7 /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ name = SkimNotesBase;
+ targetProxy = CEE23E590ECFA8E50013CDF7 /*
PBXContainerItemProxy */;
+ };
+/* End PBXTargetDependency section */
+
/* Begin PBXVariantGroup section */
8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = {
isa = PBXVariantGroup;
@@ -258,6 +404,7 @@
70138C850896BE9A00968C2F /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ FRAMEWORK_SEARCH_PATHS =
"$(SOURCE_ROOT)/../SkimNotes/build/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = /Library/Spotlight;
LIBRARY_STYLE = Bundle;
@@ -269,6 +416,7 @@
70138C860896BE9A00968C2F /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ FRAMEWORK_SEARCH_PATHS =
"$(SOURCE_ROOT)/../SkimNotes/build/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)";
INFOPLIST_FILE = Info.plist;
INSTALL_PATH = /Library/Spotlight;
LIBRARY_STYLE = Bundle;
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit