aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Interfaces/English.lproj/DBView.xib261
-rw-r--r--Source/SPDatabaseDocument.h24
-rw-r--r--Source/SPDatabaseDocument.m16
-rw-r--r--Source/SPExtendedTableInfo.m1
-rw-r--r--Source/SPTableRelations.h7
-rw-r--r--Source/SPTableRelations.m199
6 files changed, 322 insertions, 186 deletions
diff --git a/Interfaces/English.lproj/DBView.xib b/Interfaces/English.lproj/DBView.xib
index a161dc5f..e4e83820 100644
--- a/Interfaces/English.lproj/DBView.xib
+++ b/Interfaces/English.lproj/DBView.xib
@@ -2,7 +2,7 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10K540</string>
+ <string key="IBDocument.SystemVersion">10K549</string>
<string key="IBDocument.InterfaceBuilderVersion">851</string>
<string key="IBDocument.AppKitVersion">1038.36</string>
<string key="IBDocument.HIToolboxVersion">461.00</string>
@@ -23,17 +23,13 @@
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="7502"/>
- <integer value="7610"/>
- <integer value="6938"/>
<integer value="7798"/>
- <integer value="7727"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.brandonwalkin.BWToolkit</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.WebKitIBPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
@@ -51,7 +47,7 @@
<string key="NSClassName">NSApplication</string>
</object>
<object class="NSCustomView" id="632807581">
- <reference key="NSNextResponder"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -524,7 +520,7 @@
<string key="NSColorName">controlColor</string>
<object class="NSColor" key="NSColor" id="1001122760">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
</object>
</object>
<reference key="NSTextColor" ref="454249633"/>
@@ -569,7 +565,6 @@
</object>
<string key="NSFrame">{{1, 1}, {218, 38}}</string>
<reference key="NSSuperview" ref="607475905"/>
- <reference key="NSNextKeyView" ref="970881282"/>
<reference key="NSDocView" ref="970881282"/>
<object class="NSColor" key="NSBGColor" id="1024678221">
<int key="NSColorSpace">6</int>
@@ -601,7 +596,6 @@
</object>
<string key="NSFrame">{{-1, -13}, {220, 40}}</string>
<reference key="NSSuperview" ref="801427893"/>
- <reference key="NSNextKeyView" ref="494991824"/>
<int key="NSsFlags">2</int>
<reference key="NSVScroller" ref="196112633"/>
<reference key="NSHScroller" ref="142487484"/>
@@ -699,7 +693,6 @@
</object>
<string key="NSFrameSize">{214, 352}</string>
<reference key="NSSuperview" ref="233472824"/>
- <reference key="NSNextKeyView" ref="251040077"/>
<reference key="NSDocView" ref="251040077"/>
<reference key="NSBGColor" ref="1024678221"/>
<int key="NScvFlags">4</int>
@@ -727,7 +720,6 @@
</object>
<string key="NSFrameSize">{214, 352}</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"/>
@@ -863,7 +855,6 @@
</object>
<string key="NSFrameSize">{216, 145}</string>
<reference key="NSSuperview" ref="561874764"/>
- <reference key="NSNextKeyView" ref="794785393"/>
<reference key="NSDocView" ref="794785393"/>
<reference key="NSBGColor" ref="1024678221"/>
<int key="NScvFlags">6</int>
@@ -890,7 +881,6 @@
</object>
<string key="NSFrame">{{-1, 0}, {216, 145}}</string>
<reference key="NSSuperview" ref="192579410"/>
- <reference key="NSNextKeyView" ref="242523705"/>
<int key="NSsFlags">528</int>
<reference key="NSVScroller" ref="313695606"/>
<reference key="NSHScroller" ref="464071814"/>
@@ -978,7 +968,6 @@
</object>
<string key="NSFrameSize">{214, 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>
@@ -1006,7 +995,6 @@
</object>
<string key="NSFrameSize">{214, 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"/>
@@ -4761,7 +4749,6 @@
</object>
<string key="NSFrame">{{1, 1}, {541, 70}}</string>
<reference key="NSSuperview" ref="709531668"/>
- <reference key="NSNextKeyView" ref="69074373"/>
<reference key="NSDocView" ref="69074373"/>
<reference key="NSBGColor" ref="449903125"/>
<reference key="NSCursor" ref="32917531"/>
@@ -4792,7 +4779,6 @@
</object>
<string key="NSFrame">{{109, 0}, {554, 72}}</string>
<reference key="NSSuperview" ref="259390764"/>
- <reference key="NSNextKeyView" ref="78677381"/>
<int key="NSsFlags">18</int>
<reference key="NSVScroller" ref="892376800"/>
<reference key="NSHScroller" ref="490174802"/>
@@ -4900,7 +4886,6 @@
</object>
<string key="NSFrame">{{1, 1}, {541, 197}}</string>
<reference key="NSSuperview" ref="449863508"/>
- <reference key="NSNextKeyView" ref="421486962"/>
<reference key="NSDocView" ref="421486962"/>
<reference key="NSBGColor" ref="449903125"/>
<reference key="NSCursor" ref="32917531"/>
@@ -4930,7 +4915,6 @@
</object>
<string key="NSFrame">{{109, 0}, {554, 199}}</string>
<reference key="NSSuperview" ref="983998494"/>
- <reference key="NSNextKeyView" ref="637054939"/>
<int key="NSsFlags">18</int>
<reference key="NSVScroller" ref="633929130"/>
<reference key="NSHScroller" ref="883667132"/>
@@ -5299,8 +5283,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">YES</bool>
<bool key="NS.localized">YES</bool>
<bool key="NS.allowsfloats">YES</bool>
@@ -6509,7 +6493,6 @@
</object>
</object>
<string key="NSFrameSize">{943, 549}</string>
- <reference key="NSSuperview"/>
<string key="NSClassName">NSView</string>
</object>
<object class="NSWindowTemplate" id="554105051">
@@ -6695,6 +6678,7 @@
<int key="NSvFlags">256</int>
<string key="NSFrame">{{104, 98}, {258, 14}}</string>
<reference key="NSSuperview" ref="351046403"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="292220806">
<int key="NSCellFlags">68288064</int>
@@ -6711,6 +6695,7 @@
<int key="NSvFlags">258</int>
<string key="NSFrame">{{107, 72}, {252, 18}}</string>
<reference key="NSSuperview" ref="351046403"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="322980098">
<int key="NSCellFlags">-1804468671</int>
@@ -6728,6 +6713,7 @@
<int key="NSvFlags">259</int>
<string key="NSFrame">{{263, 13}, {101, 28}}</string>
<reference key="NSSuperview" ref="351046403"/>
+ <reference key="NSWindow"/>
<int key="NSTag">1</int>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="261586860">
@@ -6751,6 +6737,7 @@
<int key="NSvFlags">259</int>
<string key="NSFrame">{{172, 13}, {93, 28}}</string>
<reference key="NSSuperview" ref="351046403"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="1011860722">
<int key="NSCellFlags">67239424</int>
@@ -6772,6 +6759,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{105, 48}, {256, 18}}</string>
<reference key="NSSuperview" ref="351046403"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="852298622">
<int key="NSCellFlags">67239424</int>
@@ -6794,6 +6782,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{-3, 98}, {105, 14}}</string>
<reference key="NSSuperview" ref="351046403"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="482341094">
<int key="NSCellFlags">68288064</int>
@@ -6810,6 +6799,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{-3, 74}, {105, 14}}</string>
<reference key="NSSuperview" ref="351046403"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="1036205277">
<int key="NSCellFlags">68288064</int>
@@ -6826,6 +6816,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{104, 120}, {258, 14}}</string>
<reference key="NSSuperview" ref="351046403"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="926340181">
<int key="NSCellFlags">68288064</int>
@@ -6840,6 +6831,7 @@
</object>
<string key="NSFrameSize">{379, 154}</string>
<reference key="NSSuperview"/>
+ <reference key="NSWindow"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
<string key="NSMinSize">{379, 176}</string>
@@ -7281,7 +7273,7 @@
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
<string key="NSWindowContentMinSize">{213, 107}</string>
<object class="NSView" key="NSWindowView" id="234287744">
<nil key="NSNextResponder"/>
@@ -7426,7 +7418,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{213, 129}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
</object>
<object class="NSWindowTemplate" id="423199625">
<int key="NSWindowStyleMask">7</int>
@@ -7436,7 +7428,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="NSWindowTitle">Reset Auto Increment</string>
<string key="NSWindowClass">NSWindow</string>
<nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
<string key="NSWindowContentMinSize">{255, 95}</string>
<object class="NSView" key="NSWindowView" id="748618982">
<nil key="NSNextResponder"/>
@@ -7560,8 +7552,8 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<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>
@@ -7599,17 +7591,17 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 1002}}</string>
<string key="NSMinSize">{255, 117}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
</object>
<object class="NSWindowTemplate" id="787219800">
<int key="NSWindowStyleMask">1</int>
<int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{196, 141}, {337, 369}}</string>
+ <string key="NSWindowRect">{{196, 141}, {379, 369}}</string>
<int key="NSWTFlags">1946157056</int>
<string key="NSWindowTitle">New Relation</string>
<string key="NSWindowClass">NSPanel</string>
<nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
<object class="NSView" key="NSWindowView" id="842408319">
<reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
@@ -7707,11 +7699,11 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
</object>
</object>
- <string key="NSFrame">{{1, 1}, {301, 40}}</string>
+ <string key="NSFrame">{{1, 1}, {343, 40}}</string>
<reference key="NSSuperview" ref="536822293"/>
</object>
</object>
- <string key="NSFrame">{{17, 231}, {303, 56}}</string>
+ <string key="NSFrame">{{17, 231}, {345, 56}}</string>
<reference key="NSSuperview" ref="842408319"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
@@ -7776,17 +7768,17 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
</object>
</object>
- <string key="NSFrame">{{1, 1}, {301, 42}}</string>
+ <string key="NSFrame">{{1, 1}, {343, 42}}</string>
<reference key="NSSuperview" ref="432235639"/>
</object>
</object>
- <string key="NSFrame">{{17, 291}, {303, 58}}</string>
+ <string key="NSFrame">{{17, 291}, {345, 58}}</string>
<reference key="NSSuperview" ref="842408319"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
<int key="NSCellFlags">67239424</int>
<int key="NSCellFlags2">0</int>
- <string key="NSContents">Name:</string>
+ <string key="NSContents">Name</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSBackgroundColor" ref="480189472"/>
<object class="NSColor" key="NSTextColor">
@@ -8021,11 +8013,11 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
</object>
</object>
- <string key="NSFrame">{{1, 1}, {301, 71}}</string>
+ <string key="NSFrame">{{1, 1}, {343, 71}}</string>
<reference key="NSSuperview" ref="607035293"/>
</object>
</object>
- <string key="NSFrame">{{17, 49}, {303, 87}}</string>
+ <string key="NSFrame">{{17, 49}, {345, 87}}</string>
<reference key="NSSuperview" ref="842408319"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
@@ -8218,11 +8210,11 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
</object>
</object>
- <string key="NSFrame">{{1, 1}, {301, 71}}</string>
+ <string key="NSFrame">{{1, 1}, {343, 71}}</string>
<reference key="NSSuperview" ref="951603292"/>
</object>
</object>
- <string key="NSFrame">{{17, 140}, {303, 87}}</string>
+ <string key="NSFrame">{{17, 140}, {345, 87}}</string>
<reference key="NSSuperview" ref="842408319"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
@@ -8245,7 +8237,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<object class="NSButton" id="158114485">
<reference key="NSNextResponder" ref="842408319"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{226, 13}, {96, 28}}</string>
+ <string key="NSFrame">{{268, 13}, {96, 28}}</string>
<reference key="NSSuperview" ref="842408319"/>
<int key="NSTag">1</int>
<bool key="NSEnabled">YES</bool>
@@ -8266,7 +8258,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<object class="NSButton" id="415754263">
<reference key="NSNextResponder" ref="842408319"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{132, 13}, {96, 28}}</string>
+ <string key="NSFrame">{{174, 13}, {96, 28}}</string>
<reference key="NSSuperview" ref="842408319"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="721913578">
@@ -8283,12 +8275,37 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<int key="NSPeriodicInterval">25</int>
</object>
</object>
+ <object class="NSProgressIndicator" id="417129313">
+ <reference key="NSNextResponder" ref="842408319"/>
+ <int key="NSvFlags">-2147482332</int>
+ <object class="NSPSMatrix" key="NSDrawMatrix"/>
+ <string key="NSFrame">{{20, 20}, {16, 16}}</string>
+ <reference key="NSSuperview" ref="842408319"/>
+ <int key="NSpiFlags">28938</int>
+ <double key="NSMaxValue">100</double>
+ </object>
+ <object class="NSTextField" id="948350361">
+ <reference key="NSNextResponder" ref="842408319"/>
+ <int key="NSvFlags">-2147483356</int>
+ <string key="NSFrame">{{41, 21}, {133, 14}}</string>
+ <reference key="NSSuperview" ref="842408319"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="533703624">
+ <int key="NSCellFlags">68288064</int>
+ <int key="NSCellFlags2">272761856</int>
+ <string key="NSContents">Retrieving data...</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="948350361"/>
+ <reference key="NSBackgroundColor" ref="62854682"/>
+ <reference key="NSTextColor" ref="454249633"/>
+ </object>
+ </object>
</object>
- <string key="NSFrameSize">{337, 369}</string>
+ <string key="NSFrameSize">{379, 369}</string>
<reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
</object>
<object class="NSWindowTemplate" id="437271354">
<int key="NSWindowStyleMask">9</int>
@@ -8298,7 +8315,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="NSWindowTitle">New Trigger</string>
<string key="NSWindowClass">NSPanel</string>
<nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
<string key="NSWindowContentMinSize">{360, 348}</string>
<object class="NSView" key="NSWindowView" id="729080358">
<nil key="NSNextResponder"/>
@@ -8705,7 +8722,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
<string key="NSMinSize">{360, 370}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
</object>
<object class="NSWindowTemplate" id="1066802919">
<int key="NSWindowStyleMask">3</int>
@@ -8717,7 +8734,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
<string key="NSWindowContentMinSize">{213, 50}</string>
<object class="NSView" key="NSWindowView" id="525490268">
<nil key="NSNextResponder"/>
@@ -8837,7 +8854,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
<string key="NSMinSize">{213, 72}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
</object>
<object class="NSWindowTemplate" id="553728448">
<int key="NSWindowStyleMask">9</int>
@@ -8849,7 +8866,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
<string key="NSWindowContentMinSize">{213, 107}</string>
<object class="NSView" key="NSWindowView" id="1052076676">
<nil key="NSNextResponder"/>
@@ -8984,7 +9001,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{213, 129}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
</object>
<object class="NSWindowTemplate" id="828950706">
<int key="NSWindowStyleMask">15</int>
@@ -8996,7 +9013,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
<string key="NSWindowContentMinSize">{350, 200}</string>
<object class="NSView" key="NSWindowView" id="749598685">
<nil key="NSNextResponder"/>
@@ -9219,7 +9236,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
<string key="NSMinSize">{350, 222}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
<string key="NSFrameAutosaveName">SPCreateSyntaxSheet</string>
</object>
<object class="NSWindowTemplate" id="466147946">
@@ -9232,7 +9249,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
<string key="NSWindowContentMinSize">{213, 107}</string>
<object class="NSView" key="NSWindowView" id="860968037">
<nil key="NSNextResponder"/>
@@ -9402,7 +9419,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
<string key="NSMinSize">{213, 129}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
</object>
<object class="NSWindowTemplate" id="78186995">
<int key="NSWindowStyleMask">31</int>
@@ -9412,7 +9429,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="NSWindowTitle">MySQL Help</string>
<string key="NSWindowClass">NSPanel</string>
<nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
<string key="NSWindowContentMinSize">{351, 120}</string>
<object class="NSView" key="NSWindowView" id="539508428">
<nil key="NSNextResponder"/>
@@ -9810,7 +9827,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 1002}}</string>
<string key="NSMinSize">{351, 136}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
<string key="NSFrameAutosaveName">MYSQL_HELP_WINDOW</string>
</object>
<object class="NSWindowTemplate" id="633448481">
@@ -9821,10 +9838,10 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="NSWindowTitle">Filter</string>
<string key="NSWindowClass">NSPanel</string>
<nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
<string key="NSWindowContentMinSize">{380, 170}</string>
<object class="NSView" key="NSWindowView" id="257361103">
- <reference key="NSNextResponder"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">274</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -9901,7 +9918,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSFrame">{{1, 1}, {478, 53}}</string>
<reference key="NSSuperview" ref="571404189"/>
- <reference key="NSNextKeyView" ref="1256480"/>
<reference key="NSDocView" ref="1256480"/>
<object class="NSColor" key="NSBGColor">
<int key="NSColorSpace">4</int>
@@ -9933,7 +9949,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSFrameSize">{480, 55}</string>
<reference key="NSSuperview" ref="257361103"/>
- <reference key="NSNextKeyView" ref="585936743"/>
<int key="NSsFlags">65</int>
<reference key="NSVScroller" ref="175346013"/>
<reference key="NSHScroller" ref="750508133"/>
@@ -10072,7 +10087,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSFrame">{{1, 17}, {480, 87}}</string>
<reference key="NSSuperview" ref="332689220"/>
- <reference key="NSNextKeyView" ref="233010382"/>
<reference key="NSDocView" ref="233010382"/>
<object class="NSColor" key="NSBGColor">
<int key="NSColorSpace">4</int>
@@ -10108,7 +10122,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSFrame">{{1, 0}, {480, 17}}</string>
<reference key="NSSuperview" ref="332689220"/>
- <reference key="NSNextKeyView" ref="493190585"/>
<reference key="NSDocView" ref="493190585"/>
<reference key="NSBGColor" ref="1024678221"/>
<int key="NScvFlags">4</int>
@@ -10117,7 +10130,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSFrameSize">{482, 105}</string>
<reference key="NSSuperview" ref="40644394"/>
- <reference key="NSNextKeyView" ref="824010218"/>
<int key="NSsFlags">562</int>
<reference key="NSVScroller" ref="281953763"/>
<reference key="NSHScroller" ref="784489290"/>
@@ -10149,29 +10161,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<object class="NSTextView" id="378021102">
<reference key="NSNextResponder" ref="673776733"/>
<int key="NSvFlags">2322</int>
- <object class="NSMutableSet" key="NSDragTypes">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" 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>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>
- <string>public.url</string>
- </object>
- </object>
<string key="NSFrameSize">{480, 14}</string>
<reference key="NSSuperview" ref="673776733"/>
<object class="NSTextContainer" key="NSTextContainer" id="310042793">
@@ -10237,7 +10226,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSFrame">{{1, 1}, {480, 106}}</string>
<reference key="NSSuperview" ref="81944450"/>
- <reference key="NSNextKeyView" ref="378021102"/>
<reference key="NSDocView" ref="378021102"/>
<reference key="NSBGColor" ref="449903125"/>
<reference key="NSCursor" ref="32917531"/>
@@ -10267,7 +10255,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<string key="NSFrameSize">{482, 108}</string>
<reference key="NSSuperview" ref="317678649"/>
- <reference key="NSNextKeyView" ref="673776733"/>
<int key="NSsFlags">562</int>
<reference key="NSVScroller" ref="617167031"/>
<reference key="NSHScroller" ref="28009727"/>
@@ -10484,11 +10471,10 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
</object>
<string key="NSFrameSize">{480, 269}</string>
- <reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
<string key="NSMinSize">{380, 192}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
<string key="NSFrameAutosaveName">SPTableFilterPanel</string>
</object>
<object class="NSWindowTemplate" id="923391973">
@@ -10502,7 +10488,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="NSWindowContentMaxSize">{251, 102}</string>
<string key="NSWindowContentMinSize">{251, 102}</string>
<object class="NSView" key="NSWindowView" id="680570399">
- <reference key="NSNextResponder"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -10660,7 +10646,6 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
</object>
<string key="NSFrameSize">{251, 102}</string>
- <reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1920, 1058}}</string>
<string key="NSMinSize">{251, 124}</string>
@@ -10797,7 +10782,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="NSWindowTitle">Secure Text Input Sheet</string>
<string key="NSWindowClass">NSPanel</string>
<nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
<object class="NSView" key="NSWindowView" id="978976687">
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
@@ -10901,7 +10886,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="NSFrameSize">{338, 150}</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
</object>
<object class="NSCustomView" id="884983195">
<nil key="NSNextResponder"/>
@@ -11084,7 +11069,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="NSColorName">disabledControlTextColor</string>
<object class="NSColor" key="NSColor">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzMzMzMzAA</bytes>
+ <bytes key="NSWhite">MC4zMzMzMzMzNDMzAA</bytes>
</object>
</object>
</object>
@@ -16612,6 +16597,22 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<int key="connectionID">7816</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">progressStatusTextField</string>
+ <reference key="source" ref="885866030"/>
+ <reference key="destination" ref="948350361"/>
+ </object>
+ <int key="connectionID">7826</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">dataProgressIndicator</string>
+ <reference key="source" ref="885866030"/>
+ <reference key="destination" ref="417129313"/>
+ </object>
+ <int key="connectionID">7827</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@@ -17548,6 +17549,8 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<reference ref="951603292"/>
<reference ref="158114485"/>
<reference ref="415754263"/>
+ <reference ref="417129313"/>
+ <reference ref="948350361"/>
</object>
<reference key="parent" ref="787219800"/>
</object>
@@ -23273,6 +23276,25 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<reference key="object" ref="926340181"/>
<reference key="parent" ref="378590916"/>
</object>
+ <object class="IBObjectRecord">
+ <int key="objectID">7823</int>
+ <reference key="object" ref="417129313"/>
+ <reference key="parent" ref="842408319"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">7824</int>
+ <reference key="object" ref="948350361"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="533703624"/>
+ </object>
+ <reference key="parent" ref="842408319"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">7825</int>
+ <reference key="object" ref="533703624"/>
+ <reference key="parent" ref="948350361"/>
+ </object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@@ -24639,6 +24661,9 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string>7821.IBPluginDependency</string>
<string>7821.IBViewBoundsToFrameTransform</string>
<string>7822.IBPluginDependency</string>
+ <string>7823.IBPluginDependency</string>
+ <string>7824.IBPluginDependency</string>
+ <string>7825.IBPluginDependency</string>
<string>858.IBPluginDependency</string>
<string>858.ImportedFromIB2</string>
<string>959.IBEditorWindowLastContentRect</string>
@@ -25239,9 +25264,9 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{495, 136}, {337, 369}}</string>
+ <string>{{340, 487}, {379, 369}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{495, 136}, {337, 369}}</string>
+ <string>{{340, 487}, {379, 369}}</string>
<integer value="0"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSMutableArray">
@@ -26041,7 +26066,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{329, 100}, {943, 549}}</string>
+ <string>{{81, 100}, {943, 549}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -26562,6 +26587,9 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<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>
<integer value="1"/>
<string>{{265, 489}, {405, 267}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -26599,7 +26627,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">7822</int>
+ <int key="maxID">7827</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -30162,6 +30190,13 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
<object class="IBPartialClassDescription">
<string key="className">SPQueryController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPQueryConsoleDataSource.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SPQueryController</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -30317,6 +30352,20 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</object>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">SPQueryController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPQueryControllerInitializer.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SPQueryController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPQueryDocumentsController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">SPServerVariablesController</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions">
@@ -31082,9 +31131,11 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string>columnPopUpButton</string>
<string>confirmAddRelationButton</string>
<string>constraintName</string>
+ <string>dataProgressIndicator</string>
<string>labelTextField</string>
<string>onDeletePopUpButton</string>
<string>onUpdatePopUpButton</string>
+ <string>progressStatusTextField</string>
<string>refColumnPopUpButton</string>
<string>refTablePopUpButton</string>
<string>refreshRelationsButton</string>
@@ -31103,9 +31154,11 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string>NSPopUpButton</string>
<string>NSButton</string>
<string>NSTextField</string>
+ <string>NSProgressIndicator</string>
<string>NSTextField</string>
<string>NSPopUpButton</string>
<string>NSPopUpButton</string>
+ <string>NSTextField</string>
<string>NSPopUpButton</string>
<string>NSPopUpButton</string>
<string>NSButton</string>
@@ -31127,9 +31180,11 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string>columnPopUpButton</string>
<string>confirmAddRelationButton</string>
<string>constraintName</string>
+ <string>dataProgressIndicator</string>
<string>labelTextField</string>
<string>onDeletePopUpButton</string>
<string>onUpdatePopUpButton</string>
+ <string>progressStatusTextField</string>
<string>refColumnPopUpButton</string>
<string>refTablePopUpButton</string>
<string>refreshRelationsButton</string>
@@ -31167,6 +31222,10 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="candidateClassName">NSTextField</string>
</object>
<object class="IBToOneOutletInfo">
+ <string key="name">dataProgressIndicator</string>
+ <string key="candidateClassName">NSProgressIndicator</string>
+ </object>
+ <object class="IBToOneOutletInfo">
<string key="name">labelTextField</string>
<string key="candidateClassName">NSTextField</string>
</object>
@@ -31179,6 +31238,10 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="candidateClassName">NSPopUpButton</string>
</object>
<object class="IBToOneOutletInfo">
+ <string key="name">progressStatusTextField</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
<string key="name">refColumnPopUpButton</string>
<string key="candidateClassName">NSPopUpButton</string>
</object>
diff --git a/Source/SPDatabaseDocument.h b/Source/SPDatabaseDocument.h
index a0d02bb6..d79610e9 100644
--- a/Source/SPDatabaseDocument.h
+++ b/Source/SPDatabaseDocument.h
@@ -240,6 +240,19 @@ SPDatabaseData, SPTablesList, SPTableStructure, SPTableContent, SPTableData, SPS
}
#ifdef SP_REFACTOR /* ivars */
+@property (assign) SPDatabaseData* databaseDataInstance;
+@property (assign) SPTableData* tableDataInstance;
+@property (assign) SPCustomQuery* customQueryInstance;
+@property (assign) id databaseNameField;
+@property (assign) id databaseEncodingButton;
+@property (assign) id addDatabaseButton;
+
+@property (assign) id databaseRenameNameField;
+@property (assign) id renameDatabaseButton;
+@property (assign) id databaseRenameSheet;
+#endif
+
+#ifdef SP_REFACTOR /* ivars */
@property (assign) id delegate;
@property (readonly) NSMutableArray* allDatabases;
@property (assign) NSProgressIndicator* queryProgressBar;
@@ -449,17 +462,6 @@ SPDatabaseData, SPTablesList, SPTableStructure, SPTableContent, SPTableData, SPS
- (void)setTableSourceInstance:(SPTableStructure*)source;
- (void)setTableContentInstance:(SPTableContent*)content;
-@property (assign) SPDatabaseData* databaseDataInstance;
-@property (assign) SPTableData* tableDataInstance;
-@property (assign) SPCustomQuery* customQueryInstance;
-@property (assign) id databaseNameField;
-@property (assign) id databaseEncodingButton;
-@property (assign) id addDatabaseButton;
-
-@property (assign) id databaseRenameNameField;
-@property (assign) id renameDatabaseButton;
-@property (assign) id databaseRenameSheet;
-
#endif
@end
diff --git a/Source/SPDatabaseDocument.m b/Source/SPDatabaseDocument.m
index 52858787..a6b905b2 100644
--- a/Source/SPDatabaseDocument.m
+++ b/Source/SPDatabaseDocument.m
@@ -73,6 +73,7 @@ enum {
#import "SPDatabaseCopy.h"
#import "SPTableCopy.h"
#import "SPDatabaseRename.h"
+#import "SPTableRelations.h"
#endif
#import "SPServerSupport.h"
#ifndef SP_REFACTOR /* headers */
@@ -227,6 +228,7 @@ static NSString *SPCreateSyntx = @"SPCreateSyntax";
// Set the connection controller's delegate
[connectionController setDelegate:self];
+
return connectionController;
}
@@ -5890,7 +5892,6 @@ static NSString *SPCreateSyntx = @"SPCreateSyntax";
#endif
}
-
/**
* Select the specified database and, optionally, table.
*/
@@ -5923,7 +5924,7 @@ static NSString *SPCreateSyntx = @"SPCreateSyntax";
// End the task first to ensure the database dropdown can be reselected
[self endTask];
- if ( [mySQLConnection isConnected] ) {
+ if ([mySQLConnection isConnected]) {
// Update the database list
[[self onMainThread] setDatabases:self];
@@ -5970,10 +5971,14 @@ static NSString *SPCreateSyntx = @"SPCreateSyntax";
// Set focus to table list filter field if visible
// otherwise set focus to Table List view
- if ( [[tablesListInstance tables] count] > 20 )
+ if ([[tablesListInstance tables] count] > 20) {
[[parentWindow onMainThread] makeFirstResponder:listFilterField];
- else
+ }
+ else {
[[parentWindow onMainThread] makeFirstResponder:[tablesListInstance valueForKeyPath:@"tablesListView"]];
+ }
+
+ [tableRelationsInstance loadUsedRelationNames];
#endif
}
@@ -6031,8 +6036,9 @@ static NSString *SPCreateSyntx = @"SPCreateSyntax";
#endif
#ifdef SP_REFACTOR /* glue */
- if ( delegate && [delegate respondsToSelector:@selector(databaseDidChange:)] )
+ if (delegate && [delegate respondsToSelector:@selector(databaseDidChange:)]) {
[delegate performSelectorOnMainThread:@selector(databaseDidChange:) withObject:self waitUntilDone:NO];
+ }
#endif
[taskPool drain];
diff --git a/Source/SPExtendedTableInfo.m b/Source/SPExtendedTableInfo.m
index 13e60f92..a1e59110 100644
--- a/Source/SPExtendedTableInfo.m
+++ b/Source/SPExtendedTableInfo.m
@@ -383,7 +383,6 @@
*/
- (NSDictionary *)tableInformationForPrinting
{
-
// Update possible pending comment changes by set the focus to create table syntax view
[[NSApp keyWindow] makeFirstResponder:tableCreateSyntaxTextView];
diff --git a/Source/SPTableRelations.h b/Source/SPTableRelations.h
index 74dd0a17..a600ebf0 100644
--- a/Source/SPTableRelations.h
+++ b/Source/SPTableRelations.h
@@ -50,12 +50,16 @@
IBOutlet NSPopUpButton *onUpdatePopUpButton;
IBOutlet NSPopUpButton *onDeletePopUpButton;
IBOutlet NSButton *confirmAddRelationButton;
+ IBOutlet NSProgressIndicator *dataProgressIndicator;
+ IBOutlet NSTextField *progressStatusTextField;
MCPConnection *connection;
- NSMutableArray *relationData;
NSUserDefaults *prefs;
+ NSMutableArray *relationData;
NSMutableArray *takenConstraintNames;
+
+ BOOL isRetrievingRelationNames;
}
@property (readonly) NSMutableArray *relationData;
@@ -77,6 +81,7 @@
- (void)endDocumentTaskForTab:(NSNotification *)aNotification;
// Other
+- (void)loadUsedRelationNames;
- (NSArray *)relationDataForPrinting;
- (void)alertDidEnd:(NSAlert *)alert returnCode:(NSInteger)returnCode contextInfo:(NSString *)contextInfo;
diff --git a/Source/SPTableRelations.m b/Source/SPTableRelations.m
index 01fc4a6e..a26e9039 100644
--- a/Source/SPTableRelations.m
+++ b/Source/SPTableRelations.m
@@ -30,10 +30,14 @@
#import "SPTableView.h"
#import "SPAlertSheets.h"
+static NSString *SPRemoveRelation = @"SPRemoveRelation";
+
@interface SPTableRelations ()
- (void)_refreshRelationDataForcingCacheRefresh:(BOOL)clearAllCaches;
- (void)_updateAvailableTableColumns;
+- (void)_loadUsedRelationNamesInBackground;
+- (void)_relationNamesLoaded;
@end
@@ -51,6 +55,8 @@
relationData = [[NSMutableArray alloc] init];
prefs = [NSUserDefaults standardUserDefaults];
takenConstraintNames = [[NSMutableArray alloc] init];
+
+ isRetrievingRelationNames = NO;
}
return self;
@@ -176,7 +182,6 @@
*/
- (IBAction)addRelation:(id)sender
{
-
// Check whether table editing is permitted (necessary as some actions - eg table double-click - bypass validation)
if ([tableDocumentInstance isWorking] || [tablesListInstance tableType] != SPTableTypeTable) return;
@@ -208,17 +213,6 @@
[refTablePopUpButton addItemWithTitle:[[result fetchRowAsArray] objectAtIndex:0]];
}
- // Get a list of used constraint names for this db
- [takenConstraintNames removeAllObjects];
- result = [connection queryString:[NSString stringWithFormat:@"SELECT DISTINCT constraint_name FROM information_schema.table_constraints WHERE constraint_type = 'FOREIGN KEY' AND constraint_schema = %@", [[tableDocumentInstance database] tickQuotedString]]];
-
- [result dataSeek:0];
-
- for (NSUInteger i = 0; i < [result numOfRows]; i++)
- {
- [takenConstraintNames addObject:[[[result fetchRowAsArray] objectAtIndex:0] lowercaseString]];
- }
-
// Reset other fields
[constraintName setStringValue:@""];
[onDeletePopUpButton selectItemAtIndex:0];
@@ -258,7 +252,7 @@
[[buttons objectAtIndex:0] setKeyEquivalentModifierMask:NSCommandKeyMask];
[[buttons objectAtIndex:1] setKeyEquivalent:@"\r"];
- [alert beginSheetModalForWindow:[tableDocumentInstance parentWindow] modalDelegate:self didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) contextInfo:@"removeRelation"];
+ [alert beginSheetModalForWindow:[tableDocumentInstance parentWindow] modalDelegate:self didEndSelector:@selector(alertDidEnd:returnCode:contextInfo:) contextInfo:SPRemoveRelation];
}
}
@@ -293,7 +287,8 @@
[addRelationButton setEnabled:enableInteraction];
[refreshRelationsButton setEnabled:enableInteraction];
[relationsTableView setEnabled:YES];
- } else {
+ }
+ else {
[addRelationButton setEnabled:NO];
[refreshRelationsButton setEnabled:NO];
[relationsTableView setEnabled:NO];
@@ -307,34 +302,31 @@
#pragma mark -
#pragma mark TextField delegate methods
-- (void)controlTextDidChange:(NSNotification *)aNotification
-{
- id field = [aNotification object];
-
+- (void)controlTextDidChange:(NSNotification *)notification
+{
// Make sure the user does not enter a taken name
- if (field == constraintName) {
+ if ([notification object] == constraintName) {
- NSString *userValue = [[constraintName stringValue] lowercaseString];
BOOL taken = NO;
- for(NSString *takenName in takenConstraintNames) {
- if([takenName isEqualToString:userValue]) {
+ NSString *userValue = [[constraintName stringValue] lowercaseString];
+
+ for (NSString *takenName in takenConstraintNames)
+ {
+ if ([takenName isEqualToString:userValue]) {
taken = YES;
break;
}
}
- //make field red and disable add button
- if(taken) {
+ // Make field red and disable add button
+ if (taken) {
[constraintName setTextColor:[NSColor redColor]];
[confirmAddRelationButton setEnabled:NO];
}
- //reset
else {
[constraintName setTextColor:[NSColor controlTextColor]];
[confirmAddRelationButton setEnabled:YES];
}
-
- return;
}
}
@@ -366,7 +358,7 @@
* Double-click action on table cells - for the time being, return
* NO to disable editing.
*/
-- (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
+- (BOOL)tableView:(NSTableView *)tableView shouldEditTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)rowIndex
{
if ([tableDocumentInstance isWorking]) return NO;
@@ -376,7 +368,7 @@
/**
* Disable row selection while the document is working.
*/
-- (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(NSInteger)rowIndex
+- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(NSInteger)rowIndex
{
return ![tableDocumentInstance isWorking];
}
@@ -419,6 +411,26 @@
#pragma mark Other
/**
+ * Loads the currently used relation names from information_schema.table_constraints.
+ */
+- (void)loadUsedRelationNames
+{
+ if (isRetrievingRelationNames) return;
+
+ [dataProgressIndicator setHidden:NO];
+ [dataProgressIndicator startAnimation:self];
+
+ [progressStatusTextField setHidden:NO];
+
+ [constraintName setEnabled:NO];
+ [confirmAddRelationButton setEnabled:NO];
+
+ isRetrievingRelationNames = YES;
+
+ [NSThread detachNewThreadSelector:@selector(_loadUsedRelationNamesInBackground) toTarget:self withObject:nil];
+}
+
+/**
* Returns an array of relation data to be used for printing purposes. The first element in the array is always
* an array of the columns and each subsequent element is an array of relation data.
*/
@@ -462,7 +474,7 @@
*/
- (void)alertDidEnd:(NSAlert *)alert returnCode:(NSInteger)returnCode contextInfo:(NSString *)contextInfo
{
- if ([contextInfo isEqualToString:@"removeRelation"]) {
+ if ([contextInfo isEqualToString:SPRemoveRelation]) {
if (returnCode == NSAlertDefaultReturn) {
@@ -536,22 +548,7 @@
}
#pragma mark -
-
-/*
- * Dealloc.
- */
-- (void)dealloc
-{
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- [[NSUserDefaults standardUserDefaults] removeObserver:self forKeyPath:SPUseMonospacedFonts];
-
- [relationData release], relationData = nil;
-
- [takenConstraintNames release];
- takenConstraintNames = nil;
-
- [super dealloc];
-}
+#pragma mark Private API
/**
* Refresh the displayed relations, optionally forcing a refresh of the underlying cache.
@@ -561,22 +558,22 @@
[relationData removeAllObjects];
if ([tablesListInstance tableType] == SPTableTypeTable) {
-
+
if (clearAllCaches) [tableDataInstance updateInformationForCurrentTable];
-
+
NSArray *constraints = [tableDataInstance getConstraints];
-
+
for (NSDictionary *constraint in constraints)
{
[relationData addObject:[NSDictionary dictionaryWithObjectsAndKeys:
- [constraint objectForKey:@"name"], @"name",
- [[constraint objectForKey:@"columns"] objectAtIndex:0], @"columns",
- [constraint objectForKey:@"ref_table"], @"fk_table",
- [constraint objectForKey:@"ref_columns"], @"fk_columns",
- ([constraint objectForKey:@"update"] ? [constraint objectForKey:@"update"] : @""), @"on_update",
- ([constraint objectForKey:@"delete"] ? [constraint objectForKey:@"delete"] : @""), @"on_delete",
- nil]];
-
+ [constraint objectForKey:@"name"], @"name",
+ [[constraint objectForKey:@"columns"] objectAtIndex:0], @"columns",
+ [constraint objectForKey:@"ref_table"], @"fk_table",
+ [constraint objectForKey:@"ref_columns"], @"fk_columns",
+ ([constraint objectForKey:@"update"] ? [constraint objectForKey:@"update"] : @""), @"on_update",
+ ([constraint objectForKey:@"delete"] ? [constraint objectForKey:@"delete"] : @""), @"on_delete",
+ nil]];
+
}
}
@@ -591,24 +588,24 @@
{
NSString *column = [columnPopUpButton titleOfSelectedItem];
NSString *table = [refTablePopUpButton titleOfSelectedItem];
-
+
[tableDataInstance resetAllData];
[tableDataInstance updateInformationForCurrentTable];
-
+
NSDictionary *columnInfo = [[tableDataInstance columnWithName:column] copy];
-
+
[refColumnPopUpButton setEnabled:NO];
[confirmAddRelationButton setEnabled:NO];
-
+
[refColumnPopUpButton removeAllItems];
-
+
[tableDataInstance resetAllData];
NSDictionary *tableInfo = [tableDataInstance informationForTable:table];
-
+
NSArray *columns = [tableInfo objectForKey:@"columns"];
-
+
NSMutableArray *validColumns = [NSMutableArray array];
-
+
// Only add columns of the same data type
for (NSDictionary *aColumn in columns)
{
@@ -616,17 +613,81 @@
[validColumns addObject:[aColumn objectForKey:@"name"]];
}
}
-
+
// Add the valid columns
if ([validColumns count] > 0) {
NSArray *columnTitles = ([prefs boolForKey:SPAlphabeticalTableSorting])? [validColumns sortedArrayUsingSelector:@selector(compare:)] : validColumns;
+
[refColumnPopUpButton addItemsWithTitles:columnTitles];
-
+
[refColumnPopUpButton setEnabled:YES];
- [confirmAddRelationButton setEnabled:YES];
+
+ if (!isRetrievingRelationNames) {
+ [confirmAddRelationButton setEnabled:YES];
+ }
}
-
+
[columnInfo release];
}
+/**
+ * Loads all of the current foreign key relationship names for the current database. This method should be
+ * spawned on a separate thread.
+ */
+- (void)_loadUsedRelationNamesInBackground
+{
+ NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+
+ [takenConstraintNames removeAllObjects];
+
+ MCPResult *result = [connection queryString:[NSString stringWithFormat:@"SELECT DISTINCT constraint_name FROM information_schema.table_constraints WHERE constraint_type = 'FOREIGN KEY' AND constraint_schema = %@", [[tableDocumentInstance database] tickQuotedString]]];
+
+ [result dataSeek:0];
+
+ for (NSUInteger i = 0; i < [result numOfRows]; i++)
+ {
+ [takenConstraintNames addObject:[[[result fetchRowAsArray] objectAtIndex:0] lowercaseString]];
+ }
+
+ // Update the UI on the main thread
+ [self performSelectorOnMainThread:@selector(_relationNamesLoaded) withObject:nil waitUntilDone:NO];
+
+ [pool release];
+}
+
+/**
+ * Called on the main thread, once all the current table relation names have been loaded and re-enables all
+ * the relevant UI controls.
+ */
+- (void)_relationNamesLoaded
+{
+ [dataProgressIndicator setHidden:YES];
+ [dataProgressIndicator stopAnimation:self];
+
+ [progressStatusTextField setHidden:YES];
+
+ [constraintName setEnabled:YES];
+ [confirmAddRelationButton setEnabled:YES];
+
+ [addRelationPanel makeFirstResponder:constraintName];
+
+ isRetrievingRelationNames = NO;
+}
+
+#pragma mark -
+
+/*
+ * Dealloc.
+ */
+- (void)dealloc
+{
+ [[NSNotificationCenter defaultCenter] removeObserver:self];
+ [[NSUserDefaults standardUserDefaults] removeObserver:self forKeyPath:SPUseMonospacedFonts];
+
+ [relationData release], relationData = nil;
+ [takenConstraintNames release], takenConstraintNames = nil;
+
+ [super dealloc];
+}
+
@end