diff options
-rw-r--r-- | Interfaces/English.lproj/DBView.xib | 227 | ||||
-rw-r--r-- | Interfaces/English.lproj/EncodingPopupView.xib | 46 | ||||
-rw-r--r-- | Source/SPAppController.h | 2 | ||||
-rw-r--r-- | Source/SPAppController.m | 50 | ||||
-rw-r--r-- | Source/SPEncodingPopupAccessory.h | 41 | ||||
-rw-r--r-- | Source/SPEncodingPopupAccessory.m | 118 | ||||
-rw-r--r-- | Source/TableDocument.h | 4 | ||||
-rw-r--r-- | Source/TableDocument.m | 87 | ||||
-rw-r--r-- | sequel-pro.xcodeproj/project.pbxproj | 6 |
9 files changed, 268 insertions, 313 deletions
diff --git a/Interfaces/English.lproj/DBView.xib b/Interfaces/English.lproj/DBView.xib index 38e8b39d..cea60e1f 100644 --- a/Interfaces/English.lproj/DBView.xib +++ b/Interfaces/English.lproj/DBView.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="6305"/> </object> <object class="NSArray" key="IBDocument.PluginDependencies"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -47,7 +46,7 @@ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string> <string key="NSWindowContentMinSize">{780, 480}</string> <object class="NSView" key="NSWindowView" id="579726586"> - <reference key="NSNextResponder"/> + <nil key="NSNextResponder"/> <int key="NSvFlags">256</int> <object class="NSMutableArray" key="NSSubviews"> <bool key="EncodedWithXMLCoder">YES</bool> @@ -186,7 +185,6 @@ </object> <string key="NSFrameSize">{212, 26}</string> <reference key="NSSuperview" ref="199860064"/> - <reference key="NSNextKeyView" ref="643201879"/> <reference key="NSDocView" ref="643201879"/> <object class="NSColor" key="NSBGColor" id="529261656"> <int key="NSColorSpace">6</int> @@ -222,7 +220,6 @@ </object> <string key="NSFrameSize">{212, 26}</string> <reference key="NSSuperview" ref="801427893"/> - <reference key="NSNextKeyView" ref="588922296"/> <int key="NSsFlags">0</int> <reference key="NSVScroller" ref="540853896"/> <reference key="NSHScroller" ref="566705316"/> @@ -337,7 +334,6 @@ </object> <string key="NSFrameSize">{212, 354}</string> <reference key="NSSuperview" ref="233472824"/> - <reference key="NSNextKeyView" ref="251040077"/> <reference key="NSDocView" ref="251040077"/> <object class="NSColor" key="NSBGColor" id="1024678221"> <int key="NSColorSpace">6</int> @@ -369,7 +365,6 @@ </object> <string key="NSFrameSize">{212, 354}</string> <reference key="NSSuperview" ref="1017775084"/> - <reference key="NSNextKeyView" ref="73685676"/> <int key="NSsFlags">528</int> <reference key="NSVScroller" ref="693168867"/> <reference key="NSHScroller" ref="656188692"/> @@ -494,7 +489,6 @@ </object> <string key="NSFrameSize">{212, 145}</string> <reference key="NSSuperview" ref="298226231"/> - <reference key="NSNextKeyView" ref="347093764"/> <reference key="NSDocView" ref="347093764"/> <reference key="NSBGColor" ref="1024678221"/> <int key="NScvFlags">6</int> @@ -521,7 +515,6 @@ </object> <string key="NSFrameSize">{212, 145}</string> <reference key="NSSuperview" ref="192579410"/> - <reference key="NSNextKeyView" ref="685057119"/> <int key="NSsFlags">512</int> <reference key="NSVScroller" ref="245346414"/> <reference key="NSHScroller" ref="353686052"/> @@ -2128,7 +2121,6 @@ </object> <string key="NSFrame">{{1, 17}, {688, 455}}</string> <reference key="NSSuperview" ref="33038697"/> - <reference key="NSNextKeyView" ref="22576329"/> <reference key="NSDocView" ref="22576329"/> <reference key="NSBGColor" ref="1024678221"/> <int key="NScvFlags">2</int> @@ -2162,7 +2154,6 @@ </object> <string key="NSFrame">{{1, 0}, {688, 17}}</string> <reference key="NSSuperview" ref="33038697"/> - <reference key="NSNextKeyView" ref="457166030"/> <reference key="NSDocView" ref="457166030"/> <reference key="NSBGColor" ref="1024678221"/> <int key="NScvFlags">4</int> @@ -2171,7 +2162,6 @@ </object> <string key="NSFrame">{{6, 32}, {690, 473}}</string> <reference key="NSSuperview" ref="1013108064"/> - <reference key="NSNextKeyView" ref="545438501"/> <int key="NSsFlags">562</int> <reference key="NSVScroller" ref="398797698"/> <reference key="NSHScroller" ref="178353583"/> @@ -2242,8 +2232,8 @@ <bool key="NS.raise.underflow">YES</bool> <bool key="NS.raise.dividebyzero">YES</bool> </object> - <string key="NS.decimal">.</string> - <string key="NS.thousand">,</string> + <string key="NS.decimal">,</string> + <string key="NS.thousand">.</string> <bool key="NS.hasthousands">NO</bool> <bool key="NS.localized">YES</bool> <bool key="NS.allowsfloats">NO</bool> @@ -3238,7 +3228,7 @@ <reference key="NSControlView" ref="363916571"/> <int key="NSButtonFlags">-2042609409</int> <int key="NSButtonFlags2">35</int> - <object class="NSCustomResource" key="NSNormalImage"> + <object class="NSCustomResource" key="NSNormalImage" id="607934853"> <string key="NSClassName">NSImage</string> <string key="NSResourceName">button_action</string> </object> @@ -3253,10 +3243,7 @@ <string key="NSKeyEquiv"/> <int key="NSKeyEquivModMask">1048576</int> <int key="NSMnemonicLoc">2147483647</int> - <object class="NSCustomResource" key="NSImage"> - <string key="NSClassName">NSImage</string> - <string key="NSResourceName">button_action</string> - </object> + <reference key="NSImage" ref="607934853"/> <string key="NSAction">_popUpItemAction:</string> <reference key="NSTarget" ref="984501775"/> </object> @@ -4690,7 +4677,6 @@ </object> </object> <string key="NSFrameSize">{944, 550}</string> - <reference key="NSSuperview"/> </object> <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string> <string key="NSMinSize">{780, 502}</string> @@ -11296,98 +11282,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string key="NSFrameSize">{269, 32}</string> <string key="NSClassName">NSView</string> </object> - <object class="NSCustomView" id="1012120233"> - <nil key="NSNextResponder"/> - <int key="NSvFlags">268</int> - <object class="NSMutableArray" key="NSSubviews"> - <bool key="EncodedWithXMLCoder">YES</bool> - <object class="NSTextField" id="561637557"> - <reference key="NSNextResponder" ref="1012120233"/> - <int key="NSvFlags">268</int> - <string key="NSFrame">{{6, 10}, {180, 14}}</string> - <reference key="NSSuperview" ref="1012120233"/> - <bool key="NSEnabled">YES</bool> - <object class="NSTextFieldCell" key="NSCell" id="176323924"> - <int key="NSCellFlags">68288064</int> - <int key="NSCellFlags2">272761856</int> - <string key="NSContents">File Encoding:</string> - <reference key="NSSupport" ref="26"/> - <reference key="NSControlView" ref="561637557"/> - <reference key="NSBackgroundColor" ref="62854682"/> - <reference key="NSTextColor" ref="454249633"/> - </object> - </object> - <object class="NSPopUpButton" id="262386526"> - <reference key="NSNextResponder" ref="1012120233"/> - <int key="NSvFlags">268</int> - <string key="NSFrame">{{84, 5}, {180, 22}}</string> - <reference key="NSSuperview" ref="1012120233"/> - <bool key="NSEnabled">YES</bool> - <object class="NSPopUpButtonCell" key="NSCell" id="169419191"> - <int key="NSCellFlags">-1539178944</int> - <int key="NSCellFlags2">133120</int> - <reference key="NSSupport" ref="26"/> - <reference key="NSControlView" ref="262386526"/> - <int key="NSButtonFlags">109199615</int> - <int key="NSButtonFlags2">129</int> - <string key="NSAlternateContents"/> - <string key="NSKeyEquivalent"/> - <int key="NSPeriodicDelay">400</int> - <int key="NSPeriodicInterval">75</int> - <object class="NSMenuItem" key="NSMenuItem" id="704879172"> - <reference key="NSMenu" ref="597592082"/> - <string key="NSTitle">Item 1</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <int key="NSState">1</int> - <reference key="NSOnImage" ref="450876295"/> - <reference key="NSMixedImage" ref="414351669"/> - <string key="NSAction">_popUpItemAction:</string> - <reference key="NSTarget" ref="169419191"/> - </object> - <bool key="NSMenuItemRespectAlignment">YES</bool> - <object class="NSMenu" key="NSMenu" id="597592082"> - <string key="NSTitle">OtherViews</string> - <object class="NSMutableArray" key="NSMenuItems"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="704879172"/> - <object class="NSMenuItem" id="498019985"> - <reference key="NSMenu" ref="597592082"/> - <string key="NSTitle">Item 2</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="450876295"/> - <reference key="NSMixedImage" ref="414351669"/> - <string key="NSAction">_popUpItemAction:</string> - <int key="NSTag">1</int> - <reference key="NSTarget" ref="169419191"/> - </object> - <object class="NSMenuItem" id="384926559"> - <reference key="NSMenu" ref="597592082"/> - <string key="NSTitle">Item 3</string> - <string key="NSKeyEquiv"/> - <int key="NSKeyEquivModMask">1048576</int> - <int key="NSMnemonicLoc">2147483647</int> - <reference key="NSOnImage" ref="450876295"/> - <reference key="NSMixedImage" ref="414351669"/> - <string key="NSAction">_popUpItemAction:</string> - <int key="NSTag">2</int> - <reference key="NSTarget" ref="169419191"/> - </object> - </object> - </object> - <int key="NSPreferredEdge">1</int> - <bool key="NSUsesItemFromMenu">YES</bool> - <bool key="NSAltersState">YES</bool> - <int key="NSArrowPosition">2</int> - </object> - </object> - </object> - <string key="NSFrameSize">{271, 34}</string> - <string key="NSClassName">NSView</string> - </object> <object class="NSCustomView" id="730777562"> <nil key="NSNextResponder"/> <int key="NSvFlags">265</int> @@ -15037,22 +14931,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <int key="connectionID">6323</int> </object> <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">encodingAccessoryView</string> - <reference key="source" ref="427689665"/> - <reference key="destination" ref="1012120233"/> - </object> - <int key="connectionID">6331</int> - </object> - <object class="IBConnectionRecord"> - <object class="IBOutletConnection" key="connection"> - <string key="label">encodingPopUp</string> - <reference key="source" ref="427689665"/> - <reference key="destination" ref="262386526"/> - </object> - <int key="connectionID">6338</int> - </object> - <object class="IBConnectionRecord"> <object class="IBActionConnection" key="connection"> <string key="label">copy:</string> <reference key="source" ref="22576329"/> @@ -21206,75 +21084,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <reference key="parent" ref="168035361"/> </object> <object class="IBObjectRecord"> - <int key="objectID">6325</int> - <reference key="object" ref="1012120233"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="561637557"/> - <reference ref="262386526"/> - </object> - <reference key="parent" ref="1043842561"/> - <string key="objectName">Encoding Accessory</string> - </object> - <object class="IBObjectRecord"> - <int key="objectID">6328</int> - <reference key="object" ref="561637557"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="176323924"/> - </object> - <reference key="parent" ref="1012120233"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">6329</int> - <reference key="object" ref="176323924"/> - <reference key="parent" ref="561637557"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">6332</int> - <reference key="object" ref="262386526"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="169419191"/> - </object> - <reference key="parent" ref="1012120233"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">6333</int> - <reference key="object" ref="169419191"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="597592082"/> - </object> - <reference key="parent" ref="262386526"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">6334</int> - <reference key="object" ref="597592082"/> - <object class="NSMutableArray" key="children"> - <bool key="EncodedWithXMLCoder">YES</bool> - <reference ref="704879172"/> - <reference ref="498019985"/> - <reference ref="384926559"/> - </object> - <reference key="parent" ref="169419191"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">6335</int> - <reference key="object" ref="704879172"/> - <reference key="parent" ref="597592082"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">6336</int> - <reference key="object" ref="498019985"/> - <reference key="parent" ref="597592082"/> - </object> - <object class="IBObjectRecord"> - <int key="objectID">6337</int> - <reference key="object" ref="384926559"/> - <reference key="parent" ref="597592082"/> - </object> - <object class="IBObjectRecord"> <int key="objectID">6340</int> <reference key="object" ref="870308047"/> <reference key="parent" ref="481018596"/> @@ -22618,17 +22427,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string>6305.IBPluginDependency</string> <string>6317.IBPluginDependency</string> <string>6318.IBPluginDependency</string> - <string>6325.IBEditorWindowLastContentRect</string> - <string>6325.IBPluginDependency</string> - <string>6328.IBPluginDependency</string> - <string>6329.IBPluginDependency</string> - <string>6332.IBPluginDependency</string> - <string>6333.IBPluginDependency</string> - <string>6334.IBEditorWindowLastContentRect</string> - <string>6334.IBPluginDependency</string> - <string>6335.IBPluginDependency</string> - <string>6336.IBPluginDependency</string> - <string>6337.IBPluginDependency</string> <string>6340.IBPluginDependency</string> <string>6341.IBPluginDependency</string> <string>6343.IBPluginDependency</string> @@ -23677,9 +23475,9 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <reference ref="9"/> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>{{280, 178}, {944, 550}}</string> + <string>{{78, 178}, {944, 550}}</string> <boolean value="NO"/> - <string>{{280, 178}, {944, 550}}</string> + <string>{{78, 178}, {944, 550}}</string> <reference ref="9"/> <reference ref="9"/> <string>{{62, 352}, {845, 504}}</string> @@ -24436,17 +24234,6 @@ aGUgYWN0aXZlIHNlbGVjdGlvbiAo4oyl4oyYUik</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>{{736, 891}, {271, 34}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>{{769, 837}, {180, 54}}</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> - <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> <string>com.apple.InterfaceBuilder.CocoaPlugin</string> diff --git a/Interfaces/English.lproj/EncodingPopupView.xib b/Interfaces/English.lproj/EncodingPopupView.xib index b7265b31..4effe3f9 100644 --- a/Interfaces/English.lproj/EncodingPopupView.xib +++ b/Interfaces/English.lproj/EncodingPopupView.xib @@ -26,7 +26,7 @@ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000"> <bool key="EncodedWithXMLCoder">YES</bool> <object class="NSCustomObject" id="1001"> - <string key="NSClassName">NSObject</string> + <string key="NSClassName">SPEncodingPopupAccessory</string> </object> <object class="NSCustomObject" id="1003"> <string key="NSClassName">FirstResponder</string> @@ -157,6 +157,22 @@ <object class="IBObjectContainer" key="IBDocument.Objects"> <object class="NSMutableArray" key="connectionRecords"> <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">encodingPopUp</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="1054695"/> + </object> + <int key="connectionID">10</int> + </object> + <object class="IBConnectionRecord"> + <object class="IBOutletConnection" key="connection"> + <string key="label">encodingAccessoryView</string> + <reference key="source" ref="1001"/> + <reference key="destination" ref="894430783"/> + </object> + <int key="connectionID">11</int> + </object> </object> <object class="IBMutableOrderedSet" key="objectRecords"> <object class="NSArray" key="orderedObjects"> @@ -315,9 +331,33 @@ </object> </object> <nil key="sourceID"/> - <int key="maxID">9</int> + <int key="maxID">11</int> + </object> + <object class="IBClassDescriber" key="IBDocument.Classes"> + <object class="NSMutableArray" key="referencedPartialClassDescriptions"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="IBPartialClassDescription"> + <string key="className">SPEncodingPopupAccessory</string> + <object class="NSMutableDictionary" key="outlets"> + <bool key="EncodedWithXMLCoder">YES</bool> + <object class="NSMutableArray" key="dict.sortedKeys"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>encodingAccessoryView</string> + <string>encodingPopUp</string> + </object> + <object class="NSMutableArray" key="dict.values"> + <bool key="EncodedWithXMLCoder">YES</bool> + <string>id</string> + <string>id</string> + </object> + </object> + <object class="IBClassDescriptionSource" key="sourceIdentifier"> + <string key="majorKey">IBUserSource</string> + <string key="minorKey"/> + </object> + </object> + </object> </object> - <object class="IBClassDescriber" key="IBDocument.Classes"/> <int key="IBDocument.localizationMode">0</int> <nil key="IBDocument.LastKnownRelativeProjectPath"/> <int key="IBDocument.defaultPropertyAccessControl">3</int> diff --git a/Source/SPAppController.h b/Source/SPAppController.h index d328d353..6a5f9b6a 100644 --- a/Source/SPAppController.h +++ b/Source/SPAppController.h @@ -32,6 +32,8 @@ BOOL isNewFavorite; SPPreferenceController *prefsController; + + id encodingPopUp; } // IBAction methods diff --git a/Source/SPAppController.m b/Source/SPAppController.m index 2dba0c68..97029a68 100644 --- a/Source/SPAppController.m +++ b/Source/SPAppController.m @@ -27,6 +27,7 @@ #import "SPAppController.h" #import "TableDocument.h" #import "SPPreferenceController.h" +#import "SPEncodingPopupAccessory.h" #import <Sparkle/Sparkle.h> @@ -47,6 +48,23 @@ return self; } + +- (void)panelSelectionDidChange:(id)sender +{ + + if([sender isKindOfClass:[NSOpenPanel class]]) { + if([[[[sender filename] pathExtension] lowercaseString] isEqualToString:@"sql"]) { + [encodingPopUp setEnabled:YES]; + [sender setAllowsMultipleSelection:NO]; + } else { + [encodingPopUp setEnabled:NO]; + [sender setAllowsMultipleSelection:YES]; + } + } + +} + + - (IBAction)openConnectionSheet:(id)sender { NSOpenPanel *panel = [NSOpenPanel openPanel]; @@ -55,18 +73,21 @@ [panel setCanChooseDirectories:NO]; [panel setAllowsMultipleSelection:YES]; [panel setResolvesAliases:YES]; - // [panel setAccessoryView:encodingAccessoryView]; - // Set up encoding list - // [encodingPopUp setEnabled:NO]; - + // // Set up encoding list + // If no lastSqlFileEncoding in prefs set it to UTF-8 if(![[NSUserDefaults standardUserDefaults] integerForKey:@"lastSqlFileEncoding"]) { [[NSUserDefaults standardUserDefaults] setInteger:4 forKey:@"lastSqlFileEncoding"]; [[NSUserDefaults standardUserDefaults] synchronize]; } - // [self setupPopUp:encodingPopUp selectedEncoding:[prefs integerForKey:@"lastSqlFileEncoding"] withDefaultEntry:NO]; + [panel setAccessoryView:[SPEncodingPopupAccessory encodingAccessory:[[NSUserDefaults standardUserDefaults] integerForKey:@"lastSqlFileEncoding"] + includeDefaultEntry:NO encodingPopUp:&encodingPopUp]]; + + [encodingPopUp setEnabled:NO]; + + // [self setupPopUp:encodingPopUp selectedEncoding:[[NSUserDefaults standardUserDefaults] integerForKey:@"lastSqlFileEncoding"] withDefaultEntry:NO]; int returnCode = [panel runModalForDirectory:nil file:nil types:[NSArray arrayWithObjects:@"spf", @"sql", nil]]; if( returnCode ) @@ -86,6 +107,11 @@ // Opens a sql file and insert its content into the Custom Query editor if([[[filename pathExtension] lowercaseString] isEqualToString:@"sql"]) { + // if encodingPopUp is defined the filename comes from an openPanel and + // the encodingPopUp contains the chosen encoding; otherwise autodetect encoding + if(encodingPopUp) + [[NSUserDefaults standardUserDefaults] setInteger:[[encodingPopUp selectedItem] tag] forKey:@"lastSqlFileEncoding"]; + // Check if at least one document exists if (![[[NSDocumentController sharedDocumentController] documents] count]) { @@ -94,7 +120,19 @@ // Manually open a new document, setting SPAppController as sender to trigger autoconnection if (firstTableDocument = [[NSDocumentController sharedDocumentController] makeUntitledDocumentOfType:@"DocumentType" error:nil]) { [firstTableDocument setShouldAutomaticallyConnect:NO]; - [firstTableDocument initQueryEditorWithString:[self contentOfFile:filename]]; + if(encodingPopUp) { + NSError *error = nil; + NSString *content = [NSString stringWithContentsOfFile:filename encoding:[[encodingPopUp selectedItem] tag] error:&error]; + if(error != nil) { + NSAlert *errorAlert = [NSAlert alertWithError:error]; + [errorAlert runModal]; + return; + } + [firstTableDocument initQueryEditorWithString:content]; + + } + else + [firstTableDocument initQueryEditorWithString:[self contentOfFile:filename]]; [[NSDocumentController sharedDocumentController] addDocument:firstTableDocument]; [firstTableDocument makeWindowControllers]; [firstTableDocument showWindows]; diff --git a/Source/SPEncodingPopupAccessory.h b/Source/SPEncodingPopupAccessory.h new file mode 100644 index 00000000..7f594095 --- /dev/null +++ b/Source/SPEncodingPopupAccessory.h @@ -0,0 +1,41 @@ +// +// $Id$ +// +// SPEncodingPopupAccessory.h +// sequel-pro +// +// Created by Hans-Jörg Bibiko on August 22, 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> + +enum { + NoStringEncoding = 0xFFFFFFFF +}; + +@interface SPEncodingPopupAccessory : NSObject { +@public + IBOutlet NSPopUpButton *encodingPopUp; + IBOutlet NSView *encodingAccessoryView; +} + ++ (NSArray *)enabledEncodings; ++ (NSView *)encodingAccessory:(NSUInteger)encoding includeDefaultEntry:(BOOL)includeDefaultItem encodingPopUp:(NSPopUpButton **)popup; ++ (void)setupPopUp:(NSPopUpButton *)popup selectedEncoding:(NSUInteger)selectedEncoding withDefaultEntry:(BOOL)includeDefaultItem; + +@end diff --git a/Source/SPEncodingPopupAccessory.m b/Source/SPEncodingPopupAccessory.m new file mode 100644 index 00000000..c5b30630 --- /dev/null +++ b/Source/SPEncodingPopupAccessory.m @@ -0,0 +1,118 @@ +// +// $Id$ +// +// SPEncodingPopupAccessory.m +// sequel-pro +// +// Created by Hans-Jörg Bibiko on August 22, 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 "SPEncodingPopupAccessory.h" + + +@implementation SPEncodingPopupAccessory + ++ (NSView *)encodingAccessory:(NSUInteger)encoding includeDefaultEntry:(BOOL)includeDefaultItem encodingPopUp:(NSPopUpButton **)popup { + SPEncodingPopupAccessory *owner = [[[SPEncodingPopupAccessory alloc] init] autorelease]; + // Rather than caching, load the accessory view everytime, as it might appear in multiple panels simultaneously. + if (![NSBundle loadNibNamed:@"EncodingPopupView" owner:owner]) { + NSLog(@"Failed to load EncodingPopupView.nib"); + return nil; + } + if (popup) *popup = owner->encodingPopUp; + [[self class] setupPopUp:owner->encodingPopUp selectedEncoding:encoding withDefaultEntry:includeDefaultItem]; + return [owner->encodingAccessoryView autorelease]; +} + +/** + * Returns the actual enabled list of encodings for open/save SQL files. + */ ++ (NSArray *)enabledEncodings +{ + static const NSInteger plainTextFileStringEncodingsSupported[] = { + kCFStringEncodingUTF8, + kCFStringEncodingUTF16, + kCFStringEncodingUTF16BE, + kCFStringEncodingUTF16LE, + kCFStringEncodingUTF32, + kCFStringEncodingWindowsLatin1, + kCFStringEncodingISOLatin1, + kCFStringEncodingWindowsLatin2, + kCFStringEncodingISOLatin2, + kCFStringEncodingISOLatin3, + kCFStringEncodingISOLatin4, + kCFStringEncodingWindowsLatin5, + kCFStringEncodingKOI8_R, + kCFStringEncodingKOI8_U, + kCFStringEncodingMacRoman, + kCFStringEncodingMacJapanese, + kCFStringEncodingShiftJIS, + kCFStringEncodingEUC_JP, + kCFStringEncodingISO_2022_JP, + kCFStringEncodingMacChineseTrad, + kCFStringEncodingMacChineseSimp, + kCFStringEncodingBig5, + kCFStringEncodingGB_18030_2000, + kCFStringEncodingEUC_CN, + kCFStringEncodingEUC_TW, + kCFStringEncodingMacKorean, + kCFStringEncodingEUC_KR, + -1 + }; + NSStringEncoding encoding; + NSInteger cnt = 0; + NSMutableArray *encs = [NSMutableArray array]; + while (plainTextFileStringEncodingsSupported[cnt] != -1) + if ((encoding = CFStringConvertEncodingToNSStringEncoding(plainTextFileStringEncodingsSupported[cnt++])) != kCFStringEncodingInvalidId) + [encs addObject:[NSNumber numberWithUnsignedInteger:encoding]]; + + return encs; +} + +/** + * This method initializes the provided popup with list of encodings; + * it also sets up the selected encoding as indicated and if includeDefaultItem is YES. + * Otherwise the tags are set to the NSStringEncoding value for the encoding. + */ ++ (void)setupPopUp:(NSPopUpButton *)popup selectedEncoding:(NSUInteger)selectedEncoding withDefaultEntry:(BOOL)includeDefaultItem +{ + NSArray *encs = [self enabledEncodings]; + NSUInteger cnt, numEncodings, itemToSelect = 0; + + // Put the encodings in the popup + [popup removeAllItems]; + + // Make sure the initial selected encoding appears in the list + if (!includeDefaultItem && (selectedEncoding != NoStringEncoding) && ![encs containsObject:[NSNumber numberWithUnsignedInteger:selectedEncoding]]) encs = [encs arrayByAddingObject:[NSNumber numberWithUnsignedInteger:selectedEncoding]]; + + numEncodings = [encs count]; + + // Fill with encodings + for (cnt = 0; cnt < numEncodings; cnt++) { + NSStringEncoding enc = [[encs objectAtIndex:cnt] unsignedIntegerValue]; + [popup addItemWithTitle:[NSString localizedNameOfStringEncoding:enc]]; + [[popup lastItem] setTag:enc]; + [[popup lastItem] setEnabled:YES]; + if (enc == selectedEncoding) itemToSelect = [popup numberOfItems] - 1; + } + + [popup selectItemAtIndex:itemToSelect]; +} + + +@end diff --git a/Source/TableDocument.h b/Source/TableDocument.h index 22c836db..6f36ea83 100644 --- a/Source/TableDocument.h +++ b/Source/TableDocument.h @@ -29,10 +29,6 @@ #import <MCPKit/MCPKit.h> #import <WebKit/WebKit.h> -enum { - NoStringEncoding = 0xFFFFFFFF -}; - @class SPConnectionController, SPUserManager; diff --git a/Source/TableDocument.m b/Source/TableDocument.m index 70d4089f..cd5967cb 100644 --- a/Source/TableDocument.m +++ b/Source/TableDocument.m @@ -49,6 +49,7 @@ #import "SPPrintAccessory.h" #import "QLPreviewPanel.h" #import "SPUserManager.h" +#import "SPEncodingPopupAccessory.h" // Used for printing #import "MGTemplateEngine.h" @@ -1587,82 +1588,6 @@ #pragma mark Menu methods /** - * Returns the actual enabled list of encodings for open/save SQL files. - */ -- (NSArray *)enabledEncodings -{ - static const NSInteger plainTextFileStringEncodingsSupported[] = { - kCFStringEncodingUTF8, - kCFStringEncodingUTF16, - kCFStringEncodingUTF16BE, - kCFStringEncodingUTF16LE, - kCFStringEncodingUTF32, - kCFStringEncodingWindowsLatin1, - kCFStringEncodingISOLatin1, - kCFStringEncodingWindowsLatin2, - kCFStringEncodingISOLatin2, - kCFStringEncodingISOLatin3, - kCFStringEncodingISOLatin4, - kCFStringEncodingWindowsLatin5, - kCFStringEncodingKOI8_R, - kCFStringEncodingKOI8_U, - kCFStringEncodingMacRoman, - kCFStringEncodingMacJapanese, - kCFStringEncodingShiftJIS, - kCFStringEncodingEUC_JP, - kCFStringEncodingISO_2022_JP, - kCFStringEncodingMacChineseTrad, - kCFStringEncodingMacChineseSimp, - kCFStringEncodingBig5, - kCFStringEncodingGB_18030_2000, - kCFStringEncodingEUC_CN, - kCFStringEncodingEUC_TW, - kCFStringEncodingMacKorean, - kCFStringEncodingEUC_KR, - -1 - }; - NSStringEncoding encoding; - NSInteger cnt = 0; - NSMutableArray *encs = [NSMutableArray array]; - while (plainTextFileStringEncodingsSupported[cnt] != -1) - if ((encoding = CFStringConvertEncodingToNSStringEncoding(plainTextFileStringEncodingsSupported[cnt++])) != kCFStringEncodingInvalidId) - [encs addObject:[NSNumber numberWithUnsignedInteger:encoding]]; - - return encs; -} - -/** - * This method initializes the provided popup with list of encodings; - * it also sets up the selected encoding as indicated and if includeDefaultItem is YES. - * Otherwise the tags are set to the NSStringEncoding value for the encoding. - */ -- (void)setupPopUp:(NSPopUpButton *)popup selectedEncoding:(NSUInteger)selectedEncoding withDefaultEntry:(BOOL)includeDefaultItem -{ - NSArray *encs = [self enabledEncodings]; - NSUInteger cnt, numEncodings, itemToSelect = 0; - - // Put the encodings in the popup - [popup removeAllItems]; - - // Make sure the initial selected encoding appears in the list - if (!includeDefaultItem && (selectedEncoding != NoStringEncoding) && ![encs containsObject:[NSNumber numberWithUnsignedInteger:selectedEncoding]]) encs = [encs arrayByAddingObject:[NSNumber numberWithUnsignedInteger:selectedEncoding]]; - - numEncodings = [encs count]; - - // Fill with encodings - for (cnt = 0; cnt < numEncodings; cnt++) { - NSStringEncoding enc = [[encs objectAtIndex:cnt] unsignedIntegerValue]; - [popup addItemWithTitle:[NSString localizedNameOfStringEncoding:enc]]; - [[popup lastItem] setTag:enc]; - [[popup lastItem] setEnabled:YES]; - if (enc == selectedEncoding) itemToSelect = [popup numberOfItems] - 1; - } - - [popup selectItemAtIndex:itemToSelect]; -} - - -/** * Opens SP session file(s) or a SQL file */ - (IBAction)openConnectionSheet:(id)sender @@ -1674,7 +1599,8 @@ [panel setCanChooseDirectories:NO]; [panel setAllowsMultipleSelection:YES]; [panel setResolvesAliases:YES]; - [panel setAccessoryView:encodingAccessoryView]; + [panel setAccessoryView:[SPEncodingPopupAccessory encodingAccessory:[prefs integerForKey:@"lastSqlFileEncoding"] + includeDefaultEntry:NO encodingPopUp:&encodingPopUp]]; // Set up encoding list [encodingPopUp setEnabled:NO]; @@ -1685,7 +1611,7 @@ [prefs synchronize]; } - [self setupPopUp:encodingPopUp selectedEncoding:[prefs integerForKey:@"lastSqlFileEncoding"] withDefaultEntry:NO]; + // [self setupPopUp:encodingPopUp selectedEncoding:[prefs integerForKey:@"lastSqlFileEncoding"] withDefaultEntry:NO]; [panel beginSheetForDirectory:nil file:@"" @@ -1791,7 +1717,8 @@ if( [sender tag] == 0 ) { // Save the editor's content as SQL file - [panel setAccessoryView:encodingAccessoryView]; + [panel setAccessoryView:[SPEncodingPopupAccessory encodingAccessory:[prefs integerForKey:@"lastSqlFileEncoding"] + includeDefaultEntry:NO encodingPopUp:&encodingPopUp]]; // [panel setMessage:NSLocalizedString(@"Save SQL file", @"Save SQL file")]; [panel setAllowedFileTypes:[NSArray arrayWithObjects:@"sql", nil]]; if(![prefs stringForKey:@"lastSqlFileName"]) { @@ -1810,7 +1737,7 @@ // Set up encoding list [encodingPopUp setEnabled:YES]; - [self setupPopUp:encodingPopUp selectedEncoding:[prefs integerForKey:@"lastSqlFileEncoding"] withDefaultEntry:NO]; + // [self setupPopUp:encodingPopUp selectedEncoding:[prefs integerForKey:@"lastSqlFileEncoding"] withDefaultEntry:NO]; } else if([sender tag] == 1){ diff --git a/sequel-pro.xcodeproj/project.pbxproj b/sequel-pro.xcodeproj/project.pbxproj index c3752b27..c776e45b 100644 --- a/sequel-pro.xcodeproj/project.pbxproj +++ b/sequel-pro.xcodeproj/project.pbxproj @@ -214,6 +214,7 @@ B5E92F400F75B32100012500 /* toolbar-export-xml.tiff in Resources */ = {isa = PBXBuildFile; fileRef = B5E92F3A0F75B32100012500 /* toolbar-export-xml.tiff */; }; B5EAC0FD0EC87FF900CC579C /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5EAC0FC0EC87FF900CC579C /* Security.framework */; }; B5F4F7810F7BCF990059AE84 /* toolbar-switch-to-procedures.tiff in Resources */ = {isa = PBXBuildFile; fileRef = B5F4F7800F7BCF990059AE84 /* toolbar-switch-to-procedures.tiff */; }; + BC01BCCF104024BE006BDEE7 /* SPEncodingPopupAccessory.m in Sources */ = {isa = PBXBuildFile; fileRef = BC01BCCE104024BE006BDEE7 /* SPEncodingPopupAccessory.m */; }; BC05F1C5101241DF008A97F8 /* AMIndeterminateProgressIndicatorCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC05F1C4101241DF008A97F8 /* AMIndeterminateProgressIndicatorCell.m */; }; BC1847EA0FE6EC8400094BFB /* SPEditSheetTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC1847E90FE6EC8400094BFB /* SPEditSheetTextView.m */; }; BC1E55C4100DC92200AAE9F0 /* table-view-small-square.tiff in Resources */ = {isa = PBXBuildFile; fileRef = BC1E55C3100DC92200AAE9F0 /* table-view-small-square.tiff */; }; @@ -585,6 +586,8 @@ B5E92F3A0F75B32100012500 /* toolbar-export-xml.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "toolbar-export-xml.tiff"; sourceTree = "<group>"; }; B5EAC0FC0EC87FF900CC579C /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; }; B5F4F7800F7BCF990059AE84 /* toolbar-switch-to-procedures.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = "toolbar-switch-to-procedures.tiff"; sourceTree = "<group>"; }; + BC01BCCD104024BE006BDEE7 /* SPEncodingPopupAccessory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPEncodingPopupAccessory.h; sourceTree = "<group>"; }; + BC01BCCE104024BE006BDEE7 /* SPEncodingPopupAccessory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPEncodingPopupAccessory.m; sourceTree = "<group>"; }; BC05F1C3101241DF008A97F8 /* AMIndeterminateProgressIndicatorCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AMIndeterminateProgressIndicatorCell.h; sourceTree = "<group>"; }; BC05F1C4101241DF008A97F8 /* AMIndeterminateProgressIndicatorCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AMIndeterminateProgressIndicatorCell.m; sourceTree = "<group>"; }; BC1847E80FE6EC8400094BFB /* SPEditSheetTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPEditSheetTextView.h; sourceTree = "<group>"; }; @@ -930,6 +933,8 @@ 17E641530EF01EF6001BC333 /* TableDump.m */, 17E641540EF01EF6001BC333 /* TableSource.h */, 17E641550EF01EF6001BC333 /* TableSource.m */, + BC01BCCD104024BE006BDEE7 /* SPEncodingPopupAccessory.h */, + BC01BCCE104024BE006BDEE7 /* SPEncodingPopupAccessory.m */, ); name = Controllers; sourceTree = "<group>"; @@ -1647,6 +1652,7 @@ 589235321020C1230011DE00 /* SPHistoryController.m in Sources */, BCA6271C1031B9D40047E5D5 /* SPTooltip.m in Sources */, 58DA8863103E15B5000B98DF /* SPLogger.m in Sources */, + BC01BCCF104024BE006BDEE7 /* SPEncodingPopupAccessory.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; |