Revision: 3234
          http://skim-app.svn.sourceforge.net/skim-app/?rev=3234&view=rev
Author:   hofman
Date:     2007-11-22 11:00:45 -0800 (Thu, 22 Nov 2007)

Log Message:
-----------
Add a quicklook plugin project for PDF bundles. Add a target for Skim including 
the plugin. Of course completely untested.

Modified Paths:
--------------
    trunk/Skim.xcodeproj/project.pbxproj

Added Paths:
-----------
    trunk/QuickLook-Skim/
    trunk/QuickLook-Skim/English.lproj/
    trunk/QuickLook-Skim/English.lproj/InfoPlist.strings
    trunk/QuickLook-Skim/GeneratePreviewForURL.m
    trunk/QuickLook-Skim/GenerateThumbnailForURL.m
    trunk/QuickLook-Skim/Info.plist
    trunk/QuickLook-Skim/QuickLook-Skim.xcodeproj/
    trunk/QuickLook-Skim/QuickLook-Skim.xcodeproj/project.pbxproj
    trunk/QuickLook-Skim/main.c

Added: trunk/QuickLook-Skim/English.lproj/InfoPlist.strings
===================================================================
(Binary files differ)


Property changes on: trunk/QuickLook-Skim/English.lproj/InfoPlist.strings
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: trunk/QuickLook-Skim/GeneratePreviewForURL.m
===================================================================
--- trunk/QuickLook-Skim/GeneratePreviewForURL.m                                
(rev 0)
+++ trunk/QuickLook-Skim/GeneratePreviewForURL.m        2007-11-22 19:00:45 UTC 
(rev 3234)
@@ -0,0 +1,84 @@
+/*
+ This software is Copyright (c) 2007
+ Christiaan Hofman. All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 
+ - Neither the name of Christiaan Hofman nor the names of any
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <Foundation/Foundation.h>
+#include <CoreFoundation/CoreFoundation.h>
+#include <CoreServices/CoreServices.h>
+#include <QuickLook/QuickLook.h>
+#import <Foundation/Foundation.h>
+
+/* 
-----------------------------------------------------------------------------
+   Generate a preview for file
+
+   This function's job is to create preview for designated file
+   
----------------------------------------------------------------------------- */
+
+OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef 
preview, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options)
+{
+    NSAutoreleasePool *pool = [NSAutoreleasePool new];
+    
+    OSStatus err = noErr;
+    
+    if (UTTypeEqual(CFSTR("net.sourceforge.skim-app.pdfd"), contentTypeUTI)) {
+        
+        NSString *filePath = [(NSURL *)url path];
+        NSArray *files = [[NSFileManager defaultManager] 
subpathsAtPath:filePath];
+        NSString *fileName = [[[path stringByDeletingLastPathComponent] 
stringByDeletingPathExtension] stringByAppendingPathExtension:@"pdf"];
+        NSString *pdfFile = nil;
+        
+        if ([subfiles containsObject:fileName]) {
+            pdfFile = fileName;
+        } else {
+            unsigned int index = [[subfiles 
valueForKeyPath:@"pathExtension.lowercaseString"] indexOfObject:@"pdf"];
+            if (index != NSNotFound)
+                pdfFile = [subfiles objectAtIndex:index];
+        }
+        pdfFile = pdfFile ? [filePath stringByAppendingPathComponent:pdfFile] 
: nil;
+        NSData *data = pdfFile ? [NSData dataWithContentsOfFile:pdfFile] : nil;
+        if (data) {
+            QLPreviewRequestSetDataRepresentation(preview, (CFDataRef)data, 
kUTTypePDF, (CFDictionaryRef)properties);
+        } else {
+            err = 2;
+        }
+        
+    }
+    
+    [pool release];
+    
+    return err;
+}
+
+void CancelPreviewGeneration(void* thisInterface, QLPreviewRequestRef preview)
+{
+    // implement only if supported
+}

