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

Reply via email to