aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Interfaces/English.lproj/FieldEditorSheet.xib247
-rw-r--r--Source/SPFieldEditor.h58
-rw-r--r--Source/SPFieldEditorController.h73
-rw-r--r--Source/SPFieldEditorController.m (renamed from Source/SPFieldEditor.m)297
-rw-r--r--sequel-pro.xcodeproj/project.pbxproj12
5 files changed, 449 insertions, 238 deletions
diff --git a/Interfaces/English.lproj/FieldEditorSheet.xib b/Interfaces/English.lproj/FieldEditorSheet.xib
index 71414e99..f4c44148 100644
--- a/Interfaces/English.lproj/FieldEditorSheet.xib
+++ b/Interfaces/English.lproj/FieldEditorSheet.xib
@@ -8,7 +8,6 @@
<string key="IBDocument.HIToolboxVersion">353.00</string>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="2"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -26,7 +25,7 @@
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSCustomObject" id="1001">
- <string key="NSClassName">SPFieldEditor</string>
+ <string key="NSClassName">SPFieldEditorController</string>
</object>
<object class="NSCustomObject" id="1003">
<string key="NSClassName">FirstResponder</string>
@@ -37,17 +36,17 @@
<object class="NSWindowTemplate" id="172882781">
<int key="NSWindowStyleMask">9</int>
<int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{115, 389}, {667, 416}}</string>
- <int key="NSWTFlags">1886912512</int>
+ <string key="NSWindowRect">{{364, 195}, {667, 416}}</string>
+ <int key="NSWTFlags">1618477056</int>
<string key="NSWindowTitle">Field Editor</string>
- <string key="NSWindowClass">NSWindow</string>
+ <string key="NSWindowClass">NSPanel</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
<string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
<string key="NSWindowContentMinSize">{560, 200}</string>
<object class="NSView" key="NSWindowView" id="559857537">
- <reference key="NSNextResponder"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">4370</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -465,7 +464,6 @@
</object>
<string key="NSFrameSize">{667, 370}</string>
<reference key="NSSuperview" ref="983787914"/>
- <reference key="NSNextKeyView" ref="459839028"/>
<reference key="NSDocView" ref="459839028"/>
<reference key="NSBGColor" ref="940290613"/>
<object class="NSCursor" key="NSCursor" id="956874367">
@@ -498,7 +496,6 @@
</object>
<string key="NSFrame">{{0, 39}, {667, 370}}</string>
<reference key="NSSuperview" ref="559857537"/>
- <reference key="NSNextKeyView" ref="1068411389"/>
<int key="NSsFlags">528</int>
<reference key="NSVScroller" ref="977735067"/>
<reference key="NSHScroller" ref="426249328"/>
@@ -545,29 +542,6 @@
<object class="NSTextView" id="702566211">
<reference key="NSNextResponder" ref="967441740"/>
<int key="NSvFlags">2322</int>
- <object class="NSMutableSet" key="NSDragTypes">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableArray" key="set.sortedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>Apple HTML pasteboard type</string>
- <string>Apple PDF pasteboard type</string>
- <string>Apple PICT pasteboard type</string>
- <string>Apple PNG pasteboard type</string>
- <string>Apple URL pasteboard type</string>
- <string>CorePasteboardFlavorType 0x6D6F6F76</string>
- <string>CorePasteboardFlavorType 0x75726C20</string>
- <string>NSColor pasteboard type</string>
- <string>NSFilenamesPboardType</string>
- <string>NSStringPboardType</string>
- <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
- <string>NeXT RTFD pasteboard type</string>
- <string>NeXT Rich Text Format v1.0 pasteboard type</string>
- <string>NeXT TIFF v4.0 pasteboard type</string>
- <string>NeXT font pasteboard type</string>
- <string>NeXT ruler pasteboard type</string>
- <string>WebURLsWithTitlesPboardType</string>
- </object>
- </object>
<string key="NSFrameSize">{667, 14}</string>
<reference key="NSSuperview" ref="967441740"/>
<object class="NSTextContainer" key="NSTextContainer" id="872196016">
@@ -638,7 +612,6 @@
</object>
<string key="NSFrameSize">{667, 370}</string>
<reference key="NSSuperview" ref="604699677"/>
- <reference key="NSNextKeyView" ref="702566211"/>
<reference key="NSDocView" ref="702566211"/>
<reference key="NSBGColor" ref="940290613"/>
<reference key="NSCursor" ref="956874367"/>
@@ -668,7 +641,6 @@
</object>
<string key="NSFrame">{{0, 39}, {667, 370}}</string>
<reference key="NSSuperview" ref="559857537"/>
- <reference key="NSNextKeyView" ref="967441740"/>
<int key="NSsFlags">528</int>
<reference key="NSVScroller" ref="699979333"/>
<reference key="NSHScroller" ref="393370468"/>
@@ -708,7 +680,6 @@
</object>
</object>
<string key="NSFrameSize">{667, 416}</string>
- <reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
<string key="NSMinSize">{560, 222}</string>
@@ -719,6 +690,198 @@
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">closeEditSheet:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="315097820"/>
+ </object>
+ <int key="connectionID">40</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">closeEditSheet:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="760872156"/>
+ </object>
+ <int key="connectionID">41</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">saveEditSheet:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="212849560"/>
+ </object>
+ <int key="connectionID">42</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">openEditSheet:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="16151679"/>
+ </object>
+ <int key="connectionID">43</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">segmentControllerChanged:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="13679998"/>
+ </object>
+ <int key="connectionID">44</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">quickLookFormatButton:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="657320705"/>
+ </object>
+ <int key="connectionID">45</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">quickLookFormatButton:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="331580392"/>
+ </object>
+ <int key="connectionID">46</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">quickLookFormatButton:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="350758430"/>
+ </object>
+ <int key="connectionID">47</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">quickLookFormatButton:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="231072377"/>
+ </object>
+ <int key="connectionID">48</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">quickLookFormatButton:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="254749674"/>
+ </object>
+ <int key="connectionID">49</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">quickLookFormatButton:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="853091810"/>
+ </object>
+ <int key="connectionID">50</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">editSheetProgressBar</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="450296515"/>
+ </object>
+ <int key="connectionID">51</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">editTextView</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="702566211"/>
+ </object>
+ <int key="connectionID">52</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">editTextScrollView</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="604699677"/>
+ </object>
+ <int key="connectionID">53</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">hexTextView</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="459839028"/>
+ </object>
+ <int key="connectionID">54</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">hexTextScrollView</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="983787914"/>
+ </object>
+ <int key="connectionID">55</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">editImage</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="189033461"/>
+ </object>
+ <int key="connectionID">56</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">editSheetQuickLookButton</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="766971294"/>
+ </object>
+ <int key="connectionID">57</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">dropImage:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="189033461"/>
+ </object>
+ <int key="connectionID">58</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="189033461"/>
+ <reference key="destination" ref="1001"/>
+ </object>
+ <int key="connectionID">59</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="702566211"/>
+ <reference key="destination" ref="1001"/>
+ </object>
+ <int key="connectionID">60</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">editSheetSegmentControl</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="13679998"/>
+ </object>
+ <int key="connectionID">61</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="172882781"/>
+ <reference key="destination" ref="1001"/>
+ </object>
+ <int key="connectionID">62</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">editSheet</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="172882781"/>
+ </object>
+ <int key="connectionID">63</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@@ -1095,8 +1258,8 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{226, 92}, {667, 416}}</string>
- <string>{{226, 92}, {667, 416}}</string>
+ <string>{{232, 340}, {667, 416}}</string>
+ <string>{{232, 340}, {667, 416}}</string>
<reference ref="9"/>
<integer value="0" id="8"/>
<reference ref="9"/>
@@ -1119,7 +1282,7 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<reference ref="9"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{705, 112}, {126, 173}}</string>
+ <string>{{543, -49}, {126, 173}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -1188,7 +1351,7 @@
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">39</int>
+ <int key="maxID">63</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -1217,8 +1380,8 @@
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.1+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
- <string key="className">SPFieldEditor</string>
- <string key="superclassName">NSWindow</string>
+ <string key="className">SPFieldEditorController</string>
+ <string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMutableArray" key="dict.sortedKeys">
@@ -1245,6 +1408,7 @@
<object class="NSMutableArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>editImage</string>
+ <string>editSheet</string>
<string>editSheetProgressBar</string>
<string>editSheetQuickLookButton</string>
<string>editSheetSegmentControl</string>
@@ -1265,11 +1429,12 @@
<string>id</string>
<string>id</string>
<string>id</string>
+ <string>id</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBDocumentRelativeSource</string>
- <string key="minorKey">../../Source/SPFieldEditor.h</string>
+ <string key="minorKey">../../Source/SPFieldEditorController.h</string>
</object>
</object>
</object>
diff --git a/Source/SPFieldEditor.h b/Source/SPFieldEditor.h
deleted file mode 100644
index 1271b483..00000000
--- a/Source/SPFieldEditor.h
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// SPFieldEditor.h
-// sequel-pro
-//
-// Created by Bibiko on 25.06.09.
-// Copyright 2009 __MyCompanyName__. All rights reserved.
-//
-
-#import <Cocoa/Cocoa.h>
-
-
-@interface SPFieldEditor : NSWindow {
-
- IBOutlet id editSheetProgressBar;
- IBOutlet id editSheetSegmentControl;
- IBOutlet id editSheetQuickLookButton;
- IBOutlet id editImage;
- IBOutlet id editTextView;
- IBOutlet id hexTextView;
- IBOutlet id editTextScrollView;
- IBOutlet id hexTextScrollView;
-
- id sheetEditData;
-
- NSString *stringValue;
-
- BOOL editSheetWillBeInitialized;
- BOOL isBlob;
- int quickLookCloseMarker;
- NSStringEncoding encoding;
-
-
-}
-
-- (IBAction)closeEditSheet:(id)sender;
-- (IBAction)openEditSheet:(id)sender;
-- (IBAction)saveEditSheet:(id)sender;
-- (IBAction)dropImage:(id)sender;
-- (IBAction)segmentControllerChanged:(id)sender;
-- (IBAction)quickLookFormatButton:(id)sender;
-- (IBAction)dropImage:(id)sender;
-
-- (void)initWithObject:(id)data usingEncoding:(NSStringEncoding)anEncoding isObjectBlob:(BOOL)isFieldBlob;
-
-- (void)processPasteImageData;
-- (void)processUpdatedImageData:(NSData *)data;
-
-- (id)editData;
-
-- (void)invokeQuickLookOfType:(NSString *)type treatAsText:(BOOL)isText;
-- (void)removeQuickLooksTempFile:(NSString*)aPath;
-
-- (BOOL)textView:(NSTextView *)aTextView doCommandBySelector:(SEL)aSelector;
-- (void)textViewDidChangeSelection:(NSNotification *)notification;
-
-- (void)clean;
-
-@end
diff --git a/Source/SPFieldEditorController.h b/Source/SPFieldEditorController.h
new file mode 100644
index 00000000..4867276f
--- /dev/null
+++ b/Source/SPFieldEditorController.h
@@ -0,0 +1,73 @@
+//
+// $Id: SPFieldEditorController.h 802 2009-06-03 20:46:57Z bibiko $
+//
+// SPFieldEditorController.m
+// sequel-pro
+//
+// Created by Hans-Jörg Bibiko on July 16, 2009
+//
+// 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/>
+
+#import <Cocoa/Cocoa.h>
+
+
+@interface SPFieldEditorController : NSWindowController {
+
+ IBOutlet id editSheetProgressBar;
+ IBOutlet id editSheetSegmentControl;
+ IBOutlet id editSheetQuickLookButton;
+ IBOutlet id editImage;
+ IBOutlet id editTextView;
+ IBOutlet id hexTextView;
+ IBOutlet id editTextScrollView;
+ IBOutlet id hexTextScrollView;
+ IBOutlet id editSheet;
+
+ id sheetEditData;
+
+ NSString *stringValue;
+
+ BOOL editSheetWillBeInitialized;
+ BOOL isBlob;
+ int quickLookCloseMarker;
+ NSStringEncoding encoding;
+
+
+}
+
+- (IBAction)closeEditSheet:(id)sender;
+- (IBAction)openEditSheet:(id)sender;
+- (IBAction)saveEditSheet:(id)sender;
+- (IBAction)dropImage:(id)sender;
+- (IBAction)segmentControllerChanged:(id)sender;
+- (IBAction)quickLookFormatButton:(id)sender;
+- (IBAction)dropImage:(id)sender;
+
+- (id)editWithObject:(id)data usingEncoding:(NSStringEncoding)anEncoding isObjectBlob:(BOOL)isFieldBlob withWindow:(NSWindow *)tableWindow;
+
+- (void)processPasteImageData;
+- (void)processUpdatedImageData:(NSData *)data;
+
+- (void)invokeQuickLookOfType:(NSString *)type treatAsText:(BOOL)isText;
+- (void)removeQuickLooksTempFile:(NSString*)aPath;
+
+- (BOOL)textView:(NSTextView *)aTextView doCommandBySelector:(SEL)aSelector;
+- (void)textViewDidChangeSelection:(NSNotification *)notification;
+
+- (void)clean;
+
+@end
diff --git a/Source/SPFieldEditor.m b/Source/SPFieldEditorController.m
index e8ac915f..ed2f941e 100644
--- a/Source/SPFieldEditor.m
+++ b/Source/SPFieldEditorController.m
@@ -1,12 +1,28 @@
//
-// SPFieldEditor.m
+// $Id: SPFieldEditorController.m 802 2009-06-03 20:46:57Z bibiko $
+//
+// SPFieldEditorController.m
// sequel-pro
//
-// Created by Bibiko on 25.06.09.
-// Copyright 2009 __MyCompanyName__. All rights reserved.
+// Created by Hans-Jörg Bibiko on July 16, 2009
+//
+// 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/>
-#import "SPFieldEditor.h"
+#import "SPFieldEditorController.h"
#import "SPStringAdditions.h"
#import "SPArrayAdditions.h"
#import "SPTextViewAdditions.h"
@@ -14,60 +30,69 @@
#import "QLPreviewPanel.h"
-@implementation SPFieldEditor
+@implementation SPFieldEditorController
-// - (id) init
-// {
-// [self clean];
-// self = [super init];
-// return self;
-// }
+- (id) init
+{
+ if ((self = [super initWithWindowNibName:@"FieldEditorSheet"])) {
+ // force the nib to be loaded
+ (void) [self window];
+ }
+ return self;
+
+}
-- (void)initWithObject:(id)data usingEncoding:(NSStringEncoding)anEncoding isObjectBlob:(BOOL)isFieldBlob
+- (void) dealloc
{
+ [super dealloc];
+}
+- (id)editWithObject:(id)data usingEncoding:(NSStringEncoding)anEncoding isObjectBlob:(BOOL)isFieldBlob withWindow:(NSWindow *)tableWindow
+{
+
[self clean];
-
// hide all views in editSheet
[hexTextView setHidden:YES];
[hexTextScrollView setHidden:YES];
[editImage setHidden:YES];
[editTextView setHidden:YES];
[editTextScrollView setHidden:YES];
-
+
editSheetWillBeInitialized = YES;
-
+
encoding = anEncoding;
-
+
isBlob = isFieldBlob;
-
+
// sheetEditData = data;
sheetEditData = [data copy];
- NSLog(@"bbb:%@", sheetEditData);
-
+
// hide all views in editSheet
[hexTextView setHidden:YES];
[hexTextScrollView setHidden:YES];
[editImage setHidden:YES];
[editTextView setHidden:YES];
[editTextScrollView setHidden:YES];
-
+
// Hide QuickLook button and text/iamge/hex control for text data
[editSheetQuickLookButton setHidden:(!isBlob)];
[editSheetSegmentControl setHidden:(!isBlob)];
-
+
+ [NSApp beginSheet:editSheet modalForWindow:tableWindow modalDelegate:self didEndSelector:nil contextInfo:nil];
+
[editSheetProgressBar startAnimation:self];
+
NSImage *image = nil;
if ( [sheetEditData isKindOfClass:[NSData class]] ) {
image = [[[NSImage alloc] initWithData:sheetEditData] autorelease];
-
+
// Set hex view to "" - load on demand only
[hexTextView setString:@""];
stringValue = [[NSString alloc] initWithData:sheetEditData encoding:encoding];
if (stringValue == nil)
stringValue = [[NSString alloc] initWithData:sheetEditData encoding:NSASCIIStringEncoding];
-
+
[hexTextView setHidden:NO];
[hexTextScrollView setHidden:NO];
[editImage setHidden:YES];
@@ -76,9 +101,9 @@
[editSheetSegmentControl setSelectedSegment:2];
} else {
stringValue = [sheetEditData retain];
-
+
[hexTextView setString:@""];
-
+
[hexTextView setHidden:YES];
[hexTextScrollView setHidden:YES];
[editImage setHidden:YES];
@@ -86,10 +111,10 @@
[editTextScrollView setHidden:NO];
[editSheetSegmentControl setSelectedSegment:0];
}
-
+
if (image) {
[editImage setImage:image];
-
+
[hexTextView setHidden:YES];
[hexTextScrollView setHidden:YES];
[editImage setHidden:NO];
@@ -101,8 +126,7 @@
}
if (stringValue) {
[editTextView setString:stringValue];
- NSLog(@"tv:%@", [editTextView class]);
-
+
if(image == nil) {
[hexTextView setHidden:YES];
[hexTextScrollView setHidden:YES];
@@ -110,34 +134,48 @@
[editTextView setHidden:NO];
[editTextScrollView setHidden:NO];
[editSheetSegmentControl setSelectedSegment:0];
- }
-
+ }
+
// Locate the caret in editTextView
// (to select all takes a bit time for large data)
[editTextView setSelectedRange:NSMakeRange(0,0)];
-
+
// Set focus
if(image == nil)
- [self makeFirstResponder:editTextView];
+ [editSheet makeFirstResponder:editTextView];
else
- [self makeFirstResponder:editImage];
-
+ [editSheet makeFirstResponder:editImage];
+
[stringValue release];
}
editSheetWillBeInitialized = NO;
-
+
[editSheetProgressBar stopAnimation:self];
-
-
+
+ // wait for editSheet
+ int code = [NSApp runModalForWindow:editSheet];
+
+ [NSApp endSheet:editSheet];
+ [editSheet orderOut:nil];
+
+
+ // For safety reasons inform QuickLook to quit
+ quickLookCloseMarker = 1;
+
+ if ( code ) return [sheetEditData autorelease];
+
+ [self clean];
+
+ return nil;
}
- (void)clean
{
[hexTextView setString:@""];
- [editTextView setString:@"AA"];
+ [editTextView setString:@""];
[editImage setImage:nil];
if ( sheetEditData ) {
[sheetEditData release];
@@ -145,13 +183,6 @@
}
-- (id)editData
-{
- NSLog(@"aa:%@", sheetEditData);
- return [sheetEditData copy];
-}
-
-
- (IBAction)closeEditSheet:(id)sender
{
[NSApp stopModalWithCode:[sender tag]];
@@ -164,11 +195,11 @@
if ( [panel runModal] == NSOKButton ) {
NSString *fileName = [panel filename];
NSString *contents = nil;
-
+
editSheetWillBeInitialized = YES;
-
+
[editSheetProgressBar startAnimation:self];
-
+
// free old data
if ( sheetEditData != nil ) {
[sheetEditData release];
@@ -176,15 +207,15 @@
// load new data/images
sheetEditData = [[NSData alloc] initWithContentsOfFile:fileName];
-
+
NSImage *image = [[NSImage alloc] initWithData:sheetEditData];
contents = [[NSString alloc] initWithData:sheetEditData encoding:encoding];
if (contents == nil)
contents = [[NSString alloc] initWithData:sheetEditData encoding:NSASCIIStringEncoding];
-
+
// set the image preview, string contents and hex representation
[editImage setImage:image];
-
+
if(contents)
[editTextView setString:contents];
@@ -194,7 +225,7 @@
// Load hex data only if user has already displayed them
if(![[hexTextView string] isEqualToString:@""])
[hexTextView setString:[sheetEditData dataToFormattedHexString]];
-
+
// If the image cell now contains a valid image, select the image view
if (image) {
[editSheetSegmentControl setSelectedSegment:1];
@@ -203,8 +234,8 @@
[editImage setHidden:NO];
[editTextView setHidden:YES];
[editTextScrollView setHidden:YES];
-
- // Otherwise deselect the image view
+
+ // Otherwise deselect the image view
} else {
[editSheetSegmentControl setSelectedSegment:0];
[hexTextView setHidden:YES];
@@ -229,34 +260,34 @@
{
switch([sender selectedSegment]){
case 0: // text
- [editTextView setHidden:NO];
- [editTextScrollView setHidden:NO];
- [editImage setHidden:YES];
- [hexTextView setHidden:YES];
- [hexTextScrollView setHidden:YES];
- // [self makeFirstResponder:editTextView];
- break;
+ [editTextView setHidden:NO];
+ [editTextScrollView setHidden:NO];
+ [editImage setHidden:YES];
+ [hexTextView setHidden:YES];
+ [hexTextScrollView setHidden:YES];
+ // [self makeFirstResponder:editTextView];
+ break;
case 1: // image
- [editTextView setHidden:YES];
- [editTextScrollView setHidden:YES];
- [editImage setHidden:NO];
- [hexTextView setHidden:YES];
- [hexTextScrollView setHidden:YES];
- // [self makeFirstResponder:editImage];
- break;
+ [editTextView setHidden:YES];
+ [editTextScrollView setHidden:YES];
+ [editImage setHidden:NO];
+ [hexTextView setHidden:YES];
+ [hexTextScrollView setHidden:YES];
+ // [self makeFirstResponder:editImage];
+ break;
case 2: // hex - load on demand
- if([sheetEditData length] && [[hexTextView string] isEqualToString:@""]) {
- [editSheetProgressBar startAnimation:self];
- [hexTextView setString:[sheetEditData dataToFormattedHexString]];
- [editSheetProgressBar stopAnimation:self];
- }
- [editTextView setHidden:YES];
- [editTextScrollView setHidden:YES];
- [editImage setHidden:YES];
- [hexTextView setHidden:NO];
- [hexTextScrollView setHidden:NO];
- // [self makeFirstResponder:hexTextView];
- break;
+ if([sheetEditData length] && [[hexTextView string] isEqualToString:@""]) {
+ [editSheetProgressBar startAnimation:self];
+ [hexTextView setString:[sheetEditData dataToFormattedHexString]];
+ [editSheetProgressBar stopAnimation:self];
+ }
+ [editTextView setHidden:YES];
+ [editTextScrollView setHidden:YES];
+ [editImage setHidden:YES];
+ [hexTextView setHidden:NO];
+ [hexTextScrollView setHidden:NO];
+ // [self makeFirstResponder:hexTextView];
+ break;
}
}
@@ -268,26 +299,26 @@
NSSavePanel *panel = [NSSavePanel savePanel];
if ( [panel runModal] == NSOKButton ) {
-
+
[editSheetProgressBar startAnimation:self];
-
+
NSString *fileName = [panel filename];
// Write binary field types directly to the file
//// || [editSheetBinaryButton state] == NSOnState
if ( [sheetEditData isKindOfClass:[NSData class]] ) {
[sheetEditData writeToFile:fileName atomically:YES];
-
- // Write other field types' representations to the file via the current encoding
+
+ // Write other field types' representations to the file via the current encoding
} else {
[[sheetEditData description] writeToFile:fileName
- atomically:YES
- encoding:encoding
- error:NULL];
+ atomically:YES
+ encoding:encoding
+ error:NULL];
}
-
+
[editSheetProgressBar stopAnimation:self];
-
+
}
}
@@ -315,34 +346,34 @@
*/
- (void)invokeQuickLookOfType:(NSString *)type treatAsText:(BOOL)isText
{
-
+
// Load private framework
if([[NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/QuickLookUI.framework"] load]) {
-
+
[editSheetProgressBar startAnimation:self];
-
+
// Create a temporary file name to store the data as file
// since QuickLook only works on files.
NSString *tmpFileName = [NSString stringWithFormat:@"/tmp/SequelProQuickLook.%@", type];
-
+
// if data are binary
if ( [sheetEditData isKindOfClass:[NSData class]] || !isText) {
[sheetEditData writeToFile:tmpFileName atomically:YES];
-
- // write other field types' representations to the file via the current encoding
+
+ // write other field types' representations to the file via the current encoding
} else {
[[sheetEditData description] writeToFile:tmpFileName
- atomically:YES
- encoding:encoding
- error:NULL];
+ atomically:YES
+ encoding:encoding
+ error:NULL];
}
-
+
id ql = [NSClassFromString(@"QLPreviewPanel") sharedPreviewPanel];
-
+
// Init QuickLook
[[ql delegate] setDelegate:self];
[ql setURLs:[NSArray arrayWithObject:
- [NSURL fileURLWithPath:tmpFileName]] currentIndex:0 preservingDisplayState:YES];
+ [NSURL fileURLWithPath:tmpFileName]] currentIndex:0 preservingDisplayState:YES];
// TODO: No interaction with iChat and iPhoto due to .scriptSuite warning:
// for superclass of class 'MainController' in suite 'Sequel Pro': 'NSCoreSuite.NSAbstractObject' is not a valid class name.
[ql setShowsAddToiPhotoButton:NO];
@@ -353,12 +384,12 @@
[ql setEnableDragNDrop:NO];
// Order out QuickLook with animation effect according to self:previewPanel:frameForURL:
[ql makeKeyAndOrderFrontWithEffect:2]; // 1 = fade in
-
+
// quickLookCloseMarker == 1 break the modal session
quickLookCloseMarker = 0;
-
+
[editSheetProgressBar stopAnimation:self];
-
+
// Run QuickLook in its own modal seesion for event handling
NSModalSession session = [NSApp beginModalSessionForWindow:ql];
for (;;) {
@@ -368,11 +399,11 @@
|| ![ql isVisible])
break;
[[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode
- beforeDate:[NSDate distantFuture]];
-
+ beforeDate:[NSDate distantFuture]];
+
}
[NSApp endModalSession:session];
-
+
// Remove temp file after closing the sheet to allow double-click event at the QuickLook preview.
// The afterDelay: time is a kind of dummy, because after double-clicking the model session loop
// will break (ql not visible) and returns the event handling back to the editSheet which by itself
@@ -380,9 +411,9 @@
[self performSelector:@selector(removeQuickLooksTempFile:) withObject:tmpFileName afterDelay:2];
// [[NSFileManager defaultManager] removeItemAtPath:tmpFileName error:NULL];
-
+
}
-
+
}
- (void)removeQuickLooksTempFile:(NSString*)aPath
@@ -395,49 +426,49 @@
// If an empty frame is returned then the panel will fade in/out instead
- (NSRect)previewPanel:(NSPanel*)panel frameForURL:(NSURL*)URL
{
-
+
// Close modal session defined in invokeQuickLookOfType:
// if user closes the QuickLook view
quickLookCloseMarker = 1;
-
+
// Return the App's middle point
NSRect mwf = [[NSApp mainWindow] frame];
return NSMakeRect(
- mwf.origin.x+mwf.size.width/2,
- mwf.origin.y+mwf.size.height/2,
- 5, 5);
-
+ mwf.origin.x+mwf.size.width/2,
+ mwf.origin.y+mwf.size.height/2,
+ 5, 5);
+
}
-(void)processPasteImageData
{
editSheetWillBeInitialized = YES;
-
+
NSImage *image = nil;
image = [[[NSImage alloc] initWithPasteboard:[NSPasteboard generalPasteboard]] autorelease];
if (image) {
-
+
if (nil != sheetEditData) [sheetEditData release];
-
+
[editImage setImage:image];
-
+
sheetEditData = [[NSData alloc] initWithData:[image TIFFRepresentationUsingCompression:NSTIFFCompressionLZW factor:1]];
-
+
NSString *contents = [[NSString alloc] initWithData:sheetEditData encoding:encoding];
if (contents == nil)
contents = [[NSString alloc] initWithData:sheetEditData encoding:NSASCIIStringEncoding];
-
+
// Set the string contents and hex representation
if(contents)
[editTextView setString:contents];
if(![[hexTextView string] isEqualToString:@""])
[hexTextView setString:[sheetEditData dataToFormattedHexString]];
-
+
[contents release];
}
-
+
editSheetWillBeInitialized = NO;
}
/*
@@ -446,11 +477,11 @@
*/
- (void)processUpdatedImageData:(NSData *)data
{
-
+
editSheetWillBeInitialized = YES;
-
+
if (nil != sheetEditData) [sheetEditData release];
-
+
// If the image was not processed, set a blank string as the contents of the edit and hex views.
if ( data == nil ) {
sheetEditData = [[NSData alloc] init];
@@ -459,13 +490,13 @@
editSheetWillBeInitialized = NO;
return;
}
-
+
// Process the provided image
sheetEditData = [[NSData alloc] initWithData:data];
NSString *contents = [[NSString alloc] initWithData:data encoding:encoding];
if (contents == nil)
contents = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
-
+
// Set the string contents and hex representation
if(contents)
[editTextView setString:contents];
@@ -478,7 +509,7 @@
- (IBAction)dropImage:(id)sender
{
-
+
// If the image was deleted, set a blank string as the contents of the edit and hex views.
// The actual dropped image processing is handled by processUpdatedImageData:.
if ( [editImage image] == nil ) {
@@ -495,11 +526,11 @@
invoked when the user changes the string in the editSheet
*/
{
-
+
// Do nothing if user really didn't changed text (e.g. for font size changing return)
if(editSheetWillBeInitialized || ([[[notification object] textStorage] changeInLength]==0))
return;
-
+
// clear the image and hex (since i doubt someone can "type" a gif)
[editImage setImage:nil];
[hexTextView setString:@""];
@@ -511,7 +542,7 @@
// set edit data to text
sheetEditData = [[editTextView string] retain];
-
+
}
// TextView delegate methods
diff --git a/sequel-pro.xcodeproj/project.pbxproj b/sequel-pro.xcodeproj/project.pbxproj
index 5746922d..dc874a9f 100644
--- a/sequel-pro.xcodeproj/project.pbxproj
+++ b/sequel-pro.xcodeproj/project.pbxproj
@@ -160,7 +160,7 @@
BC2C16D40FEBEDF10003993B /* SPDataAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = BC2C16D30FEBEDF10003993B /* SPDataAdditions.m */; };
BC2C8E220FA8C2DB008468C7 /* sequel-pro-mysql-help-template.html in Resources */ = {isa = PBXBuildFile; fileRef = BC2C8E210FA8C2DB008468C7 /* sequel-pro-mysql-help-template.html */; };
BC8C8532100E0A8000D7A129 /* SPTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC8C8531100E0A8000D7A129 /* SPTableView.m */; };
- BC99296E0FF3D001008B79AB /* SPFieldEditor.m in Sources */ = {isa = PBXBuildFile; fileRef = BC99296D0FF3D001008B79AB /* SPFieldEditor.m */; };
+ BC9F0881100FCF2C00A80D32 /* SPFieldEditorController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC9F0880100FCF2C00A80D32 /* SPFieldEditorController.m */; };
BCA6F631100FA7D700E80253 /* FieldEditorSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCA6F62F100FA7D700E80253 /* FieldEditorSheet.xib */; };
BCD0AD490FBBFC340066EA5C /* SPSQLTokenizer.l in Sources */ = {isa = PBXBuildFile; fileRef = BCD0AD480FBBFC340066EA5C /* SPSQLTokenizer.l */; };
/* End PBXBuildFile section */
@@ -457,8 +457,8 @@
BC2C8E210FA8C2DB008468C7 /* sequel-pro-mysql-help-template.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "sequel-pro-mysql-help-template.html"; sourceTree = "<group>"; };
BC8C8530100E0A8000D7A129 /* SPTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPTableView.h; sourceTree = "<group>"; };
BC8C8531100E0A8000D7A129 /* SPTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPTableView.m; sourceTree = "<group>"; };
- BC99296C0FF3D001008B79AB /* SPFieldEditor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPFieldEditor.h; sourceTree = "<group>"; };
- BC99296D0FF3D001008B79AB /* SPFieldEditor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPFieldEditor.m; sourceTree = "<group>"; };
+ BC9F087F100FCF2C00A80D32 /* SPFieldEditorController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPFieldEditorController.h; sourceTree = "<group>"; };
+ BC9F0880100FCF2C00A80D32 /* SPFieldEditorController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPFieldEditorController.m; sourceTree = "<group>"; };
BCA6F630100FA7D700E80253 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/FieldEditorSheet.xib; sourceTree = "<group>"; };
BCD0AD480FBBFC340066EA5C /* SPSQLTokenizer.l */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.lex; path = SPSQLTokenizer.l; sourceTree = "<group>"; };
BCD0AD4A0FBBFC480066EA5C /* SPSQLTokenizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPSQLTokenizer.h; sourceTree = "<group>"; };
@@ -671,6 +671,8 @@
170088CD0F5870E200DD6B51 /* SPQueryConsole.m */,
B57747D50F7A8978003B34F9 /* SPPreferenceController.h */,
B57747D30F7A8974003B34F9 /* SPPreferenceController.m */,
+ BC9F087F100FCF2C00A80D32 /* SPFieldEditorController.h */,
+ BC9F0880100FCF2C00A80D32 /* SPFieldEditorController.m */,
);
name = Controllers;
sourceTree = "<group>";
@@ -757,8 +759,6 @@
5841423E0F97E11000A34B47 /* NoodleLineNumberView.m */,
BC1847E80FE6EC8400094BFB /* SPEditSheetTextView.h */,
BC1847E90FE6EC8400094BFB /* SPEditSheetTextView.m */,
- BC99296C0FF3D001008B79AB /* SPFieldEditor.h */,
- BC99296D0FF3D001008B79AB /* SPFieldEditor.m */,
);
name = GUI;
sourceTree = "<group>";
@@ -1275,9 +1275,9 @@
29A1B7E50FD1293A000B88E8 /* SPPrintAccessory.m in Sources */,
BC1847EA0FE6EC8400094BFB /* SPEditSheetTextView.m in Sources */,
BC2C16D40FEBEDF10003993B /* SPDataAdditions.m in Sources */,
- BC99296E0FF3D001008B79AB /* SPFieldEditor.m in Sources */,
5822C9B51000DB2400DCC3D6 /* SPConnectionController.m in Sources */,
BC8C8532100E0A8000D7A129 /* SPTableView.m in Sources */,
+ BC9F0881100FCF2C00A80D32 /* SPFieldEditorController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};