Added: trunk/QuickLook-Skim/GenerateThumbnailForURL.m
===================================================================
--- trunk/QuickLook-Skim/GenerateThumbnailForURL.m                              
(rev 0)
+++ trunk/QuickLook-Skim/GenerateThumbnailForURL.m      2007-11-22 19:00:45 UTC 
(rev 3234)
@@ -0,0 +1,116 @@
+/*
+ This software is Copyright (c) 2007
+ Christiaan Hofman. All rights reserved.
+ 
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ 
+ - Neither the name of Christiaan Hofman nor the names of any
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+ 
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#import <AppKit/AppKit.h>
+#include <CoreFoundation/CoreFoundation.h>
+#include <CoreServices/CoreServices.h>
+#include <QuickLook/QuickLook.h>
+#import <Foundation/Foundation.h>
+
+/* 
-----------------------------------------------------------------------------
+    Generate a thumbnail for file
+
+   This function's job is to create thumbnail for designated file as fast as 
possible
+   
----------------------------------------------------------------------------- */
+
+OSStatus GenerateThumbnailForURL(void *thisInterface, QLThumbnailRequestRef 
thumbnail, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options, 
CGSize maxSize)
+{
+    NSAutoreleasePool *pool = [NSAutoreleasePool new];
+    
+    
+    // return file icons for tiny sizes; this doesn't seem to be used, though; 
Finder asks for 108 x 107 icons when I have my desktop icon size set to 48 x 48
+    if (maxSize.height > 32) {
+        
+        if (UTTypeEqual(CFSTR("net.sourceforge.skim-app.pdfd"), 
contentTypeUTI)) {
+            
+            NSString *filePath = [(NSURL *)url path];
+            NSArray *files = [[NSFileManager defaultManager] 
subpathsAtPath:filePath];
+            NSString *fileName = [[[path stringByDeletingLastPathComponent] 
stringByDeletingPathExtension] stringByAppendingPathExtension:@"pdf"];
+            NSString *pdfFile = nil;
+            
+            if ([subfiles containsObject:fileName]) {
+                pdfFile = fileName;
+            } else {
+                unsigned int index = [[subfiles 
valueForKeyPath:@"pathExtension.lowercaseString"] indexOfObject:@"pdf"];
+                if (index != NSNotFound)
+                    pdfFile = [subfiles objectAtIndex:index];
+            }
+            if (pdfFile) {
+                pdfFile = [filePath stringByAppendingPathComponent:pdfFile];
+                CGImageRef image = QLThumbnailImageCreate(kCFAllocatorDefault, 
(CFURLRef)[NSURL fileURLWithPath:pdfFile], maxSize, options);
+                if (image != NULL) {
+                    CFDictionaryRef properties = CFDictionaryCreate(NULL, 
NULL, NULL, 0, NULL, NULL);
+                    QLThumbnailRequestSetImage(thumbnail, image, properties);
+                    CGImageRelease(image);
+                    CFRelease(properties);
+                } else {
+                    err = 2;
+                }
+            } else {
+                err = 2;
+            }
+            
+        }
+    }
+    /* fallback case: draw the file icon using Icon Services */
+    
+    FSRef fileRef;
+    OSStatus err;
+    if (CFURLGetFSRef(url, &fileRef))
+        err = noErr;
+    else
+        err = fnfErr;
+    
+    IconRef iconRef;
+    CGRect rect = CGRectZero;
+    CGFloat side = MIN(maxSize.width, maxSize.height);
+    rect.size.width = side;
+    rect.size.height = side;
+    if (noErr == err)
+        err = GetIconRefFromFileInfo(&fileRef, 0, NULL, kFSCatInfoNone, NULL, 
kIconServicesNormalUsageFlag, &iconRef, NULL);
+    if (noErr == err) {
+        CGContextRef ctxt = QLThumbnailRequestCreateContext(thumbnail, 
rect.size, TRUE, NULL);
+        err = PlotIconRefInContext(ctxt, &rect, kAlignAbsoluteCenter, 
kTransformNone, NULL, kPlotIconRefNormalFlags, iconRef);
+        CGContextRelease(ctxt);
+        ReleaseIconRef(iconRef);
+    }
+    
+    [pool release];
+    
+    return noErr;
+}
+
+void CancelThumbnailGeneration(void* thisInterface, QLThumbnailRequestRef 
thumbnail)
+{
+    // implement only if supported
+}

Added: trunk/QuickLook-Skim/Info.plist
===================================================================
--- trunk/QuickLook-Skim/Info.plist                             (rev 0)
+++ trunk/QuickLook-Skim/Info.plist     2007-11-22 19:00:45 UTC (rev 3234)
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
+<plist version="1.0">
+<dict>
+       <key>CFBundleDevelopmentRegion</key>
+       <string>English</string>
+       <key>CFBundleDocumentTypes</key>
+       <array>
+               <dict>
+                       <key>CFBundleTypeRole</key>
+                       <string>QLGenerator</string>
+                       <key>LSItemContentTypes</key>
+                       <array>
+                               <string>net.sourceforge.skim-app.pdfd</string>
+                       </array>
+               </dict>
+       </array>
+       <key>CFBundleExecutable</key>
+       <string>${EXECUTABLE_NAME}</string>
+       <key>CFBundleName</key>
+       <string>${PRODUCT_NAME}</string>
+       <key>CFBundleIconFile</key>
+       <string></string>
+       <key>CFBundleIdentifier</key>
+        <string>net.sourceforge.skim-app.quicklookgenerator</string>
+       <key>CFBundleInfoDictionaryVersion</key>
+       <string>6.0</string>
+       <key>CFBundleVersion</key>
+       <string>17</string>
+    <key>CFBundleShortVersionString</key>
+    <string>1.0RC2</string>
+       <key>CFPlugInDynamicRegisterFunction</key>
+       <string></string>
+       <key>CFPlugInDynamicRegistration</key>
+       <string>NO</string>
+       <key>CFPlugInFactories</key>
+       <dict>
+               <key>162514CE-9926-11DC-8314-0800200C9A66</key>
+               <string>QuickLookGeneratorPluginFactory</string>
+       </dict>
+       <key>CFPlugInTypes</key>
+       <dict>
+               <key>5E2D9680-5022-40FA-B806-43349622E5B9</key>
+               <array>
+                       <string>162514CE-9926-11DC-8314-0800200C9A66</string>
+               </array>
+       </dict>
+       <key>CFPlugInUnloadFunction</key>
+       <string></string>
+    <!-- Change following property to <true/> if the generators supports
+         multiple concurrent requests -->
+    <key>QLSupportsConcurrentRequests</key>
+    <true/>
+    <!-- Change following property to <true/> if the generators needs
+         to be run on main thread -->
+    <key>QLNeedsToBeRunInMainThread</key>
+    <false/>
+    <key>QLThumbnailMinimumSize</key>
+    <real>32</real>
+</dict>
+</plist>

Added: trunk/QuickLook-Skim/QuickLook-Skim.xcodeproj/project.pbxproj
===================================================================
--- trunk/QuickLook-Skim/QuickLook-Skim.xcodeproj/project.pbxproj               
                (rev 0)
