aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrowanbeentje <rowan@beent.je>2010-08-04 22:24:30 +0000
committerrowanbeentje <rowan@beent.je>2010-08-04 22:24:30 +0000
commitd20d35aedb551516e1974979e8a0048a0ea81cbf (patch)
tree444f242d8411489960290e60d89b89685a555832
parent71002662ef004b798766906bce9e51ad359e1745 (diff)
downloadsequelpro-d20d35aedb551516e1974979e8a0048a0ea81cbf.tar.gz
sequelpro-d20d35aedb551516e1974979e8a0048a0ea81cbf.tar.bz2
sequelpro-d20d35aedb551516e1974979e8a0048a0ea81cbf.zip
- Add an initial Sequel Pro QuickLook plugin, written by bibiko, as a build dependency
-rw-r--r--Resources/English.lproj/SPQLPluginConnectionTemplate.html54
-rw-r--r--Resources/English.lproj/SPQLPluginContentFiltersTemplate.html35
-rw-r--r--Resources/English.lproj/SPQLPluginQueryFavoritesTemplate.html35
-rw-r--r--Resources/English.lproj/SPQLPluginSQLTemplate.html37
-rw-r--r--Resources/German.lproj/SPQLPluginConnectionTemplate.html54
-rw-r--r--Resources/German.lproj/SPQLPluginContentFiltersTemplate.html35
-rw-r--r--Resources/German.lproj/SPQLPluginQueryFavoritesTemplate.html35
-rw-r--r--Resources/German.lproj/SPQLPluginSQLTemplate.html37
-rw-r--r--Resources/Plists/Sequel Pro QLGenerator-Info.plist62
-rw-r--r--Source/GeneratePreviewForURL.m347
-rw-r--r--Source/GenerateThumbnailForURL.m86
-rw-r--r--Source/main.c218
-rw-r--r--sequel-pro.xcodeproj/project.pbxproj272
13 files changed, 1291 insertions, 16 deletions
diff --git a/Resources/English.lproj/SPQLPluginConnectionTemplate.html b/Resources/English.lproj/SPQLPluginConnectionTemplate.html
new file mode 100644
index 00000000..cfce367f
--- /dev/null
+++ b/Resources/English.lproj/SPQLPluginConnectionTemplate.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<style>
+body {
+ font-family:'Lucida Grande';
+ font-size:10pt;
+ background-color:#222222;
+ color:white;
+}
+</style>
+</head>
+<body>
+<center>
+<table>
+<tr>
+<td valign="right">
+<img width="200%" src="data:image/auto;base64,%@">
+</td>
+<td>
+<center>
+<b style="font-size:12pt">Sequel Pro Connection File</b><br />
+%@ (%@)
+</center><br /><br />
+<table>
+<tr>
+<td align="right">Name: </td><td>%@</td>
+</tr>
+<tr>
+<td align="right">Host: </td><td>%@</td>
+</tr>
+<tr>
+<td align="right">User: </td><td>%@</td>
+</tr>
+<tr>
+<td align="right">Database: </td><td>%@</td>
+</tr>
+<tr>
+<td align="right">Size: </td><td>%@</td>
+</tr>
+<tr>
+<td align="right">Last modified: </td><td>%@</td>
+</tr>
+<tr>
+<td align="right">Auto-connect: </td><td><input type="checkbox" %@ disabled></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</center>
+</body>
+</html>
diff --git a/Resources/English.lproj/SPQLPluginContentFiltersTemplate.html b/Resources/English.lproj/SPQLPluginContentFiltersTemplate.html
new file mode 100644
index 00000000..c9ad6aa7
--- /dev/null
+++ b/Resources/English.lproj/SPQLPluginContentFiltersTemplate.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<style>
+body {
+ font-family:'Lucida Grande';
+ font-size:10pt;
+ background-color:#222222;
+ color:white;
+}
+textarea {
+ background-color:#222222;
+ color:white;
+}
+</style>
+</head>
+<body>
+<center>
+<table>
+<tr>
+<td valign="right">
+<img width="200%" src="data:image/auto;base64,%@">
+</td>
+<td>
+<center>
+<b style="font-size:12pt">Sequel Pro Content Filters File</b><br /><br />
+</center>
+<textarea cols="50" rows="10" readonly>%@</textarea>
+</td>
+</tr>
+</table>
+</center>
+</body>
+</html>
diff --git a/Resources/English.lproj/SPQLPluginQueryFavoritesTemplate.html b/Resources/English.lproj/SPQLPluginQueryFavoritesTemplate.html
new file mode 100644
index 00000000..73f9f816
--- /dev/null
+++ b/Resources/English.lproj/SPQLPluginQueryFavoritesTemplate.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<style>
+body {
+ font-family:'Lucida Grande';
+ font-size:10pt;
+ background-color:#222222;
+ color:white;
+}
+textarea {
+ background-color:#222222;
+ color:white;
+}
+</style>
+</head>
+<body>
+<center>
+<table>
+<tr>
+<td valign="right">
+<img width="200%" src="data:image/auto;base64,%@">
+</td>
+<td>
+<center>
+<b style="font-size:12pt">Sequel Pro Query Favorites File</b><br /><br />
+</center>
+<textarea cols="50" rows="10" readonly>%@</textarea>
+</td>
+</tr>
+</table>
+</center>
+</body>
+</html>
diff --git a/Resources/English.lproj/SPQLPluginSQLTemplate.html b/Resources/English.lproj/SPQLPluginSQLTemplate.html
new file mode 100644
index 00000000..fd016891
--- /dev/null
+++ b/Resources/English.lproj/SPQLPluginSQLTemplate.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<style>
+body {
+ font-family:'Lucida Grande';
+ font-size:10pt;
+ background-color:#222222;
+ color:white;
+}
+textarea {
+ background-color:#222222;
+ color:white;
+ white-space: nowrap;
+}
+</style>
+</head>
+<body>
+<center>
+<table>
+<tr>
+<td valign="right">
+<img width="200%" src="data:image/auto;base64,%@">
+</td>
+<td>
+<center>
+<b style="font-size:12pt">Sequel Pro SQL File</b><br />
+size: %@
+</center><br /><br />
+<textarea cols="50" rows="10" readonly>%@</textarea>
+</td>
+</tr>
+</table>
+</center>
+</body>
+</html>
diff --git a/Resources/German.lproj/SPQLPluginConnectionTemplate.html b/Resources/German.lproj/SPQLPluginConnectionTemplate.html
new file mode 100644
index 00000000..28d5bbb3
--- /dev/null
+++ b/Resources/German.lproj/SPQLPluginConnectionTemplate.html
@@ -0,0 +1,54 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<style>
+body {
+ font-family:'Lucida Grande';
+ font-size:10pt;
+ background-color:#222222;
+ color:white;
+}
+</style>
+</head>
+<body>
+<center>
+<table>
+<tr>
+<td valign="right">
+<img width="200%" src="data:image/auto;base64,%@">
+</td>
+<td>
+<center>
+<b style="font-size:12pt">Sequel Pro Verbindungsdatei</b><br />
+%@ (%@)
+</center><br /><br />
+<table>
+<tr>
+<td align="right">Name: </td><td>%@</td>
+</tr>
+<tr>
+<td align="right">Host: </td><td>%@</td>
+</tr>
+<tr>
+<td align="right">Benutzer: </td><td>%@</td>
+</tr>
+<tr>
+<td align="right">Datenbank: </td><td>%@</td>
+</tr>
+<tr>
+<td align="right">Größe: </td><td>%@</td>
+</tr>
+<tr>
+<td align="right">Zuletzt geändert: </td><td>%@</td>
+</tr>
+<tr>
+<td align="right">Auto-connect: </td><td><input type="checkbox" %@ disabled></td>
+</tr>
+</table>
+</td>
+</tr>
+</table>
+</center>
+</body>
+</html>
diff --git a/Resources/German.lproj/SPQLPluginContentFiltersTemplate.html b/Resources/German.lproj/SPQLPluginContentFiltersTemplate.html
new file mode 100644
index 00000000..34ab2c38
--- /dev/null
+++ b/Resources/German.lproj/SPQLPluginContentFiltersTemplate.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<style>
+body {
+ font-family:'Lucida Grande';
+ font-size:10pt;
+ background-color:#222222;
+ color:white;
+}
+textarea {
+ background-color:#222222;
+ color:white;
+}
+</style>
+</head>
+<body>
+<center>
+<table>
+<tr>
+<td valign="right">
+<img width="200%" src="data:image/auto;base64,%@">
+</td>
+<td>
+<center>
+<b style="font-size:12pt">Sequel Pro Inhaltsfilter-Datei</b><br /><br />
+</center>
+<textarea cols="50" rows="10" readonly>%@</textarea>
+</td>
+</tr>
+</table>
+</center>
+</body>
+</html>
diff --git a/Resources/German.lproj/SPQLPluginQueryFavoritesTemplate.html b/Resources/German.lproj/SPQLPluginQueryFavoritesTemplate.html
new file mode 100644
index 00000000..412d8ecb
--- /dev/null
+++ b/Resources/German.lproj/SPQLPluginQueryFavoritesTemplate.html
@@ -0,0 +1,35 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<style>
+body {
+ font-family:'Lucida Grande';
+ font-size:10pt;
+ background-color:#222222;
+ color:white;
+}
+textarea {
+ background-color:#222222;
+ color:white;
+}
+</style>
+</head>
+<body>
+<center>
+<table>
+<tr>
+<td valign="right">
+<img width="200%" src="data:image/auto;base64,%@">
+</td>
+<td>
+<center>
+<b style="font-size:12pt">Sequel Pro Favoriten-Datei</b><br /><br />
+</center>
+<textarea cols="50" rows="10" readonly>%@</textarea>
+</td>
+</tr>
+</table>
+</center>
+</body>
+</html>
diff --git a/Resources/German.lproj/SPQLPluginSQLTemplate.html b/Resources/German.lproj/SPQLPluginSQLTemplate.html
new file mode 100644
index 00000000..6c905539
--- /dev/null
+++ b/Resources/German.lproj/SPQLPluginSQLTemplate.html
@@ -0,0 +1,37 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<style>
+body {
+ font-family:'Lucida Grande';
+ font-size:10pt;
+ background-color:#222222;
+ color:white;
+}
+textarea {
+ background-color:#222222;
+ color:white;
+ white-space: nowrap;
+}
+</style>
+</head>
+<body>
+<center>
+<table>
+<tr>
+<td valign="right">
+<img width="200%" src="data:image/auto;base64,%@">
+</td>
+<td>
+<center>
+<b style="font-size:12pt">Sequel Pro SQL Datei</b><br />
+Größe: %@
+</center><br /><br />
+<textarea cols="50" rows="10" readonly>%@</textarea>
+</td>
+</tr>
+</table>
+</center>
+</body>
+</html>
diff --git a/Resources/Plists/Sequel Pro QLGenerator-Info.plist b/Resources/Plists/Sequel Pro QLGenerator-Info.plist
new file mode 100644
index 00000000..aca09b59
--- /dev/null
+++ b/Resources/Plists/Sequel Pro QLGenerator-Info.plist
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//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>com.google.code.sequel-pro.spf</string>
+ <string>com.google.code.sequel-pro.sql</string>
+ </array>
+ </dict>
+ </array>
+ <key>CFBundleExecutable</key>
+ <string>${EXECUTABLE_NAME}</string>
+ <key>CFBundleIconFile</key>
+ <string></string>
+ <key>CFBundleIdentifier</key>
+ <string>com.google.code.sequel-pro.qlgenerator</string>
+ <key>CFBundleInfoDictionaryVersion</key>
+ <string>6.0</string>
+ <key>CFBundleName</key>
+ <string>${PRODUCT_NAME}</string>
+ <key>CFBundleShortVersionString</key>
+ <string>1</string>
+ <key>CFBundleVersion</key>
+ <string>1.0</string>
+ <key>CFPlugInDynamicRegisterFunction</key>
+ <string></string>
+ <key>CFPlugInDynamicRegistration</key>
+ <false/>
+ <key>CFPlugInFactories</key>
+ <dict>
+ <key>15621E48-2969-4291-807E-5F0498A9FB70</key>
+ <string>QuickLookGeneratorPluginFactory</string>
+ </dict>
+ <key>CFPlugInTypes</key>
+ <dict>
+ <key>5E2D9680-5022-40FA-B806-43349622E5B9</key>
+ <array>
+ <string>15621E48-2969-4291-807E-5F0498A9FB70</string>
+ </array>
+ </dict>
+ <key>CFPlugInUnloadFunction</key>
+ <string></string>
+ <key>QLNeedsToBeRunInMainThread</key>
+ <false/>
+ <key>QLPreviewHeight</key>
+ <integer>280</integer>
+ <key>QLPreviewWidth</key>
+ <integer>600</integer>
+ <key>QLSupportsConcurrentRequests</key>
+ <false/>
+ <key>QLThumbnailMinimumSize</key>
+ <real>17</real>
+</dict>
+</plist>
diff --git a/Source/GeneratePreviewForURL.m b/Source/GeneratePreviewForURL.m
new file mode 100644
index 00000000..30ca2ae2
--- /dev/null
+++ b/Source/GeneratePreviewForURL.m
@@ -0,0 +1,347 @@
+// GeneratePreviewForURL.m
+// sequel-pro
+//
+// Created by Hans-Jörg Bibiko on Aug 04, 2010
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// More info at <http://code.google.com/p/sequel-pro/>
+
+#include <CoreFoundation/CoreFoundation.h>
+#include <CoreServices/CoreServices.h>
+#include <QuickLook/QuickLook.h>
+#import <Cocoa/Cocoa.h>
+
+/* -----------------------------------------------------------------------------
+ Generate a preview for file
+
+ This function's job is to create preview for designated file
+ ----------------------------------------------------------------------------- */
+
+static char base64encodingTable[64] = {
+'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P',
+'Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f',
+'g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v',
+'w','x','y','z','0','1','2','3','4','5','6','7','8','9','+','/' };
+
+@interface NSData (QLDataAdditions)
+
+- (NSString *)base64EncodingWithLineLength:(NSUInteger)lineLength;
+
+@end
+
+
+@implementation NSData (QLDataAdditions)
+
+/*
+ * Derived from http://colloquy.info/project/browser/trunk/NSDataAdditions.m?rev=1576
+ * Created by khammond on Mon Oct 29 2001.
+ * Formatted by Timothy Hatcher on Sun Jul 4 2004.
+ * Copyright (c) 2001 Kyle Hammond. All rights reserved.
+ * Original development by Dave Winer.
+ *
+ * Convert self to a base64 encoded NSString
+ */
+- (NSString *) base64EncodingWithLineLength:(NSUInteger)lineLength {
+
+ const unsigned char *bytes = [self bytes];
+ NSUInteger ixtext = 0;
+ NSUInteger lentext = [self length];
+ NSInteger ctremaining = 0;
+ unsigned char inbuf[3], outbuf[4];
+ short i = 0;
+ short charsonline = 0, ctcopy = 0;
+ NSUInteger ix = 0;
+
+ NSMutableString *base64 = [NSMutableString stringWithCapacity:lentext];
+
+ while(1) {
+ ctremaining = lentext - ixtext;
+ if( ctremaining <= 0 ) break;
+
+ for( i = 0; i < 3; i++ ) {
+ ix = ixtext + i;
+ if( ix < lentext ) inbuf[i] = bytes[ix];
+ else inbuf [i] = 0;
+ }
+
+ outbuf [0] = (inbuf [0] & 0xFC) >> 2;
+ outbuf [1] = ((inbuf [0] & 0x03) << 4) | ((inbuf [1] & 0xF0) >> 4);
+ outbuf [2] = ((inbuf [1] & 0x0F) << 2) | ((inbuf [2] & 0xC0) >> 6);
+ outbuf [3] = inbuf [2] & 0x3F;
+ ctcopy = 4;
+
+ switch( ctremaining ) {
+ case 1:
+ ctcopy = 2;
+ break;
+ case 2:
+ ctcopy = 3;
+ break;
+ }
+
+ for( i = 0; i < ctcopy; i++ )
+ [base64 appendFormat:@"%c", base64encodingTable[outbuf[i]]];
+
+ for( i = ctcopy; i < 4; i++ )
+ [base64 appendFormat:@"%c",'='];
+
+ ixtext += 3;
+ charsonline += 4;
+
+ if( lineLength > 0 ) {
+ if (charsonline >= lineLength) {
+ charsonline = 0;
+ [base64 appendString:@"\n"];
+ }
+ }
+ }
+
+ return base64;
+}
+@end
+
+@interface NSString (QLStringAdditions)
+
++ (NSString *)stringForByteSize:(long long)byteSize;
+
+@end
+
+@implementation NSString (QLStringAdditions)
+
+/*
+ * Returns a human readable version string of the supplied byte size.
+ */
++ (NSString *)stringForByteSize:(long long)byteSize
+{
+ CGFloat size = byteSize;
+
+ NSNumberFormatter *numberFormatter = [[[NSNumberFormatter alloc] init] autorelease];
+
+ [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
+
+ if (size < 1023) {
+ [numberFormatter setFormat:@"#,##0 B"];
+
+ return [numberFormatter stringFromNumber:[NSNumber numberWithInteger:size]];
+ }
+
+ size = (size / 1024);
+
+ if (size < 1023) {
+ [numberFormatter setFormat:@"#,##0.0 KiB"];
+
+ return [numberFormatter stringFromNumber:[NSNumber numberWithDouble:size]];
+ }
+
+ size = (size / 1024);
+
+ if (size < 1023) {
+ [numberFormatter setFormat:@"#,##0.0 MiB"];
+
+ return [numberFormatter stringFromNumber:[NSNumber numberWithDouble:size]];
+ }
+
+ size = (size / 1024);
+
+ if (size < 1023) {
+ [numberFormatter setFormat:@"#,##0.0 GiB"];
+
+ return [numberFormatter stringFromNumber:[NSNumber numberWithDouble:size]];
+ }
+
+ size = (size / 1024);
+
+ [numberFormatter setFormat:@"#,##0.0 TiB"];
+
+ return [numberFormatter stringFromNumber:[NSNumber numberWithDouble:size]];
+}
+@end
+
+OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef preview, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options)
+{
+
+ NSURL *myURL = (NSURL *)url;
+ NSString *urlExtension = [[[myURL path] pathExtension] lowercaseString];
+ NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
+
+ NSError *templateReadError = nil;
+
+ NSImage *iconImage = [[NSWorkspace sharedWorkspace] iconForFile:[myURL path]];
+
+ NSMutableString *html;
+ NSString *template = nil;
+
+ if (false == QLPreviewRequestIsCancelled(preview)) {
+
+ NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[myURL path] error:nil];
+
+ if([urlExtension isEqualToString:@"spf"]) {
+
+ NSError *readError = nil;
+ NSString *convError = nil;
+ NSPropertyListFormat format;
+ NSDictionary *spf = nil;
+
+ NSData *pData = [NSData dataWithContentsOfFile:[myURL path] options:NSUncachedRead error:&readError];
+
+ spf = [[NSPropertyListSerialization propertyListFromData:pData
+ mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&convError] retain];
+
+ if(!spf || readError != nil || [convError length] || !(format == NSPropertyListXMLFormat_v1_0 || format == NSPropertyListBinaryFormat_v1_0)) {
+ if(spf) [spf release];
+ [pool release];
+ return noErr;
+ }
+
+ if([[spf objectForKey:@"format"] isEqualToString:@"connection"]) {
+ template = [NSString stringWithContentsOfFile:[[NSBundle bundleWithIdentifier:@"com.google.code.sequel-pro.qlgenerator"] pathForResource:@"SPQLPluginConnectionTemplate" ofType:@"html"]
+ encoding:NSUTF8StringEncoding error:&templateReadError];
+
+ if (template == nil || ![template length] || templateReadError != nil) {
+ [pool release];
+ return noErr;
+ }
+
+ NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
+ [dateFormatter setTimeStyle:NSDateFormatterShortStyle];
+ [dateFormatter setDateStyle:NSDateFormatterMediumStyle];
+ [dateFormatter setLocale:[NSLocale currentLocale]];
+
+ NSString *name = @"••••";
+ NSString *host = @"••••";
+ NSString *user = @"••••";
+ NSString *database = @"••••";
+ NSString *autoConnect = ([[spf objectForKey:@"auto_connect"] boolValue]) ? @"checked" : @"";
+
+ if([[spf objectForKey:@"data"] isKindOfClass:[NSDictionary class]]) {
+ if([[spf objectForKey:@"data"] objectForKey:@"connection"] && [[[spf objectForKey:@"data"] objectForKey:@"connection"] objectForKey:@"name"])
+ name = [[[spf objectForKey:@"data"] objectForKey:@"connection"] objectForKey:@"name"];
+ else
+ name = @"";
+ if([[spf objectForKey:@"data"] objectForKey:@"connection"] && [[[spf objectForKey:@"data"] objectForKey:@"connection"] objectForKey:@"host"])
+ host = [[[spf objectForKey:@"data"] objectForKey:@"connection"] objectForKey:@"host"];
+ else
+ host = @"";
+ if([[spf objectForKey:@"data"] objectForKey:@"connection"] && [[[spf objectForKey:@"data"] objectForKey:@"connection"] objectForKey:@"user"])
+ user = [[[spf objectForKey:@"data"] objectForKey:@"connection"] objectForKey:@"user"];
+ else
+ user = @"";
+ if([[spf objectForKey:@"data"] objectForKey:@"connection"] && [[[spf objectForKey:@"data"] objectForKey:@"connection"] objectForKey:@"database"])
+ database = [[[spf objectForKey:@"data"] objectForKey:@"connection"] objectForKey:@"database"];
+ else
+ database = @"";
+ }
+
+ // compose the html
+ html = [[NSMutableString alloc] initWithString:[NSString stringWithFormat:template,
+ [[iconImage TIFFRepresentationUsingCompression:NSTIFFCompressionJPEG factor:0.01] base64EncodingWithLineLength:0],
+ [spf objectForKey:@"rdbms_type"],
+ [spf objectForKey:@"rdbms_version"],
+ [name stringByReplacingOccurrencesOfString:@" " withString:@"&nbsp;"],
+ [host stringByReplacingOccurrencesOfString:@" " withString:@"&nbsp;"],
+ [user stringByReplacingOccurrencesOfString:@" " withString:@"&nbsp;"],
+ [database stringByReplacingOccurrencesOfString:@" " withString:@"&nbsp;"],
+ [NSString stringForByteSize:[[fileAttributes objectForKey:NSFileSize] longLongValue]],
+ [dateFormatter stringFromDate:[fileAttributes fileModificationDate]],
+ autoConnect
+ ]];
+
+ [dateFormatter release];
+ [spf release];
+
+ }
+ else if([[spf objectForKey:@"format"] isEqualToString:@"content filters"]) {
+ template = [NSString stringWithContentsOfFile:[[NSBundle bundleWithIdentifier:@"com.google.code.sequel-pro.qlgenerator"] pathForResource:@"SPQLPluginContentFiltersTemplate" ofType:@"html"]
+ encoding:NSUTF8StringEncoding error:&templateReadError];
+
+ if (template == nil || ![template length] || templateReadError != nil) {
+ [pool release];
+ return noErr;
+ }
+ // compose the html
+ html = [[NSMutableString alloc] initWithString:[NSString stringWithFormat:template,
+ [[iconImage TIFFRepresentationUsingCompression:NSTIFFCompressionJPEG factor:0.01] base64EncodingWithLineLength:0],
+ [NSString stringWithContentsOfFile:[myURL path] encoding:NSUTF8StringEncoding error:nil]
+ ]];
+ }
+ else if([[spf objectForKey:@"format"] isEqualToString:@"query favorites"]) {
+ template = [NSString stringWithContentsOfFile:[[NSBundle bundleWithIdentifier:@"com.google.code.sequel-pro.qlgenerator"] pathForResource:@"SPQLPluginQueryFavoritesTemplate" ofType:@"html"]
+ encoding:NSUTF8StringEncoding error:&templateReadError];
+
+ if (template == nil || ![template length] || templateReadError != nil) {
+ [pool release];
+ return noErr;
+ }
+ // compose the html
+ html = [[NSMutableString alloc] initWithString:[NSString stringWithFormat:template,
+ [[iconImage TIFFRepresentationUsingCompression:NSTIFFCompressionJPEG factor:0.01] base64EncodingWithLineLength:0],
+ [NSString stringWithContentsOfFile:[myURL path] encoding:NSUTF8StringEncoding error:nil]
+ ]];
+ }
+ }
+ else if([urlExtension isEqualToString:@"sql"]) {
+ template = [NSString stringWithContentsOfFile:[[NSBundle bundleWithIdentifier:@"com.google.code.sequel-pro.qlgenerator"] pathForResource:@"SPQLPluginSQLTemplate" ofType:@"html"]
+ encoding:NSUTF8StringEncoding error:&templateReadError];
+
+ if (template == nil || ![template length] || templateReadError != nil) {
+ [pool release];
+ return noErr;
+ }
+
+ // compose the html
+ if(fileAttributes)
+ {
+ NSNumber *filesize = [fileAttributes objectForKey:NSFileSize];
+ // catch large files since Finder blocks
+ if([filesize unsignedLongValue] > 6000000) {
+ html = [[NSMutableString alloc] initWithString:[NSString stringWithFormat:template,
+ [[iconImage TIFFRepresentationUsingCompression:NSTIFFCompressionJPEG factor:0.01] base64EncodingWithLineLength:0],
+ [NSString stringForByteSize:[[fileAttributes objectForKey:NSFileSize] longLongValue]],
+ @"... SQL ..."
+ ]];
+ } else {
+ html = [[NSMutableString alloc] initWithString:[NSString stringWithFormat:template,
+ [[iconImage TIFFRepresentationUsingCompression:NSTIFFCompressionJPEG factor:0.01] base64EncodingWithLineLength:0],
+ [NSString stringForByteSize:[[fileAttributes objectForKey:NSFileSize] longLongValue]],
+ [NSString stringWithContentsOfFile:[myURL path] encoding:NSUTF8StringEncoding error:nil]
+ ]];
+ }
+ } else {
+ html = [[NSMutableString alloc] initWithString:[NSString stringWithFormat:template,
+ [[iconImage TIFFRepresentationUsingCompression:NSTIFFCompressionJPEG factor:0.01] base64EncodingWithLineLength:0],
+ [NSString stringForByteSize:[[fileAttributes objectForKey:NSFileSize] longLongValue]],
+ [NSString stringWithContentsOfFile:[myURL path] encoding:NSUTF8StringEncoding error:nil]
+ ]];
+ }
+ }
+
+ CFDictionaryRef properties = (CFDictionaryRef)[NSDictionary dictionary];
+ QLPreviewRequestSetDataRepresentation(preview,
+ (CFDataRef)[html dataUsingEncoding:NSUTF8StringEncoding],
+ kUTTypeHTML,
+ properties
+ );
+ [html release];
+
+ }
+ [pool release];
+ return noErr;
+}
+
+void CancelPreviewGeneration(void* thisInterface, QLPreviewRequestRef preview)
+{
+ // implement only if supported
+}
diff --git a/Source/GenerateThumbnailForURL.m b/Source/GenerateThumbnailForURL.m
new file mode 100644
index 00000000..cee74c74
--- /dev/null
+++ b/Source/GenerateThumbnailForURL.m
@@ -0,0 +1,86 @@
+// GenerateThumbnailForURL.m
+// sequel-pro
+//
+// Created by Hans-Jörg Bibiko on Aug 04, 2010
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// More info at <http://code.google.com/p/sequel-pro/>
+
+#include <CoreFoundation/CoreFoundation.h>
+#include <CoreServices/CoreServices.h>
+#include <QuickLook/QuickLook.h>
+#import <Cocoa/Cocoa.h>
+
+
+/* -----------------------------------------------------------------------------
+Generate a thumbnail for file
+
+This function's job is to create thumbnail for designated file as fast as possible
+----------------------------------------------------------------------------- */
+
+
+void CancelThumbnailGeneration(void* thisInterface, QLThumbnailRequestRef thumbnail)
+{
+ // implement only if supported
+}
+
+OSStatus GenerateThumbnailForURL(void *thisInterface, QLThumbnailRequestRef thumbnail, CFURLRef url, CFStringRef contentTypeUTI, CFDictionaryRef options, CGSize maxSize)
+
+{
+ return noErr;
+
+ // The following code is meant as example maybe fr the future
+ // NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
+ //
+ // NSData *thumbnailData = [NSData dataWithContentsOfFile:@"appicon.icns"];
+ // if ( thumbnailData == nil || [thumbnailData length] == 0 ) {
+ // // Nothing Found. Don't care.
+ // [pool release];
+ // return noErr;
+ // }
+ //
+ // NSSize canvasSize = NSMakeSize((NSInteger)(maxSize.height/1.3f), maxSize.height);
+ //
+ // // Thumbnail will be drawn with maximum resolution for desired thumbnail request
+ // // Here we create a graphics context to draw the Quick Look Thumbnail in.
+ // CGContextRef cgContext = QLThumbnailRequestCreateContext(thumbnail, *(CGSize *)&canvasSize, true, NULL);
+ // if(cgContext) {
+ // NSGraphicsContext* context = [NSGraphicsContext graphicsContextWithGraphicsPort:(void *)cgContext flipped:YES];
+ // if(context) {
+ // //These two lines of code are just good safe programming...
+ // [NSGraphicsContext saveGraphicsState];
+ // [NSGraphicsContext setCurrentContext:context];
+ //
+ // // [context setCompositingOperation:NSCompositeSourceOver];
+ // // CGContextSetAlpha(cgContext, 0.5);
+ //
+ // NSBitmapImageRep *thumbnailBitmap = [NSBitmapImageRep imageRepWithData:thumbnailData];
+ // [thumbnailBitmap drawInRect:NSMakeRect(10,10,200,200)];
+ //
+ // //This line sets the context back to what it was when we're done
+ // [NSGraphicsContext restoreGraphicsState];
+ // }
+ //
+ // // When we are done with our drawing code QLThumbnailRequestFlushContext() is called to flush the context
+ // QLThumbnailRequestFlushContext(thumbnail, cgContext);
+ //
+ // CFRelease(cgContext);
+ // }
+ //
+ // [pool release];
+ // return noErr;
+
+} \ No newline at end of file
diff --git a/Source/main.c b/Source/main.c
new file mode 100644
index 00000000..ae199979
--- /dev/null
+++ b/Source/main.c
@@ -0,0 +1,218 @@
+//==============================================================================
+//
+// 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 "15621E48-2969-4291-807E-5F0498A9FB70"
+
+//
+// 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;
+
+ 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;
+}
+
diff --git a/sequel-pro.xcodeproj/project.pbxproj b/sequel-pro.xcodeproj/project.pbxproj
index e77570ba..45c690e4 100644
--- a/sequel-pro.xcodeproj/project.pbxproj
+++ b/sequel-pro.xcodeproj/project.pbxproj
@@ -84,7 +84,7 @@
17B7B5EF101603D200F057DE /* mysql_time.h in Headers */ = {isa = PBXBuildFile; fileRef = 17B7B5E7101603D200F057DE /* mysql_time.h */; settings = {ATTRIBUTES = (Public, ); }; };
17B7B5F0101603D200F057DE /* mysql_version.h in Headers */ = {isa = PBXBuildFile; fileRef = 17B7B5E8101603D200F057DE /* mysql_version.h */; settings = {ATTRIBUTES = (Public, ); }; };
17B7B5F1101603D200F057DE /* typelib.h in Headers */ = {isa = PBXBuildFile; fileRef = 17B7B5E9101603D200F057DE /* typelib.h */; settings = {ATTRIBUTES = (Public, ); }; };
- 17B7B61D101605E300F057DE /* MCPKit.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 17B7B5621016012700F057DE /* MCPKit.framework */; };
+ 17B7B61D101605E300F057DE /* MCPKit.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 17B7B5621016012700F057DE /* MCPKit.framework */; };
17C058880FC9FC390077E9CF /* SPNarrowDownCompletion.m in Sources */ = {isa = PBXBuildFile; fileRef = 17C058870FC9FC390077E9CF /* SPNarrowDownCompletion.m */; };
17CC97F310B4ABE90034CD7A /* SPAboutController.m in Sources */ = {isa = PBXBuildFile; fileRef = 17CC97F210B4ABE90034CD7A /* SPAboutController.m */; };
17CC97F710B4AC6C0034CD7A /* AboutPanel.xib in Resources */ = {isa = PBXBuildFile; fileRef = 17CC97F510B4AC6C0034CD7A /* AboutPanel.xib */; };
@@ -157,8 +157,8 @@
4D90B7A2101E0D1500D116A1 /* UserManagerView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4D90B7A0101E0D1500D116A1 /* UserManagerView.xib */; };
4DECC3350EC2A170008D359E /* Sparkle.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DECC3320EC2A170008D359E /* Sparkle.framework */; };
4DECC3370EC2A170008D359E /* Growl.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4DECC3340EC2A170008D359E /* Growl.framework */; };
- 4DECC48F0EC2B436008D359E /* Sparkle.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4DECC3320EC2A170008D359E /* Sparkle.framework */; };
- 4DECC4910EC2B436008D359E /* Growl.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 4DECC3340EC2A170008D359E /* Growl.framework */; };
+ 4DECC48F0EC2B436008D359E /* Sparkle.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 4DECC3320EC2A170008D359E /* Sparkle.framework */; };
+ 4DECC4910EC2B436008D359E /* Growl.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 4DECC3340EC2A170008D359E /* Growl.framework */; };
5806B76411A991EC00813A88 /* SPDocumentController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5806B76311A991EC00813A88 /* SPDocumentController.m */; };
580E8DB711EA774B000D8427 /* SequelProTabClose_Pressed.png in Resources */ = {isa = PBXBuildFile; fileRef = 580E8DAB11EA772C000D8427 /* SequelProTabClose_Pressed.png */; };
580E8DB811EA774B000D8427 /* SequelProTabClose_Rollover.png in Resources */ = {isa = PBXBuildFile; fileRef = 580E8DAC11EA772C000D8427 /* SequelProTabClose_Rollover.png */; };
@@ -180,11 +180,24 @@
584095191107CB6600260CFD /* SPAlertSheets.m in Sources */ = {isa = PBXBuildFile; fileRef = 584095181107CB6600260CFD /* SPAlertSheets.m */; };
5841423F0F97E11000A34B47 /* NoodleLineNumberView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5841423E0F97E11000A34B47 /* NoodleLineNumberView.m */; };
584192A1101E57BB0089807F /* NSMutableArray-MultipleSort.m in Sources */ = {isa = PBXBuildFile; fileRef = 584192A0101E57BB0089807F /* NSMutableArray-MultipleSort.m */; };
+ 584754D3120A05910057631F /* GeneratePreviewForURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 584754D0120A05910057631F /* GeneratePreviewForURL.m */; };
+ 584754D4120A05910057631F /* GenerateThumbnailForURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 584754D1120A05910057631F /* GenerateThumbnailForURL.m */; };
+ 584754D5120A05910057631F /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 584754D2120A05910057631F /* main.c */; };
+ 58475686120A065B0057631F /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58475685120A065B0057631F /* CoreFoundation.framework */; };
+ 584756B5120A06740057631F /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 584756B4120A06740057631F /* CoreServices.framework */; };
+ 584756B7120A067B0057631F /* ApplicationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 584756B6120A067B0057631F /* ApplicationServices.framework */; };
+ 584756B9120A06830057631F /* QuickLook.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 584756B8120A06830057631F /* QuickLook.framework */; };
+ 584756BC120A06870057631F /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */; };
+ 58475702120A1B290057631F /* SPQLPluginConnectionTemplate.html in Resources */ = {isa = PBXBuildFile; fileRef = 584756FA120A1B290057631F /* SPQLPluginConnectionTemplate.html */; };
+ 58475703120A1B290057631F /* SPQLPluginContentFiltersTemplate.html in Resources */ = {isa = PBXBuildFile; fileRef = 584756FC120A1B290057631F /* SPQLPluginContentFiltersTemplate.html */; };
+ 58475704120A1B290057631F /* SPQLPluginQueryFavoritesTemplate.html in Resources */ = {isa = PBXBuildFile; fileRef = 584756FE120A1B290057631F /* SPQLPluginQueryFavoritesTemplate.html */; };
+ 58475705120A1B290057631F /* SPQLPluginSQLTemplate.html in Resources */ = {isa = PBXBuildFile; fileRef = 58475700120A1B290057631F /* SPQLPluginSQLTemplate.html */; };
+ 5847577D120A1E8A0057631F /* Sequel Pro.qlgenerator in Copy QuickLook Plugins */ = {isa = PBXBuildFile; fileRef = 584754C2120A04560057631F /* Sequel Pro.qlgenerator */; };
584F5F8F0F50ACD800036517 /* table-view-small.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 584F5F8E0F50ACD800036517 /* table-view-small.tiff */; };
58587B5A11B4437C00D129ED /* NSNotificationAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 58587B5811B4437C00D129ED /* NSNotificationAdditions.h */; };
58587B5B11B4437C00D129ED /* NSNotificationAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 58587B5911B4437C00D129ED /* NSNotificationAdditions.m */; };
586EBD2411418D7C00B3DE45 /* FeedbackReporter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 586EBD2311418D7C00B3DE45 /* FeedbackReporter.framework */; };
- 586EBD5D11418D9400B3DE45 /* FeedbackReporter.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 586EBD2311418D7C00B3DE45 /* FeedbackReporter.framework */; };
+ 586EBD5D11418D9400B3DE45 /* FeedbackReporter.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 586EBD2311418D7C00B3DE45 /* FeedbackReporter.framework */; };
586F457B0FDB269E00B428D7 /* RegexKitLite.m in Sources */ = {isa = PBXBuildFile; fileRef = 296DC8AB0F909194002A3258 /* RegexKitLite.m */; };
586F457E0FDB280100B428D7 /* libicucore.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 296DC8BE0F9091DF002A3258 /* libicucore.dylib */; };
5870868410FA3E9C00D58E1C /* SPDataStorage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5870868310FA3E9C00D58E1C /* SPDataStorage.m */; };
@@ -231,7 +244,7 @@
58B9076E11BD9B34000826E5 /* PSMTabStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 58B9072E11BD9B34000826E5 /* PSMTabStyle.h */; settings = {ATTRIBUTES = (Public, ); }; };
58B9077E11BD9B64000826E5 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58B9077D11BD9B64000826E5 /* Carbon.framework */; };
58B907CA11BDA541000826E5 /* PSMTabBar.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58B906E611BD989A000826E5 /* PSMTabBar.framework */; };
- 58B907FB11BDA5A9000826E5 /* PSMTabBar.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 58B906E611BD989A000826E5 /* PSMTabBar.framework */; };
+ 58B907FB11BDA5A9000826E5 /* PSMTabBar.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 58B906E611BD989A000826E5 /* PSMTabBar.framework */; };
58B9097B11C3A4A2000826E5 /* xibLocalizationPostprocessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B9095B11C3A3EC000826E5 /* xibLocalizationPostprocessor.m */; };
58B909A511C3B919000826E5 /* DMLocalizedNibBundle.m in Sources */ = {isa = PBXBuildFile; fileRef = 58B909A411C3B919000826E5 /* DMLocalizedNibBundle.m */; };
58BC5E56103898140058C2E6 /* MCPStreamingResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 583B779710386B0200B21F7E /* MCPStreamingResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -247,7 +260,7 @@
58C56EF50F438E120035701E /* SPDataCellFormatter.m in Sources */ = {isa = PBXBuildFile; fileRef = 58C56EF40F438E120035701E /* SPDataCellFormatter.m */; };
58C61CFA11960312003BAA5D /* SPAlertSheets.m in Sources */ = {isa = PBXBuildFile; fileRef = 584095181107CB6600260CFD /* SPAlertSheets.m */; };
58C6C71611FBB17200A3F5E9 /* UniversalDetector.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 58C6C71511FBB17200A3F5E9 /* UniversalDetector.framework */; };
- 58C6C71F11FBB18000A3F5E9 /* UniversalDetector.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = 58C6C71511FBB17200A3F5E9 /* UniversalDetector.framework */; };
+ 58C6C71F11FBB18000A3F5E9 /* UniversalDetector.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 58C6C71511FBB17200A3F5E9 /* UniversalDetector.framework */; };
58CB20ED0F79A75D005EA204 /* button_edit_mode_selected.tiff in Resources */ = {isa = PBXBuildFile; fileRef = 58CB20EC0F79A75D005EA204 /* button_edit_mode_selected.tiff */; };
58CDB3300FCE138D00F8ACA3 /* SPSSHTunnel.m in Sources */ = {isa = PBXBuildFile; fileRef = 58CDB32F0FCE138D00F8ACA3 /* SPSSHTunnel.m */; };
58CDB3400FCE13EF00F8ACA3 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5EAC0FC0EC87FF900CC579C /* Security.framework */; };
@@ -267,7 +280,7 @@
B52460D80F8EF92300171639 /* SPTextViewAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B52460D60F8EF92300171639 /* SPTextViewAdditions.m */; };
B52460DB0F8EF93B00171639 /* Console.xib in Resources */ = {isa = PBXBuildFile; fileRef = B52460D90F8EF93B00171639 /* Console.xib */; };
B52ECDDC10DDACE9009DC3E8 /* BWToolkitFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B52ECDDB10DDACE9009DC3E8 /* BWToolkitFramework.framework */; };
- B52ECE1410DDAD01009DC3E8 /* BWToolkitFramework.framework in CopyFiles */ = {isa = PBXBuildFile; fileRef = B52ECDDB10DDACE9009DC3E8 /* BWToolkitFramework.framework */; };
+ B52ECE1410DDAD01009DC3E8 /* BWToolkitFramework.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = B52ECDDB10DDACE9009DC3E8 /* BWToolkitFramework.framework */; };
B53857340F9CC3B600EB2354 /* button_clear.tiff in Resources */ = {isa = PBXBuildFile; fileRef = B53857330F9CC3B600EB2354 /* button_clear.tiff */; };
B54F25E60FD909C400E2CF36 /* toolbar-switch-to-table-relations.png in Resources */ = {isa = PBXBuildFile; fileRef = B54F25E50FD909C400E2CF36 /* toolbar-switch-to-table-relations.png */; };
B5538AAF0FF251EE00219803 /* button_pane_hide_icon.tif in Resources */ = {isa = PBXBuildFile; fileRef = B5538AAC0FF251EE00219803 /* button_pane_hide_icon.tif */; };
@@ -367,6 +380,13 @@
remoteGlobalIDString = 17B7B5611016012700F057DE;
remoteInfo = MCPKit;
};
+ 5847571D120A1C6D0057631F /* PBXContainerItemProxy */ = {
+ isa = PBXContainerItemProxy;
+ containerPortal = 2A37F4A9FDCFA73011CA2CEA /* Project object */;
+ proxyType = 1;
+ remoteGlobalIDString = 584754C1120A04560057631F /* Sequel Pro QLGenerator */;
+ remoteInfo = "Sequel Pro QLGenerator";
+ };
58B907CC11BDA552000826E5 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 2A37F4A9FDCFA73011CA2CEA /* Project object */;
@@ -391,20 +411,32 @@
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
- 4DECC4940EC2B447008D359E /* CopyFiles */ = {
+ 4DECC4940EC2B447008D359E /* Copy Frameworks */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 10;
files = (
- 17B7B61D101605E300F057DE /* MCPKit.framework in CopyFiles */,
- 58B907FB11BDA5A9000826E5 /* PSMTabBar.framework in CopyFiles */,
- 4DECC4910EC2B436008D359E /* Growl.framework in CopyFiles */,
- 4DECC48F0EC2B436008D359E /* Sparkle.framework in CopyFiles */,
- B52ECE1410DDAD01009DC3E8 /* BWToolkitFramework.framework in CopyFiles */,
- 586EBD5D11418D9400B3DE45 /* FeedbackReporter.framework in CopyFiles */,
- 58C6C71F11FBB18000A3F5E9 /* UniversalDetector.framework in CopyFiles */,
+ 17B7B61D101605E300F057DE /* MCPKit.framework in Copy Frameworks */,
+ 58B907FB11BDA5A9000826E5 /* PSMTabBar.framework in Copy Frameworks */,
+ 4DECC4910EC2B436008D359E /* Growl.framework in Copy Frameworks */,
+ 4DECC48F0EC2B436008D359E /* Sparkle.framework in Copy Frameworks */,
+ B52ECE1410DDAD01009DC3E8 /* BWToolkitFramework.framework in Copy Frameworks */,
+ 586EBD5D11418D9400B3DE45 /* FeedbackReporter.framework in Copy Frameworks */,
+ 58C6C71F11FBB18000A3F5E9 /* UniversalDetector.framework in Copy Frameworks */,
+ );
+ name = "Copy Frameworks";
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+ 58475762120A1DC40057631F /* Copy QuickLook Plugins */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 2147483647;
+ dstPath = Contents/Library/QuickLook;
+ dstSubfolderSpec = 1;
+ files = (
+ 5847577D120A1E8A0057631F /* Sequel Pro.qlgenerator in Copy QuickLook Plugins */,
);
+ name = "Copy QuickLook Plugins";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
@@ -718,6 +750,23 @@
5841423E0F97E11000A34B47 /* NoodleLineNumberView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NoodleLineNumberView.m; sourceTree = "<group>"; };
5841929F101E57BB0089807F /* NSMutableArray-MultipleSort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSMutableArray-MultipleSort.h"; sourceTree = "<group>"; };
584192A0101E57BB0089807F /* NSMutableArray-MultipleSort.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSMutableArray-MultipleSort.m"; sourceTree = "<group>"; };
+ 584754C2120A04560057631F /* Sequel Pro.qlgenerator */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Sequel Pro.qlgenerator"; sourceTree = BUILT_PRODUCTS_DIR; };
+ 584754D0120A05910057631F /* GeneratePreviewForURL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratePreviewForURL.m; sourceTree = "<group>"; };
+ 584754D1120A05910057631F /* GenerateThumbnailForURL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GenerateThumbnailForURL.m; sourceTree = "<group>"; };
+ 584754D2120A05910057631F /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; };
+ 58475685120A065B0057631F /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = System/Library/Frameworks/CoreFoundation.framework; sourceTree = SDKROOT; };
+ 584756B4120A06740057631F /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
+ 584756B6120A067B0057631F /* ApplicationServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ApplicationServices.framework; path = /System/Library/Frameworks/ApplicationServices.framework; sourceTree = "<absolute>"; };
+ 584756B8120A06830057631F /* QuickLook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuickLook.framework; path = /System/Library/Frameworks/QuickLook.framework; sourceTree = "<absolute>"; };
+ 584756DC120A162E0057631F /* Sequel Pro QLGenerator-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "Sequel Pro QLGenerator-Info.plist"; path = "Plists/Sequel Pro QLGenerator-Info.plist"; sourceTree = "<group>"; };
+ 584756FB120A1B290057631F /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = English; path = English.lproj/SPQLPluginConnectionTemplate.html; sourceTree = "<group>"; };
+ 584756FD120A1B290057631F /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = English; path = English.lproj/SPQLPluginContentFiltersTemplate.html; sourceTree = "<group>"; };
+ 584756FF120A1B290057631F /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = English; path = English.lproj/SPQLPluginQueryFavoritesTemplate.html; sourceTree = "<group>"; };
+ 58475701120A1B290057631F /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = English; path = English.lproj/SPQLPluginSQLTemplate.html; sourceTree = "<group>"; };
+ 58475706120A1B630057631F /* German */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = German; path = German.lproj/SPQLPluginConnectionTemplate.html; sourceTree = "<group>"; };
+ 58475707120A1B630057631F /* German */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = German; path = German.lproj/SPQLPluginContentFiltersTemplate.html; sourceTree = "<group>"; };
+ 58475708120A1B630057631F /* German */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = German; path = German.lproj/SPQLPluginQueryFavoritesTemplate.html; sourceTree = "<group>"; };
+ 58475709120A1B630057631F /* German */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = German; path = German.lproj/SPQLPluginSQLTemplate.html; sourceTree = "<group>"; };
584F5F8E0F50ACD800036517 /* table-view-small.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "table-view-small.tiff"; sourceTree = "<group>"; };
58587B5811B4437C00D129ED /* NSNotificationAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NSNotificationAdditions.h; path = "Support files/NSNotificationAdditions.h"; sourceTree = "<group>"; };
58587B5911B4437C00D129ED /* NSNotificationAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = NSNotificationAdditions.m; path = "Support files/NSNotificationAdditions.m"; sourceTree = "<group>"; };
@@ -967,6 +1016,18 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 584754C0120A04560057631F /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 58475686120A065B0057631F /* CoreFoundation.framework in Frameworks */,
+ 584756B5120A06740057631F /* CoreServices.framework in Frameworks */,
+ 584756B7120A067B0057631F /* ApplicationServices.framework in Frameworks */,
+ 584756B9120A06830057631F /* QuickLook.framework in Frameworks */,
+ 584756BC120A06870057631F /* Cocoa.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
58B906E411BD989A000826E5 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
@@ -1018,6 +1079,7 @@
1058C7A6FEA54F5311CA2CBB /* Linked Frameworks */ = {
isa = PBXGroup;
children = (
+ 58475685120A065B0057631F /* CoreFoundation.framework */,
58B9077D11BD9B64000826E5 /* Carbon.framework */,
1058C7A7FEA54F5311CA2CBB /* Cocoa.framework */,
4DECC3340EC2A170008D359E /* Growl.framework */,
@@ -1027,6 +1089,9 @@
586EBD2311418D7C00B3DE45 /* FeedbackReporter.framework */,
580E8EDC11EBE2A4000D8427 /* SystemConfiguration.framework */,
58C6C71511FBB17200A3F5E9 /* UniversalDetector.framework */,
+ 584756B4120A06740057631F /* CoreServices.framework */,
+ 584756B6120A067B0057631F /* ApplicationServices.framework */,
+ 584756B8120A06830057631F /* QuickLook.framework */,
296DC8BE0F9091DF002A3258 /* libicucore.dylib */,
17B7B58F1016028F00F057DE /* libcrypto.dylib */,
179ECEC611F265EE009C6A40 /* libbz2.dylib */,
@@ -1298,6 +1363,7 @@
BCB56196106F893F00167321 /* ContentFilters.plist */,
BCB5619A106F8A1B00167321 /* EditorQuickLookTypes.plist */,
BC962D651144EACA006170BD /* CompletionTokens.plist */,
+ 584756DC120A162E0057631F /* Sequel Pro QLGenerator-Info.plist */,
);
name = Plists;
sourceTree = "<group>";
@@ -1503,6 +1569,7 @@
17E6418B0EF01FF7001BC333 /* Images */,
1740F8360FC306AE00CF3699 /* Scripting */,
1740F8350FC3069700CF3699 /* Templates */,
+ 584756F7120A1B0B0057631F /* QuickLook Plugin */,
17DD52C4115074CB007D8950 /* Localizable.strings */,
17DD52B811507217007D8950 /* Credits.rtf */,
17CC993A10B4C9C80034CD7A /* License.rtf */,
@@ -1571,6 +1638,7 @@
17E641720EF01F6B001BC333 /* SSHTunnel */,
B57747D60F7A8990003B34F9 /* Category Additions */,
58B909A111C3B8EC000826E5 /* Localization */,
+ 584754CC120A05660057631F /* QuickLook Plugin */,
58DA884E103E1597000B98DF /* Debugging & Support */,
);
name = Other;
@@ -1764,6 +1832,7 @@
17B7B5621016012700F057DE /* MCPKit.framework */,
58B906E611BD989A000826E5 /* PSMTabBar.framework */,
58B9096111C3A42B000826E5 /* xibLocalizationPostprocessor */,
+ 584754C2120A04560057631F /* Sequel Pro.qlgenerator */,
);
name = Products;
sourceTree = "<group>";
@@ -1838,6 +1907,27 @@
name = Compression;
sourceTree = "<group>";
};
+ 584754CC120A05660057631F /* QuickLook Plugin */ = {
+ isa = PBXGroup;
+ children = (
+ 584754D0120A05910057631F /* GeneratePreviewForURL.m */,
+ 584754D1120A05910057631F /* GenerateThumbnailForURL.m */,
+ 584754D2120A05910057631F /* main.c */,
+ );
+ name = "QuickLook Plugin";
+ sourceTree = "<group>";
+ };
+ 584756F7120A1B0B0057631F /* QuickLook Plugin */ = {
+ isa = PBXGroup;
+ children = (
+ 584756FA120A1B290057631F /* SPQLPluginConnectionTemplate.html */,
+ 584756FC120A1B290057631F /* SPQLPluginContentFiltersTemplate.html */,
+ 584756FE120A1B290057631F /* SPQLPluginQueryFavoritesTemplate.html */,
+ 58475700120A1B290057631F /* SPQLPluginSQLTemplate.html */,
+ );
+ name = "QuickLook Plugin";
+ sourceTree = "<group>";
+ };
58587B4E11B4433B00D129ED /* Support files */ = {
isa = PBXGroup;
children = (
@@ -2094,6 +2184,23 @@
productReference = 380F4ED90FC0B50500B0BFD7 /* Unit Tests.octest */;
productType = "com.apple.product-type.bundle";
};
+ 584754C1120A04560057631F /* Sequel Pro QLGenerator */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 584754C7120A04560057631F /* Build configuration list for PBXNativeTarget "Sequel Pro QLGenerator" */;
+ buildPhases = (
+ 584754BE120A04560057631F /* Resources */,
+ 584754BF120A04560057631F /* Sources */,
+ 584754C0120A04560057631F /* Frameworks */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "Sequel Pro QLGenerator";
+ productName = "Sequel Pro QLGenerator";
+ productReference = 584754C2120A04560057631F /* Sequel Pro.qlgenerator */;
+ productType = "com.apple.product-type.bundle";
+ };
58B906E511BD989A000826E5 /* PSMTabBar */ = {
isa = PBXNativeTarget;
buildConfigurationList = 58B906EB11BD989A000826E5 /* Build configuration list for PBXNativeTarget "PSMTabBar" */;
@@ -2151,7 +2258,8 @@
8D15AC300486D014006FF6A4 /* Sources */,
8D15AC330486D014006FF6A4 /* Frameworks */,
8D15AC2B0486D014006FF6A4 /* Resources */,
- 4DECC4940EC2B447008D359E /* CopyFiles */,
+ 4DECC4940EC2B447008D359E /* Copy Frameworks */,
+ 58475762120A1DC40057631F /* Copy QuickLook Plugins */,
1761FDAF0EF0496500331368 /* Run Scripts */,
);
buildRules = (
@@ -2161,6 +2269,7 @@
58B907CD11BDA552000826E5 /* PBXTargetDependency */,
58CDB34B0FCE144000F8ACA3 /* PBXTargetDependency */,
58B9097011C3A462000826E5 /* PBXTargetDependency */,
+ 5847571E120A1C6D0057631F /* PBXTargetDependency */,
);
name = "Sequel Pro";
productInstallPath = "$(HOME)/Applications";
@@ -2186,11 +2295,23 @@
17B7B5611016012700F057DE /* MCPKit */,
58B906E511BD989A000826E5 /* PSMTabBar */,
58B9096011C3A42B000826E5 /* xibLocalizationPostprocessor */,
+ 584754C1120A04560057631F /* Sequel Pro QLGenerator */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
+ 584754BE120A04560057631F /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 58475702120A1B290057631F /* SPQLPluginConnectionTemplate.html in Resources */,
+ 58475703120A1B290057631F /* SPQLPluginContentFiltersTemplate.html in Resources */,
+ 58475704120A1B290057631F /* SPQLPluginQueryFavoritesTemplate.html in Resources */,
+ 58475705120A1B290057631F /* SPQLPluginSQLTemplate.html in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
58B906E211BD989A000826E5 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
@@ -2408,6 +2529,16 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ 584754BF120A04560057631F /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 584754D3120A05910057631F /* GeneratePreviewForURL.m in Sources */,
+ 584754D4120A05910057631F /* GenerateThumbnailForURL.m in Sources */,
+ 584754D5120A05910057631F /* main.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
58B906E311BD989A000826E5 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
@@ -2572,6 +2703,11 @@
target = 17B7B5611016012700F057DE /* MCPKit */;
targetProxy = 17B7B59A1016039200F057DE /* PBXContainerItemProxy */;
};
+ 5847571E120A1C6D0057631F /* PBXTargetDependency */ = {
+ isa = PBXTargetDependency;
+ target = 584754C1120A04560057631F /* Sequel Pro QLGenerator */;
+ targetProxy = 5847571D120A1C6D0057631F /* PBXContainerItemProxy */;
+ };
58B907CD11BDA552000826E5 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 58B906E511BD989A000826E5 /* PSMTabBar */;
@@ -2700,6 +2836,42 @@
path = ..;
sourceTree = "<group>";
};
+ 584756FA120A1B290057631F /* SPQLPluginConnectionTemplate.html */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 584756FB120A1B290057631F /* English */,
+ 58475706120A1B630057631F /* German */,
+ );
+ name = SPQLPluginConnectionTemplate.html;
+ sourceTree = "<group>";
+ };
+ 584756FC120A1B290057631F /* SPQLPluginContentFiltersTemplate.html */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 584756FD120A1B290057631F /* English */,
+ 58475707120A1B630057631F /* German */,
+ );
+ name = SPQLPluginContentFiltersTemplate.html;
+ sourceTree = "<group>";
+ };
+ 584756FE120A1B290057631F /* SPQLPluginQueryFavoritesTemplate.html */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 584756FF120A1B290057631F /* English */,
+ 58475708120A1B630057631F /* German */,
+ );
+ name = SPQLPluginQueryFavoritesTemplate.html;
+ sourceTree = "<group>";
+ };
+ 58475700120A1B290057631F /* SPQLPluginSQLTemplate.html */ = {
+ isa = PBXVariantGroup;
+ children = (
+ 58475701120A1B290057631F /* English */,
+ 58475709120A1B630057631F /* German */,
+ );
+ name = SPQLPluginSQLTemplate.html;
+ sourceTree = "<group>";
+ };
58A8A72611A0149100B95749 /* MainWindow.xib */ = {
isa = PBXVariantGroup;
children = (
@@ -3021,6 +3193,64 @@
};
name = Distribution;
};
+ 584754C4120A04560057631F /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ 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;
+ GCC_PREFIX_HEADER = "";
+ INFOPLIST_FILE = "Resources/Plists/Sequel Pro QLGenerator-Info.plist";
+ INSTALL_PATH = /Library/QuickLook;
+ OTHER_LDFLAGS = "";
+ PREBINDING = NO;
+ PRODUCT_NAME = "Sequel Pro";
+ WRAPPER_EXTENSION = qlgenerator;
+ };
+ name = Debug;
+ };
+ 584754C5120A04560057631F /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ COPY_PHASE_STRIP = YES;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ GCC_ENABLE_FIX_AND_CONTINUE = NO;
+ GCC_MODEL_TUNING = G5;
+ GCC_PRECOMPILE_PREFIX_HEADER = NO;
+ GCC_PREFIX_HEADER = "";
+ INFOPLIST_FILE = "Resources/Plists/Sequel Pro QLGenerator-Info.plist";
+ INSTALL_PATH = /Library/QuickLook;
+ OTHER_LDFLAGS = "";
+ PREBINDING = NO;
+ PRODUCT_NAME = "Sequel Pro";
+ WRAPPER_EXTENSION = qlgenerator;
+ ZERO_LINK = NO;
+ };
+ name = Release;
+ };
+ 584754C6120A04560057631F /* Distribution */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_MODEL_TUNING = G5;
+ GCC_PRECOMPILE_PREFIX_HEADER = NO;
+ GCC_PREFIX_HEADER = "";
+ GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
+ INFOPLIST_FILE = "Resources/Plists/Sequel Pro QLGenerator-Info.plist";
+ INSTALL_PATH = /Library/QuickLook;
+ OTHER_LDFLAGS = "";
+ PREBINDING = NO;
+ PRODUCT_NAME = "Sequel Pro";
+ WRAPPER_EXTENSION = qlgenerator;
+ };
+ name = Distribution;
+ };
588593F00F7AEB6900ED0E67 /* Distribution */ = {
isa = XCBuildConfiguration;
buildSettings = {
@@ -3481,6 +3711,16 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ 584754C7120A04560057631F /* Build configuration list for PBXNativeTarget "Sequel Pro QLGenerator" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 584754C4120A04560057631F /* Debug */,
+ 584754C5120A04560057631F /* Release */,
+ 584754C6120A04560057631F /* Distribution */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
58B906EB11BD989A000826E5 /* Build configuration list for PBXNativeTarget "PSMTabBar" */ = {
isa = XCConfigurationList;
buildConfigurations = (