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