+++ trunk/QuickLook-Skim/QuickLook-Skim.xcodeproj/project.pbxproj       
2007-11-22 19:00:45 UTC (rev 3234)
@@ -0,0 +1,282 @@
+// !$*UTF8*$!
+{
+       archiveVersion = 1;
+       classes = {
+       };
+       objectVersion = 42;
+       objects = {
+
+/* Begin PBXBuildFile section */
+               2C05A19C06CAA52B00D84F6F /* GeneratePreviewForURL.m in Sources 
*/ = {isa = PBXBuildFile; fileRef = 2C05A19B06CAA52B00D84F6F /* 
GeneratePreviewForURL.m */; };
+               61E3BCFB0870B4F2002186A0 /* GenerateThumbnailForURL.m in 
Sources */ = {isa = PBXBuildFile; fileRef = 61E3BCFA0870B4F2002186A0 /* 
GenerateThumbnailForURL.m */; };
+               8D576312048677EA00EA77CD /* main.c in Sources */ = {isa = 
PBXBuildFile; fileRef = 08FB77B6FE84183AC02AAC07 /* main.c */; settings = 
{ATTRIBUTES = (); }; };
+               8D576314048677EA00EA77CD /* CoreFoundation.framework in 
Frameworks */ = {isa = PBXBuildFile; fileRef = 0AA1909FFE8422F4C02AAC07 /* 
CoreFoundation.framework */; };
+               8D5B49A804867FD3000E48DA /* InfoPlist.strings in Resources */ = 
{isa = PBXBuildFile; fileRef = 8D5B49A704867FD3000E48DA /* InfoPlist.strings 
*/; };
+               C86B05270671AA6E00DD9006 /* CoreServices.framework in 
Frameworks */ = {isa = PBXBuildFile; fileRef = C86B05260671AA6E00DD9006 /* 
CoreServices.framework */; };
+               F28CFBFD0A3EC0AF000ABFF5 /* ApplicationServices.framework in 
Frameworks */ = {isa = PBXBuildFile; fileRef = F28CFBFC0A3EC0AF000ABFF5 /* 
ApplicationServices.framework */; };
+               F28CFC030A3EC0C6000ABFF5 /* QuickLook.framework in Frameworks 
*/ = {isa = PBXBuildFile; fileRef = F28CFC020A3EC0C6000ABFF5 /* 
QuickLook.framework */; };
+               F95147490B5B4672002F5D6B /* Cocoa.framework in Frameworks */ = 
{isa = PBXBuildFile; fileRef = F95147480B5B4672002F5D6B /* Cocoa.framework */; 
};
+               F9DCFC0A0CA0E30E00A07543 /* QuartzCore.framework in Frameworks 
*/ = {isa = PBXBuildFile; fileRef = F9DCFC090CA0E30E00A07543 /* 
QuartzCore.framework */; };
+/* End PBXBuildFile 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>"; };
+               0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */ = {isa 
= PBXFileReference; lastKnownFileType = wrapper.framework; name = 
CoreFoundation.framework; path = 
/System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; 
};
+               2C05A19B06CAA52B00D84F6F /* GeneratePreviewForURL.m */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path 
= GeneratePreviewForURL.m; sourceTree = "<group>"; };
+               61E3BCFA0870B4F2002186A0 /* GenerateThumbnailForURL.m */ = {isa 
= PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; 
path = GenerateThumbnailForURL.m; sourceTree = "<group>"; };
+               8D576316048677EA00EA77CD /* Skim.qlgenerator */ = {isa = 
PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path 
= Skim.qlgenerator; sourceTree = BUILT_PRODUCTS_DIR; };
+               8D576317048677EA00EA77CD /* Info.plist */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = 
Info.plist; sourceTree = "<group>"; };
+               C86B05260671AA6E00DD9006 /* CoreServices.framework */ = {isa = 
PBXFileReference; lastKnownFileType = wrapper.framework; name = 
CoreServices.framework; path = 
/System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
+               F28CFBFC0A3EC0AF000ABFF5 /* ApplicationServices.framework */ = 
{isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = 
ApplicationServices.framework; path = 
/System/Library/Frameworks/ApplicationServices.framework; sourceTree = 
"<absolute>"; };
+               F28CFC020A3EC0C6000ABFF5 /* QuickLook.framework */ = {isa = 
PBXFileReference; lastKnownFileType = wrapper.framework; name = 
QuickLook.framework; path = /System/Library/Frameworks/QuickLook.framework; 
sourceTree = "<absolute>"; };
+               F95147480B5B4672002F5D6B /* Cocoa.framework */ = {isa = 
PBXFileReference; lastKnownFileType = wrapper.framework; name = 
Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree 
= "<absolute>"; };
+               F9DCFC090CA0E30E00A07543 /* QuartzCore.framework */ = {isa = 
PBXFileReference; lastKnownFileType = wrapper.framework; name = 
QuartzCore.framework; path = /System/Library/Frameworks/QuartzCore.framework; 
sourceTree = "<absolute>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+               8D576313048677EA00EA77CD /* Frameworks */ = {
+                       isa = PBXFrameworksBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               8D576314048677EA00EA77CD /* 
CoreFoundation.framework in Frameworks */,
+                               C86B05270671AA6E00DD9006 /* 
CoreServices.framework in Frameworks */,
+                               F28CFBFD0A3EC0AF000ABFF5 /* 
ApplicationServices.framework in Frameworks */,
+                               F28CFC030A3EC0C6000ABFF5 /* QuickLook.framework 
in Frameworks */,
+                               F95147490B5B4672002F5D6B /* Cocoa.framework in 
Frameworks */,
+                               F9DCFC0A0CA0E30E00A07543 /* 
QuartzCore.framework in Frameworks */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+               089C166AFE841209C02AAC07 /* QuickLookSkim */ = {
+                       isa = PBXGroup;
+                       children = (
+                               08FB77AFFE84173DC02AAC07 /* Source */,
+                               089C167CFE841241C02AAC07 /* Resources */,
+                               089C1671FE841209C02AAC07 /* External Frameworks 
and Libraries */,
+                               19C28FB6FE9D52B211CA2CBB /* Products */,
+                       );
+                       name = QuickLookSkim;
+                       sourceTree = "<group>";
+               };
+               089C1671FE841209C02AAC07 /* External Frameworks and Libraries 
*/ = {
+                       isa = PBXGroup;
+                       children = (
+                               F9DCFC090CA0E30E00A07543 /* 
QuartzCore.framework */,
+                               F95147480B5B4672002F5D6B /* Cocoa.framework */,
+                               F28CFC020A3EC0C6000ABFF5 /* QuickLook.framework 
*/,
+                               F28CFBFC0A3EC0AF000ABFF5 /* 
ApplicationServices.framework */,
+                               C86B05260671AA6E00DD9006 /* 
CoreServices.framework */,
+                               0AA1909FFE8422F4C02AAC07 /* 
CoreFoundation.framework */,
+                       );
+                       name = "External Frameworks and Libraries";
+                       sourceTree = "<group>";
+               };
+               089C167CFE841241C02AAC07 /* Resources */ = {
+                       isa = PBXGroup;
+                       children = (
+                               8D576317048677EA00EA77CD /* Info.plist */,
+                               8D5B49A704867FD3000E48DA /* InfoPlist.strings 
*/,
+                       );
+                       name = Resources;
+                       sourceTree = "<group>";
+               };
+               08FB77AFFE84173DC02AAC07 /* Source */ = {
+                       isa = PBXGroup;
+                       children = (
+                               61E3BCFA0870B4F2002186A0 /* 
GenerateThumbnailForURL.m */,
+                               2C05A19B06CAA52B00D84F6F /* 
GeneratePreviewForURL.m */,
+                               08FB77B6FE84183AC02AAC07 /* main.c */,
+                       );
+                       name = Source;
+                       sourceTree = "<group>";
+               };
+               19C28FB6FE9D52B211CA2CBB /* Products */ = {
+                       isa = PBXGroup;
+                       children = (
+                               8D576316048677EA00EA77CD /* Skim.qlgenerator */,
+                       );
+                       name = Products;
+                       sourceTree = "<group>";
+               };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+               8D57630E048677EA00EA77CD /* Headers */ = {
+                       isa = PBXHeadersBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+               8D57630D048677EA00EA77CD /* Skim */ = {
+                       isa = PBXNativeTarget;
+                       buildConfigurationList = 2CA3261E0896AD4900168862 /* 
Build configuration list for PBXNativeTarget "Skim" */;
+                       buildPhases = (
+                               8D57630E048677EA00EA77CD /* Headers */,
+                               8D57630F048677EA00EA77CD /* Resources */,
+                               8D576311048677EA00EA77CD /* Sources */,
+                               8D576313048677EA00EA77CD /* Frameworks */,
+                               8D576315048677EA00EA77CD /* Rez */,
+                       );
+                       buildRules = (
+                       );
+                       dependencies = (
+                       );
+                       name = Skim;
+                       productInstallPath = /Library/QuickLook;
+                       productName = QuickLookSkim;
+                       productReference = 8D576316048677EA00EA77CD /* 
Skim.qlgenerator */;
+                       productType = "com.apple.product-type.bundle";
+               };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+               089C1669FE841209C02AAC07 /* Project object */ = {
+                       isa = PBXProject;
+                       buildConfigurationList = 2CA326220896AD4900168862 /* 
Build configuration list for PBXProject "QuickLook-Skim" */;
+                       compatibilityVersion = "Xcode 3.0";
+                       hasScannedForEncodings = 1;
+                       mainGroup = 089C166AFE841209C02AAC07 /* QuickLookSkim 
*/;
+                       projectDirPath = "";
+                       projectRoot = "";
+                       targets = (
+                               8D57630D048677EA00EA77CD /* Skim */,
+                       );
+               };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+               8D57630F048677EA00EA77CD /* Resources */ = {
+                       isa = PBXResourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               8D5B49A804867FD3000E48DA /* InfoPlist.strings 
in Resources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXRezBuildPhase section */
+               8D576315048677EA00EA77CD /* Rez */ = {
+                       isa = PBXRezBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXRezBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+               8D576311048677EA00EA77CD /* Sources */ = {
+                       isa = PBXSourcesBuildPhase;
+                       buildActionMask = 2147483647;
+                       files = (
+                               8D576312048677EA00EA77CD /* main.c in Sources 
*/,
+                               2C05A19C06CAA52B00D84F6F /* 
GeneratePreviewForURL.m in Sources */,
+                               61E3BCFB0870B4F2002186A0 /* 
GenerateThumbnailForURL.m in Sources */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin PBXVariantGroup section */
+               8D5B49A704867FD3000E48DA /* InfoPlist.strings */ = {
+                       isa = PBXVariantGroup;
+                       children = (
+                               089C167EFE841241C02AAC07 /* English */,
+                       );
+                       name = InfoPlist.strings;
+                       sourceTree = "<group>";
+               };
+/* End PBXVariantGroup section */
+
+/* Begin XCBuildConfiguration section */
+               2CA3261F0896AD4900168862 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               COPY_PHASE_STRIP = NO;
+                               GCC_DYNAMIC_NO_PIC = NO;
+                               GCC_ENABLE_FIX_AND_CONTINUE = YES;
+                               GCC_MODEL_TUNING = G5;
+                               GCC_OPTIMIZATION_LEVEL = 0;
+                               GCC_PRECOMPILE_PREFIX_HEADER = NO;
+                               INFOPLIST_FILE = Info.plist;
+                               INSTALL_PATH = /Library/QuickLook;
+                               PRODUCT_NAME = Skim;
+                               VALID_ARCHS = "i386 ppc";
+                               WRAPPER_EXTENSION = qlgenerator;
+                               ZERO_LINK = YES;
+                       };
+                       name = Debug;
+               };
+               2CA326200896AD4900168862 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               ARCHS = (
+                                       ppc,
+                                       i386,
+                               );
+                               GCC_DEBUGGING_SYMBOLS = full;
+                               GCC_MODEL_TUNING = G5;
+                               GCC_PRECOMPILE_PREFIX_HEADER = NO;
+                               INFOPLIST_FILE = Info.plist;
+                               INSTALL_PATH = /Library/QuickLook;
+                               PRODUCT_NAME = Skim;
+                               VALID_ARCHS = "i386 ppc";
+                               WRAPPER_EXTENSION = qlgenerator;
+                       };
+                       name = Release;
+               };
+               2CA326230896AD4900168862 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
+                               GCC_WARN_UNUSED_VARIABLE = YES;
+                               PREBINDING = NO;
+                               SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
+                       };
+                       name = Debug;
+               };
+               2CA326240896AD4900168862 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+                               GCC_WARN_ABOUT_RETURN_TYPE = YES;
+                               GCC_WARN_UNUSED_VARIABLE = YES;
+                               PREBINDING = NO;
+                               SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
+                       };
+                       name = Release;
+               };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+               2CA3261E0896AD4900168862 /* Build configuration list for 
PBXNativeTarget "Skim" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               2CA3261F0896AD4900168862 /* Debug */,
+                               2CA326200896AD4900168862 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+               2CA326220896AD4900168862 /* Build configuration list for 
PBXProject "QuickLook-Skim" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               2CA326230896AD4900168862 /* Debug */,
+                               2CA326240896AD4900168862 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
+/* End XCConfigurationList section */
+       };
+       rootObject = 089C1669FE841209C02AAC07 /* Project object */;
+}

