aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Interfaces/English.lproj/DBView.xib150
-rw-r--r--Resources/English.lproj/Localizable.stringsbin212878 -> 213204 bytes
-rwxr-xr-xScripts/create-test-stubs.pl4
-rw-r--r--Source/SPAppController.m2
-rw-r--r--Source/SPContentFilterManager.m2
-rw-r--r--Source/SPDatabaseDocument.h2
-rw-r--r--Source/SPDatabaseDocument.m13
-rw-r--r--Source/SPFieldMapperController.m6
-rw-r--r--Source/SPQueryController.m2
-rw-r--r--Source/SPTableInfo.h1
-rw-r--r--Source/SPTableInfo.m9
-rw-r--r--Source/SPTableStructure.m15
-rw-r--r--UnitTests/MCPKitTest.m8
-rw-r--r--UnitTests/SPDatabaseCopyTest.m6
-rw-r--r--UnitTests/SPDatabaseRenameTest.m2
-rw-r--r--UnitTests/SPMenuAdditionsTests.h33
-rw-r--r--UnitTests/SPMenuAdditionsTests.m58
-rw-r--r--UnitTests/SPStringAdditionsTest.m4
-rw-r--r--sequel-pro.xcodeproj/project.pbxproj28
19 files changed, 214 insertions, 131 deletions
diff --git a/Interfaces/English.lproj/DBView.xib b/Interfaces/English.lproj/DBView.xib
index ca4d7a86..bf23722f 100644
--- a/Interfaces/English.lproj/DBView.xib
+++ b/Interfaces/English.lproj/DBView.xib
@@ -3,7 +3,7 @@
<data>
<int key="IBDocument.SystemTarget">1050</int>
<string key="IBDocument.SystemVersion">10J567</string>
- <string key="IBDocument.InterfaceBuilderVersion">823</string>
+ <string key="IBDocument.InterfaceBuilderVersion">851</string>
<string key="IBDocument.AppKitVersion">1038.35</string>
<string key="IBDocument.HIToolboxVersion">462.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
@@ -16,24 +16,20 @@
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>823</string>
- <string>823</string>
+ <string>851</string>
+ <string>851</string>
<string>1.2.5</string>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="5322"/>
- <integer value="27"/>
- <integer value="6180"/>
- <integer value="6126"/>
- <integer value="3994"/>
+ <integer value="6034"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.brandonwalkin.BWToolkit</string>
- <string>com.apple.WebKitIBPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.WebKitIBPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
@@ -512,7 +508,7 @@
<string key="NSColorName">controlColor</string>
<object class="NSColor" key="NSColor" id="1001122760">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<reference key="NSTextColor" ref="454249633"/>
@@ -6881,7 +6877,7 @@
<string key="NSWindowContentMaxSize">{600, 142}</string>
<string key="NSWindowContentMinSize">{308, 142}</string>
<object class="NSView" key="NSWindowView" id="846512394">
- <reference key="NSNextResponder"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -7066,7 +7062,6 @@
</object>
</object>
<string key="NSFrameSize">{308, 142}</string>
- <reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
<string key="NSMinSize">{308, 164}</string>
@@ -7204,7 +7199,7 @@
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{213, 107}</string>
<object class="NSView" key="NSWindowView" id="234287744">
<nil key="NSNextResponder"/>
@@ -7349,7 +7344,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{213, 129}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
</object>
<object class="NSWindowTemplate" id="423199625">
<int key="NSWindowStyleMask">7</int>
@@ -7359,7 +7354,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="NSWindowTitle">Reset Auto Increment</string>
<string key="NSWindowClass">NSWindow</string>
<nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{255, 95}</string>
<object class="NSView" key="NSWindowView" id="748618982">
<nil key="NSNextResponder"/>
@@ -7522,7 +7517,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 1002}}</string>
<string key="NSMinSize">{255, 117}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
</object>
<object class="NSWindowTemplate" id="787219800">
<int key="NSWindowStyleMask">1</int>
@@ -7532,7 +7527,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="NSWindowTitle">New Relation</string>
<string key="NSWindowClass">NSPanel</string>
<nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<object class="NSView" key="NSWindowView" id="842408319">
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
@@ -8133,7 +8128,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="NSFrameSize">{302, 307}</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
</object>
<object class="NSWindowTemplate" id="437271354">
<int key="NSWindowStyleMask">9</int>
@@ -8143,7 +8138,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="NSWindowTitle">New Trigger</string>
<string key="NSWindowClass">NSPanel</string>
<nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{360, 348}</string>
<object class="NSView" key="NSWindowView" id="729080358">
<nil key="NSNextResponder"/>
@@ -8550,7 +8545,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
<string key="NSMinSize">{360, 370}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
</object>
<object class="NSWindowTemplate" id="1066802919">
<int key="NSWindowStyleMask">3</int>
@@ -8562,10 +8557,10 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</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="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{213, 50}</string>
<object class="NSView" key="NSWindowView" id="525490268">
- <reference key="NSNextResponder"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -8679,11 +8674,10 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
</object>
<string key="NSFrameSize">{379, 139}</string>
- <reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
<string key="NSMinSize">{213, 72}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
</object>
<object class="NSWindowTemplate" id="553728448">
<int key="NSWindowStyleMask">9</int>
@@ -8695,7 +8689,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</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="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{213, 107}</string>
<object class="NSView" key="NSWindowView" id="1052076676">
<nil key="NSNextResponder"/>
@@ -8830,7 +8824,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{213, 129}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
</object>
<object class="NSWindowTemplate" id="828950706">
<int key="NSWindowStyleMask">15</int>
@@ -8842,7 +8836,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</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="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{350, 200}</string>
<object class="NSView" key="NSWindowView" id="749598685">
<nil key="NSNextResponder"/>
@@ -9065,7 +9059,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
<string key="NSMinSize">{350, 222}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">SPCreateSyntaxSheet</string>
</object>
<object class="NSWindowTemplate" id="466147946">
@@ -9078,7 +9072,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</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="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{213, 107}</string>
<object class="NSView" key="NSWindowView" id="860968037">
<nil key="NSNextResponder"/>
@@ -9248,7 +9242,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{213, 129}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
</object>
<object class="NSWindowTemplate" id="78186995">
<int key="NSWindowStyleMask">31</int>
@@ -9258,7 +9252,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="NSWindowTitle">MySQL Help</string>
<string key="NSWindowClass">NSPanel</string>
<nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{351, 120}</string>
<object class="NSView" key="NSWindowView" id="539508428">
<nil key="NSNextResponder"/>
@@ -9656,7 +9650,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 1002}}</string>
<string key="NSMinSize">{351, 136}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">MYSQL_HELP_WINDOW</string>
</object>
<object class="NSWindowTemplate" id="633448481">
@@ -9667,7 +9661,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="NSWindowTitle">Filter</string>
<string key="NSWindowClass">NSPanel</string>
<nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{380, 170}</string>
<object class="NSView" key="NSWindowView" id="257361103">
<nil key="NSNextResponder"/>
@@ -10309,7 +10303,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
<string key="NSMinSize">{380, 192}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">SPTableFilterPanel</string>
</object>
<object class="NSWindowTemplate" id="923391973">
@@ -10809,7 +10803,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string key="NSWindowTitle">Secure Text Input Sheet</string>
<string key="NSWindowClass">NSPanel</string>
<nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<object class="NSView" key="NSWindowView" id="978976687">
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
@@ -10913,10 +10907,10 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string key="NSFrameSize">{338, 150}</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
</object>
<object class="NSCustomView" id="884983195">
- <reference key="NSNextResponder"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">301</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -11042,7 +11036,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
</object>
</object>
<string key="NSFrameSize">{269, 32}</string>
- <reference key="NSSuperview"/>
<string key="NSClassName">NSView</string>
</object>
<object class="NSCustomView" id="730777562">
@@ -11097,7 +11090,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string key="NSColorName">disabledControlTextColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzMzNDMzAA</bytes>
+ <bytes key="NSWhite">MC4zMzMzMzMzMzMzAA</bytes>
</object>
</object>
</object>
@@ -16481,14 +16474,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">activitiesScrollView</string>
- <reference key="source" ref="622219357"/>
- <reference key="destination" ref="561874764"/>
- </object>
- <int key="connectionID">7712</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
<string key="label">activitiesTable</string>
<reference key="source" ref="622219357"/>
<reference key="destination" ref="794785393"/>
@@ -16553,19 +16538,19 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">activitiesScrollView</string>
+ <string key="label">tableInfoScrollView</string>
<reference key="source" ref="427689665"/>
- <reference key="destination" ref="561874764"/>
+ <reference key="destination" ref="298226231"/>
</object>
- <int key="connectionID">7781</int>
+ <int key="connectionID">7782</int>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">tableInfoScrollView</string>
+ <string key="label">documentActivityScrollView</string>
<reference key="source" ref="427689665"/>
- <reference key="destination" ref="298226231"/>
+ <reference key="destination" ref="561874764"/>
</object>
- <int key="connectionID">7782</int>
+ <int key="connectionID">7790</int>
</object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
@@ -24937,10 +24922,10 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{530, 765}, {308, 142}}</string>
+ <string>{{530, 714}, {308, 142}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
- <string>{{530, 765}, {308, 142}}</string>
+ <string>{{530, 714}, {308, 142}}</string>
<integer value="1"/>
<boolean value="YES"/>
<boolean value="YES"/>
@@ -26364,7 +26349,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">7783</int>
+ <int key="maxID">7790</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -27415,7 +27400,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>id</string>
<string>NSPopUpButton</string>
<string>id</string>
- <string>id</string>
+ <string>NSButton</string>
<string>id</string>
<string>id</string>
<string>id</string>
@@ -27526,7 +27511,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
</object>
<object class="IBToOneOutletInfo">
<string key="name">importFieldNamesSwitch</string>
- <string key="candidateClassName">id</string>
+ <string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">importFieldsEnclosedField</string>
@@ -27987,7 +27972,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>activitiesScrollView</string>
<string>addDatabaseButton</string>
<string>chooseDatabaseButton</string>
<string>connectionErrorDialog</string>
@@ -28009,6 +27993,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>databaseRenameSheet</string>
<string>databaseSheet</string>
<string>dbTablesTableView</string>
+ <string>documentActivityScrollView</string>
<string>encodingPopUp</string>
<string>exportControllerInstance</string>
<string>extendedTableInfoInstance</string>
@@ -28060,7 +28045,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSScrollView</string>
<string>id</string>
<string>id</string>
<string>NSWindow</string>
@@ -28082,6 +28066,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>id</string>
<string>id</string>
<string>NSTableView</string>
+ <string>NSScrollView</string>
<string>NSPopUpButton</string>
<string>id</string>
<string>id</string>
@@ -28097,12 +28082,12 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>id</string>
<string>id</string>
<string>id</string>
- <string>id</string>
- <string>id</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
<string>NSSecureTextField</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
+ <string>NSButton</string>
<string>id</string>
<string>id</string>
<string>id</string>
@@ -28136,7 +28121,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>activitiesScrollView</string>
<string>addDatabaseButton</string>
<string>chooseDatabaseButton</string>
<string>connectionErrorDialog</string>
@@ -28158,6 +28142,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>databaseRenameSheet</string>
<string>databaseSheet</string>
<string>dbTablesTableView</string>
+ <string>documentActivityScrollView</string>
<string>encodingPopUp</string>
<string>exportControllerInstance</string>
<string>extendedTableInfoInstance</string>
@@ -28210,10 +28195,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
- <string key="name">activitiesScrollView</string>
- <string key="candidateClassName">NSScrollView</string>
- </object>
- <object class="IBToOneOutletInfo">
<string key="name">addDatabaseButton</string>
<string key="candidateClassName">id</string>
</object>
@@ -28298,6 +28279,10 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string key="candidateClassName">NSTableView</string>
</object>
<object class="IBToOneOutletInfo">
+ <string key="name">documentActivityScrollView</string>
+ <string key="candidateClassName">NSScrollView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
<string key="name">encodingPopUp</string>
<string key="candidateClassName">NSPopUpButton</string>
</object>
@@ -28359,11 +28344,11 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
</object>
<object class="IBToOneOutletInfo">
<string key="name">saveConnectionAutoConnect</string>
- <string key="candidateClassName">id</string>
+ <string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">saveConnectionEncrypt</string>
- <string key="candidateClassName">id</string>
+ <string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">saveConnectionEncryptString</string>
@@ -28371,15 +28356,15 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
</object>
<object class="IBToOneOutletInfo">
<string key="name">saveConnectionIncludeData</string>
- <string key="candidateClassName">id</string>
+ <string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">saveConnectionIncludeQuery</string>
- <string key="candidateClassName">id</string>
+ <string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">saveConnectionSavePassword</string>
- <string key="candidateClassName">id</string>
+ <string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">saveConnectionSavePasswordAlert</string>
@@ -30678,7 +30663,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>activitiesScrollView</string>
<string>activitiesTable</string>
<string>containerView</string>
<string>infoTable</string>
@@ -30690,7 +30674,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSScrollView</string>
<string>NSTableView</string>
<string>NSView</string>
<string>id</string>
@@ -30705,7 +30688,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>activitiesScrollView</string>
<string>activitiesTable</string>
<string>containerView</string>
<string>infoTable</string>
@@ -30718,10 +30700,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
- <string key="name">activitiesScrollView</string>
- <string key="candidateClassName">NSScrollView</string>
- </object>
- <object class="IBToOneOutletInfo">
<string key="name">activitiesTable</string>
<string key="candidateClassName">NSTableView</string>
</object>
@@ -31096,7 +31074,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>id</string>
<string>id</string>
<string>id</string>
- <string>id</string>
+ <string>NSPopUpButtonCell</string>
<string>id</string>
<string>id</string>
<string>NSButton</string>
@@ -31111,7 +31089,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>id</string>
<string>id</string>
<string>id</string>
- <string>id</string>
+ <string>SPDatabaseDocument</string>
<string>id</string>
<string>id</string>
<string>NSSplitView</string>
@@ -31179,7 +31157,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
</object>
<object class="IBToOneOutletInfo">
<string key="name">encodingPopupCell</string>
- <string key="candidateClassName">id</string>
+ <string key="candidateClassName">NSPopUpButtonCell</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">extendedTableInfoInstance</string>
@@ -31239,7 +31217,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
</object>
<object class="IBToOneOutletInfo">
<string key="name">tableDocumentInstance</string>
- <string key="candidateClassName">id</string>
+ <string key="candidateClassName">SPDatabaseDocument</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">tableInfoInstance</string>
diff --git a/Resources/English.lproj/Localizable.strings b/Resources/English.lproj/Localizable.strings
index dac7c145..4ffd1476 100644
--- a/Resources/English.lproj/Localizable.strings
+++ b/Resources/English.lproj/Localizable.strings
Binary files differ
diff --git a/Scripts/create-test-stubs.pl b/Scripts/create-test-stubs.pl
index ac4193ca..bfc519c2 100755
--- a/Scripts/create-test-stubs.pl
+++ b/Scripts/create-test-stubs.pl
@@ -44,8 +44,8 @@ Usage: perl $0 [options]
Possible options are:
- --header (-h) Source header file path (required)
- --output (-c) The output path (required)
+ --header (-s) Source header file path (required)
+ --output (-o) The output path (required)
--author (-a) The author of the eventual test cases (required)
--help (-h) Print this help message
diff --git a/Source/SPAppController.m b/Source/SPAppController.m
index 8ea656c5..d151a6e6 100644
--- a/Source/SPAppController.m
+++ b/Source/SPAppController.m
@@ -350,6 +350,7 @@ YY_BUFFER_STATE yy_scan_string (const char *);
}
[[self frontDocument] setStateFromConnectionFile:filename];
+ [[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:[NSURL fileURLWithPath:filename]];
}
else if([[[filename pathExtension] lowercaseString] isEqualToString:[SPBundleFileExtension lowercaseString]]) {
@@ -471,6 +472,7 @@ YY_BUFFER_STATE yy_scan_string (const char *);
}
[spfs release];
+ [[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:[NSURL fileURLWithPath:filename]];
}
else if([[[filename pathExtension] lowercaseString] isEqualToString:[SPColorThemeFileExtension lowercaseString]]) {
diff --git a/Source/SPContentFilterManager.m b/Source/SPContentFilterManager.m
index edbed353..97c0b5d6 100644
--- a/Source/SPContentFilterManager.m
+++ b/Source/SPContentFilterManager.m
@@ -78,7 +78,7 @@
// Add global group row to contentFilters
[contentFilters addObject:[NSDictionary dictionaryWithObjectsAndKeys:
- @"Global", @"MenuLabel",
+ NSLocalizedString(@"Global",@"Content Filter Manager : Filter Entry List: 'Global' Header"), @"MenuLabel",
@"", @"headerOfFileURL",
@"", @"Clause",
@"", @"ConjunctionLabel",
diff --git a/Source/SPDatabaseDocument.h b/Source/SPDatabaseDocument.h
index 2b7fb38a..485b224b 100644
--- a/Source/SPDatabaseDocument.h
+++ b/Source/SPDatabaseDocument.h
@@ -66,7 +66,7 @@
IBOutlet NSSearchField *listFilterField;
IBOutlet NSScrollView *tableInfoScrollView;
- IBOutlet NSScrollView *activitiesScrollView;
+ IBOutlet NSScrollView *documentActivityScrollView;
IBOutlet NSView *parentView;
diff --git a/Source/SPDatabaseDocument.m b/Source/SPDatabaseDocument.m
index 02b59ebd..fce0bd3f 100644
--- a/Source/SPDatabaseDocument.m
+++ b/Source/SPDatabaseDocument.m
@@ -167,7 +167,7 @@
// Set the connection controller's delegate
[connectionController setDelegate:self];
-
+
// Register observers for when the DisplayTableViewVerticalGridlines preference changes
[prefs addObserver:self forKeyPath:SPDisplayTableViewVerticalGridlines options:NSKeyValueObservingOptionNew context:NULL];
[prefs addObserver:tableSourceInstance forKeyPath:SPDisplayTableViewVerticalGridlines options:NSKeyValueObservingOptionNew context:NULL];
@@ -202,6 +202,9 @@
// Hide the tabs in the tab view (we only show them to allow switching tabs in interface builder)
[tableTabView setTabViewType:NSNoTabsNoBorder];
+ // Hide the activity list
+ [self setActivityPaneHidden:[NSNumber numberWithInteger:1]];
+
// Bind the background color of the create syntax text view to the users preference
[createTableSyntaxTextView setAllowsDocumentBackgroundColorChange:YES];
@@ -2173,8 +2176,7 @@
SPBeginAlertSheet(NSLocalizedString(@"Flushed Privileges", @"title of panel when successfully flushed privs"), NSLocalizedString(@"OK", @"OK button"), nil, nil, parentWindow, self, nil, nil, NSLocalizedString(@"Successfully flushed privileges.", @"message of panel when successfully flushed privs"));
} else {
//error while flushing privileges
- SPBeginAlertSheet(NSLocalizedString(@"Error", @"error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, parentWindow, self, nil, nil, [NSString stringWithFormat:NSLocalizedString(@"Couldn't flush privileges.\nMySQL said: %@", @"message of panel when flushing privs failed"),
- [mySQLConnection getLastErrorMessage]]);
+ SPBeginAlertSheet(NSLocalizedString(@"Error", @"error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, parentWindow, self, nil, nil, [NSString stringWithFormat:NSLocalizedString(@"Couldn't flush privileges.\nMySQL said: %@", @"message of panel when flushing privs failed"), [mySQLConnection getLastErrorMessage]]);
}
}
@@ -4439,7 +4441,6 @@
if (![self isSaveInBundle]) {
[self setFileURL:[NSURL fileURLWithPath:path]];
- [[NSDocumentController sharedDocumentController] noteNewRecentDocumentURL:[NSURL fileURLWithPath:path]];
}
[spfDocData setObject:[NSNumber numberWithBool:([[data objectForKey:@"connection"] objectForKey:@"password"]) ? YES : NO] forKey:@"save_password"];
@@ -5100,9 +5101,9 @@
{
if(![hide integerValue] == 1) {
[tableInfoScrollView setHidden:YES];
- [activitiesScrollView setHidden:NO];
+ [documentActivityScrollView setHidden:NO];
} else {
- [activitiesScrollView setHidden:YES];
+ [documentActivityScrollView setHidden:YES];
[tableInfoScrollView setHidden:NO];
}
}
diff --git a/Source/SPFieldMapperController.m b/Source/SPFieldMapperController.m
index de22b485..f6633172 100644
--- a/Source/SPFieldMapperController.m
+++ b/Source/SPFieldMapperController.m
@@ -1387,7 +1387,7 @@ static NSString *SPTableViewSqlColumnID = @"sql";
// Create a distance matrix for each file-table name
// distance will be calculated by using Levenshtein distance minus common prefix and suffix length
// and minus the length of a fuzzy regex search for a common sequence of characters
- NSUInteger i,j;
+ NSUInteger i,j,k;
NSMutableArray *distMatrix = [NSMutableArray array];
for(i=0; i < [tableHeaderNames count]; i++) {
CGFloat dist = 1e6f;
@@ -1406,8 +1406,8 @@ static NSString *SPTableViewSqlColumnID = @"sql";
NSMutableString *fuzzyRegexp = [[NSMutableString alloc] initWithCapacity:3];
unichar c;
- for(i=0; i<[headerName length]; i++) {
- c = [headerName characterAtIndex:i];
+ for(k=0; k<[headerName length]; k++) {
+ c = [headerName characterAtIndex:k];
if (c == '.' || c == '(' || c == ')' || c == '[' || c == ']' || c == '{' || c == '}')
[fuzzyRegexp appendFormat:@".*?\\%c",c];
else
diff --git a/Source/SPQueryController.m b/Source/SPQueryController.m
index 721c27e9..346be3d6 100644
--- a/Source/SPQueryController.m
+++ b/Source/SPQueryController.m
@@ -529,7 +529,7 @@ static SPQueryController *sharedQueryController = nil;
{
// Register a new untiled document and return its URL
if(fileURL == nil) {
- NSURL *new = [NSURL URLWithString:[[NSString stringWithFormat:@"Untitled %ld", (unsigned long)untitledDocumentCounter] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
+ NSURL *new = [NSURL URLWithString:[[NSString stringWithFormat:NSLocalizedString(@"Untitled %ld",@"Title of a new Sequel Pro Document"), (unsigned long)untitledDocumentCounter] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
untitledDocumentCounter++;
if(![favoritesContainer objectForKey:[new absoluteString]]) {
diff --git a/Source/SPTableInfo.h b/Source/SPTableInfo.h
index 9328e05c..48e56e0c 100644
--- a/Source/SPTableInfo.h
+++ b/Source/SPTableInfo.h
@@ -33,7 +33,6 @@
IBOutlet NSTableView *activitiesTable;
IBOutlet NSScrollView *tableInfoScrollView;
- IBOutlet NSScrollView *activitiesScrollView;
IBOutlet NSView *containerView;
NSMutableArray *info;
diff --git a/Source/SPTableInfo.m b/Source/SPTableInfo.m
index 6c7c216d..d06198b4 100644
--- a/Source/SPTableInfo.m
+++ b/Source/SPTableInfo.m
@@ -63,9 +63,6 @@
name:SPActivitiesUpdateNotification
object:nil];
- [tableInfoScrollView setHidden:NO];
- [activitiesScrollView setHidden:YES];
-
// Add activities header
[activities addObject:[NSDictionary dictionaryWithObjectsAndKeys:NSLocalizedString(@"ACTIVITIES", @"header for activities pane"), @"name", nil]];
[activitiesTable reloadData];
@@ -364,12 +361,10 @@
if(rowIndex > 0) return NO;
if(![tableInfoScrollView isHidden]) {
- [tableInfoScrollView setHidden:YES];
- [activitiesScrollView setHidden:NO];
+ [tableDocumentInstance setActivityPaneHidden:[NSNumber numberWithInteger:0]];
[[NSApp mainWindow] makeFirstResponder:activitiesTable];
} else {
- [activitiesScrollView setHidden:YES];
- [tableInfoScrollView setHidden:NO];
+ [tableDocumentInstance setActivityPaneHidden:[NSNumber numberWithInteger:1]];
[[NSApp mainWindow] makeFirstResponder:infoTable];
}
diff --git a/Source/SPTableStructure.m b/Source/SPTableStructure.m
index 904e4517..aab62af8 100644
--- a/Source/SPTableStructure.m
+++ b/Source/SPTableStructure.m
@@ -203,7 +203,6 @@
}
NSMutableArray *theTableFields = [[NSMutableArray alloc] init];
- [theTableFields setArray:[NSArray array]];
// Make a mutable copy out of the cached [tableDataInstance columns] since we're adding infos
for (id col in [tableDataInstance columns])
@@ -352,6 +351,10 @@
*/
- (IBAction)reloadTable:(id)sender
{
+
+ // Check whether a save of the current row is required
+ if ( ![[self onMainThread] saveRowOnDeselect] ) return;
+
[tableDataInstance resetAllData];
[tableDocumentInstance setStatusRequiresReload:YES];
@@ -379,9 +382,9 @@
[indexesController setTable:selectedTable];
// Reset the table store and display
+ [tableSourceView deselectAll:self];
[tableFields removeAllObjects];
[enumFields removeAllObjects];
- [tableSourceView deselectAll:self];
[indexesTableView deselectAll:self];
[addFieldButton setEnabled:NO];
[copyFieldButton setEnabled:NO];
@@ -846,6 +849,14 @@
*/
- (BOOL)saveRowOnDeselect
{
+
+ // Save any edits which have been made but not saved to the table yet;
+ // but not for any NSSearchFields which could cause a crash for undo, redo.
+ id currentFirstResponder = [[tableDocumentInstance parentWindow] firstResponder];
+ if (currentFirstResponder && [currentFirstResponder isKindOfClass:[NSView class]] && [(NSView *)currentFirstResponder isDescendantOf:tableSourceView]) {
+ [[tableDocumentInstance parentWindow] endEditingFor:nil];
+ }
+
// If no rows are currently being edited, or a save is already in progress, return success at once.
if (!isEditingRow || isSavingRow) return YES;
isSavingRow = YES;
diff --git a/UnitTests/MCPKitTest.m b/UnitTests/MCPKitTest.m
index 4480b0a1..559a1407 100644
--- a/UnitTests/MCPKitTest.m
+++ b/UnitTests/MCPKitTest.m
@@ -27,10 +27,10 @@
#import "MCPKitTest.h"
-static const NSString *SPTestDatabaseHost = @"127.0.0.1";
-static const NSString *SPTestDatabaseName = @"sakila";
-static const NSString *SPTestDatabaseUser = @"sp_tester";
-static const NSString *SPTestDatabasePassword = @"";
+static NSString *SPTestDatabaseHost = @"127.0.0.1";
+static NSString *SPTestDatabaseName = @"sakila";
+static NSString *SPTestDatabaseUser = @"sp_tester";
+static NSString *SPTestDatabasePassword = @"";
static const NSInteger SPTestDatabasePort = 3306;
diff --git a/UnitTests/SPDatabaseCopyTest.m b/UnitTests/SPDatabaseCopyTest.m
index a1ed99fe..9ba7d5b7 100644
--- a/UnitTests/SPDatabaseCopyTest.m
+++ b/UnitTests/SPDatabaseCopyTest.m
@@ -83,9 +83,9 @@
[target release];
}
-- (void) testCreateDatabase {
- SPDatabaseCopy *dbCopy = [self getDatabaseCopyFixture];
- // test missing :)
+- (void)testCreateDatabase
+{
+ [self getDatabaseCopyFixture];
}
@end
diff --git a/UnitTests/SPDatabaseRenameTest.m b/UnitTests/SPDatabaseRenameTest.m
index 1d432c73..9a1c7b1d 100644
--- a/UnitTests/SPDatabaseRenameTest.m
+++ b/UnitTests/SPDatabaseRenameTest.m
@@ -93,7 +93,7 @@
- (void)testCreateDatabase
{
- SPDatabaseRename *dbRename = [self getDatabaseRenameFixture];
+ [self getDatabaseRenameFixture];
}
@end
diff --git a/UnitTests/SPMenuAdditionsTests.h b/UnitTests/SPMenuAdditionsTests.h
new file mode 100644
index 00000000..1ff2ab61
--- /dev/null
+++ b/UnitTests/SPMenuAdditionsTests.h
@@ -0,0 +1,33 @@
+//
+// $Id$
+//
+// SPMenuAdditionsTests.h
+// sequel-pro
+//
+// Created by Stuart Connolly on March 20, 2011
+// Copyright (c) 2011 Stuart Connolly. All rights reserved.
+//
+// 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 <SenTestingKit/SenTestingKit.h>
+
+@interface SPMenuAdditionsTests : SenTestCase
+{
+ NSMenu *menu;
+}
+
+@end
diff --git a/UnitTests/SPMenuAdditionsTests.m b/UnitTests/SPMenuAdditionsTests.m
new file mode 100644
index 00000000..15130df2
--- /dev/null
+++ b/UnitTests/SPMenuAdditionsTests.m
@@ -0,0 +1,58 @@
+//
+// $Id$
+//
+// SPMenuAdditionsTests.m
+// sequel-pro
+//
+// Created by Stuart Connolly on March 20, 2011
+// Copyright (c) 2011 Stuart Connolly. All rights reserved.
+//
+// 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 "SPMenuAdditionsTests.h"
+#import "SPMenuAdditions.h"
+
+static NSString *SPTestMenuItemTitle = @"Menu Item";
+
+@implementation SPMenuAdditionsTests
+
+- (void)setUp
+{
+ NSUInteger num = 5;
+
+ menu = [[NSMenu alloc] init];
+
+ for (NSUInteger i = 0; i < num; i++)
+ {
+ [menu addItemWithTitle:[NSString stringWithFormat:@"%@ %d", SPTestMenuItemTitle, i] action:NULL keyEquivalent:@""];
+ }
+}
+
+- (void)tearDown
+{
+ [menu release], menu = nil;
+}
+
+- (void)testCompatibleRemoveAllItems
+{
+ [menu compatibleRemoveAllItems];
+
+ STAssertFalse([menu numberOfItems], @"The menu should have no menu items.");
+}
+
+@end
+
diff --git a/UnitTests/SPStringAdditionsTest.m b/UnitTests/SPStringAdditionsTest.m
index 8fce7e07..b0143a0f 100644
--- a/UnitTests/SPStringAdditionsTest.m
+++ b/UnitTests/SPStringAdditionsTest.m
@@ -26,8 +26,8 @@
#import "SPStringAdditionsTest.h"
#import "SPStringAdditions.h"
-static const NSString *SPASCIITestString = @"this is a big, crazy test st'ring with som'e random spaces and quot'es";
-static const NSString *SPUTFTestString = @"In der Kürze liegt die Würz";
+static NSString *SPASCIITestString = @"this is a big, crazy test st'ring with som'e random spaces and quot'es";
+static NSString *SPUTFTestString = @"In der Kürze liegt die Würz";
@implementation SPStringAdditionsTest
diff --git a/sequel-pro.xcodeproj/project.pbxproj b/sequel-pro.xcodeproj/project.pbxproj
index 40c73731..d65a0ccc 100644
--- a/sequel-pro.xcodeproj/project.pbxproj
+++ b/sequel-pro.xcodeproj/project.pbxproj
@@ -23,17 +23,13 @@
/* End PBXAggregateTarget section */
/* Begin PBXBuildFile section */
- 112730571180788A000737FD /* SPTableCopyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 112730551180788A000737FD /* SPTableCopyTest.m */; };
- 1127305B11807894000737FD /* SPDatabaseInfoTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1127305911807894000737FD /* SPDatabaseInfoTest.m */; };
1141A389117BBFF200126A28 /* SPTableCopy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1141A388117BBFF200126A28 /* SPTableCopy.m */; };
1141A38A117BBFF200126A28 /* SPTableCopy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1141A388117BBFF200126A28 /* SPTableCopy.m */; };
115D63E2117CBC5900419057 /* SPDatabaseInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 115D63E1117CBC5900419057 /* SPDatabaseInfo.m */; };
115D63E3117CBC5900419057 /* SPDatabaseInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 115D63E1117CBC5900419057 /* SPDatabaseInfo.m */; };
1198F5B31174EDD500670590 /* SPDatabaseCopy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1198F5B21174EDD500670590 /* SPDatabaseCopy.m */; };
- 1198F5C41174EF3F00670590 /* SPDatabaseCopyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1198F5C31174EF3F00670590 /* SPDatabaseCopyTest.m */; };
1198F7541174FFCF00670590 /* SPDatabaseCopy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1198F5B21174EDD500670590 /* SPDatabaseCopy.m */; };
11B55BFE1189E3B2009EF465 /* SPDBActionCommons.m in Sources */ = {isa = PBXBuildFile; fileRef = 11B55BFD1189E3B2009EF465 /* SPDBActionCommons.m */; };
- 11C211261180EBFF00758039 /* SPDatabaseRenameTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 11C210DE1180E9B800758039 /* SPDatabaseRenameTest.m */; };
11C211271180EC0400758039 /* SPDatabaseRename.m in Sources */ = {isa = PBXBuildFile; fileRef = 11C2109D1180E70800758039 /* SPDatabaseRename.m */; };
11C211301180EC9A00758039 /* SPDatabaseRename.m in Sources */ = {isa = PBXBuildFile; fileRef = 11C2109D1180E70800758039 /* SPDatabaseRename.m */; };
11D44DF0118F5887002AA43C /* OCMock.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11D44DEF118F5887002AA43C /* OCMock.framework */; };
@@ -63,6 +59,11 @@
174CE11E10AB80B5008F892B /* DatabaseProcessList.xib in Resources */ = {isa = PBXBuildFile; fileRef = 174CE11C10AB80B5008F892B /* DatabaseProcessList.xib */; };
174CE14210AB9281008F892B /* SPProcessListController.m in Sources */ = {isa = PBXBuildFile; fileRef = 174CE14110AB9281008F892B /* SPProcessListController.m */; };
175EC63512733B36009A7C0F /* SPExportControllerDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 175EC63412733B36009A7C0F /* SPExportControllerDelegate.m */; };
+ 1760599F1336199D0098E162 /* SPMenuAdditionsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1760599E1336199D0098E162 /* SPMenuAdditionsTests.m */; };
+ 176059B713361D380098E162 /* SPDatabaseRenameTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 11C210DE1180E9B800758039 /* SPDatabaseRenameTest.m */; };
+ 176059B813361D380098E162 /* SPDatabaseInfoTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1127305911807894000737FD /* SPDatabaseInfoTest.m */; };
+ 176059B913361D390098E162 /* SPTableCopyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 112730551180788A000737FD /* SPTableCopyTest.m */; };
+ 176059BA13361D3A0098E162 /* SPDatabaseCopyTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1198F5C31174EF3F00670590 /* SPDatabaseCopyTest.m */; };
1761FD480EF03A6F00331368 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1761FD460EF03A6F00331368 /* MainMenu.xib */; };
177E792E0FCB54EC00E9E122 /* database-small.png in Resources */ = {isa = PBXBuildFile; fileRef = 177E792B0FCB54EC00E9E122 /* database-small.png */; };
177E792F0FCB54EC00E9E122 /* dummy-small.png in Resources */ = {isa = PBXBuildFile; fileRef = 177E792C0FCB54EC00E9E122 /* dummy-small.png */; };
@@ -627,6 +628,8 @@
175EC63312733B36009A7C0F /* SPExportControllerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPExportControllerDelegate.h; sourceTree = "<group>"; };
175EC63412733B36009A7C0F /* SPExportControllerDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPExportControllerDelegate.m; sourceTree = "<group>"; };
175EC64C12733CDF009A7C0F /* SPCategoryAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPCategoryAdditions.h; sourceTree = "<group>"; };
+ 1760599D1336199D0098E162 /* SPMenuAdditionsTests.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPMenuAdditionsTests.h; sourceTree = "<group>"; };
+ 1760599E1336199D0098E162 /* SPMenuAdditionsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPMenuAdditionsTests.m; sourceTree = "<group>"; };
1761FD470EF03A6F00331368 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = "<group>"; };
1761FD9D0EF0488900331368 /* build-version.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = "build-version.pl"; sourceTree = "<group>"; };
177E792B0FCB54EC00E9E122 /* database-small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "database-small.png"; sourceTree = "<group>"; };
@@ -1895,6 +1898,8 @@
380F4EF40FC0B68F00B0BFD7 /* SPStringAdditionsTest.m */,
1791353A12F9F052000B27C1 /* SPMutableArrayAdditionsTest.h */,
1791353B12F9F052000B27C1 /* SPMutableArrayAdditionsTest.m */,
+ 1760599D1336199D0098E162 /* SPMenuAdditionsTests.h */,
+ 1760599E1336199D0098E162 /* SPMenuAdditionsTests.m */,
);
name = "Category Additions";
sourceTree = "<group>";
@@ -3008,14 +3013,15 @@
buildActionMask = 2147483647;
files = (
11C211271180EC0400758039 /* SPDatabaseRename.m in Sources */,
- 11C211261180EBFF00758039 /* SPDatabaseRenameTest.m in Sources */,
1141A38A117BBFF200126A28 /* SPTableCopy.m in Sources */,
115D63E3117CBC5900419057 /* SPDatabaseInfo.m in Sources */,
- 112730571180788A000737FD /* SPTableCopyTest.m in Sources */,
- 1127305B11807894000737FD /* SPDatabaseInfoTest.m in Sources */,
1198F7541174FFCF00670590 /* SPDatabaseCopy.m in Sources */,
380F4EF50FC0B68F00B0BFD7 /* SPStringAdditionsTest.m in Sources */,
- 1198F5C41174EF3F00670590 /* SPDatabaseCopyTest.m in Sources */,
+ 1760599F1336199D0098E162 /* SPMenuAdditionsTests.m in Sources */,
+ 176059B713361D380098E162 /* SPDatabaseRenameTest.m in Sources */,
+ 176059B813361D380098E162 /* SPDatabaseInfoTest.m in Sources */,
+ 176059B913361D390098E162 /* SPTableCopyTest.m in Sources */,
+ 176059BA13361D3A0098E162 /* SPDatabaseCopyTest.m in Sources */,
17AF72DD12A88CBA00C54D6A /* MCPKitTest.m in Sources */,
1791353C12F9F052000B27C1 /* SPMutableArrayAdditionsTest.m in Sources */,
);
@@ -3734,7 +3740,7 @@
GCC_MODEL_TUNING = G5;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h";
+ GCC_PREFIX_HEADER = "Source/Sequel-Pro.pch";
INFOPLIST_FILE = "Resources/Plists/Unit Tests-Info.plist";
INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles";
OTHER_LDFLAGS = (
@@ -3767,7 +3773,7 @@
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h";
+ GCC_PREFIX_HEADER = "Source/Sequel-Pro.pch";
INFOPLIST_FILE = "Resources/Plists/Unit Tests-Info.plist";
INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles";
OTHER_LDFLAGS = (
@@ -3797,7 +3803,7 @@
GCC_ENABLE_OBJC_EXCEPTIONS = YES;
GCC_MODEL_TUNING = G5;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
- GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/Cocoa.framework/Headers/Cocoa.h";
+ GCC_PREFIX_HEADER = "Source/Sequel-Pro.pch";
INFOPLIST_FILE = "Resources/Plists/Unit Tests-Info.plist";
INSTALL_PATH = "$(USER_LIBRARY_DIR)/Bundles";
OTHER_LDFLAGS = (