Added: trunk/QuickLook-Skim/main.c
===================================================================
--- trunk/QuickLook-Skim/main.c                         (rev 0)
+++ trunk/QuickLook-Skim/main.c 2007-11-22 19:00:45 UTC (rev 3234)
@@ -0,0 +1,221 @@
+//==============================================================================
+//
+//     DO NO MODIFY THE CONTENT OF THIS FILE
+//
+//     This file contains the generic CFPlug-in code necessary for your 
generator
+//     To complete your generator implement the function in 
GenerateThumbnailForURL/GeneratePreviewForURL.c
+//
+//==============================================================================
+
+
+
+
+
+
+#include <CoreFoundation/CoreFoundation.h>
+#include <CoreFoundation/CFPlugInCOM.h>
+#include <CoreServices/CoreServices.h>
+#include <QuickLook/QuickLook.h>
+
+// 
-----------------------------------------------------------------------------
+//     constants
+// 
-----------------------------------------------------------------------------
+
+// Don't modify this line
+#define PLUGIN_ID "162514CE-9926-11DC-8314-0800200C9A66"
+
+//
+// Below is the generic glue code for all plug-ins.
+//
+// You should not have to modify this code aside from changing
+// names if you decide to change the names defined in the Info.plist
+//
+
+
+// 
-----------------------------------------------------------------------------
+//     typedefs
+// 
-----------------------------------------------------------------------------
+
+// The thumbnail generation function to be implemented in 
GenerateThumbnailForURL.c
+OSStatus GenerateThumbnailForURL(void *thisInterface, QLThumbnailRequestRef 
thumbnail, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options, 
CGSize maxSize);
+void CancelThumbnailGeneration(void* thisInterface, QLThumbnailRequestRef 
thumbnail);
+
+// The preview generation function to be implemented in GeneratePreviewForURL.c
+OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef 
preview, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options);
+void CancelPreviewGeneration(void *thisInterface, QLPreviewRequestRef preview);
+
+// The layout for an instance of QuickLookGeneratorPlugIn
+typedef struct __QuickLookGeneratorPluginType
+{
+    void        *conduitInterface;
+    CFUUIDRef    factoryID;
+    UInt32       refCount;
+} QuickLookGeneratorPluginType;
+
+// 
-----------------------------------------------------------------------------
+//     prototypes
+// 
-----------------------------------------------------------------------------
+//     Forward declaration for the IUnknown implementation.
+//
+
+QuickLookGeneratorPluginType  *AllocQuickLookGeneratorPluginType(CFUUIDRef 
inFactoryID);
+void                         
DeallocQuickLookGeneratorPluginType(QuickLookGeneratorPluginType *thisInstance);
+HRESULT                      QuickLookGeneratorQueryInterface(void 
*thisInstance,REFIID iid,LPVOID *ppv);
+void                        *QuickLookGeneratorPluginFactory(CFAllocatorRef 
allocator,CFUUIDRef typeID);
+ULONG                        QuickLookGeneratorPluginAddRef(void 
*thisInstance);
+ULONG                        QuickLookGeneratorPluginRelease(void 
*thisInstance);
+
+// 
-----------------------------------------------------------------------------
+//     myInterfaceFtbl definition
+// 
-----------------------------------------------------------------------------
+//     The QLGeneratorInterfaceStruct function table.
+//
+static QLGeneratorInterfaceStruct myInterfaceFtbl = {
+    NULL,
+    QuickLookGeneratorQueryInterface,
+    QuickLookGeneratorPluginAddRef,
+    QuickLookGeneratorPluginRelease,
+    NULL,
+    NULL,
+    NULL,
+    NULL
+};
+
+
+// 
-----------------------------------------------------------------------------
+//     AllocQuickLookGeneratorPluginType
+// 
-----------------------------------------------------------------------------
+//     Utility function that allocates a new instance.
+//      You can do some initial setup for the generator here if you wish
+//      like allocating globals etc...
+//
+QuickLookGeneratorPluginType *AllocQuickLookGeneratorPluginType(CFUUIDRef 
inFactoryID)
+{
+    QuickLookGeneratorPluginType *theNewInstance;
+
+    theNewInstance = (QuickLookGeneratorPluginType 
*)malloc(sizeof(QuickLookGeneratorPluginType));
+    memset(theNewInstance,0,sizeof(QuickLookGeneratorPluginType));
+
+        /* Point to the function table Malloc enough to store the stuff and 
copy the filler from myInterfaceFtbl over */
+    theNewInstance->conduitInterface = 
malloc(sizeof(QLGeneratorInterfaceStruct));
+    
memcpy(theNewInstance->conduitInterface,&myInterfaceFtbl,sizeof(QLGeneratorInterfaceStruct));
+
+        /*  Retain and keep an open instance refcount for each factory. */
+    theNewInstance->factoryID = CFRetain(inFactoryID);
+    CFPlugInAddInstanceForFactory(inFactoryID);
+
+        /* This function returns the IUnknown interface so set the refCount to 
one. */
+    theNewInstance->refCount = 1;
+    return theNewInstance;
+}
+
+// 
-----------------------------------------------------------------------------
+//     DeallocQuickLookGeneratorPluginType
+// 
-----------------------------------------------------------------------------
+//     Utility function that deallocates the instance when
+//     the refCount goes to zero.
+//      In the current implementation generator interfaces are never 
deallocated
+//      but implement this as this might change in the future
+//
+void DeallocQuickLookGeneratorPluginType(QuickLookGeneratorPluginType 
*thisInstance)
+{
+    CFUUIDRef theFactoryID;
+    
+    extern void BDSKSpotlightIconControllerFreeStatics();
+    BDSKSpotlightIconControllerFreeStatics();
+    
+    theFactoryID = thisInstance->factoryID;
+        /* Free the conduitInterface table up */
+    free(thisInstance->conduitInterface);
+
+        /* Free the instance structure */
+    free(thisInstance);
+    if (theFactoryID){
+        CFPlugInRemoveInstanceForFactory(theFactoryID);
+        CFRelease(theFactoryID);
+    }
+}
+
+// 
-----------------------------------------------------------------------------
+//     QuickLookGeneratorQueryInterface
+// 
-----------------------------------------------------------------------------
+//     Implementation of the IUnknown QueryInterface function.
+//
+HRESULT QuickLookGeneratorQueryInterface(void *thisInstance,REFIID iid,LPVOID 
*ppv)
+{
+    CFUUIDRef interfaceID;
+
+    interfaceID = CFUUIDCreateFromUUIDBytes(kCFAllocatorDefault,iid);
+
+    if (CFEqual(interfaceID,kQLGeneratorCallbacksInterfaceID)){
+            /* If the Right interface was requested, bump the ref count,
+             * set the ppv parameter equal to the instance, and
+             * return good status.
+             */
+        ((QLGeneratorInterfaceStruct *)((QuickLookGeneratorPluginType 
*)thisInstance)->conduitInterface)->GenerateThumbnailForURL = 
GenerateThumbnailForURL;
+        ((QLGeneratorInterfaceStruct *)((QuickLookGeneratorPluginType 
*)thisInstance)->conduitInterface)->CancelThumbnailGeneration = 
CancelThumbnailGeneration;
+        ((QLGeneratorInterfaceStruct *)((QuickLookGeneratorPluginType 
*)thisInstance)->conduitInterface)->GeneratePreviewForURL = 
GeneratePreviewForURL;
+        ((QLGeneratorInterfaceStruct *)((QuickLookGeneratorPluginType 
*)thisInstance)->conduitInterface)->CancelPreviewGeneration = 
CancelPreviewGeneration;
+        ((QLGeneratorInterfaceStruct 
*)((QuickLookGeneratorPluginType*)thisInstance)->conduitInterface)->AddRef(thisInstance);
+        *ppv = thisInstance;
+        CFRelease(interfaceID);
+        return S_OK;
+    }else{
+        /* Requested interface unknown, bail with error. */
+        *ppv = NULL;
+        CFRelease(interfaceID);
+        return E_NOINTERFACE;
+    }
+}
+
+// 
-----------------------------------------------------------------------------
+// QuickLookGeneratorPluginAddRef
+// 
-----------------------------------------------------------------------------
+//     Implementation of reference counting for this type. Whenever an 
interface
+//     is requested, bump the refCount for the instance. NOTE: returning the
+//     refcount is a convention but is not required so don't rely on it.
+//
+ULONG QuickLookGeneratorPluginAddRef(void *thisInstance)
+{
+    ((QuickLookGeneratorPluginType *)thisInstance )->refCount += 1;
+    return ((QuickLookGeneratorPluginType*) thisInstance)->refCount;
+}
+
+// 
-----------------------------------------------------------------------------
+// QuickLookGeneratorPluginRelease
+// 
-----------------------------------------------------------------------------
+//     When an interface is released, decrement the refCount.
+//     If the refCount goes to zero, deallocate the instance.
+//
+ULONG QuickLookGeneratorPluginRelease(void *thisInstance)
+{
+    ((QuickLookGeneratorPluginType*)thisInstance)->refCount -= 1;
+    if (((QuickLookGeneratorPluginType*)thisInstance)->refCount == 0){
+        
DeallocQuickLookGeneratorPluginType((QuickLookGeneratorPluginType*)thisInstance 
);
+        return 0;
+    }else{
+        return ((QuickLookGeneratorPluginType*) thisInstance )->refCount;
+    }
+}
+
+// 
-----------------------------------------------------------------------------
+//  QuickLookGeneratorPluginFactory
+// 
-----------------------------------------------------------------------------
+void *QuickLookGeneratorPluginFactory(CFAllocatorRef allocator,CFUUIDRef 
typeID)
+{
+    QuickLookGeneratorPluginType *result;
+    CFUUIDRef                 uuid;
+
+        /* If correct type is being requested, allocate an
+         * instance of kQLGeneratorTypeID and return the IUnknown interface.
+         */
+    if (CFEqual(typeID,kQLGeneratorTypeID)){
+        uuid = CFUUIDCreateFromString(kCFAllocatorDefault,CFSTR(PLUGIN_ID));
+        result = AllocQuickLookGeneratorPluginType(uuid);
+        CFRelease(uuid);
+        return result;
+    }
+        /* If the requested type is incorrect, return NULL. */
+    return NULL;
+}
+

Modified: trunk/Skim.xcodeproj/project.pbxproj
===================================================================
--- trunk/Skim.xcodeproj/project.pbxproj        2007-11-22 17:55:54 UTC (rev 
3233)
+++ trunk/Skim.xcodeproj/project.pbxproj        2007-11-22 19:00:45 UTC (rev 
3234)
@@ -19,6 +19,19 @@
                        name = DiskImage;
                        productName = DiskImage;
                };
+               CEC7B4F70CF60834008CCD63 /* Skim+QuickLook */ = {
+                       isa = PBXAggregateTarget;
+                       buildConfigurationList = CEC7B5090CF608CC008CCD63 /* 
Build configuration list for PBXAggregateTarget "Skim+QuickLook" */;
+                       buildPhases = (
+                               CEC7B5000CF6086D008CCD63 /* CopyFiles */,
+                       );
+                       dependencies = (
+                               CEC7B4F90CF6083B008CCD63 /* PBXTargetDependency 
*/,
+                               CEC7B4FB0CF60841008CCD63 /* PBXTargetDependency 
*/,
+                       );
+                       name = "Skim+QuickLook";
+                       productName = "Skim+QuickLook";
+               };
 /* End PBXAggregateTarget section */
 
 /* Begin PBXBuildFile section */
@@ -196,6 +209,7 @@
                CEC7B3A00CF5F2D2008CCD63 /* KeyspanFrontRowControl.m in Sources 
*/ = {isa = PBXBuildFile; fileRef = CEC7B3940CF5F2D2008CCD63 /* 
KeyspanFrontRowControl.m */; };
                CEC7B3A20CF5F2D2008CCD63 /* MultiClickRemoteBehavior.m in 
Sources */ = {isa = PBXBuildFile; fileRef = CEC7B3960CF5F2D2008CCD63 /* 
MultiClickRemoteBehavior.m */; };
                CEC7B3A40CF5F2D2008CCD63 /* RemoteControlContainer.m in Sources 
*/ = {isa = PBXBuildFile; fileRef = CEC7B3980CF5F2D2008CCD63 /* 
RemoteControlContainer.m */; };
+               CEC7B5040CF608AE008CCD63 /* Skim.qlgenerator in CopyFiles */ = 
{isa = PBXBuildFile; fileRef = CEC7B4EE0CF607CA008CCD63 /* Skim.qlgenerator */; 
};
                CECDC4FF0C5966A80026AAEC /* NSImage_SKExtensions.m in Sources 
*/ = {isa = PBXBuildFile; fileRef = CECDC4FD0C5966A80026AAEC /* 
NSImage_SKExtensions.m */; };
                CECDD2990C5B68580026AAEC /* SKCenteredTextFieldCell.m in 
Sources */ = {isa = PBXBuildFile; fileRef = CECDD2970C5B68580026AAEC /* 
SKCenteredTextFieldCell.m */; };
                CECDDBAE0C5BB9600026AAEC /* SKFindTableView.m in Sources */ = 
{isa = PBXBuildFile; fileRef = CECDDBAC0C5BB95F0026AAEC /* SKFindTableView.m 
*/; };
@@ -268,6 +282,27 @@
                        remoteGlobalIDString = 8D15AC270486D014006FF6A4;
                        remoteInfo = Skim;
                };
+               CEC7B4ED0CF607CA008CCD63 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = CEC7B4E60CF607CA008CCD63 /* 
QuickLook-Skim.xcodeproj */;
+                       proxyType = 2;
+                       remoteGlobalIDString = 8D576316048677EA00EA77CD /* 
Skim.qlgenerator */;
+                       remoteInfo = Skim;
+               };
+               CEC7B4F80CF6083B008CCD63 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = 2A37F4A9FDCFA73011CA2CEA /* Project 
object */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 8D15AC270486D014006FF6A4 /* Skim 
*/;
+                       remoteInfo = Skim;
+               };
+               CEC7B4FA0CF60841008CCD63 /* PBXContainerItemProxy */ = {
+                       isa = PBXContainerItemProxy;
+                       containerPortal = CEC7B4E60CF607CA008CCD63 /* 
QuickLook-Skim.xcodeproj */;
+                       proxyType = 1;
+                       remoteGlobalIDString = 8D57630D048677EA00EA77CD /* Skim 
*/;
+                       remoteInfo = Skim;
+               };
                CEFD68680C01D3BB0027B933 /* PBXContainerItemProxy */ = {
                        isa = PBXContainerItemProxy;
                        containerPortal = CEFD68610C01D3BB0027B933 /* 
SkimImporter.xcodeproj */;
@@ -285,6 +320,16 @@
 /* End PBXContainerItemProxy section */
 
 /* Begin PBXCopyFilesBuildPhase section */
+               CEC7B5000CF6086D008CCD63 /* CopyFiles */ = {
+                       isa = PBXCopyFilesBuildPhase;
+                       buildActionMask = 2147483647;
+                       dstPath = Skim.app/Contents/Library/QuickLook;
+                       dstSubfolderSpec = 16;
+                       files = (
+                               CEC7B5040CF608AE008CCD63 /* Skim.qlgenerator in 
CopyFiles */,
+                       );
+                       runOnlyForDeploymentPostprocessing = 0;
+               };
                CEE112760BCBF52500BF2D3E /* CopyFiles */ = {
                        isa = PBXCopyFilesBuildPhase;
                        buildActionMask = 2147483647;
@@ -706,6 +751,7 @@
                CEC7B3960CF5F2D2008CCD63 /* MultiClickRemoteBehavior.m */ = 
{isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = 
sourcecode.c.objc; name = MultiClickRemoteBehavior.m; path = 
vendorsrc/martinkahr/RemoteControlWrapper/MultiClickRemoteBehavior.m; 
sourceTree = "<group>"; };
                CEC7B3970CF5F2D2008CCD63 /* RemoteControlContainer.h */ = {isa 
= PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name 
= RemoteControlContainer.h; path = 
vendorsrc/martinkahr/RemoteControlWrapper/RemoteControlContainer.h; sourceTree 
= "<group>"; };
                CEC7B3980CF5F2D2008CCD63 /* RemoteControlContainer.m */ = {isa 
= PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; 
name = RemoteControlContainer.m; path = 
vendorsrc/martinkahr/RemoteControlWrapper/RemoteControlContainer.m; sourceTree 
= "<group>"; };
+               CEC7B4E60CF607CA008CCD63 /* QuickLook-Skim.xcodeproj */ = {isa 
= PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = 
"QuickLook-Skim.xcodeproj"; path = "QuickLook-Skim/QuickLook-Skim.xcodeproj"; 
sourceTree = "<group>"; };
                CECD97200C57A3230026AAEC /* French */ = {isa = 
PBXFileReference; lastKnownFileType = wrapper.nib; name = French; path = 
French.lproj/InfoWindow.nib; sourceTree = "<group>"; };
                CECD97230C57A32F0026AAEC /* French */ = {isa = 
PBXFileReference; lastKnownFileType = wrapper.nib; name = French; path = 
French.lproj/MainMenu.nib; sourceTree = "<group>"; };
                CECD97260C57A3390026AAEC /* French */ = {isa = 
PBXFileReference; lastKnownFileType = wrapper.nib; name = French; path = 
French.lproj/MainWindow.nib; sourceTree = "<group>"; };
@@ -1018,6 +1064,7 @@
                        children = (
                                CEFD68610C01D3BB0027B933 /* 
SkimImporter.xcodeproj */,
                                CE2BD8170BD4127A00A5F4DB /* Sparkle.xcodeproj 
*/,
+                               CEC7B4E60CF607CA008CCD63 /* 
QuickLook-Skim.xcodeproj */,
                        );
                        name = Subprojects;
                        sourceTree = "<group>";
@@ -1268,6 +1315,14 @@
                        name = Images;
                        sourceTree = "<group>";
                };
+               CEC7B4E70CF607CA008CCD63 /* Products */ = {
+                       isa = PBXGroup;
+                       children = (
+                               CEC7B4EE0CF607CA008CCD63 /* Skim.qlgenerator */,
+                       );
+                       name = Products;
+                       sourceTree = "<group>";
+               };
                CEE22EA20BFB8631002B746B /* Shared Support */ = {
                        isa = PBXGroup;
                        children = (
@@ -1365,6 +1420,10 @@
                        projectDirPath = "";
                        projectReferences = (
                                {
+                                       ProductGroup = CEC7B4E70CF607CA008CCD63 
/* Products */;
+                                       ProjectRef = CEC7B4E60CF607CA008CCD63 
/* QuickLook-Skim.xcodeproj */;
+                               },
+                               {
                                        ProductGroup = CEFD68620C01D3BB0027B933 
/* Products */;
                                        ProjectRef = CEFD68610C01D3BB0027B933 
/* SkimImporter.xcodeproj */;
                                },
@@ -1378,6 +1437,7 @@
                                8D15AC270486D014006FF6A4 /* Skim */,
                                CE592C5D0B9239C500C113DF /* DiskImage */,
                                CEF3BF740B99CA2900E12E3D /* skimnotes */,
+                               CEC7B4F70CF60834008CCD63 /* Skim+QuickLook */,
                        );
                };
 /* End PBXProject section */
@@ -1397,6 +1457,13 @@
                        remoteRef = CE2BD8210BD4127A00A5F4DB /* 
PBXContainerItemProxy */;
                        sourceTree = BUILT_PRODUCTS_DIR;
                };
+               CEC7B4EE0CF607CA008CCD63 /* Skim.qlgenerator */ = {
+                       isa = PBXReferenceProxy;
+                       fileType = wrapper.cfbundle;
+                       path = Skim.qlgenerator;
+                       remoteRef = CEC7B4ED0CF607CA008CCD63 /* 
PBXContainerItemProxy */;
+                       sourceTree = BUILT_PRODUCTS_DIR;
+               };
                CEFD68690C01D3BB0027B933 /* SkimImporter.mdimporter */ = {
                        isa = PBXReferenceProxy;
                        fileType = wrapper.cfbundle;
@@ -1758,6 +1825,16 @@
                        target = 8D15AC270486D014006FF6A4 /* Skim */;
                        targetProxy = CE592C610B9239CD00C113DF /* 
PBXContainerItemProxy */;
                };
+               CEC7B4F90CF6083B008CCD63 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       target = 8D15AC270486D014006FF6A4 /* Skim */;
+                       targetProxy = CEC7B4F80CF6083B008CCD63 /* 
PBXContainerItemProxy */;
+               };
+               CEC7B4FB0CF60841008CCD63 /* PBXTargetDependency */ = {
+                       isa = PBXTargetDependency;
+                       name = Skim;
+                       targetProxy = CEC7B4FA0CF60841008CCD63 /* 
PBXContainerItemProxy */;
+               };
                CEFD68710C01D3E50027B933 /* PBXTargetDependency */ = {
                        isa = PBXTargetDependency;
                        name = SkimImporter;
@@ -2236,6 +2313,28 @@
                        };
                        name = Release;
                };
+               CEC7B50A0CF608CC008CCD63 /* Debug */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               COPY_PHASE_STRIP = NO;
+                               GCC_DYNAMIC_NO_PIC = NO;
+                               GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
+                               GCC_OPTIMIZATION_LEVEL = 0;
+                               PRODUCT_NAME = "Skim+QuickLook";
+                       };
+                       name = Debug;
+               };
+               CEC7B50B0CF608CC008CCD63 /* Release */ = {
+                       isa = XCBuildConfiguration;
+                       buildSettings = {
+                               COPY_PHASE_STRIP = YES;
+                               GCC_ENABLE_FIX_AND_CONTINUE = NO;
+                               GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
+                               PRODUCT_NAME = "Skim+QuickLook";
+                               ZERO_LINK = NO;
+                       };
+                       name = Release;
+               };
                CEF3BF7C0B99CA4800E12E3D /* Debug */ = {
                        isa = XCBuildConfiguration;
                        buildSettings = {
@@ -2336,6 +2435,15 @@
                        defaultConfigurationIsVisible = 0;
                        defaultConfigurationName = Release;
                };
+               CEC7B5090CF608CC008CCD63 /* Build configuration list for 
PBXAggregateTarget "Skim+QuickLook" */ = {
+                       isa = XCConfigurationList;
+                       buildConfigurations = (
+                               CEC7B50A0CF608CC008CCD63 /* Debug */,
+                               CEC7B50B0CF608CC008CCD63 /* Release */,
+                       );
+                       defaultConfigurationIsVisible = 0;
+                       defaultConfigurationName = Release;
+               };
                CEF3BF7B0B99CA4800E12E3D /* Build configuration list for 
PBXNativeTarget "skimnotes" */ = {
                        isa = XCConfigurationList;
                        buildConfigurations = (


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: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to