aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorstuconnolly <stuart02@gmail.com>2011-01-27 20:38:23 +0000
committerstuconnolly <stuart02@gmail.com>2011-01-27 20:38:23 +0000
commit8db2f78294982e89fce5a162d92b2be6d9291aa1 (patch)
treeb8dc7736f4af896aa3ed3fa9a96d1f3c4bfd0e59
parentfa7cff57548edc51420693e6909fe2adb3c18951 (diff)
parent7cc062247ff23496dd0390cf07b5d45d6bc49777 (diff)
downloadsequelpro-8db2f78294982e89fce5a162d92b2be6d9291aa1.tar.gz
sequelpro-8db2f78294982e89fce5a162d92b2be6d9291aa1.tar.bz2
sequelpro-8db2f78294982e89fce5a162d92b2be6d9291aa1.zip
Bring outline view branch up to date with trunk (r3056:r3162).
-rwxr-xr-xFrameworks/BWToolkitFramework.framework/Versions/A/BWToolkitFrameworkbin951356 -> 954312 bytes
-rw-r--r--Frameworks/BWToolkitFramework.framework/Versions/A/Headers/BWSplitView.h1
-rw-r--r--Frameworks/MCPKit/MCPFoundationKit/MCPConnection.m9
-rw-r--r--Frameworks/MCPKit/MCPFoundationKit/MCPGeometryData.m118
-rw-r--r--Frameworks/PSMTabBar/PSMTabBarControl.m4
-rw-r--r--Frameworks/PSMTabBar/Styles/PSMAdiumTabStyle.m5
-rw-r--r--Frameworks/PSMTabBar/Styles/PSMAquaTabStyle.m7
-rw-r--r--Frameworks/PSMTabBar/Styles/PSMCardTabStyle.m4
-rw-r--r--Frameworks/PSMTabBar/Styles/PSMMetalTabStyle.m5
-rw-r--r--Frameworks/PSMTabBar/Styles/PSMSequelProTabStyle.m16
-rw-r--r--Frameworks/PSMTabBar/Styles/PSMUnifiedTabStyle.m7
-rw-r--r--Interfaces/English.lproj/BundleEditor.xib826
-rw-r--r--Interfaces/English.lproj/DBView.xib1238
-rw-r--r--Interfaces/English.lproj/DatabaseProcessList.xib96
-rw-r--r--Interfaces/English.lproj/ExportDialog.xib40
-rw-r--r--Interfaces/English.lproj/FieldEditorSheet.xib22
-rw-r--r--Interfaces/English.lproj/IndexesView.xib349
-rw-r--r--Interfaces/English.lproj/MainMenu.xib462
-rw-r--r--Interfaces/English.lproj/MainWindow.xib45
-rw-r--r--Interfaces/English.lproj/Preferences.xib725
-rw-r--r--Interfaces/English.lproj/QueryFavoriteManager.xib332
-rw-r--r--Interfaces/English.lproj/UserManagerView.xib545
-rw-r--r--Models/SPUserManager.xcdatamodel/elementsbin132168 -> 135130 bytes
-rw-r--r--Models/SPUserManager.xcdatamodel/layoutbin9663 -> 9663 bytes
-rw-r--r--README27
-rw-r--r--Resources/English.lproj/Credits.rtf11
-rw-r--r--Resources/English.lproj/DBView.stringsbin100620 -> 100462 bytes
-rw-r--r--Resources/English.lproj/IndexesView.stringsbin6390 -> 6592 bytes
-rw-r--r--Resources/English.lproj/Localizable.stringsbin211058 -> 212828 bytes
-rw-r--r--Resources/English.lproj/MainWindow.stringsbin166 -> 166 bytes
-rw-r--r--Resources/English.lproj/Preferences.stringsbin62832 -> 63040 bytes
-rw-r--r--Resources/English.lproj/UserManagerView.stringsbin14802 -> 16228 bytes
-rw-r--r--Resources/Plists/CompletionTokens.plist26
-rw-r--r--Resources/Plists/PreferenceDefaults.plist6
-rwxr-xr-xScripts/build-mysql-client.sh42
-rwxr-xr-xScripts/build-version.pl62
-rwxr-xr-xScripts/build.sh38
-rwxr-xr-xScripts/create-test-stubs.pl191
-rwxr-xr-xScripts/localize.sh38
-rwxr-xr-xScripts/package-application.sh33
-rwxr-xr-xScripts/run-tests.sh36
-rwxr-xr-xScripts/trim-application.sh60
-rw-r--r--SharedSupport/Default Bundles/CopyAsJSON.spBundle/command.plist132
-rw-r--r--SharedSupport/Default Bundles/CopySingleLineQuoted.spBundle/command.plist49
-rw-r--r--SharedSupport/Default Bundles/DB Report.spBundle/Support/header.html41
-rwxr-xr-xSharedSupport/Default Bundles/DB Report.spBundle/Support/processTableData.pl32
-rw-r--r--SharedSupport/Default Bundles/DB Report.spBundle/command.plist174
-rw-r--r--SharedSupport/Default Bundles/Format SQL.spBundle/command.plist203
-rw-r--r--SharedSupport/Default Bundles/Toggle JSON Format.spBundle/command.plist72
-rw-r--r--SharedSupport/Default Bundles/WrapInDelimiter.spBundle/command.plist47
-rw-r--r--Source/MGTemplateEngine.m14
-rw-r--r--Source/NoodleLineNumberView.m63
-rw-r--r--Source/SPAppController.m604
-rw-r--r--Source/SPBundleCommandTextView.m18
-rw-r--r--Source/SPBundleEditorController.h4
-rw-r--r--Source/SPBundleEditorController.m23
-rw-r--r--Source/SPBundleHTMLOutputController.h2
-rw-r--r--Source/SPBundleHTMLOutputController.m106
-rw-r--r--Source/SPConnectionController.h1
-rw-r--r--Source/SPConnectionController.m9
-rw-r--r--Source/SPConnectionHandler.m8
-rw-r--r--Source/SPConstants.h14
-rw-r--r--Source/SPConstants.m8
-rw-r--r--Source/SPCopyTable.m69
-rw-r--r--Source/SPCustomQuery.h5
-rw-r--r--Source/SPCustomQuery.m15
-rw-r--r--Source/SPDatabaseDocument.h4
-rw-r--r--Source/SPDatabaseDocument.m208
-rw-r--r--Source/SPEditorTokens.l34
-rw-r--r--Source/SPExportController.m2
-rw-r--r--Source/SPExtendedTableInfo.m2
-rw-r--r--Source/SPFieldEditorController.m5
-rw-r--r--Source/SPHistoryController.m2
-rw-r--r--Source/SPIndexesController.m71
-rw-r--r--Source/SPNarrowDownCompletion.h3
-rw-r--r--Source/SPNarrowDownCompletion.m40
-rw-r--r--Source/SPPreferencesUpgrade.m7
-rw-r--r--Source/SPQueryFavoriteManager.m1
-rw-r--r--Source/SPSSHTunnel.m4
-rw-r--r--Source/SPServerSupport.h6
-rw-r--r--Source/SPServerSupport.m7
-rw-r--r--Source/SPTableContent.h4
-rw-r--r--Source/SPTableContent.m68
-rw-r--r--Source/SPTableStructure.m22
-rw-r--r--Source/SPTableStructureDelegate.m3
-rw-r--r--Source/SPTablesList.h3
-rw-r--r--Source/SPTablesList.m66
-rw-r--r--Source/SPTextView.h1
-rw-r--r--Source/SPTextView.m209
-rw-r--r--Source/SPTextViewAdditions.m69
-rw-r--r--Source/SPTooltip.m14
-rw-r--r--Source/SPUserManager.h7
-rw-r--r--Source/SPUserManager.m99
-rw-r--r--Source/SPWindow.h32
-rw-r--r--Source/SPWindow.m112
-rw-r--r--Source/SequelProTunnelAssistant.m31
-rw-r--r--UnitTests/MCPKitTest.h11
-rw-r--r--UnitTests/MCPKitTest.m88
-rw-r--r--UnitTests/SPStringAdditionsTest.m39
-rw-r--r--sequel-pro.xcodeproj/project.pbxproj12
100 files changed, 6365 insertions, 2060 deletions
diff --git a/Frameworks/BWToolkitFramework.framework/Versions/A/BWToolkitFramework b/Frameworks/BWToolkitFramework.framework/Versions/A/BWToolkitFramework
index 8fea2fcd..81254dd3 100755
--- a/Frameworks/BWToolkitFramework.framework/Versions/A/BWToolkitFramework
+++ b/Frameworks/BWToolkitFramework.framework/Versions/A/BWToolkitFramework
Binary files differ
diff --git a/Frameworks/BWToolkitFramework.framework/Versions/A/Headers/BWSplitView.h b/Frameworks/BWToolkitFramework.framework/Versions/A/Headers/BWSplitView.h
index ed9731a6..e0d32f67 100644
--- a/Frameworks/BWToolkitFramework.framework/Versions/A/Headers/BWSplitView.h
+++ b/Frameworks/BWToolkitFramework.framework/Versions/A/Headers/BWSplitView.h
@@ -16,6 +16,7 @@
NSMutableDictionary *minValues, *maxValues, *minUnits, *maxUnits;
NSMutableDictionary *resizableSubviewPreferredProportion, *nonresizableSubviewPreferredSize;
NSArray *stateForLastPreferredCalculations;
+ NSMutableArray *uncollapsedSizes;
int collapsiblePopupSelection;
float uncollapsedSize;
diff --git a/Frameworks/MCPKit/MCPFoundationKit/MCPConnection.m b/Frameworks/MCPKit/MCPFoundationKit/MCPConnection.m
index af5e6123..3556e9d7 100644
--- a/Frameworks/MCPKit/MCPFoundationKit/MCPConnection.m
+++ b/Frameworks/MCPKit/MCPFoundationKit/MCPConnection.m
@@ -1899,13 +1899,14 @@ void pingThreadCleanup(MCPConnectionPingDetails *pingDetails)
}
/**
- * Returns the number of affected rows by the last query.
+ * Returns the number of affected rows by the last query. Only actual queries
+ * supplied via queryString:, streamingQueryString:, streamingQueryString:useLowMemoryBlockingStreaming:
+ * or queryString:usingEncoding:streamingResult: will have their affected rows
+ * returned, not any "meta" type queries.
*/
- (my_ulonglong)affectedRows
{
- if (mConnected) {
- return mysql_affected_rows(mConnection);
- }
+ if (mConnected) return lastQueryAffectedRows;
return 0;
}
diff --git a/Frameworks/MCPKit/MCPFoundationKit/MCPGeometryData.m b/Frameworks/MCPKit/MCPFoundationKit/MCPGeometryData.m
index aafdba0e..00d7d44f 100644
--- a/Frameworks/MCPKit/MCPFoundationKit/MCPGeometryData.m
+++ b/Frameworks/MCPKit/MCPFoundationKit/MCPGeometryData.m
@@ -103,11 +103,12 @@
- (NSString*)wktString
{
char byteOrder;
- UInt32 geoType, srid, numberOfItems, numberOfSubItems, numberOfSubSubItems, numberOfCollectionItems;
+ uint32_t geoType, numberOfItems, numberOfSubItems, numberOfSubSubItems, numberOfCollectionItems;
+ int32_t srid;
st_point_2d aPoint;
- NSUInteger i, j, k, n; // Loop counter for numberOf...Items
- NSUInteger ptr = BUFFER_START; // pointer to geoBuffer while parsing
+ uint32_t i, j, k, n; // Loop counter for numberOf...Items
+ uint32_t ptr = BUFFER_START; // pointer to geoBuffer while parsing
NSMutableString *wkt = [NSMutableString string];
@@ -130,28 +131,28 @@
case wkb_point:
memcpy(&aPoint, &geoBuffer[ptr], POINT_DATA_SIZE);
- return [NSString stringWithFormat:@"POINT(%.16g %.16g)%@", aPoint.x, aPoint.y, (srid) ? [NSString stringWithFormat:@",%u",srid]: @""];
+ return [NSString stringWithFormat:@"POINT(%.16g %.16g)%@", aPoint.x, aPoint.y, (srid) ? [NSString stringWithFormat:@",%d",srid]: @""];
break;
case wkb_linestring:
[wkt setString:@"LINESTRING("];
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
for(i=0; i < numberOfItems; i++) {
memcpy(&aPoint, &geoBuffer[ptr], POINT_DATA_SIZE);
[wkt appendFormat:@"%.16g %.16g%@", aPoint.x, aPoint.y, (i < numberOfItems-1) ? @"," : @""];
ptr += POINT_DATA_SIZE;
}
- [wkt appendFormat:@")%@", (srid) ? [NSString stringWithFormat:@",%u",srid]: @""];
+ [wkt appendFormat:@")%@", (srid) ? [NSString stringWithFormat:@",%d",srid]: @""];
return wkt;
break;
case wkb_polygon:
[wkt setString:@"POLYGON("];
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
for(i=0; i < numberOfItems; i++) {
- numberOfSubItems = geoBuffer[ptr];
+ memcpy(&numberOfSubItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
[wkt appendString:@"("];
for(j=0; j < numberOfSubItems; j++) {
@@ -161,29 +162,29 @@
}
[wkt appendFormat:@")%@", (i < numberOfItems-1) ? @"," : @""];
}
- [wkt appendFormat:@")%@", (srid) ? [NSString stringWithFormat:@",%u",srid]: @""];
+ [wkt appendFormat:@")%@", (srid) ? [NSString stringWithFormat:@",%d",srid]: @""];
return wkt;
break;
case wkb_multipoint:
[wkt setString:@"MULTIPOINT("];
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32+WKB_HEADER_SIZE;
for(i=0; i < numberOfItems; i++) {
memcpy(&aPoint, &geoBuffer[ptr], POINT_DATA_SIZE);
[wkt appendFormat:@"%.16g %.16g%@", aPoint.x, aPoint.y, (i < numberOfItems-1) ? @"," : @""];
ptr += POINT_DATA_SIZE+WKB_HEADER_SIZE;
}
- [wkt appendFormat:@")%@", (srid) ? [NSString stringWithFormat:@",%u",srid]: @""];
+ [wkt appendFormat:@")%@", (srid) ? [NSString stringWithFormat:@",%d",srid]: @""];
return wkt;
break;
case wkb_multilinestring:
[wkt setString:@"MULTILINESTRING("];
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32+WKB_HEADER_SIZE;
for(i=0; i < numberOfItems; i++) {
- numberOfSubItems = geoBuffer[ptr];
+ memcpy(&numberOfSubItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
[wkt appendString:@"("];
for(j=0; j < numberOfSubItems; j++) {
@@ -194,20 +195,20 @@
ptr += WKB_HEADER_SIZE;
[wkt appendFormat:@")%@", (i < numberOfItems-1) ? @"," : @""];
}
- [wkt appendFormat:@")%@", (srid) ? [NSString stringWithFormat:@",%u",srid]: @""];
+ [wkt appendFormat:@")%@", (srid) ? [NSString stringWithFormat:@",%d",srid]: @""];
return wkt;
break;
case wkb_multipolygon:
[wkt setString:@"MULTIPOLYGON("];
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32+WKB_HEADER_SIZE;
for(i=0; i < numberOfItems; i++) {
- numberOfSubItems = geoBuffer[ptr];
+ memcpy(&numberOfSubItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
[wkt appendString:@"("];
for(j=0; j < numberOfSubItems; j++) {
- numberOfSubSubItems = geoBuffer[ptr];
+ memcpy(&numberOfSubSubItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
[wkt appendString:@"("];
for(k=0; k < numberOfSubSubItems; k++) {
@@ -220,7 +221,7 @@
ptr += WKB_HEADER_SIZE;
[wkt appendFormat:@")%@", (i < numberOfItems-1) ? @"," : @""];
}
- [wkt appendFormat:@")%@", (srid) ? [NSString stringWithFormat:@",%u",srid]: @""];
+ [wkt appendFormat:@")%@", (srid) ? [NSString stringWithFormat:@",%d",srid]: @""];
return wkt;
break;
@@ -250,7 +251,7 @@
case wkb_linestring:
[wkt appendString:@"LINESTRING("];
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
for(i=0; i < numberOfItems; i++) {
memcpy(&aPoint, &geoBuffer[ptr], POINT_DATA_SIZE);
@@ -262,10 +263,10 @@
case wkb_polygon:
[wkt appendString:@"POLYGON("];
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
for(i=0; i < numberOfItems; i++) {
- numberOfSubItems = geoBuffer[ptr];
+ memcpy(&numberOfSubItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
[wkt appendString:@"("];
for(j=0; j < numberOfSubItems; j++) {
@@ -280,7 +281,7 @@
case wkb_multipoint:
[wkt appendString:@"MULTIPOINT("];
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32+WKB_HEADER_SIZE;
for(i=0; i < numberOfItems; i++) {
memcpy(&aPoint, &geoBuffer[ptr], POINT_DATA_SIZE);
@@ -293,10 +294,10 @@
case wkb_multilinestring:
[wkt appendString:@"MULTILINESTRING("];
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32+WKB_HEADER_SIZE;
for(i=0; i < numberOfItems; i++) {
- numberOfSubItems = geoBuffer[ptr];
+ memcpy(&numberOfSubItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
[wkt appendString:@"("];
for(j=0; j < numberOfSubItems; j++) {
@@ -313,14 +314,14 @@
case wkb_multipolygon:
[wkt appendString:@"MULTIPOLYGON("];
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32+WKB_HEADER_SIZE;
for(i=0; i < numberOfItems; i++) {
- numberOfSubItems = geoBuffer[ptr];
+ memcpy(&numberOfSubItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
[wkt appendString:@"("];
for(j=0; j < numberOfSubItems; j++) {
- numberOfSubSubItems = geoBuffer[ptr];
+ memcpy(&numberOfSubSubItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
[wkt appendString:@"("];
for(k=0; k < numberOfSubSubItems; k++) {
@@ -342,7 +343,7 @@
}
[wkt appendString:(n < numberOfCollectionItems-1) ? @"," : @""];
}
- [wkt appendFormat:@")%@", (srid) ? [NSString stringWithFormat:@",%u",srid]: @""];
+ [wkt appendFormat:@")%@", (srid) ? [NSString stringWithFormat:@",%d",srid]: @""];
return wkt;
break;
@@ -362,16 +363,17 @@
{
char byteOrder;
- UInt32 geoType, srid, numberOfItems, numberOfSubItems, numberOfSubSubItems, numberOfCollectionItems;
+ uint32_t geoType, numberOfItems, numberOfSubItems, numberOfSubSubItems, numberOfCollectionItems;
+ int32_t srid;
st_point_2d aPoint;
- NSUInteger i, j, k, n; // Loop counter for numberOf...Items
- NSUInteger ptr = BUFFER_START; // pointer to geoBuffer while parsing
+ uint32_t i, j, k, n; // Loop counter for numberOf...Items
+ uint32_t ptr = BUFFER_START; // pointer to geoBuffer while parsing
- double x_min = 1e999;
- double x_max = -1e999;
- double y_min = 1e999;
- double y_max = -1e999;
+ double x_min = 1e998;
+ double x_max = -1e998;
+ double y_min = 1e998;
+ double y_max = -1e998;
NSMutableArray *coordinates = [NSMutableArray array];
NSMutableArray *subcoordinates = [NSMutableArray array];
@@ -413,13 +415,13 @@
[NSNumber numberWithDouble:y_max],
nil], @"bbox",
coordinates, @"coordinates",
- [NSNumber numberWithUnsignedInt:srid], @"srid",
+ [NSNumber numberWithInt:srid], @"srid",
@"POINT", @"type",
nil];
break;
case wkb_linestring:
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
for(i=0; i < numberOfItems; i++) {
memcpy(&aPoint, &geoBuffer[ptr], POINT_DATA_SIZE);
@@ -443,10 +445,10 @@
break;
case wkb_polygon:
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
for(i=0; i < numberOfItems; i++) {
- numberOfSubItems = geoBuffer[ptr];
+ memcpy(&numberOfSubItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
for(j=0; j < numberOfSubItems; j++) {
memcpy(&aPoint, &geoBuffer[ptr], POINT_DATA_SIZE);
@@ -468,13 +470,13 @@
[NSNumber numberWithDouble:y_max],
nil], @"bbox",
coordinates, @"coordinates",
- [NSNumber numberWithUnsignedInt:srid], @"srid",
+ [NSNumber numberWithInt:srid], @"srid",
@"POLYGON", @"type",
nil];
break;
case wkb_multipoint:
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32+WKB_HEADER_SIZE;
for(i=0; i < numberOfItems; i++) {
memcpy(&aPoint, &geoBuffer[ptr], POINT_DATA_SIZE);
@@ -493,16 +495,16 @@
[NSNumber numberWithDouble:y_max],
nil], @"bbox",
coordinates, @"coordinates",
- [NSNumber numberWithUnsignedInt:srid], @"srid",
+ [NSNumber numberWithInt:srid], @"srid",
@"MULTIPOINT", @"type",
nil];
break;
case wkb_multilinestring:
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32+WKB_HEADER_SIZE;
for(i=0; i < numberOfItems; i++) {
- numberOfSubItems = geoBuffer[ptr];
+ memcpy(&numberOfSubItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
for(j=0; j < numberOfSubItems; j++) {
memcpy(&aPoint, &geoBuffer[ptr], POINT_DATA_SIZE);
@@ -525,19 +527,19 @@
[NSNumber numberWithDouble:y_max],
nil], @"bbox",
coordinates, @"coordinates",
- [NSNumber numberWithUnsignedInt:srid], @"srid",
+ [NSNumber numberWithInt:srid], @"srid",
@"MULTILINESTRING", @"type",
nil];
break;
case wkb_multipolygon:
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32+WKB_HEADER_SIZE;
for(i=0; i < numberOfItems; i++) {
- numberOfSubItems = geoBuffer[ptr];
+ memcpy(&numberOfSubItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
for(j=0; j < numberOfSubItems; j++) {
- numberOfSubSubItems = geoBuffer[ptr];
+ memcpy(&numberOfSubSubItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
for(k=0; k < numberOfSubSubItems; k++) {
memcpy(&aPoint, &geoBuffer[ptr], POINT_DATA_SIZE);
@@ -561,7 +563,7 @@
[NSNumber numberWithDouble:y_max],
nil], @"bbox",
coordinates, @"coordinates",
- [NSNumber numberWithUnsignedInt:srid], @"srid",
+ [NSNumber numberWithInt:srid], @"srid",
@"MULTIPOLYGON", @"type",
nil];
break;
@@ -594,7 +596,7 @@
break;
case wkb_linestring:
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
for(i=0; i < numberOfItems; i++) {
memcpy(&aPoint, &geoBuffer[ptr], POINT_DATA_SIZE);
@@ -610,10 +612,10 @@
break;
case wkb_polygon:
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
for(i=0; i < numberOfItems; i++) {
- numberOfSubItems = geoBuffer[ptr];
+ memcpy(&numberOfSubItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
for(j=0; j < numberOfSubItems; j++) {
memcpy(&aPoint, &geoBuffer[ptr], POINT_DATA_SIZE);
@@ -630,7 +632,7 @@
break;
case wkb_multipoint:
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32+WKB_HEADER_SIZE;
for(i=0; i < numberOfItems; i++) {
memcpy(&aPoint, &geoBuffer[ptr], POINT_DATA_SIZE);
@@ -645,10 +647,10 @@
break;
case wkb_multilinestring:
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32+WKB_HEADER_SIZE;
for(i=0; i < numberOfItems; i++) {
- numberOfSubItems = geoBuffer[ptr];
+ memcpy(&numberOfSubItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
for(j=0; j < numberOfSubItems; j++) {
memcpy(&aPoint, &geoBuffer[ptr], POINT_DATA_SIZE);
@@ -667,13 +669,13 @@
break;
case wkb_multipolygon:
- numberOfItems = geoBuffer[ptr];
+ memcpy(&numberOfItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32+WKB_HEADER_SIZE;
for(i=0; i < numberOfItems; i++) {
- numberOfSubItems = geoBuffer[ptr];
+ memcpy(&numberOfSubItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
for(j=0; j < numberOfSubItems; j++) {
- numberOfSubSubItems = geoBuffer[ptr];
+ memcpy(&numberOfSubSubItems, &geoBuffer[ptr], SIZEOF_STORED_UINT32);
ptr += SIZEOF_STORED_UINT32;
for(k=0; k < numberOfSubSubItems; k++) {
memcpy(&aPoint, &geoBuffer[ptr], POINT_DATA_SIZE);
diff --git a/Frameworks/PSMTabBar/PSMTabBarControl.m b/Frameworks/PSMTabBar/PSMTabBarControl.m
index a9268a78..8debd774 100644
--- a/Frameworks/PSMTabBar/PSMTabBarControl.m
+++ b/Frameworks/PSMTabBar/PSMTabBarControl.m
@@ -265,8 +265,8 @@
}
if (aWindow) {
- [center addObserver:self selector:@selector(windowStatusDidChange:) name:NSWindowDidBecomeKeyNotification object:aWindow];
- [center addObserver:self selector:@selector(windowStatusDidChange:) name:NSWindowDidResignKeyNotification object:aWindow];
+ [center addObserver:self selector:@selector(windowStatusDidChange:) name:NSWindowDidBecomeMainNotification object:aWindow];
+ [center addObserver:self selector:@selector(windowStatusDidChange:) name:NSWindowDidResignMainNotification object:aWindow];
[center addObserver:self selector:@selector(windowDidUpdate:) name:NSWindowDidUpdateNotification object:aWindow];
[center addObserver:self selector:@selector(windowDidMove:) name:NSWindowDidMoveNotification object:aWindow];
}
diff --git a/Frameworks/PSMTabBar/Styles/PSMAdiumTabStyle.m b/Frameworks/PSMTabBar/Styles/PSMAdiumTabStyle.m
index be5cf82d..3bda9cf5 100644
--- a/Frameworks/PSMTabBar/Styles/PSMAdiumTabStyle.m
+++ b/Frameworks/PSMTabBar/Styles/PSMAdiumTabStyle.m
@@ -399,7 +399,7 @@
// Paragraph Style for Truncating Long Text
static NSMutableParagraphStyle *TruncatingTailParagraphStyle = nil;
if (!TruncatingTailParagraphStyle) {
- TruncatingTailParagraphStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] retain];
+ TruncatingTailParagraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[TruncatingTailParagraphStyle setLineBreakMode:NSLineBreakByTruncatingTail];
}
[attrStr addAttribute:NSParagraphStyleAttributeName value:TruncatingTailParagraphStyle range:range];
@@ -995,11 +995,12 @@
NSMutableParagraphStyle *centeredParagraphStyle = nil;
if (!centeredParagraphStyle) {
- centeredParagraphStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] retain];
+ centeredParagraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[centeredParagraphStyle setAlignment:NSCenterTextAlignment];
}
[attrStr addAttribute:NSParagraphStyleAttributeName value:centeredParagraphStyle range:range];
+ [centeredParagraphStyle release];
[attrStr drawInRect:labelRect];
return;
}
diff --git a/Frameworks/PSMTabBar/Styles/PSMAquaTabStyle.m b/Frameworks/PSMTabBar/Styles/PSMAquaTabStyle.m
index f2618fe5..901f3b4a 100644
--- a/Frameworks/PSMTabBar/Styles/PSMAquaTabStyle.m
+++ b/Frameworks/PSMTabBar/Styles/PSMAquaTabStyle.m
@@ -312,12 +312,12 @@
// Paragraph Style for Truncating Long Text
static NSMutableParagraphStyle *TruncatingTailParagraphStyle = nil;
if (!TruncatingTailParagraphStyle) {
- TruncatingTailParagraphStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] retain];
+ TruncatingTailParagraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[TruncatingTailParagraphStyle setLineBreakMode:NSLineBreakByTruncatingTail];
[TruncatingTailParagraphStyle setAlignment:NSCenterTextAlignment];
}
[attrStr addAttribute:NSParagraphStyleAttributeName value:TruncatingTailParagraphStyle range:range];
-
+
return attrStr;
}
@@ -414,10 +414,11 @@
[attrStr addAttribute:NSFontAttributeName value:[NSFont systemFontOfSize:11.0] range:range];
NSMutableParagraphStyle *centeredParagraphStyle = nil;
if (!centeredParagraphStyle) {
- centeredParagraphStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] retain];
+ centeredParagraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[centeredParagraphStyle setAlignment:NSCenterTextAlignment];
}
[attrStr addAttribute:NSParagraphStyleAttributeName value:centeredParagraphStyle range:range];
+ [centeredParagraphStyle release];
[attrStr drawInRect:labelRect];
return;
}
diff --git a/Frameworks/PSMTabBar/Styles/PSMCardTabStyle.m b/Frameworks/PSMTabBar/Styles/PSMCardTabStyle.m
index 31da000c..56c3a173 100644
--- a/Frameworks/PSMTabBar/Styles/PSMCardTabStyle.m
+++ b/Frameworks/PSMTabBar/Styles/PSMCardTabStyle.m
@@ -298,11 +298,11 @@
// Paragraph Style for Truncating Long Text
static NSMutableParagraphStyle *TruncatingTailParagraphStyle = nil;
if (!TruncatingTailParagraphStyle) {
- TruncatingTailParagraphStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] retain];
+ TruncatingTailParagraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[TruncatingTailParagraphStyle setLineBreakMode:NSLineBreakByTruncatingTail];
}
[attrStr addAttribute:NSParagraphStyleAttributeName value:TruncatingTailParagraphStyle range:range];
-
+
return attrStr;
}
diff --git a/Frameworks/PSMTabBar/Styles/PSMMetalTabStyle.m b/Frameworks/PSMTabBar/Styles/PSMMetalTabStyle.m
index 443179ce..db9bbd86 100644
--- a/Frameworks/PSMTabBar/Styles/PSMMetalTabStyle.m
+++ b/Frameworks/PSMTabBar/Styles/PSMMetalTabStyle.m
@@ -327,7 +327,7 @@
// Paragraph Style for Truncating Long Text
static NSMutableParagraphStyle *TruncatingTailParagraphStyle = nil;
if (!TruncatingTailParagraphStyle) {
- TruncatingTailParagraphStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] retain];
+ TruncatingTailParagraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[TruncatingTailParagraphStyle setLineBreakMode:NSLineBreakByTruncatingTail];
[TruncatingTailParagraphStyle setAlignment:NSCenterTextAlignment];
}
@@ -592,10 +592,11 @@
[attrStr addAttribute:NSFontAttributeName value:[NSFont systemFontOfSize:11.0] range:range];
NSMutableParagraphStyle *centeredParagraphStyle = nil;
if (!centeredParagraphStyle) {
- centeredParagraphStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] retain];
+ centeredParagraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[centeredParagraphStyle setAlignment:NSCenterTextAlignment];
}
[attrStr addAttribute:NSParagraphStyleAttributeName value:centeredParagraphStyle range:range];
+ [centeredParagraphStyle release];
[attrStr drawInRect:labelRect];
return;
}
diff --git a/Frameworks/PSMTabBar/Styles/PSMSequelProTabStyle.m b/Frameworks/PSMTabBar/Styles/PSMSequelProTabStyle.m
index 9ec84db8..48db93c3 100644
--- a/Frameworks/PSMTabBar/Styles/PSMSequelProTabStyle.m
+++ b/Frameworks/PSMTabBar/Styles/PSMSequelProTabStyle.m
@@ -337,7 +337,7 @@
// Paragraph Style for Truncating Long Text
static NSMutableParagraphStyle *TruncatingTailParagraphStyle = nil;
if (!TruncatingTailParagraphStyle) {
- TruncatingTailParagraphStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] retain];
+ TruncatingTailParagraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[TruncatingTailParagraphStyle setLineBreakMode:NSLineBreakByTruncatingTail];
[TruncatingTailParagraphStyle setAlignment:NSCenterTextAlignment];
}
@@ -375,10 +375,11 @@
NSMutableParagraphStyle *centeredParagraphStyle = nil;
if (!centeredParagraphStyle) {
- centeredParagraphStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] retain];
+ centeredParagraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[centeredParagraphStyle setAlignment:NSCenterTextAlignment];
}
[attrStr addAttribute:NSParagraphStyleAttributeName value:centeredParagraphStyle range:range];
+ [centeredParagraphStyle release];
[attrStr drawInRect:labelRect];
return;
}
@@ -409,7 +410,7 @@
// When the window is in the background, tone down the colours
if (![[tabBar window] isMainWindow] || ![NSApp isActive]) {
- backgroundCalibratedWhite = 0.685;
+ backgroundCalibratedWhite = 0.73;
lineCalibratedWhite = 0.49;
shadowAlpha = 0.3;
}
@@ -514,7 +515,7 @@
fillColor = [NSColor colorWithCalibratedWhite:0.81 alpha:1.0];
shadowColor = [NSColor colorWithCalibratedWhite:0.0 alpha:0.4];
} else {
- fillColor = [NSColor colorWithCalibratedWhite:0.685 alpha:1.0];
+ fillColor = [NSColor colorWithCalibratedWhite:0.73 alpha:1.0];
shadowColor = [NSColor colorWithCalibratedWhite:0.0 alpha:0.7];
}
}
@@ -533,7 +534,7 @@
topLeftArcCenter = NSMakePoint(aRect.origin.x - kPSMSequelProTabCornerRadius + 0.5, aRect.origin.y + kPSMSequelProTabCornerRadius);
topRightArcCenter = NSMakePoint(aRect.origin.x + aRect.size.width + kPSMSequelProTabCornerRadius + 0.5, aRect.origin.y + kPSMSequelProTabCornerRadius);
bottomLeftArcCenter = NSMakePoint(aRect.origin.x + kPSMSequelProTabCornerRadius + 0.5, aRect.origin.y + aRect.size.height - kPSMSequelProTabCornerRadius);
- bottomRightArcCenter = NSMakePoint(aRect.origin.x + aRect.size.width - kPSMSequelProTabCornerRadius + 0.5, aRect.origin.y + aRect.size.height - kPSMSequelProTabCornerRadius );
+ bottomRightArcCenter = NSMakePoint(aRect.origin.x + aRect.size.width - kPSMSequelProTabCornerRadius + 0.5, aRect.origin.y + aRect.size.height - kPSMSequelProTabCornerRadius);
// Construct the outline path
if (drawLeftEdge) {
@@ -594,6 +595,7 @@
[shadow setShadowOffset:NSMakeSize(0, 1)];
[shadow set];
[outlineBezier stroke];
+ [shadow release];
// Add the shadow over the tops of background tabs
} else if (drawLeftEdge || drawRightEdge) {
@@ -632,12 +634,14 @@
// Draw, and then restore the previous graphics state
[outlineBezier stroke];
+ [shadow release];
CGContextRestoreGState(context);
}
[NSGraphicsContext restoreGraphicsState];
- [self drawInteriorWithTabCell:cell inView:[cell controlView]];
+ [self drawInteriorWithTabCell:cell inView:[cell controlView]];
+
}
diff --git a/Frameworks/PSMTabBar/Styles/PSMUnifiedTabStyle.m b/Frameworks/PSMTabBar/Styles/PSMUnifiedTabStyle.m
index 13fb0994..76b5efc1 100644
--- a/Frameworks/PSMTabBar/Styles/PSMUnifiedTabStyle.m
+++ b/Frameworks/PSMTabBar/Styles/PSMUnifiedTabStyle.m
@@ -297,11 +297,11 @@
// Paragraph Style for Truncating Long Text
static NSMutableParagraphStyle *TruncatingTailParagraphStyle = nil;
if (!TruncatingTailParagraphStyle) {
- TruncatingTailParagraphStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] retain];
+ TruncatingTailParagraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[TruncatingTailParagraphStyle setLineBreakMode:NSLineBreakByTruncatingTail];
}
[attrStr addAttribute:NSParagraphStyleAttributeName value:TruncatingTailParagraphStyle range:range];
-
+
return attrStr;
}
@@ -540,10 +540,11 @@
[attrStr addAttribute:NSFontAttributeName value:[NSFont systemFontOfSize:11.0] range:range];
NSMutableParagraphStyle *centeredParagraphStyle = nil;
if (!centeredParagraphStyle) {
- centeredParagraphStyle = [[[NSParagraphStyle defaultParagraphStyle] mutableCopy] retain];
+ centeredParagraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy];
[centeredParagraphStyle setAlignment:NSCenterTextAlignment];
}
[attrStr addAttribute:NSParagraphStyleAttributeName value:centeredParagraphStyle range:range];
+ [centeredParagraphStyle release];
[attrStr drawInRect:labelRect];
return;
}
diff --git a/Interfaces/English.lproj/BundleEditor.xib b/Interfaces/English.lproj/BundleEditor.xib
index 0997b4f8..bfd90c39 100644
--- a/Interfaces/English.lproj/BundleEditor.xib
+++ b/Interfaces/English.lproj/BundleEditor.xib
@@ -2,10 +2,10 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10H574</string>
+ <string key="IBDocument.SystemVersion">10J567</string>
<string key="IBDocument.InterfaceBuilderVersion">788</string>
<string key="IBDocument.AppKitVersion">1038.35</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <string key="IBDocument.HIToolboxVersion">462.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@@ -23,7 +23,7 @@
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="686"/>
+ <integer value="685"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -57,7 +57,7 @@
<string key="NSWindowRect">{{235, 76}, {691, 444}}</string>
<int key="NSWTFlags">611844096</int>
<string key="NSWindowTitle">Bundle Editor</string>
- <string key="NSWindowClass">NSWindow</string>
+ <string key="NSWindowClass">SPWindow</string>
<nil key="NSViewClass"/>
<string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
<string key="NSWindowContentMinSize">{691, 444}</string>
@@ -76,155 +76,6 @@
<int key="NSvFlags">272</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSScrollView" id="802985400">
- <reference key="NSNextResponder" ref="69213598"/>
- <int key="NSvFlags">4370</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSClipView" id="34907435">
- <reference key="NSNextResponder" ref="802985400"/>
- <int key="NSvFlags">2304</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSOutlineView" id="472206854">
- <reference key="NSNextResponder" ref="34907435"/>
- <int key="NSvFlags">4370</int>
- <string key="NSFrameSize">{143, 421}</string>
- <reference key="NSSuperview" ref="34907435"/>
- <bool key="NSEnabled">YES</bool>
- <object class="_NSCornerView" key="NSCornerView">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">-2147483392</int>
- <string key="NSFrame">{{224, 0}, {16, 17}}</string>
- </object>
- <object class="NSMutableArray" key="NSTableColumns">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTableColumn" id="685938371">
- <string key="NSIdentifier">bundleName</string>
- <double key="NSWidth">140</double>
- <double key="NSMinWidth">16</double>
- <double key="NSMaxWidth">1000</double>
- <object class="NSTableHeaderCell" key="NSHeaderCell">
- <int key="NSCellFlags">75628096</int>
- <int key="NSCellFlags2">2048</int>
- <string key="NSContents"/>
- <object class="NSFont" key="NSSupport" id="26">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">11</double>
- <int key="NSfFlags">3100</int>
- </object>
- <object class="NSColor" key="NSBackgroundColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
- </object>
- <object class="NSColor" key="NSTextColor" id="1020754459">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">headerTextColor</string>
- <object class="NSColor" key="NSColor" id="760623067">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MAA</bytes>
- </object>
- </object>
- </object>
- <object class="NSTextFieldCell" key="NSDataCell" id="205919728">
- <int key="NSCellFlags">337772096</int>
- <int key="NSCellFlags2">133120</int>
- <string key="NSContents">Text Cell</string>
- <reference key="NSSupport" ref="26"/>
- <reference key="NSControlView" ref="472206854"/>
- <object class="NSColor" key="NSBackgroundColor" id="255000212">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlBackgroundColor</string>
- <object class="NSColor" key="NSColor" id="752361275">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor" id="576381864">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlTextColor</string>
- <reference key="NSColor" ref="760623067"/>
- </object>
- </object>
- <int key="NSResizingMask">3</int>
- <bool key="NSIsResizeable">YES</bool>
- <bool key="NSIsEditable">YES</bool>
- <reference key="NSTableView" ref="472206854"/>
- </object>
- </object>
- <double key="NSIntercellSpacingWidth">3</double>
- <double key="NSIntercellSpacingHeight">0.0</double>
- <object class="NSColor" key="NSBackgroundColor">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">_sourceListBackgroundColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC44MzkyMTU2OTU5IDAuODY2NjY2Njc0NiAwLjg5ODAzOTIyMTgAA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSGridColor" id="893936909">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">gridColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC41AA</bytes>
- </object>
- </object>
- <double key="NSRowHeight">20</double>
- <int key="NSTvFlags">1128267776</int>
- <reference key="NSDelegate"/>
- <reference key="NSDataSource"/>
- <string key="NSAutosaveName">SPBundleEditorOutlineView</string>
- <int key="NSColumnAutoresizingStyle">5</int>
- <int key="NSDraggingSourceMaskForLocal">15</int>
- <int key="NSDraggingSourceMaskForNonLocal">0</int>
- <bool key="NSAllowsTypeSelect">YES</bool>
- <int key="NSTableViewSelectionHighlightStyle">1</int>
- <int key="NSTableViewDraggingDestinationStyle">1</int>
- <float key="NSOutlineViewIndentationPerLevelKey">14</float>
- </object>
- </object>
- <string key="NSFrame">{{1, 1}, {143, 421}}</string>
- <reference key="NSSuperview" ref="802985400"/>
- <reference key="NSNextKeyView" ref="472206854"/>
- <reference key="NSDocView" ref="472206854"/>
- <reference key="NSBGColor" ref="255000212"/>
- <int key="NScvFlags">4</int>
- </object>
- <object class="NSScroller" id="769403162">
- <reference key="NSNextResponder" ref="802985400"/>
- <int key="NSvFlags">-2147483392</int>
- <string key="NSFrame">{{-100, -100}, {15, 102}}</string>
- <reference key="NSSuperview" ref="802985400"/>
- <reference key="NSTarget" ref="802985400"/>
- <string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.99585062265396118</double>
- </object>
- <object class="NSScroller" id="124076675">
- <reference key="NSNextResponder" ref="802985400"/>
- <int key="NSvFlags">-2147483392</int>
- <string key="NSFrame">{{-100, -100}, {192, 15}}</string>
- <reference key="NSSuperview" ref="802985400"/>
- <int key="NSsFlags">1</int>
- <reference key="NSTarget" ref="802985400"/>
- <string key="NSAction">_doScroller:</string>
- <double key="NSPercent">0.98947370052337646</double>
- </object>
- </object>
- <string key="NSFrame">{{-1.5, 22.5}, {145, 423}}</string>
- <reference key="NSSuperview" ref="69213598"/>
- <reference key="NSNextKeyView" ref="34907435"/>
- <int key="NSsFlags">530</int>
- <reference key="NSVScroller" ref="769403162"/>
- <reference key="NSHScroller" ref="124076675"/>
- <reference key="NSContentView" ref="34907435"/>
- <bytes key="NSScrollAmts">QSAAAEEgAABBoAAAQaAAAA</bytes>
- </object>
<object class="BWAnchoredButtonBar" id="78837987">
<reference key="NSNextResponder" ref="69213598"/>
<int key="NSvFlags">290</int>
@@ -407,6 +258,155 @@
<bool key="BWABBHandleIsRightAligned">NO</bool>
<int key="BWABBSelectedIndex">0</int>
</object>
+ <object class="NSScrollView" id="802985400">
+ <reference key="NSNextResponder" ref="69213598"/>
+ <int key="NSvFlags">4370</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSClipView" id="34907435">
+ <reference key="NSNextResponder" ref="802985400"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSOutlineView" id="472206854">
+ <reference key="NSNextResponder" ref="34907435"/>
+ <int key="NSvFlags">4370</int>
+ <string key="NSFrameSize">{143, 421}</string>
+ <reference key="NSSuperview" ref="34907435"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="_NSCornerView" key="NSCornerView">
+ <nil key="NSNextResponder"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{224, 0}, {16, 17}}</string>
+ </object>
+ <object class="NSMutableArray" key="NSTableColumns">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTableColumn" id="685938371">
+ <string key="NSIdentifier">bundleName</string>
+ <double key="NSWidth">140</double>
+ <double key="NSMinWidth">16</double>
+ <double key="NSMaxWidth">1000</double>
+ <object class="NSTableHeaderCell" key="NSHeaderCell">
+ <int key="NSCellFlags">75628096</int>
+ <int key="NSCellFlags2">2048</int>
+ <string key="NSContents"/>
+ <object class="NSFont" key="NSSupport" id="26">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">11</double>
+ <int key="NSfFlags">3100</int>
+ </object>
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="1020754459">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">headerTextColor</string>
+ <object class="NSColor" key="NSColor" id="760623067">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MAA</bytes>
+ </object>
+ </object>
+ </object>
+ <object class="NSTextFieldCell" key="NSDataCell" id="205919728">
+ <int key="NSCellFlags">337772096</int>
+ <int key="NSCellFlags2">133120</int>
+ <string key="NSContents">Text Cell</string>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="472206854"/>
+ <object class="NSColor" key="NSBackgroundColor" id="255000212">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlBackgroundColor</string>
+ <object class="NSColor" key="NSColor" id="752361275">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="576381864">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlTextColor</string>
+ <reference key="NSColor" ref="760623067"/>
+ </object>
+ </object>
+ <int key="NSResizingMask">3</int>
+ <bool key="NSIsResizeable">YES</bool>
+ <bool key="NSIsEditable">YES</bool>
+ <reference key="NSTableView" ref="472206854"/>
+ </object>
+ </object>
+ <double key="NSIntercellSpacingWidth">3</double>
+ <double key="NSIntercellSpacingHeight">0.0</double>
+ <object class="NSColor" key="NSBackgroundColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">_sourceListBackgroundColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MC44MzkyMTU2OTU5IDAuODY2NjY2Njc0NiAwLjg5ODAzOTIyMTgAA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSGridColor" id="893936909">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">gridColor</string>
+ <object class="NSColor" key="NSColor">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC41AA</bytes>
+ </object>
+ </object>
+ <double key="NSRowHeight">20</double>
+ <int key="NSTvFlags">1128267776</int>
+ <reference key="NSDelegate"/>
+ <reference key="NSDataSource"/>
+ <string key="NSAutosaveName">SPBundleEditorOutlineView</string>
+ <int key="NSColumnAutoresizingStyle">5</int>
+ <int key="NSDraggingSourceMaskForLocal">15</int>
+ <int key="NSDraggingSourceMaskForNonLocal">0</int>
+ <bool key="NSAllowsTypeSelect">YES</bool>
+ <int key="NSTableViewSelectionHighlightStyle">1</int>
+ <int key="NSTableViewDraggingDestinationStyle">1</int>
+ <float key="NSOutlineViewIndentationPerLevelKey">14</float>
+ </object>
+ </object>
+ <string key="NSFrame">{{1, 1}, {143, 421}}</string>
+ <reference key="NSSuperview" ref="802985400"/>
+ <reference key="NSNextKeyView" ref="472206854"/>
+ <reference key="NSDocView" ref="472206854"/>
+ <reference key="NSBGColor" ref="255000212"/>
+ <int key="NScvFlags">4</int>
+ </object>
+ <object class="NSScroller" id="769403162">
+ <reference key="NSNextResponder" ref="802985400"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-100, -100}, {15, 102}}</string>
+ <reference key="NSSuperview" ref="802985400"/>
+ <reference key="NSTarget" ref="802985400"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSPercent">0.99585062265396118</double>
+ </object>
+ <object class="NSScroller" id="124076675">
+ <reference key="NSNextResponder" ref="802985400"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-100, -100}, {192, 15}}</string>
+ <reference key="NSSuperview" ref="802985400"/>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="802985400"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSPercent">0.98947370052337646</double>
+ </object>
+ </object>
+ <string key="NSFrame">{{-2, 22}, {145, 423}}</string>
+ <reference key="NSSuperview" ref="69213598"/>
+ <reference key="NSNextKeyView" ref="34907435"/>
+ <int key="NSsFlags">530</int>
+ <reference key="NSVScroller" ref="769403162"/>
+ <reference key="NSHScroller" ref="124076675"/>
+ <reference key="NSContentView" ref="34907435"/>
+ <bytes key="NSScrollAmts">QSAAAEEgAABBoAAAQaAAAA</bytes>
+ </object>
</object>
<string key="NSFrameSize">{142, 444}</string>
<reference key="NSSuperview" ref="358491109"/>
@@ -1190,7 +1190,7 @@
<object class="NSTextField" id="728794970">
<reference key="NSNextResponder" ref="338542681"/>
<int key="NSvFlags">288</int>
- <string key="NSFrame">{{17, 78}, {95, 14}}</string>
+ <string key="NSFrame">{{17, 78}, {167, 14}}</string>
<reference key="NSSuperview" ref="338542681"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="38136759">
@@ -1377,7 +1377,7 @@
<reference key="NSSuperview" ref="391663674"/>
<bool key="NSIsVertical">YES</bool>
<int key="NSDividerStyle">2</int>
- <string key="NSAutosaveName">SPQueryFavoriteSplitView</string>
+ <string key="NSAutosaveName">SPBundleEditorSplitView</string>
<object class="NSColor" key="BWSVColor">
<int key="NSColorSpace">1</int>
<bytes key="NSRGB">MC42NjY2NjY2ODY1IDAuNjY2NjY2Njg2NSAwLjY2NjY2NjY4NjUAA</bytes>
@@ -1512,7 +1512,7 @@
<string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
<string key="NSWindowContentMinSize">{341, 198}</string>
<object class="NSView" key="NSWindowView" id="856429814">
- <reference key="NSNextResponder"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -1531,14 +1531,12 @@
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{341, 121}</string>
<reference key="NSSuperview" ref="345853705"/>
- <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="448210001">
<reference key="NSNextResponder" ref="1010462793"/>
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{341, 17}</string>
<reference key="NSSuperview" ref="1010462793"/>
- <reference key="NSWindow"/>
<reference key="NSTableView" ref="703923380"/>
</object>
<object class="_NSCornerView" key="NSCornerView" id="32874251">
@@ -1546,7 +1544,6 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{224, 0}, {16, 17}}</string>
<reference key="NSSuperview" ref="364471408"/>
- <reference key="NSWindow"/>
</object>
<object class="NSMutableArray" key="NSTableColumns">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -1606,7 +1603,6 @@
</object>
<string key="NSFrame">{{1, 17}, {341, 121}}</string>
<reference key="NSSuperview" ref="364471408"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="703923380"/>
<reference key="NSDocView" ref="703923380"/>
<reference key="NSBGColor" ref="255000212"/>
@@ -1617,7 +1613,6 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{224, 17}, {15, 102}}</string>
<reference key="NSSuperview" ref="364471408"/>
- <reference key="NSWindow"/>
<reference key="NSTarget" ref="364471408"/>
<string key="NSAction">_doScroller:</string>
<double key="NSPercent">0.99180328845977783</double>
@@ -1627,7 +1622,6 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{1, 119}, {223, 15}}</string>
<reference key="NSSuperview" ref="364471408"/>
- <reference key="NSWindow"/>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="364471408"/>
<string key="NSAction">_doScroller:</string>
@@ -1642,7 +1636,6 @@
</object>
<string key="NSFrame">{{1, 0}, {341, 17}}</string>
<reference key="NSSuperview" ref="364471408"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="448210001"/>
<reference key="NSDocView" ref="448210001"/>
<reference key="NSBGColor" ref="255000212"/>
@@ -1652,7 +1645,6 @@
</object>
<string key="NSFrame">{{-1, 60}, {343, 139}}</string>
<reference key="NSSuperview" ref="856429814"/>
- <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="345853705"/>
<int key="NSsFlags">562</int>
<reference key="NSVScroller" ref="1021684639"/>
@@ -1667,7 +1659,6 @@
<int key="NSvFlags">289</int>
<string key="NSFrame">{{213, 12}, {114, 32}}</string>
<reference key="NSSuperview" ref="856429814"/>
- <reference key="NSWindow"/>
<int key="NSTag">1</int>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="521920114">
@@ -1689,7 +1680,6 @@
<int key="NSvFlags">289</int>
<string key="NSFrame">{{99, 12}, {114, 32}}</string>
<reference key="NSSuperview" ref="856429814"/>
- <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="517185919">
<int key="NSCellFlags">67239424</int>
@@ -1707,8 +1697,6 @@
</object>
</object>
<string key="NSFrameSize">{341, 198}</string>
- <reference key="NSSuperview"/>
- <reference key="NSWindow"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
<string key="NSMinSize">{341, 214}</string>
@@ -2274,14 +2262,6 @@
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">bundleDataView</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="338542681"/>
- </object>
- <int key="connectionID">1035</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
<string key="label">helpButton</string>
<reference key="source" ref="1001"/>
<reference key="destination" ref="277233496"/>
@@ -2576,6 +2556,22 @@
</object>
<int key="connectionID">1127</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="358491109"/>
+ <reference key="destination" ref="1001"/>
+ </object>
+ <int key="connectionID">1128</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">splitView</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="358491109"/>
+ </object>
+ <int key="connectionID">1130</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@@ -4047,7 +4043,7 @@
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">1127</int>
+ <int key="maxID">1130</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -4068,10 +4064,10 @@
</object>
</object>
<object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
+ <string key="className">NSMenu</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Frameworks/MCPKit/MCPFoundationKit/MCPConnection.h</string>
+ <string key="minorKey">Source/SPMenuAdditions.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
@@ -4156,15 +4152,149 @@
</object>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">NSTextView</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>doDecomposedStringWithCanonicalMapping:</string>
+ <string>doDecomposedStringWithCompatibilityMapping:</string>
+ <string>doPrecomposedStringWithCanonicalMapping:</string>
+ <string>doPrecomposedStringWithCompatibilityMapping:</string>
+ <string>doRemoveDiacritics:</string>
+ <string>doSelectionLowerCase:</string>
+ <string>doSelectionTitleCase:</string>
+ <string>doSelectionUpperCase:</string>
+ <string>doTranspose:</string>
+ <string>executeBundleItemForInputField:</string>
+ <string>insertNULLvalue:</string>
+ <string>moveSelectionLineDown:</string>
+ <string>moveSelectionLineUp:</string>
+ <string>selectCurrentLine:</string>
+ <string>selectCurrentWord:</string>
+ <string>selectEnclosingBrackets:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>doDecomposedStringWithCanonicalMapping:</string>
+ <string>doDecomposedStringWithCompatibilityMapping:</string>
+ <string>doPrecomposedStringWithCanonicalMapping:</string>
+ <string>doPrecomposedStringWithCompatibilityMapping:</string>
+ <string>doRemoveDiacritics:</string>
+ <string>doSelectionLowerCase:</string>
+ <string>doSelectionTitleCase:</string>
+ <string>doSelectionUpperCase:</string>
+ <string>doTranspose:</string>
+ <string>executeBundleItemForInputField:</string>
+ <string>insertNULLvalue:</string>
+ <string>moveSelectionLineDown:</string>
+ <string>moveSelectionLineUp:</string>
+ <string>selectCurrentLine:</string>
+ <string>selectCurrentWord:</string>
+ <string>selectEnclosingBrackets:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">doDecomposedStringWithCanonicalMapping:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">doDecomposedStringWithCompatibilityMapping:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">doPrecomposedStringWithCanonicalMapping:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">doPrecomposedStringWithCompatibilityMapping:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">doRemoveDiacritics:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">doSelectionLowerCase:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">doSelectionTitleCase:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">doSelectionUpperCase:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">doTranspose:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">executeBundleItemForInputField:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">insertNULLvalue:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">moveSelectionLineDown:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">moveSelectionLineUp:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">selectCurrentLine:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">selectCurrentWord:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">selectEnclosingBrackets:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPTextViewAdditions.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">NSWindow</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">Source/SPWindowAdditions.h</string>
</object>
</object>
- </object>
- <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.1+">
- <bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
<string key="className">SPBundleCommandTextView</string>
<string key="superclassName">NSTextView</string>
@@ -4180,8 +4310,8 @@
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBDocumentRelativeSource</string>
- <string key="minorKey">../../Source/SPBundleCommandTextView.h</string>
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPBundleCommandTextView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
@@ -4338,7 +4468,6 @@
<string>addButton</string>
<string>authorLabelField</string>
<string>authorTextField</string>
- <string>bundleDataView</string>
<string>cancelButton</string>
<string>categoryTextField</string>
<string>commandBundleTreeController</string>
@@ -4365,6 +4494,7 @@
<string>saveButton</string>
<string>scopePopupButton</string>
<string>showHideMetaButton</string>
+ <string>splitView</string>
<string>tooltipTextField</string>
<string>triggerPopupButton</string>
<string>undeleteSheet</string>
@@ -4377,7 +4507,6 @@
<string>NSButton</string>
<string>NSTextField</string>
<string>NSTextField</string>
- <string>NSView</string>
<string>NSButton</string>
<string>NSTextField</string>
<string>NSTreeController</string>
@@ -4404,6 +4533,7 @@
<string>NSButton</string>
<string>NSPopUpButton</string>
<string>NSButton</string>
+ <string>BWSplitView</string>
<string>NSTextField</string>
<string>NSPopUpButton</string>
<string>id</string>
@@ -4419,7 +4549,6 @@
<string>addButton</string>
<string>authorLabelField</string>
<string>authorTextField</string>
- <string>bundleDataView</string>
<string>cancelButton</string>
<string>categoryTextField</string>
<string>commandBundleTreeController</string>
@@ -4446,6 +4575,7 @@
<string>saveButton</string>
<string>scopePopupButton</string>
<string>showHideMetaButton</string>
+ <string>splitView</string>
<string>tooltipTextField</string>
<string>triggerPopupButton</string>
<string>undeleteSheet</string>
@@ -4468,10 +4598,6 @@
<string key="candidateClassName">NSTextField</string>
</object>
<object class="IBToOneOutletInfo">
- <string key="name">bundleDataView</string>
- <string key="candidateClassName">NSView</string>
- </object>
- <object class="IBToOneOutletInfo">
<string key="name">cancelButton</string>
<string key="candidateClassName">NSButton</string>
</object>
@@ -4576,6 +4702,10 @@
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo">
+ <string key="name">splitView</string>
+ <string key="candidateClassName">BWSplitView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
<string key="name">tooltipTextField</string>
<string key="candidateClassName">NSTextField</string>
</object>
@@ -4602,22 +4732,73 @@
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBDocumentRelativeSource</string>
- <string key="minorKey">../../Source/SPBundleEditorController.h</string>
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPBundleEditorController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">SPOutlineView</string>
<string key="superclassName">NSOutlineView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBDocumentRelativeSource</string>
- <string key="minorKey">../../Source/SPOutlineView.h</string>
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPOutlineView.h</string>
</object>
</object>
</object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
+ <string key="className">BWAnchoredButtonBar</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">BWToolkitFramework.framework/Headers/BWAnchoredButtonBar.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">BWAnchoredPopUpButton</string>
+ <string key="superclassName">NSPopUpButton</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">BWToolkitFramework.framework/Headers/BWAnchoredPopUpButton.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">BWAnchoredPopUpButtonCell</string>
+ <string key="superclassName">NSPopUpButtonCell</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">BWToolkitFramework.framework/Headers/BWAnchoredPopUpButtonCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">BWSplitView</string>
+ <string key="superclassName">NSSplitView</string>
+ <object class="NSMutableDictionary" key="actions">
+ <string key="NS.key.0">toggleCollapse:</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <string key="NS.key.0">toggleCollapse:</string>
+ <object class="IBActionInfo" key="NS.object.0">
+ <string key="name">toggleCollapse:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">BWToolkitFramework.framework/Headers/BWSplitView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSActionCell</string>
+ <string key="superclassName">NSCell</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">NSApplication</string>
<string key="superclassName">NSResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="391941030">
@@ -4668,6 +4849,54 @@
</object>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">NSButton</string>
+ <string key="superclassName">NSControl</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSButton.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSButtonCell</string>
+ <string key="superclassName">NSActionCell</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSCell</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSControl</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="748253995">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSController</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSFormatter</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">NSMenu</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier" id="456563419">
@@ -4676,6 +4905,22 @@
</object>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">NSMenuItem</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="247936298">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMenuItemCell</string>
+ <string key="superclassName">NSButtonCell</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSMenuItemCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
@@ -4696,10 +4941,7 @@
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
- </object>
+ <reference key="sourceIdentifier" ref="748253995"/>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
@@ -4749,7 +4991,7 @@
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="918629930">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string>
</object>
@@ -4770,7 +5012,7 @@
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="889337452">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
</object>
@@ -4945,6 +5187,27 @@
</object>
<object class="IBPartialClassDescription">
<string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="687232887">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRRecorderCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="7586778">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRRecorderControl.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRValidator.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Sparkle.framework/Headers/SUAppcast.h</string>
@@ -5028,6 +5291,43 @@
</object>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">NSObjectController</string>
+ <string key="superclassName">NSController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSObjectController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSOutlineView</string>
+ <string key="superclassName">NSTableView</string>
+ <reference key="sourceIdentifier" ref="918629930"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSPanel</string>
+ <string key="superclassName">NSWindow</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSPanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSPopUpButton</string>
+ <string key="superclassName">NSButton</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSPopUpButton.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSPopUpButtonCell</string>
+ <string key="superclassName">NSMenuItemCell</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSPopUpButtonCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">NSResponder</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
@@ -5043,21 +5343,103 @@
</object>
</object>
<object class="IBPartialClassDescription">
- <string key="className">NSView</string>
+ <string key="className">NSScrollView</string>
+ <string key="superclassName">NSView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
+ <string key="minorKey">AppKit.framework/Headers/NSScrollView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSScroller</string>
+ <string key="superclassName">NSControl</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSScroller.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSSplitView</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSSplitView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSTableColumn</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTableColumn.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSTableHeaderView</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTableHeaderView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSTableView</string>
+ <string key="superclassName">NSControl</string>
+ <reference key="sourceIdentifier" ref="889337452"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSText</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSText.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSTextField</string>
+ <string key="superclassName">NSControl</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTextField.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSTextFieldCell</string>
+ <string key="superclassName">NSActionCell</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTextFieldCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSTextView</string>
+ <string key="superclassName">NSText</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTextView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSTreeController</string>
+ <string key="superclassName">NSObjectController</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTreeController.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
+ <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
<string key="className">NSView</string>
+ <reference key="sourceIdentifier" ref="247936298"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSView</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
@@ -5123,6 +5505,38 @@
<string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string>
</object>
</object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SRRecorderCell</string>
+ <string key="superclassName">NSActionCell</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">delegate</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <string key="NS.key.0">delegate</string>
+ <object class="IBToOneOutletInfo" key="NS.object.0">
+ <string key="name">delegate</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <reference key="sourceIdentifier" ref="687232887"/>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SRRecorderControl</string>
+ <string key="superclassName">NSControl</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">delegate</string>
+ <string key="NS.object.0">id</string>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <string key="NS.key.0">delegate</string>
+ <object class="IBToOneOutletInfo" key="NS.object.0">
+ <string key="name">delegate</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ <reference key="sourceIdentifier" ref="7586778"/>
+ </object>
</object>
</object>
<int key="IBDocument.localizationMode">0</int>
@@ -5159,8 +5573,8 @@
<string>{9, 8}</string>
<string>{7, 2}</string>
<string>{15, 15}</string>
- <string>{128, 128}</string>
- <string>{128, 128}</string>
+ <string>{32, 23}</string>
+ <string>{32, 23}</string>
</object>
</object>
</data>
diff --git a/Interfaces/English.lproj/DBView.xib b/Interfaces/English.lproj/DBView.xib
index 1b6dd208..29c812fd 100644
--- a/Interfaces/English.lproj/DBView.xib
+++ b/Interfaces/English.lproj/DBView.xib
@@ -2,10 +2,10 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10H574</string>
+ <string key="IBDocument.SystemVersion">10J567</string>
<string key="IBDocument.InterfaceBuilderVersion">788</string>
<string key="IBDocument.AppKitVersion">1038.35</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <string key="IBDocument.HIToolboxVersion">462.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@@ -23,13 +23,14 @@
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="27"/>
+ <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.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>
@@ -508,7 +509,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"/>
@@ -1065,7 +1066,7 @@
<object class="NSTabViewItem" id="831053945">
<string key="NSIdentifier">source</string>
<object class="NSView" key="NSView" id="461236772">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder" ref="714795046"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -1223,7 +1224,7 @@
<object class="NSTableView" id="715508012">
<reference key="NSNextResponder" ref="16936123"/>
<int key="NSvFlags">4352</int>
- <string key="NSFrameSize">{694, 289}</string>
+ <string key="NSFrameSize">{694, 288}</string>
<reference key="NSSuperview" ref="16936123"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="926883367">
@@ -1243,7 +1244,7 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTableColumn" id="214236344">
<string key="NSIdentifier">name</string>
- <double key="NSWidth">60</double>
+ <double key="NSWidth">61</double>
<double key="NSMinWidth">50</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
@@ -1270,7 +1271,7 @@
</object>
<object class="NSTableColumn" id="45498659">
<string key="NSIdentifier">type</string>
- <double key="NSWidth">65</double>
+ <double key="NSWidth">66</double>
<double key="NSMinWidth">65</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
@@ -1359,7 +1360,7 @@
</object>
<object class="NSTableColumn" id="212523940">
<string key="NSIdentifier">length</string>
- <double key="NSWidth">43</double>
+ <double key="NSWidth">44</double>
<double key="NSMinWidth">25</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
@@ -1388,7 +1389,7 @@
<string key="NSIdentifier">unsigned</string>
<double key="NSWidth">54</double>
<double key="NSMinWidth">14</double>
- <double key="NSMaxWidth">54</double>
+ <double key="NSMaxWidth">82</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628096</int>
<int key="NSCellFlags2">2048</int>
@@ -1426,7 +1427,7 @@
<string key="NSIdentifier">zerofill</string>
<double key="NSWidth">41</double>
<double key="NSMinWidth">14</double>
- <double key="NSMaxWidth">41</double>
+ <double key="NSMaxWidth">84</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628096</int>
<int key="NSCellFlags2">2048</int>
@@ -1492,7 +1493,7 @@
<string key="NSIdentifier">null</string>
<double key="NSWidth">57</double>
<double key="NSMinWidth">14</double>
- <double key="NSMaxWidth">57</double>
+ <double key="NSMaxWidth">78</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628096</int>
<int key="NSCellFlags2">2048</int>
@@ -1525,7 +1526,7 @@
<string key="NSIdentifier">Key</string>
<double key="NSWidth">26</double>
<double key="NSMinWidth">26</double>
- <double key="NSMaxWidth">26</double>
+ <double key="NSMaxWidth">60</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628096</int>
<int key="NSCellFlags2">2048</int>
@@ -1549,7 +1550,7 @@
</object>
<object class="NSTableColumn" id="788521496">
<string key="NSIdentifier">default</string>
- <double key="NSWidth">45</double>
+ <double key="NSWidth">46</double>
<double key="NSMinWidth">34</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
@@ -1789,7 +1790,7 @@
<int key="NSTableViewDraggingDestinationStyle">0</int>
</object>
</object>
- <string key="NSFrame">{{1, 17}, {694, 289}}</string>
+ <string key="NSFrame">{{1, 17}, {694, 288}}</string>
<reference key="NSSuperview" ref="22340145"/>
<reference key="NSNextKeyView" ref="715508012"/>
<reference key="NSDocView" ref="715508012"/>
@@ -1832,7 +1833,7 @@
</object>
<reference ref="868771861"/>
</object>
- <string key="NSFrame">{{-1, 22}, {696, 307}}</string>
+ <string key="NSFrame">{{-1, 22}, {696, 306}}</string>
<reference key="NSSuperview" ref="220777809"/>
<reference key="NSNextKeyView" ref="16936123"/>
<int key="NSsFlags">562</int>
@@ -1996,7 +1997,7 @@
</object>
</object>
</object>
- <string key="NSFrameSize">{695, 329}</string>
+ <string key="NSFrameSize">{695, 328}</string>
<reference key="NSSuperview" ref="628830973"/>
<string key="NSClassName">NSView</string>
</object>
@@ -2525,17 +2526,18 @@
<bool key="NSEditable">YES</bool>
</object>
</object>
- <string key="NSFrame">{{0, 330}, {695, 201}}</string>
+ <string key="NSFrame">{{0, 329}, {695, 201}}</string>
<reference key="NSSuperview" ref="628830973"/>
<string key="NSClassName">NSView</string>
</object>
</object>
- <string key="NSFrame">{{7, 10}, {695, 531}}</string>
+ <string key="NSFrame">{{7, 10}, {695, 530}}</string>
<reference key="NSSuperview" ref="461236772"/>
<int key="NSDividerStyle">2</int>
</object>
</object>
<string key="NSFrame">{{10, 7}, {706, 544}}</string>
+ <reference key="NSSuperview" ref="714795046"/>
</object>
<string key="NSLabel">Structure</string>
<reference key="NSColor" ref="62854682"/>
@@ -2544,7 +2546,7 @@
<object class="NSTabViewItem" id="624106058">
<string key="NSIdentifier">content</string>
<object class="NSView" key="NSView" id="1013108064">
- <reference key="NSNextResponder" ref="714795046"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -2561,7 +2563,7 @@
<object class="NSTableView" id="22576329">
<reference key="NSNextResponder" ref="545438501"/>
<int key="NSvFlags">4352</int>
- <string key="NSFrameSize">{694, 450}</string>
+ <string key="NSFrameSize">{694, 454}</string>
<reference key="NSSuperview" ref="545438501"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="457166030">
@@ -2621,7 +2623,7 @@
<int key="NSTableViewDraggingDestinationStyle">0</int>
</object>
</object>
- <string key="NSFrame">{{1, 17}, {694, 450}}</string>
+ <string key="NSFrame">{{1, 17}, {694, 454}}</string>
<reference key="NSSuperview" ref="33038697"/>
<reference key="NSNextKeyView" ref="22576329"/>
<reference key="NSDocView" ref="22576329"/>
@@ -2664,7 +2666,7 @@
</object>
<reference ref="561547869"/>
</object>
- <string key="NSFrame">{{6, 33}, {696, 468}}</string>
+ <string key="NSFrame">{{6, 33}, {696, 472}}</string>
<reference key="NSSuperview" ref="1013108064"/>
<reference key="NSNextKeyView" ref="545438501"/>
<int key="NSsFlags">562</int>
@@ -2937,30 +2939,6 @@
<int key="NSPeriodicInterval">75</int>
</object>
</object>
- <object class="NSButton" id="873734510">
- <reference key="NSNextResponder" ref="1013108064"/>
- <int key="NSvFlags">265</int>
- <string key="NSFrame">{{734, 507}, {160, 16}}</string>
- <reference key="NSSuperview" ref="1013108064"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="212274460">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">134479872</int>
- <string key="NSContents">ShowFilterTable_Dummy_Button</string>
- <object class="NSFont" key="NSSupport">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">9</double>
- <int key="NSfFlags">3614</int>
- </object>
- <reference key="NSControlView" ref="873734510"/>
- <int key="NSButtonFlags">-2038284033</int>
- <int key="NSButtonFlags2">268435585</int>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent">f</string>
- <int key="NSPeriodicDelay">200</int>
- <int key="NSPeriodicInterval">25</int>
- </object>
- </object>
<object class="NSSplitView" id="262085420">
<reference key="NSNextResponder" ref="1013108064"/>
<int key="NSvFlags">266</int>
@@ -3307,7 +3285,6 @@
</object>
</object>
<string key="NSFrame">{{10, 7}, {706, 544}}</string>
- <reference key="NSSuperview" ref="714795046"/>
</object>
<string key="NSLabel">Content</string>
<reference key="NSColor" ref="62854682"/>
@@ -3507,7 +3484,7 @@
<object class="NSTextView" id="793890647">
<reference key="NSNextResponder" ref="888807510"/>
<int key="NSvFlags">6418</int>
- <string key="NSFrameSize">{694, 14}</string>
+ <string key="NSFrame">{{0, -1}, {694, 14}}</string>
<reference key="NSSuperview" ref="888807510"/>
<object class="NSTextContainer" key="NSTextContainer" id="845974686">
<object class="NSLayoutManager" key="NSLayoutManager">
@@ -3566,7 +3543,7 @@
<nil key="NSDelegate"/>
</object>
</object>
- <string key="NSFrame">{{1, 1}, {694, 140}}</string>
+ <string key="NSFrame">{{1, 1}, {694, 139}}</string>
<reference key="NSSuperview" ref="274248101"/>
<reference key="NSNextKeyView" ref="793890647"/>
<reference key="NSDocView" ref="793890647"/>
@@ -3598,7 +3575,7 @@
<double key="NSPercent">0.94565218687057495</double>
</object>
</object>
- <string key="NSFrameSize">{696, 142}</string>
+ <string key="NSFrameSize">{696, 141}</string>
<reference key="NSSuperview" ref="815597998"/>
<reference key="NSNextKeyView" ref="888807510"/>
<int key="NSsFlags">530</int>
@@ -3607,7 +3584,7 @@
<reference key="NSContentView" ref="888807510"/>
</object>
</object>
- <string key="NSFrameSize">{696, 142}</string>
+ <string key="NSFrameSize">{696, 141}</string>
<reference key="NSSuperview" ref="727658473"/>
<string key="NSClassName">NSView</string>
</object>
@@ -4383,12 +4360,12 @@
<bool key="NSEditable">YES</bool>
</object>
</object>
- <string key="NSFrame">{{0, 151}, {696, 244}}</string>
+ <string key="NSFrame">{{0, 150}, {696, 244}}</string>
<reference key="NSSuperview" ref="727658473"/>
<string key="NSClassName">NSView</string>
</object>
</object>
- <string key="NSFrameSize">{696, 395}</string>
+ <string key="NSFrameSize">{696, 394}</string>
<reference key="NSSuperview" ref="940311190"/>
</object>
</object>
@@ -4414,7 +4391,7 @@
<object class="NSTextView" id="714539623">
<reference key="NSNextResponder" ref="572051963"/>
<int key="NSvFlags">2322</int>
- <string key="NSFrameSize">{887, 13}</string>
+ <string key="NSFrameSize">{887, 14}</string>
<reference key="NSSuperview" ref="572051963"/>
<object class="NSTextContainer" key="NSTextContainer" id="322143189">
<object class="NSLayoutManager" key="NSLayoutManager">
@@ -4684,7 +4661,7 @@
<object class="NSTextView" id="69074373">
<reference key="NSNextResponder" ref="78677381"/>
<int key="NSvFlags">2322</int>
- <string key="NSFrameSize">{541, 14}</string>
+ <string key="NSFrame">{{0, 1}, {541, 14}}</string>
<reference key="NSSuperview" ref="78677381"/>
<object class="NSTextContainer" key="NSTextContainer" id="708157837">
<object class="NSLayoutManager" key="NSLayoutManager">
@@ -4745,7 +4722,7 @@
<nil key="NSDelegate"/>
</object>
</object>
- <string key="NSFrame">{{1, 1}, {541, 69}}</string>
+ <string key="NSFrame">{{1, 1}, {541, 70}}</string>
<reference key="NSSuperview" ref="709531668"/>
<reference key="NSNextKeyView" ref="69074373"/>
<reference key="NSDocView" ref="69074373"/>
@@ -4756,7 +4733,7 @@
<object class="NSScroller" id="892376800">
<reference key="NSNextResponder" ref="709531668"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{542, 1}, {11, 69}}</string>
+ <string key="NSFrame">{{542, 1}, {11, 70}}</string>
<reference key="NSSuperview" ref="709531668"/>
<int key="NSsFlags">256</int>
<reference key="NSTarget" ref="709531668"/>
@@ -4776,7 +4753,7 @@
<double key="NSPercent">0.94565218687057495</double>
</object>
</object>
- <string key="NSFrame">{{109.248, 0}, {554, 71}}</string>
+ <string key="NSFrame">{{109, 0}, {554, 72}}</string>
<reference key="NSSuperview" ref="259390764"/>
<reference key="NSNextKeyView" ref="78677381"/>
<int key="NSsFlags">18</int>
@@ -4787,7 +4764,7 @@
<object class="NSTextField" id="231853805">
<reference key="NSNextResponder" ref="259390764"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{4, 57}, {100.248, 14}}</string>
+ <string key="NSFrame">{{4, 58}, {100, 14}}</string>
<reference key="NSSuperview" ref="259390764"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="647656972">
@@ -4801,7 +4778,7 @@
</object>
</object>
</object>
- <string key="NSFrameSize">{663, 71}</string>
+ <string key="NSFrameSize">{663, 72}</string>
<reference key="NSSuperview" ref="501779393"/>
<string key="NSClassName">NSView</string>
</object>
@@ -4823,7 +4800,7 @@
<object class="NSTextView" id="421486962">
<reference key="NSNextResponder" ref="637054939"/>
<int key="NSvFlags">2322</int>
- <string key="NSFrameSize">{541, 14}</string>
+ <string key="NSFrame">{{0, 1}, {541, 14}}</string>
<reference key="NSSuperview" ref="637054939"/>
<object class="NSTextContainer" key="NSTextContainer" id="194867362">
<object class="NSLayoutManager" key="NSLayoutManager">
@@ -4884,7 +4861,7 @@
<nil key="NSDelegate"/>
</object>
</object>
- <string key="NSFrame">{{1, 1}, {541, 196}}</string>
+ <string key="NSFrame">{{1, 1}, {541, 197}}</string>
<reference key="NSSuperview" ref="449863508"/>
<reference key="NSNextKeyView" ref="421486962"/>
<reference key="NSDocView" ref="421486962"/>
@@ -4895,7 +4872,7 @@
<object class="NSScroller" id="633929130">
<reference key="NSNextResponder" ref="449863508"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{542, 1}, {11, 196}}</string>
+ <string key="NSFrame">{{542, 1}, {11, 197}}</string>
<reference key="NSSuperview" ref="449863508"/>
<int key="NSsFlags">256</int>
<reference key="NSTarget" ref="449863508"/>
@@ -4914,7 +4891,7 @@
<double key="NSPercent">0.94565218687057495</double>
</object>
</object>
- <string key="NSFrame">{{109, 0}, {554, 198}}</string>
+ <string key="NSFrame">{{109, 0}, {554, 199}}</string>
<reference key="NSSuperview" ref="983998494"/>
<reference key="NSNextKeyView" ref="637054939"/>
<int key="NSsFlags">18</int>
@@ -4925,7 +4902,7 @@
<object class="NSTextField" id="855588490">
<reference key="NSNextResponder" ref="983998494"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{3, 184}, {101, 14}}</string>
+ <string key="NSFrame">{{3, 185}, {101, 14}}</string>
<reference key="NSSuperview" ref="983998494"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="625199500">
@@ -4939,19 +4916,19 @@
</object>
</object>
</object>
- <string key="NSFrame">{{0, 80}, {663, 198}}</string>
+ <string key="NSFrame">{{0, 81}, {663, 199}}</string>
<reference key="NSSuperview" ref="501779393"/>
<string key="NSClassName">NSView</string>
</object>
</object>
- <string key="NSFrame">{{12, 30}, {663, 278}}</string>
+ <string key="NSFrame">{{12, 30}, {663, 280}}</string>
<reference key="NSSuperview" ref="730602982"/>
<string key="NSAutosaveName">TableInfoSplitter</string>
</object>
<object class="NSTextField" id="459419226">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{22, 499}, {91, 14}}</string>
+ <string key="NSFrame">{{22, 501}, {91, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="643775960">
@@ -4967,7 +4944,7 @@
<object class="NSTextField" id="326368890">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">266</int>
- <string key="NSFrame">{{369, 473}, {305, 14}}</string>
+ <string key="NSFrame">{{369, 475}, {305, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="705814774">
@@ -4983,7 +4960,7 @@
<object class="NSTextField" id="644870593">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">266</int>
- <string key="NSFrame">{{369, 498}, {305, 14}}</string>
+ <string key="NSFrame">{{369, 500}, {305, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="51220700">
@@ -4999,7 +4976,7 @@
<object class="NSTextField" id="159410215">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{23, 473}, {90, 14}}</string>
+ <string key="NSFrame">{{23, 475}, {90, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="47286035">
@@ -5015,7 +4992,7 @@
<object class="NSTextField" id="1032584944">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{23, 448}, {91, 14}}</string>
+ <string key="NSFrame">{{23, 450}, {91, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="234890062">
@@ -5031,7 +5008,7 @@
<object class="NSPopUpButton" id="708355647">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{115, 494}, {161, 22}}</string>
+ <string key="NSFrame">{{115, 496}, {161, 22}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="338551660">
@@ -5063,7 +5040,7 @@
<object class="NSPopUpButton" id="1051713811">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{115, 469}, {161, 22}}</string>
+ <string key="NSFrame">{{115, 471}, {161, 22}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="790667540">
@@ -5095,7 +5072,7 @@
<object class="NSPopUpButton" id="801484946">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{115, 444}, {161, 22}}</string>
+ <string key="NSFrame">{{115, 446}, {161, 22}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="351231451">
@@ -5127,7 +5104,7 @@
<object class="NSBox" id="83205768">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">10</int>
- <string key="NSFrame">{{25, 425}, {650, 5}}</string>
+ <string key="NSFrame">{{25, 427}, {650, 5}}</string>
<reference key="NSSuperview" ref="730602982"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
@@ -5149,7 +5126,7 @@
<object class="NSBox" id="349710554">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">10</int>
- <string key="NSFrame">{{24, 314}, {650, 5}}</string>
+ <string key="NSFrame">{{24, 316}, {650, 5}}</string>
<reference key="NSSuperview" ref="730602982"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
@@ -5171,7 +5148,7 @@
<object class="NSTextField" id="412060569">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">270</int>
- <string key="NSFrame">{{152, 398}, {152, 14}}</string>
+ <string key="NSFrame">{{152, 400}, {152, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="632489290">
@@ -5187,7 +5164,7 @@
<object class="NSTextField" id="795265894">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">270</int>
- <string key="NSFrame">{{152, 376}, {152, 14}}</string>
+ <string key="NSFrame">{{152, 378}, {152, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="246518824">
@@ -5203,7 +5180,7 @@
<object class="NSTextField" id="747426446">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">270</int>
- <string key="NSFrame">{{152, 354}, {152, 14}}</string>
+ <string key="NSFrame">{{152, 356}, {152, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="738092126">
@@ -5219,7 +5196,7 @@
<object class="NSTextField" id="140378338">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{152, 332}, {152, 14}}</string>
+ <string key="NSFrame">{{152, 334}, {152, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="71975986">
@@ -5305,7 +5282,7 @@
<object class="NSTextField" id="803209800">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">270</int>
- <string key="NSFrame">{{418, 398}, {256, 14}}</string>
+ <string key="NSFrame">{{418, 400}, {256, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="1035416348">
@@ -5321,7 +5298,7 @@
<object class="NSTextField" id="6005445">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">270</int>
- <string key="NSFrame">{{418, 376}, {256, 14}}</string>
+ <string key="NSFrame">{{418, 378}, {256, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="502320319">
@@ -5337,7 +5314,7 @@
<object class="NSTextField" id="531020960">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">266</int>
- <string key="NSFrame">{{418, 354}, {256, 14}}</string>
+ <string key="NSFrame">{{418, 356}, {256, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="686395978">
@@ -5353,7 +5330,7 @@
<object class="NSTextField" id="35887466">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">266</int>
- <string key="NSFrame">{{418, 332}, {256, 14}}</string>
+ <string key="NSFrame">{{418, 334}, {256, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="314352793">
@@ -5369,7 +5346,7 @@
<object class="NSPopUpButton" id="1066106318">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{26, 330}, {20, 20}}</string>
+ <string key="NSFrame">{{26, 332}, {20, 20}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="342819810">
@@ -5442,7 +5419,7 @@
<object class="NSTextField" id="587008251">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{53, 332}, {97, 14}}</string>
+ <string key="NSFrame">{{53, 334}, {97, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="679833695">
@@ -5458,7 +5435,7 @@
<object class="NSTextField" id="986860589">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{21, 354}, {129, 14}}</string>
+ <string key="NSFrame">{{21, 356}, {129, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="472283040">
@@ -5474,7 +5451,7 @@
<object class="NSTextField" id="656261728">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{21, 376}, {129, 14}}</string>
+ <string key="NSFrame">{{21, 378}, {129, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="1466046">
@@ -5490,7 +5467,7 @@
<object class="NSTextField" id="196361793">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{21, 398}, {129, 14}}</string>
+ <string key="NSFrame">{{21, 400}, {129, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="995017127">
@@ -5506,7 +5483,7 @@
<object class="NSTextField" id="307672983">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{304, 398}, {113, 14}}</string>
+ <string key="NSFrame">{{304, 400}, {113, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="428052689">
@@ -5522,7 +5499,7 @@
<object class="NSTextField" id="1047204509">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{286, 498}, {82, 14}}</string>
+ <string key="NSFrame">{{286, 500}, {82, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="328213476">
@@ -5538,7 +5515,7 @@
<object class="NSTextField" id="69053511">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{286, 473}, {82, 14}}</string>
+ <string key="NSFrame">{{286, 475}, {82, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="700311928">
@@ -5554,7 +5531,7 @@
<object class="NSTextField" id="988950867">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{304, 376}, {113, 14}}</string>
+ <string key="NSFrame">{{304, 378}, {113, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="103576616">
@@ -5570,7 +5547,7 @@
<object class="NSTextField" id="333563212">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{304, 354}, {113, 14}}</string>
+ <string key="NSFrame">{{304, 356}, {113, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="958047642">
@@ -5586,7 +5563,7 @@
<object class="NSTextField" id="993399156">
<reference key="NSNextResponder" ref="730602982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{304, 332}, {113, 14}}</string>
+ <string key="NSFrame">{{304, 334}, {113, 14}}</string>
<reference key="NSSuperview" ref="730602982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="662360258">
@@ -5626,7 +5603,7 @@
<object class="NSTableView" id="952375340">
<reference key="NSNextResponder" ref="705580858"/>
<int key="NSvFlags">4352</int>
- <string key="NSFrameSize">{694, 456}</string>
+ <string key="NSFrameSize">{694, 454}</string>
<reference key="NSSuperview" ref="705580858"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="370758200">
@@ -5825,7 +5802,7 @@
<int key="NSTableViewDraggingDestinationStyle">0</int>
</object>
</object>
- <string key="NSFrame">{{1, 17}, {694, 456}}</string>
+ <string key="NSFrame">{{1, 17}, {694, 454}}</string>
<reference key="NSSuperview" ref="717203719"/>
<reference key="NSNextKeyView" ref="952375340"/>
<reference key="NSDocView" ref="952375340"/>
@@ -5867,7 +5844,7 @@
</object>
<reference ref="793765259"/>
</object>
- <string key="NSFrame">{{6, 33}, {696, 474}}</string>
+ <string key="NSFrame">{{6, 33}, {696, 472}}</string>
<reference key="NSSuperview" ref="49633996"/>
<reference key="NSNextKeyView" ref="705580858"/>
<int key="NSsFlags">562</int>
@@ -6435,14 +6412,14 @@
<reference key="NSTabView" ref="714795046"/>
</object>
</object>
- <reference key="NSSelectedTabViewItem" ref="624106058"/>
+ <reference key="NSSelectedTabViewItem" ref="831053945"/>
<reference key="NSFont" ref="26"/>
<int key="NSTvFlags">134217731</int>
<bool key="NSAllowTruncatedLabels">YES</bool>
<bool key="NSDrawsBackground">YES</bool>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1013108064"/>
+ <reference ref="461236772"/>
</object>
</object>
</object>
@@ -6506,15 +6483,15 @@
<object class="NSWindowTemplate" id="554105051">
<int key="NSWindowStyleMask">1</int>
<int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{343, 483}, {292, 112}}</string>
+ <string key="NSWindowRect">{{343, 483}, {311, 112}}</string>
<int key="NSWTFlags">1886912512</int>
<string key="NSWindowTitle">New Database</string>
<string key="NSWindowClass">NSWindow</string>
<object class="NSMutableString" key="NSViewClass">
<characters key="NS.bytes">View</characters>
</object>
- <string key="NSWindowContentMaxSize">{292, 112}</string>
- <string key="NSWindowContentMinSize">{292, 112}</string>
+ <string key="NSWindowContentMaxSize">{311, 112}</string>
+ <string key="NSWindowContentMinSize">{311, 112}</string>
<object class="NSView" key="NSWindowView" id="70075497">
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
@@ -6523,7 +6500,7 @@
<object class="NSTextField" id="823440790">
<reference key="NSNextResponder" ref="70075497"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{36, 75}, {91, 14}}</string>
+ <string key="NSFrame">{{5, 75}, {134, 14}}</string>
<reference key="NSSuperview" ref="70075497"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="45988560">
@@ -6539,7 +6516,7 @@
<object class="NSTextField" id="602251216">
<reference key="NSNextResponder" ref="70075497"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{17, 50}, {110, 14}}</string>
+ <string key="NSFrame">{{5, 50}, {134, 14}}</string>
<reference key="NSSuperview" ref="70075497"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="410467805">
@@ -6555,7 +6532,7 @@
<object class="NSTextField" id="839031135">
<reference key="NSNextResponder" ref="70075497"/>
<int key="NSvFlags">258</int>
- <string key="NSFrame">{{135, 74}, {137, 18}}</string>
+ <string key="NSFrame">{{146, 74}, {145, 18}}</string>
<reference key="NSSuperview" ref="70075497"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="212969926">
@@ -6577,7 +6554,7 @@
<object class="NSButton" id="875952722">
<reference key="NSNextResponder" ref="70075497"/>
<int key="NSvFlags">259</int>
- <string key="NSFrame">{{207, 13}, {70, 28}}</string>
+ <string key="NSFrame">{{215, 13}, {80, 28}}</string>
<reference key="NSSuperview" ref="70075497"/>
<int key="NSTag">1</int>
<bool key="NSEnabled">YES</bool>
@@ -6604,7 +6581,7 @@
<object class="NSButton" id="681100483">
<reference key="NSNextResponder" ref="70075497"/>
<int key="NSvFlags">259</int>
- <string key="NSFrame">{{139, 13}, {70, 28}}</string>
+ <string key="NSFrame">{{131, 13}, {86, 28}}</string>
<reference key="NSSuperview" ref="70075497"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="994559297">
@@ -6625,7 +6602,7 @@
<object class="NSPopUpButton" id="437431578">
<reference key="NSNextResponder" ref="70075497"/>
<int key="NSvFlags">258</int>
- <string key="NSFrame">{{132, 45}, {143, 22}}</string>
+ <string key="NSFrame">{{143, 45}, {151, 22}}</string>
<reference key="NSSuperview" ref="70075497"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="1000126742">
@@ -6658,11 +6635,11 @@
</object>
</object>
</object>
- <string key="NSFrameSize">{292, 112}</string>
+ <string key="NSFrameSize">{311, 112}</string>
</object>
<string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
- <string key="NSMinSize">{292, 134}</string>
- <string key="NSMaxSize">{292, 134}</string>
+ <string key="NSMinSize">{311, 134}</string>
+ <string key="NSMaxSize">{311, 134}</string>
</object>
<object class="NSWindowTemplate" id="1003190366">
<int key="NSWindowStyleMask">1</int>
@@ -7223,7 +7200,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"/>
@@ -7296,6 +7273,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<reference key="NSOnImage" ref="450876295"/>
<reference key="NSMixedImage" ref="414351669"/>
<string key="NSAction">_popUpItemAction:</string>
+ <int key="NSTag">1</int>
<reference key="NSTarget" ref="1007861376"/>
</object>
<object class="NSMenuItem" id="597414827">
@@ -7307,17 +7285,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<reference key="NSOnImage" ref="450876295"/>
<reference key="NSMixedImage" ref="414351669"/>
<string key="NSAction">_popUpItemAction:</string>
- <reference key="NSTarget" ref="1007861376"/>
- </object>
- <object class="NSMenuItem" id="112475542">
- <reference key="NSMenu" ref="392618957"/>
- <string key="NSTitle">FULLTEXT</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="450876295"/>
- <reference key="NSMixedImage" ref="414351669"/>
- <string key="NSAction">_popUpItemAction:</string>
+ <int key="NSTag">2</int>
<reference key="NSTarget" ref="1007861376"/>
</object>
</object>
@@ -7377,17 +7345,17 @@ 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>
<int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{131, 407}, {255, 95}}</string>
+ <string key="NSWindowRect">{{131, 407}, {303, 95}}</string>
<int key="NSWTFlags">1954022400</int>
<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"/>
@@ -7397,7 +7365,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<object class="NSButton" id="681113496">
<reference key="NSNextResponder" ref="748618982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{175, 13}, {65, 28}}</string>
+ <string key="NSFrame">{{198, 13}, {90, 28}}</string>
<reference key="NSSuperview" ref="748618982"/>
<int key="NSTag">1</int>
<bool key="NSEnabled">YES</bool>
@@ -7418,7 +7386,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<object class="NSButton" id="429163241">
<reference key="NSNextResponder" ref="748618982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{112, 13}, {65, 28}}</string>
+ <string key="NSFrame">{{110, 13}, {90, 28}}</string>
<reference key="NSSuperview" ref="748618982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="30569298">
@@ -7438,12 +7406,12 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<object class="NSTextField" id="46466471">
<reference key="NSNextResponder" ref="748618982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{17, 58}, {153, 14}}</string>
+ <string key="NSFrame">{{17, 58}, {201, 14}}</string>
<reference key="NSSuperview" ref="748618982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="356272085">
<int key="NSCellFlags">68288064</int>
- <int key="NSCellFlags2">272761856</int>
+ <int key="NSCellFlags2">71435264</int>
<string key="NSContents">Reset AUTO_INCREMENT to:</string>
<reference key="NSSupport" ref="26"/>
<reference key="NSControlView" ref="46466471"/>
@@ -7454,7 +7422,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<object class="NSTextField" id="660092075">
<reference key="NSNextResponder" ref="748618982"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{175, 55}, {60, 19}}</string>
+ <string key="NSFrame">{{223, 55}, {60, 19}}</string>
<reference key="NSSuperview" ref="748618982"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="847181652">
@@ -7526,7 +7494,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<object class="NSBox" id="1000852667">
<reference key="NSNextResponder" ref="748618982"/>
<int key="NSvFlags">12</int>
- <string key="NSFrame">{{-3, 92}, {264, 5}}</string>
+ <string key="NSFrame">{{-3, 92}, {306, 5}}</string>
<reference key="NSSuperview" ref="748618982"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
@@ -7546,11 +7514,11 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<bool key="NSTransparent">NO</bool>
</object>
</object>
- <string key="NSFrameSize">{255, 95}</string>
+ <string key="NSFrameSize">{303, 95}</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>
@@ -7560,7 +7528,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<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">
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
@@ -8161,7 +8129,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
<string key="NSFrameSize">{302, 307}</string>
</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>
@@ -8171,7 +8139,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"/>
@@ -8578,7 +8546,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>
@@ -8590,7 +8558,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"/>
@@ -8710,7 +8678,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>
@@ -8722,7 +8690,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"/>
@@ -8857,7 +8825,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>
@@ -8869,7 +8837,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"/>
@@ -9092,7 +9060,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">
@@ -9105,7 +9073,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"/>
@@ -9275,7 +9243,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>
@@ -9285,7 +9253,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"/>
@@ -9683,7 +9651,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">
@@ -9694,7 +9662,7 @@ 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">
<nil key="NSNextResponder"/>
@@ -10336,7 +10304,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8</string>
</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">
@@ -10836,7 +10804,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<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>
@@ -10940,10 +10908,10 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<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"/>
+ <reference key="NSNextResponder"/>
<int key="NSvFlags">301</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -11069,6 +11037,7 @@ 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">
@@ -11123,7 +11092,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<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>
@@ -16272,14 +16241,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<int key="connectionID">7581</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">showFilterTable:</string>
- <reference key="source" ref="392169872"/>
- <reference key="destination" ref="873734510"/>
- </object>
- <int key="connectionID">7586</int>
- </object>
- <object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
<string key="label">filterTableLiveSearchCheckbox</string>
<reference key="source" ref="392169872"/>
@@ -16575,6 +16536,22 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
</object>
<int key="connectionID">7780</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">activitiesScrollView</string>
+ <reference key="source" ref="427689665"/>
+ <reference key="destination" ref="561874764"/>
+ </object>
+ <int key="connectionID">7781</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">tableInfoScrollView</string>
+ <reference key="source" ref="427689665"/>
+ <reference key="destination" ref="298226231"/>
+ </object>
+ <int key="connectionID">7782</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@@ -16774,12 +16751,12 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<reference key="object" ref="70075497"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="681100483"/>
<reference ref="839031135"/>
- <reference ref="823440790"/>
- <reference ref="602251216"/>
<reference ref="437431578"/>
<reference ref="875952722"/>
+ <reference ref="823440790"/>
+ <reference ref="602251216"/>
+ <reference ref="681100483"/>
</object>
<reference key="parent" ref="554105051"/>
</object>
@@ -17021,7 +16998,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<reference key="object" ref="392618957"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="112475542"/>
<reference ref="597414827"/>
<reference ref="349617515"/>
<reference ref="104344125"/>
@@ -17029,11 +17005,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<reference key="parent" ref="1007861376"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">417</int>
- <reference key="object" ref="112475542"/>
- <reference key="parent" ref="392618957"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">416</int>
<reference key="object" ref="597414827"/>
<reference key="parent" ref="392618957"/>
@@ -18863,11 +18834,11 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<reference key="object" ref="748618982"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="429163241"/>
- <reference ref="681113496"/>
<reference ref="46466471"/>
- <reference ref="660092075"/>
<reference ref="1000852667"/>
+ <reference ref="681113496"/>
+ <reference ref="429163241"/>
+ <reference ref="660092075"/>
</object>
<reference key="parent" ref="423199625"/>
</object>
@@ -20129,7 +20100,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<reference ref="262235013"/>
<reference ref="393139604"/>
<reference ref="196265983"/>
- <reference ref="873734510"/>
<reference ref="262085420"/>
</object>
<reference key="parent" ref="624106058"/>
@@ -20251,20 +20221,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<reference key="parent" ref="1013108064"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">7533</int>
- <reference key="object" ref="873734510"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="212274460"/>
- </object>
- <reference key="parent" ref="1013108064"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">7534</int>
- <reference key="object" ref="212274460"/>
- <reference key="parent" ref="873734510"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">5181</int>
<reference key="object" ref="291648608"/>
<reference key="parent" ref="196265983"/>
@@ -23357,6 +23313,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>3994.IBPluginDependency</string>
<string>3994.WindowOrigin</string>
<string>3994.editorWindowContentRectSynchronizationRect</string>
+ <string>3995.IBAttributePlaceholdersKey</string>
<string>3995.IBPluginDependency</string>
<string>3996.IBPluginDependency</string>
<string>3997.IBEditorWindowLastContentRect</string>
@@ -23384,12 +23341,11 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>414.IBAttributePlaceholdersKey</string>
<string>414.IBPluginDependency</string>
<string>414.ImportedFromIB2</string>
+ <string>415.IBEditorWindowLastContentRect</string>
<string>415.IBPluginDependency</string>
<string>415.ImportedFromIB2</string>
<string>416.IBPluginDependency</string>
<string>416.ImportedFromIB2</string>
- <string>417.IBPluginDependency</string>
- <string>417.ImportedFromIB2</string>
<string>418.IBPluginDependency</string>
<string>418.ImportedFromIB2</string>
<string>419.IBPluginDependency</string>
@@ -23414,6 +23370,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>4676.IBPluginDependency</string>
<string>4677.IBPluginDependency</string>
<string>4741.IBPluginDependency</string>
+ <string>4741.IBViewBoundsToFrameTransform</string>
<string>4741.ImportedFromIB2</string>
<string>4742.IBPluginDependency</string>
<string>4751.IBPluginDependency</string>
@@ -23704,6 +23661,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>5781.IBPluginDependency</string>
<string>5782.IBPluginDependency</string>
<string>579.IBPluginDependency</string>
+ <string>579.IBViewBoundsToFrameTransform</string>
<string>579.ImportedFromIB2</string>
<string>5790.IBPluginDependency</string>
<string>5791.IBPluginDependency</string>
@@ -23724,6 +23682,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>5818.IBPluginDependency</string>
<string>5819.IBPluginDependency</string>
<string>582.IBPluginDependency</string>
+ <string>582.IBViewBoundsToFrameTransform</string>
<string>582.ImportedFromIB2</string>
<string>5820.IBPluginDependency</string>
<string>5821.IBPluginDependency</string>
@@ -24391,8 +24350,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>7523.IBPluginDependency</string>
<string>7524.IBPluginDependency</string>
<string>7525.IBPluginDependency</string>
- <string>7533.IBPluginDependency</string>
- <string>7534.IBPluginDependency</string>
<string>7537.IBAttributePlaceholdersKey</string>
<string>7537.IBPluginDependency</string>
<string>7538.IBPluginDependency</string>
@@ -24714,6 +24671,14 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{628, 654}</string>
<string>{{284, 769}, {200, 32}}</string>
+ <object class="NSMutableDictionary">
+ <string key="NS.key.0">ToolTip</string>
+ <object class="IBToolTipAttribute" key="NS.object.0">
+ <string key="name">ToolTip</string>
+ <reference key="object" ref="359419551"/>
+ <string key="toolTip">Select a database to view (⇧⌘D)</string>
+ </object>
+ </object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{-11, 1068}, {200, 63}}</string>
@@ -24722,9 +24687,9 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>SPTableTextFieldCell</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{355, 517}, {306, 122}}</string>
+ <string>{{346, 345}, {306, 122}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{355, 517}, {306, 122}}</string>
+ <string>{{346, 345}, {306, 122}}</string>
<integer value="1"/>
<integer value="0"/>
<integer value="1"/>
@@ -24748,8 +24713,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <integer value="1"/>
+ <string>{{409, 358}, {162, 54}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -24778,6 +24742,9 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <object class="NSAffineTransform">
+ <bytes key="NSTransformStruct">P4AAAL+AAABAoAAAwngAAA</bytes>
+ </object>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -25124,14 +25091,14 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{710, 372}, {292, 112}}</string>
+ <string>{{858, 396}, {311, 112}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{710, 372}, {292, 112}}</string>
+ <string>{{858, 396}, {311, 112}}</string>
<integer value="1"/>
<integer value="1"/>
<integer value="1"/>
- <string>{292, 112}</string>
- <string>{292, 112}</string>
+ <string>{311, 112}</string>
+ <string>{311, 112}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -25185,6 +25152,9 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <object class="NSAffineTransform">
+ <bytes key="NSTransformStruct">P4AAAL+AAABAoAAAwq4AAA</bytes>
+ </object>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -25205,6 +25175,9 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <object class="NSAffineTransform">
+ <bytes key="NSTransformStruct">P4AAAL+AAABDCQAAwhwAAA</bytes>
+ </object>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -25683,9 +25656,9 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{580, 661}, {255, 95}}</string>
+ <string>{{580, 661}, {303, 95}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{580, 661}, {255, 95}}</string>
+ <string>{{580, 661}, {303, 95}}</string>
<boolean value="NO"/>
<boolean value="NO"/>
<boolean value="YES"/>
@@ -25798,7 +25771,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{81, 307}, {943, 549}}</string>
+ <string>{{337, 207}, {943, 549}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -26154,8 +26127,6 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
<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>
<object class="NSMutableDictionary">
<string key="NS.key.0">ToolTip</string>
<object class="IBToolTipAttribute" key="NS.object.0">
@@ -26312,7 +26283,7 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">7780</int>
+ <int key="maxID">7782</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -31932,6 +31903,851 @@ bGQgTmFtZQkgID0gQAoJCQkJICBMRU5HVEgoYEBgKSA+IEA</bytes>
</object>
</object>
</object>
+ <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.1+">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">SPDatabaseDocument</string>
+ <string key="superclassName">NSObject</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>addConnectionToFavorites:</string>
+ <string>addDatabase:</string>
+ <string>analyzeTable:</string>
+ <string>backForwardInHistory:</string>
+ <string>cancelTask:</string>
+ <string>checkTable:</string>
+ <string>checksumTable:</string>
+ <string>chooseDatabase:</string>
+ <string>chooseEncoding:</string>
+ <string>closePanelSheet:</string>
+ <string>closePasswordSheet:</string>
+ <string>closeSheet:</string>
+ <string>copyChecksumFromSheet:</string>
+ <string>copyCreateTableSyntax:</string>
+ <string>copyCreateTableSyntaxFromSheet:</string>
+ <string>copyDatabase:</string>
+ <string>export:</string>
+ <string>exportSelectedTablesAs:</string>
+ <string>flushPrivileges:</string>
+ <string>flushTable:</string>
+ <string>focusOnTableContentFilter:</string>
+ <string>focusOnTableListFilter:</string>
+ <string>import:</string>
+ <string>importFromClipboard:</string>
+ <string>openCurrentConnectionInNewWindow:</string>
+ <string>openDatabaseInNewTab:</string>
+ <string>optimizeTable:</string>
+ <string>refreshTables:</string>
+ <string>removeDatabase:</string>
+ <string>renameDatabase:</string>
+ <string>repairTable:</string>
+ <string>saveConnectionSheet:</string>
+ <string>saveCreateSyntax:</string>
+ <string>setDatabases:</string>
+ <string>showConsole:</string>
+ <string>showCreateTableSyntax:</string>
+ <string>showMySQLHelp:</string>
+ <string>showNavigator:</string>
+ <string>showServerProcesses:</string>
+ <string>showServerVariables:</string>
+ <string>showUserManager:</string>
+ <string>toggleNavigator:</string>
+ <string>updateWindowTitle:</string>
+ <string>validateSaveConnectionAccessory:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>addConnectionToFavorites:</string>
+ <string>addDatabase:</string>
+ <string>analyzeTable:</string>
+ <string>backForwardInHistory:</string>
+ <string>cancelTask:</string>
+ <string>checkTable:</string>
+ <string>checksumTable:</string>
+ <string>chooseDatabase:</string>
+ <string>chooseEncoding:</string>
+ <string>closePanelSheet:</string>
+ <string>closePasswordSheet:</string>
+ <string>closeSheet:</string>
+ <string>copyChecksumFromSheet:</string>
+ <string>copyCreateTableSyntax:</string>
+ <string>copyCreateTableSyntaxFromSheet:</string>
+ <string>copyDatabase:</string>
+ <string>export:</string>
+ <string>exportSelectedTablesAs:</string>
+ <string>flushPrivileges:</string>
+ <string>flushTable:</string>
+ <string>focusOnTableContentFilter:</string>
+ <string>focusOnTableListFilter:</string>
+ <string>import:</string>
+ <string>importFromClipboard:</string>
+ <string>openCurrentConnectionInNewWindow:</string>
+ <string>openDatabaseInNewTab:</string>
+ <string>optimizeTable:</string>
+ <string>refreshTables:</string>
+ <string>removeDatabase:</string>
+ <string>renameDatabase:</string>
+ <string>repairTable:</string>
+ <string>saveConnectionSheet:</string>
+ <string>saveCreateSyntax:</string>
+ <string>setDatabases:</string>
+ <string>showConsole:</string>
+ <string>showCreateTableSyntax:</string>
+ <string>showMySQLHelp:</string>
+ <string>showNavigator:</string>
+ <string>showServerProcesses:</string>
+ <string>showServerVariables:</string>
+ <string>showUserManager:</string>
+ <string>toggleNavigator:</string>
+ <string>updateWindowTitle:</string>
+ <string>validateSaveConnectionAccessory:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">addConnectionToFavorites:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">addDatabase:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">analyzeTable:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">backForwardInHistory:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">cancelTask:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">checkTable:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">checksumTable:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">chooseDatabase:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">chooseEncoding:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">closePanelSheet:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">closePasswordSheet:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">closeSheet:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">copyChecksumFromSheet:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">copyCreateTableSyntax:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">copyCreateTableSyntaxFromSheet:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">copyDatabase:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">export:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">exportSelectedTablesAs:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">flushPrivileges:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">flushTable:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">focusOnTableContentFilter:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">focusOnTableListFilter:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">import:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">importFromClipboard:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">openCurrentConnectionInNewWindow:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">openDatabaseInNewTab:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">optimizeTable:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">refreshTables:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">removeDatabase:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">renameDatabase:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">repairTable:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">saveConnectionSheet:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">saveCreateSyntax:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">setDatabases:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">showConsole:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">showCreateTableSyntax:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">showMySQLHelp:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">showNavigator:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">showServerProcesses:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">showServerVariables:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">showUserManager:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">toggleNavigator:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">updateWindowTitle:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">validateSaveConnectionAccessory:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <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>
+ <string>contentViewSplitter</string>
+ <string>copyDatabaseButton</string>
+ <string>copyDatabaseDataButton</string>
+ <string>copyDatabaseMessageField</string>
+ <string>createTableSyntaxTextField</string>
+ <string>createTableSyntaxTextView</string>
+ <string>createTableSyntaxWindow</string>
+ <string>customQueryInstance</string>
+ <string>customQueryTextView</string>
+ <string>databaseCopyNameField</string>
+ <string>databaseCopySheet</string>
+ <string>databaseDataInstance</string>
+ <string>databaseEncodingButton</string>
+ <string>databaseNameField</string>
+ <string>databaseRenameNameField</string>
+ <string>databaseRenameSheet</string>
+ <string>databaseSheet</string>
+ <string>dbTablesTableView</string>
+ <string>encodingPopUp</string>
+ <string>exportControllerInstance</string>
+ <string>extendedTableInfoInstance</string>
+ <string>favoritesButton</string>
+ <string>historyControl</string>
+ <string>inputTextWindow</string>
+ <string>inputTextWindowHeader</string>
+ <string>inputTextWindowMessage</string>
+ <string>inputTextWindowSecureTextField</string>
+ <string>listFilterField</string>
+ <string>parentView</string>
+ <string>queryProgressBar</string>
+ <string>renameDatabaseButton</string>
+ <string>renameDatabaseMessageField</string>
+ <string>saveConnectionAccessory</string>
+ <string>saveConnectionAutoConnect</string>
+ <string>saveConnectionEncrypt</string>
+ <string>saveConnectionEncryptString</string>
+ <string>saveConnectionIncludeData</string>
+ <string>saveConnectionIncludeQuery</string>
+ <string>saveConnectionSavePassword</string>
+ <string>saveConnectionSavePasswordAlert</string>
+ <string>sidebarGrabber</string>
+ <string>spHistoryControllerInstance</string>
+ <string>statusTableAccessoryView</string>
+ <string>statusTableCopyChecksum</string>
+ <string>statusTableView</string>
+ <string>statusValues</string>
+ <string>tableContentInstance</string>
+ <string>tableDataInstance</string>
+ <string>tableDumpInstance</string>
+ <string>tableInfoCollapseButton</string>
+ <string>tableInfoScrollView</string>
+ <string>tableInfoTable</string>
+ <string>tableListSplitter</string>
+ <string>tableRelationsInstance</string>
+ <string>tableSourceInstance</string>
+ <string>tableTabView</string>
+ <string>tableTriggersInstance</string>
+ <string>tablesListInstance</string>
+ <string>taskCancelButton</string>
+ <string>taskCancellationCallbackObject</string>
+ <string>taskDescriptionText</string>
+ <string>taskProgressIndicator</string>
+ <string>taskProgressLayer</string>
+ <string>titleAccessoryView</string>
+ <string>titleImageView</string>
+ <string>titleStringView</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSScrollView</string>
+ <string>id</string>
+ <string>id</string>
+ <string>NSWindow</string>
+ <string>NSSplitView</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>NSTextField</string>
+ <string>NSTextView</string>
+ <string>NSWindow</string>
+ <string>id</string>
+ <string>NSTextView</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>NSTableView</string>
+ <string>NSPopUpButton</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>NSSearchField</string>
+ <string>NSView</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>NSSecureTextField</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>NSButton</string>
+ <string>NSScrollView</string>
+ <string>NSTableView</string>
+ <string>NSSplitView</string>
+ <string>id</string>
+ <string>id</string>
+ <string>NSTabView</string>
+ <string>id</string>
+ <string>id</string>
+ <string>NSButton</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>NSBox</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <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>
+ <string>contentViewSplitter</string>
+ <string>copyDatabaseButton</string>
+ <string>copyDatabaseDataButton</string>
+ <string>copyDatabaseMessageField</string>
+ <string>createTableSyntaxTextField</string>
+ <string>createTableSyntaxTextView</string>
+ <string>createTableSyntaxWindow</string>
+ <string>customQueryInstance</string>
+ <string>customQueryTextView</string>
+ <string>databaseCopyNameField</string>
+ <string>databaseCopySheet</string>
+ <string>databaseDataInstance</string>
+ <string>databaseEncodingButton</string>
+ <string>databaseNameField</string>
+ <string>databaseRenameNameField</string>
+ <string>databaseRenameSheet</string>
+ <string>databaseSheet</string>
+ <string>dbTablesTableView</string>
+ <string>encodingPopUp</string>
+ <string>exportControllerInstance</string>
+ <string>extendedTableInfoInstance</string>
+ <string>favoritesButton</string>
+ <string>historyControl</string>
+ <string>inputTextWindow</string>
+ <string>inputTextWindowHeader</string>
+ <string>inputTextWindowMessage</string>
+ <string>inputTextWindowSecureTextField</string>
+ <string>listFilterField</string>
+ <string>parentView</string>
+ <string>queryProgressBar</string>
+ <string>renameDatabaseButton</string>
+ <string>renameDatabaseMessageField</string>
+ <string>saveConnectionAccessory</string>
+ <string>saveConnectionAutoConnect</string>
+ <string>saveConnectionEncrypt</string>
+ <string>saveConnectionEncryptString</string>
+ <string>saveConnectionIncludeData</string>
+ <string>saveConnectionIncludeQuery</string>
+ <string>saveConnectionSavePassword</string>
+ <string>saveConnectionSavePasswordAlert</string>
+ <string>sidebarGrabber</string>
+ <string>spHistoryControllerInstance</string>
+ <string>statusTableAccessoryView</string>
+ <string>statusTableCopyChecksum</string>
+ <string>statusTableView</string>
+ <string>statusValues</string>
+ <string>tableContentInstance</string>
+ <string>tableDataInstance</string>
+ <string>tableDumpInstance</string>
+ <string>tableInfoCollapseButton</string>
+ <string>tableInfoScrollView</string>
+ <string>tableInfoTable</string>
+ <string>tableListSplitter</string>
+ <string>tableRelationsInstance</string>
+ <string>tableSourceInstance</string>
+ <string>tableTabView</string>
+ <string>tableTriggersInstance</string>
+ <string>tablesListInstance</string>
+ <string>taskCancelButton</string>
+ <string>taskCancellationCallbackObject</string>
+ <string>taskDescriptionText</string>
+ <string>taskProgressIndicator</string>
+ <string>taskProgressLayer</string>
+ <string>titleAccessoryView</string>
+ <string>titleImageView</string>
+ <string>titleStringView</string>
+ </object>
+ <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>
+ <object class="IBToOneOutletInfo">
+ <string key="name">chooseDatabaseButton</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">connectionErrorDialog</string>
+ <string key="candidateClassName">NSWindow</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">contentViewSplitter</string>
+ <string key="candidateClassName">NSSplitView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">copyDatabaseButton</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">copyDatabaseDataButton</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">copyDatabaseMessageField</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">createTableSyntaxTextField</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">createTableSyntaxTextView</string>
+ <string key="candidateClassName">NSTextView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">createTableSyntaxWindow</string>
+ <string key="candidateClassName">NSWindow</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">customQueryInstance</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">customQueryTextView</string>
+ <string key="candidateClassName">NSTextView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">databaseCopyNameField</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">databaseCopySheet</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">databaseDataInstance</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">databaseEncodingButton</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">databaseNameField</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">databaseRenameNameField</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">databaseRenameSheet</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">databaseSheet</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">dbTablesTableView</string>
+ <string key="candidateClassName">NSTableView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">encodingPopUp</string>
+ <string key="candidateClassName">NSPopUpButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">exportControllerInstance</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">extendedTableInfoInstance</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">favoritesButton</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">historyControl</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">inputTextWindow</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">inputTextWindowHeader</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">inputTextWindowMessage</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">inputTextWindowSecureTextField</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">listFilterField</string>
+ <string key="candidateClassName">NSSearchField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">parentView</string>
+ <string key="candidateClassName">NSView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">queryProgressBar</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">renameDatabaseButton</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">renameDatabaseMessageField</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">saveConnectionAccessory</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">saveConnectionAutoConnect</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">saveConnectionEncrypt</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">saveConnectionEncryptString</string>
+ <string key="candidateClassName">NSSecureTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">saveConnectionIncludeData</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">saveConnectionIncludeQuery</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">saveConnectionSavePassword</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">saveConnectionSavePasswordAlert</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">sidebarGrabber</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">spHistoryControllerInstance</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">statusTableAccessoryView</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">statusTableCopyChecksum</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">statusTableView</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">statusValues</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">tableContentInstance</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">tableDataInstance</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">tableDumpInstance</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">tableInfoCollapseButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">tableInfoScrollView</string>
+ <string key="candidateClassName">NSScrollView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">tableInfoTable</string>
+ <string key="candidateClassName">NSTableView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">tableListSplitter</string>
+ <string key="candidateClassName">NSSplitView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">tableRelationsInstance</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">tableSourceInstance</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">tableTabView</string>
+ <string key="candidateClassName">NSTabView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">tableTriggersInstance</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">tablesListInstance</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">taskCancelButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">taskCancellationCallbackObject</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">taskDescriptionText</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">taskProgressIndicator</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">taskProgressLayer</string>
+ <string key="candidateClassName">NSBox</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">titleAccessoryView</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">titleImageView</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">titleStringView</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBDocumentRelativeSource</string>
+ <string key="minorKey">../../Source/SPDatabaseDocument.h</string>
+ </object>
+ </object>
+ </object>
<object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBPartialClassDescription">
diff --git a/Interfaces/English.lproj/DatabaseProcessList.xib b/Interfaces/English.lproj/DatabaseProcessList.xib
index 656f5910..95a80875 100644
--- a/Interfaces/English.lproj/DatabaseProcessList.xib
+++ b/Interfaces/English.lproj/DatabaseProcessList.xib
@@ -2,30 +2,26 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10F569</string>
- <string key="IBDocument.InterfaceBuilderVersion">788</string>
- <string key="IBDocument.AppKitVersion">1038.29</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <string key="IBDocument.SystemVersion">10J567</string>
+ <string key="IBDocument.InterfaceBuilderVersion">804</string>
+ <string key="IBDocument.AppKitVersion">1038.35</string>
+ <string key="IBDocument.HIToolboxVersion">462.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">788</string>
+ <string key="NS.object.0">804</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="17"/>
+ <integer value="134"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys" id="0">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+ <integer value="1" key="NS.object.0"/>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -48,7 +44,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">{640, 200}</string>
<object class="NSView" key="NSWindowView" id="1010674838">
<reference key="NSNextResponder"/>
@@ -201,7 +197,7 @@
<string key="NSColorName">controlBackgroundColor</string>
<object class="NSColor" key="NSColor" id="466472473">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<reference key="NSTextColor" ref="37591332"/>
@@ -826,7 +822,7 @@
</object>
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
<string key="NSMinSize">{640, 222}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
</object>
<object class="NSMenu" id="328428957">
<string key="NSTitle"/>
@@ -874,7 +870,7 @@
<object class="NSWindowTemplate" id="237958724">
<int key="NSWindowStyleMask">1</int>
<int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{343, 502}, {189, 93}}</string>
+ <string key="NSWindowRect">{{343, 502}, {229, 93}}</string>
<int key="NSWTFlags">1886912512</int>
<string key="NSWindowTitle">Custom Interval</string>
<string key="NSWindowClass">NSWindow</string>
@@ -884,14 +880,14 @@
<string key="NSWindowContentMaxSize">{292, 112}</string>
<string key="NSWindowContentMinSize">{189, 93}</string>
<object class="NSView" key="NSWindowView" id="123987262">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTextField" id="93578059">
<reference key="NSNextResponder" ref="123987262"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{17, 56}, {48, 14}}</string>
+ <string key="NSFrame">{{8, 56}, {69, 14}}</string>
<reference key="NSSuperview" ref="123987262"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="582871149">
@@ -907,7 +903,7 @@
<object class="NSTextField" id="287497744">
<reference key="NSNextResponder" ref="123987262"/>
<int key="NSvFlags">256</int>
- <string key="NSFrame">{{124, 56}, {48, 14}}</string>
+ <string key="NSFrame">{{136, 56}, {76, 14}}</string>
<reference key="NSSuperview" ref="123987262"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="514749158">
@@ -923,7 +919,7 @@
<object class="NSButton" id="1030049816">
<reference key="NSNextResponder" ref="123987262"/>
<int key="NSvFlags">259</int>
- <string key="NSFrame">{{94, 13}, {70, 28}}</string>
+ <string key="NSFrame">{{134, 13}, {80, 28}}</string>
<reference key="NSSuperview" ref="123987262"/>
<int key="NSTag">1</int>
<bool key="NSEnabled">YES</bool>
@@ -950,7 +946,7 @@
<object class="NSButton" id="966616599">
<reference key="NSNextResponder" ref="123987262"/>
<int key="NSvFlags">259</int>
- <string key="NSFrame">{{26, 13}, {70, 28}}</string>
+ <string key="NSFrame">{{50, 13}, {86, 28}}</string>
<reference key="NSSuperview" ref="123987262"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="857419907">
@@ -971,7 +967,7 @@
<object class="NSTextField" id="680776">
<reference key="NSNextResponder" ref="123987262"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{70, 52}, {49, 22}}</string>
+ <string key="NSFrame">{{82, 52}, {49, 22}}</string>
<reference key="NSSuperview" ref="123987262"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="437242737">
@@ -1020,7 +1016,9 @@
<string key="NSString">NaN</string>
<object class="NSDictionary" key="NSAttributes">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSArray" key="dict.sortedKeys" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
</object>
@@ -1059,7 +1057,8 @@
</object>
</object>
</object>
- <string key="NSFrameSize">{189, 93}</string>
+ <string key="NSFrameSize">{229, 93}</string>
+ <reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
<string key="NSMinSize">{189, 115}</string>
@@ -1834,10 +1833,10 @@
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="93578059"/>
- <reference ref="287497744"/>
- <reference ref="680776"/>
<reference ref="1030049816"/>
<reference ref="966616599"/>
+ <reference ref="287497744"/>
+ <reference ref="680776"/>
</object>
<reference key="parent" ref="237958724"/>
</object>
@@ -1952,12 +1951,14 @@
<string>134.IBPluginDependency</string>
<string>134.ImportedFromIB2</string>
<string>135.IBPluginDependency</string>
+ <string>135.IBViewBoundsToFrameTransform</string>
<string>135.ImportedFromIB2</string>
<string>138.IBPluginDependency</string>
<string>138.ImportedFromIB2</string>
<string>14.IBPluginDependency</string>
<string>14.IBShouldRemoveOnLegacySave</string>
<string>140.IBPluginDependency</string>
+ <string>140.IBViewBoundsToFrameTransform</string>
<string>140.ImportedFromIB2</string>
<string>141.IBPluginDependency</string>
<string>143.IBPluginDependency</string>
@@ -1969,10 +1970,12 @@
<string>17.ImportedFromIB2</string>
<string>172.IBPluginDependency</string>
<string>173.IBPluginDependency</string>
+ <string>173.IBViewBoundsToFrameTransform</string>
<string>173.ImportedFromIB2</string>
<string>174.IBPluginDependency</string>
<string>176.IBAttributePlaceholdersKey</string>
<string>176.IBPluginDependency</string>
+ <string>176.IBViewBoundsToFrameTransform</string>
<string>177.IBPluginDependency</string>
<string>178.IBNumberFormatterBehaviorMetadataKey</string>
<string>178.IBNumberFormatterLocalizesFormatMetadataKey</string>
@@ -2061,9 +2064,9 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{580, 299}, {189, 93}}</string>
+ <string>{{852, 726}, {229, 93}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{580, 299}, {189, 93}}</string>
+ <string>{{852, 726}, {229, 93}}</string>
<integer value="1"/>
<integer value="1"/>
<boolean value="YES"/>
@@ -2072,12 +2075,18 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <object class="NSAffineTransform">
+ <bytes key="NSTransformStruct">P4AAAL+AAABCvAAAwhwAAA</bytes>
+ </object>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <object class="NSAffineTransform">
+ <bytes key="NSTransformStruct">P4AAAL+AAABB0AAAwhwAAA</bytes>
+ </object>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -2089,6 +2098,9 @@
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <object class="NSAffineTransform">
+ <bytes key="NSTransformStruct">P4AAAL+AAABC+AAAwogAAA</bytes>
+ </object>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSMutableDictionary">
@@ -2100,6 +2112,9 @@
</object>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <object class="NSAffineTransform">
+ <bytes key="NSTransformStruct">P4AAAL+AAABCjAAAwpAAAA</bytes>
+ </object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1041"/>
<boolean value="YES"/>
@@ -2208,10 +2223,10 @@
</object>
</object>
<object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
+ <string key="className">NSMenu</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Frameworks/MCPKit/MCPFoundationKit/MCPConnection.h</string>
+ <string key="minorKey">Source/SPMenuAdditions.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
@@ -2933,6 +2948,27 @@
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRRecorderCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRRecorderControl.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRValidator.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Sparkle.framework/Headers/SUAppcast.h</string>
</object>
</object>
diff --git a/Interfaces/English.lproj/ExportDialog.xib b/Interfaces/English.lproj/ExportDialog.xib
index 9e2fe8cf..16c7be68 100644
--- a/Interfaces/English.lproj/ExportDialog.xib
+++ b/Interfaces/English.lproj/ExportDialog.xib
@@ -2,10 +2,10 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10H574</string>
- <string key="IBDocument.InterfaceBuilderVersion">788</string>
+ <string key="IBDocument.SystemVersion">10J567</string>
+ <string key="IBDocument.InterfaceBuilderVersion">804</string>
<string key="IBDocument.AppKitVersion">1038.35</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <string key="IBDocument.HIToolboxVersion">462.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@@ -15,13 +15,13 @@
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>788</string>
- <string>1.2.5</string>
+ <string>804</string>
+ <string>1.2.2</string>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="1225"/>
+ <integer value="1088"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -1179,7 +1179,7 @@
<object class="NSButton" id="238794017">
<reference key="NSNextResponder" ref="1039688935"/>
<int key="NSvFlags">-2147483380</int>
- <string key="NSFrame">{{226, 269}, {116, 18}}</string>
+ <string key="NSFrame">{{226, 269}, {160, 18}}</string>
<reference key="NSSuperview" ref="1039688935"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="328323922">
@@ -1208,7 +1208,7 @@
<object class="NSTabViewItem" id="286086449">
<string key="NSIdentifier">sql</string>
<object class="NSView" key="NSView" id="311280472">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder" ref="683006936"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -1535,6 +1535,7 @@
</object>
</object>
<string key="NSFrame">{{10, 7}, {189, 229}}</string>
+ <reference key="NSSuperview" ref="683006936"/>
</object>
<string key="NSLabel">SQL</string>
<reference key="NSColor" ref="683790803"/>
@@ -1793,7 +1794,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSTextField" id="431819810">
<reference key="NSNextResponder" ref="251397907"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{5, 178}, {39, 14}}</string>
+ <string key="NSFrame">{{5, 178}, {120, 14}}</string>
<reference key="NSSuperview" ref="251397907"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="704779797">
@@ -1809,7 +1810,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSTextField" id="154639832">
<reference key="NSNextResponder" ref="251397907"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{5, 79}, {36, 14}}</string>
+ <string key="NSFrame">{{5, 79}, {120, 14}}</string>
<reference key="NSSuperview" ref="251397907"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="476159630">
@@ -1825,7 +1826,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSTextField" id="118891385">
<reference key="NSNextResponder" ref="251397907"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{46, 125}, {31, 17}}</string>
+ <string key="NSFrame">{{46, 125}, {110, 17}}</string>
<reference key="NSSuperview" ref="251397907"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="677830525">
@@ -1841,7 +1842,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSTextField" id="897158083">
<reference key="NSNextResponder" ref="251397907"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{46, 150}, {59, 17}}</string>
+ <string key="NSFrame">{{46, 150}, {110, 17}}</string>
<reference key="NSSuperview" ref="251397907"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="51337104">
@@ -2122,7 +2123,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSTextField" id="291048492">
<reference key="NSNextResponder" ref="251397907"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{46, 98}, {41, 17}}</string>
+ <string key="NSFrame">{{46, 98}, {110, 17}}</string>
<reference key="NSSuperview" ref="251397907"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="725186903">
@@ -2221,7 +2222,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSTextField" id="17832185">
<reference key="NSNextResponder" ref="251397907"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{46, 51}, {59, 17}}</string>
+ <string key="NSFrame">{{46, 51}, {110, 17}}</string>
<reference key="NSSuperview" ref="251397907"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="188018483">
@@ -2258,7 +2259,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSTextField" id="768545032">
<reference key="NSNextResponder" ref="251397907"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{5, 29}, {72, 14}}</string>
+ <string key="NSFrame">{{5, 29}, {120, 14}}</string>
<reference key="NSSuperview" ref="251397907"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="112977810">
@@ -2498,7 +2499,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<object class="NSTabViewItem" id="992964191">
<string key="NSIdentifier">dot</string>
<object class="NSView" key="NSView" id="243567307">
- <reference key="NSNextResponder" ref="683006936"/>
+ <nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -2525,21 +2526,20 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
</object>
</object>
<string key="NSFrame">{{10, 7}, {189, 229}}</string>
- <reference key="NSSuperview" ref="683006936"/>
</object>
<string key="NSLabel">Dot</string>
<reference key="NSColor" ref="683790803"/>
<reference key="NSTabView" ref="683006936"/>
</object>
</object>
- <reference key="NSSelectedTabViewItem" ref="992964191"/>
+ <reference key="NSSelectedTabViewItem" ref="286086449"/>
<reference key="NSFont" ref="695505032"/>
<int key="NSTvFlags">4</int>
<bool key="NSAllowTruncatedLabels">YES</bool>
<bool key="NSDrawsBackground">YES</bool>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="243567307"/>
+ <reference ref="311280472"/>
</object>
</object>
<object class="NSScrollView" id="505274803">
@@ -5276,7 +5276,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA</bytes>
<boolean value="NO"/>
<boolean value="YES"/>
<string>{449, 480}</string>
- <string>{{391, 418}, {450, 359}}</string>
+ <string>{{872, 645}, {450, 359}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSMutableDictionary">
diff --git a/Interfaces/English.lproj/FieldEditorSheet.xib b/Interfaces/English.lproj/FieldEditorSheet.xib
index fcee245d..4b2845a9 100644
--- a/Interfaces/English.lproj/FieldEditorSheet.xib
+++ b/Interfaces/English.lproj/FieldEditorSheet.xib
@@ -2,18 +2,18 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10H574</string>
- <string key="IBDocument.InterfaceBuilderVersion">804</string>
+ <string key="IBDocument.SystemVersion">10J567</string>
+ <string key="IBDocument.InterfaceBuilderVersion">788</string>
<string key="IBDocument.AppKitVersion">1038.35</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <string key="IBDocument.HIToolboxVersion">462.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">804</string>
+ <string key="NS.object.0">788</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="81"/>
<integer value="2"/>
+ <integer value="81"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -40,11 +40,11 @@
<string key="NSWindowRect">{{364, 183}, {667, 428}}</string>
<int key="NSWTFlags">544735232</int>
<string key="NSWindowTitle">Field Editor</string>
- <string key="NSWindowClass">NSWindow</string>
+ <string key="NSWindowClass">SPWindow</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>
<object class="NSView" key="NSWindowView" id="559857537">
<reference key="NSNextResponder"/>
<int key="NSvFlags">4370</int>
@@ -359,7 +359,7 @@
<string key="NSColorName">selectedTextBackgroundColor</string>
<object class="NSColor" key="NSColor" id="394290367">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
</object>
</object>
<object class="NSColor" id="935002176">
@@ -659,7 +659,7 @@
<reference key="NSSuperview"/>
</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>
<string key="NSFrameAutosaveName"/>
</object>
<object class="NSWindowTemplate" id="620871617">
@@ -6878,9 +6878,9 @@
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{329, 231}, {667, 428}}</string>
+ <string>{{242, 231}, {667, 428}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{329, 231}, {667, 428}}</string>
+ <string>{{242, 231}, {667, 428}}</string>
<integer value="1"/>
<integer value="0"/>
<boolean value="NO"/>
diff --git a/Interfaces/English.lproj/IndexesView.xib b/Interfaces/English.lproj/IndexesView.xib
index 524fa1b7..2489b11c 100644
--- a/Interfaces/English.lproj/IndexesView.xib
+++ b/Interfaces/English.lproj/IndexesView.xib
@@ -2,9 +2,9 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10F569</string>
- <string key="IBDocument.InterfaceBuilderVersion">804</string>
- <string key="IBDocument.AppKitVersion">1038.29</string>
+ <string key="IBDocument.SystemVersion">10H574</string>
+ <string key="IBDocument.InterfaceBuilderVersion">788</string>
+ <string key="IBDocument.AppKitVersion">1038.35</string>
<string key="IBDocument.HIToolboxVersion">461.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -15,18 +15,17 @@
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>804</string>
+ <string>788</string>
<string>1.2.5</string>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="4"/>
</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.brandonwalkin.BWToolkit</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<string key="NS.key.0">PluginDependencyRecalculationVersion</string>
@@ -53,7 +52,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">{267, 274}</string>
<object class="NSView" key="NSWindowView" id="762677578">
<reference key="NSNextResponder"/>
@@ -65,6 +64,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{83, 233}, {167, 22}}</string>
<reference key="NSSuperview" ref="762677578"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="431781347">
<int key="NSCellFlags">-2076049856</int>
@@ -84,22 +84,23 @@
</object>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
- <object class="NSMenuItem" key="NSMenuItem" id="262306657">
+ <object class="NSMenuItem" key="NSMenuItem" id="71932948">
<reference key="NSMenu" ref="71441725"/>
- <string key="NSTitle">INDEX</string>
+ <string key="NSTitle">FULLTEXT</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<int key="NSState">1</int>
- <object class="NSCustomResource" key="NSOnImage" id="195240984">
+ <object class="NSCustomResource" key="NSOnImage" id="600203078">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuCheckmark</string>
</object>
- <object class="NSCustomResource" key="NSMixedImage" id="81373676">
+ <object class="NSCustomResource" key="NSMixedImage" id="752378347">
<string key="NSClassName">NSImage</string>
<string key="NSResourceName">NSMenuMixedState</string>
</object>
<string key="NSAction">_popUpItemAction:</string>
+ <int key="NSTag">3</int>
<reference key="NSTarget" ref="431781347"/>
</object>
<bool key="NSMenuItemRespectAlignment">YES</bool>
@@ -109,31 +110,45 @@
</object>
<object class="NSMutableArray" key="NSMenuItems">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="262306657"/>
- <object class="NSMenuItem" id="453090810">
+ <object class="NSMenuItem" id="262306657">
<reference key="NSMenu" ref="71441725"/>
- <string key="NSTitle">UNIQUE</string>
+ <string key="NSTitle">PRIMARY KEY</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="195240984"/>
- <reference key="NSMixedImage" ref="81373676"/>
+ <reference key="NSOnImage" ref="600203078"/>
+ <reference key="NSMixedImage" ref="752378347"/>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="431781347"/>
</object>
- <object class="NSMenuItem" id="71932948">
+ <object class="NSMenuItem" id="828450159">
<reference key="NSMenu" ref="71441725"/>
- <string key="NSTitle">FULLTEXT</string>
+ <string key="NSTitle">INDEX</string>
+ <string key="NSKeyEquiv"/>
+ <int key="NSKeyEquivModMask">1048576</int>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="600203078"/>
+ <reference key="NSMixedImage" ref="752378347"/>
+ <string key="NSAction">_popUpItemAction:</string>
+ <int key="NSTag">1</int>
+ <reference key="NSTarget" ref="431781347"/>
+ </object>
+ <object class="NSMenuItem" id="453090810">
+ <reference key="NSMenu" ref="71441725"/>
+ <string key="NSTitle">UNIQUE</string>
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="195240984"/>
- <reference key="NSMixedImage" ref="81373676"/>
+ <reference key="NSOnImage" ref="600203078"/>
+ <reference key="NSMixedImage" ref="752378347"/>
<string key="NSAction">_popUpItemAction:</string>
+ <int key="NSTag">2</int>
<reference key="NSTarget" ref="431781347"/>
</object>
+ <reference ref="71932948"/>
</object>
</object>
+ <int key="NSSelectedIndex">3</int>
<int key="NSPreferredEdge">3</int>
<bool key="NSUsesItemFromMenu">YES</bool>
<bool key="NSAltersState">YES</bool>
@@ -145,6 +160,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{86, 211}, {161, 19}}</string>
<reference key="NSSuperview" ref="762677578"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="1000744513">
<int key="NSCellFlags">-1267597759</int>
@@ -179,6 +195,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 213}, {64, 14}}</string>
<reference key="NSSuperview" ref="762677578"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="568966163">
<int key="NSCellFlags">67239424</int>
@@ -192,7 +209,7 @@
<string key="NSColorName">controlColor</string>
<object class="NSColor" key="NSColor" id="1009303974">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="723855329">
@@ -208,6 +225,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 238}, {64, 14}}</string>
<reference key="NSSuperview" ref="762677578"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="217993475">
<int key="NSCellFlags">67239424</int>
@@ -234,12 +252,14 @@
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{267, 80}</string>
<reference key="NSSuperview" ref="726923866"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTableHeaderView" key="NSHeaderView" id="1016340205">
<reference key="NSNextResponder" ref="218049294"/>
<int key="NSvFlags">256</int>
<string key="NSFrameSize">{267, 17}</string>
<reference key="NSSuperview" ref="218049294"/>
+ <reference key="NSWindow"/>
<reference key="NSTableView" ref="633969417"/>
</object>
<object class="_NSCornerView" key="NSCornerView" id="310534340">
@@ -247,6 +267,7 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{224, 0}, {16, 17}}</string>
<reference key="NSSuperview" ref="561916229"/>
+ <reference key="NSWindow"/>
</object>
<object class="NSMutableArray" key="NSTableColumns">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -406,6 +427,7 @@
</object>
<string key="NSFrame">{{1, 17}, {267, 80}}</string>
<reference key="NSSuperview" ref="561916229"/>
+ <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="633969417"/>
<reference key="NSDocView" ref="633969417"/>
<reference key="NSBGColor" ref="433719363"/>
@@ -416,6 +438,7 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{224, 17}, {15, 102}}</string>
<reference key="NSSuperview" ref="561916229"/>
+ <reference key="NSWindow"/>
<reference key="NSTarget" ref="561916229"/>
<string key="NSAction">_doScroller:</string>
<double key="NSPercent">0.80263155698776245</double>
@@ -425,6 +448,7 @@
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-100, -100}, {225, 11}}</string>
<reference key="NSSuperview" ref="561916229"/>
+ <reference key="NSWindow"/>
<int key="NSsFlags">257</int>
<reference key="NSTarget" ref="561916229"/>
<string key="NSAction">_doScroller:</string>
@@ -439,6 +463,7 @@
</object>
<string key="NSFrame">{{1, 0}, {267, 17}}</string>
<reference key="NSSuperview" ref="561916229"/>
+ <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="1016340205"/>
<reference key="NSDocView" ref="1016340205"/>
<reference key="NSBGColor" ref="433719363"/>
@@ -448,6 +473,7 @@
</object>
<string key="NSFrame">{{-1, 97}, {269, 98}}</string>
<reference key="NSSuperview" ref="762677578"/>
+ <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="726923866"/>
<int key="NSsFlags">530</int>
<reference key="NSVScroller" ref="181568637"/>
@@ -477,6 +503,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{21, 42}, {78, 14}}</string>
<reference key="NSSuperview" ref="361997881"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="971022587">
<int key="NSCellFlags">68288064</int>
@@ -493,6 +520,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{101, 37}, {162, 22}}</string>
<reference key="NSSuperview" ref="361997881"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="747441327">
<int key="NSCellFlags">-2076049856</int>
@@ -512,8 +540,8 @@
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
<int key="NSState">1</int>
- <reference key="NSOnImage" ref="195240984"/>
- <reference key="NSMixedImage" ref="81373676"/>
+ <reference key="NSOnImage" ref="600203078"/>
+ <reference key="NSMixedImage" ref="752378347"/>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="747441327"/>
</object>
@@ -530,8 +558,8 @@
<string key="NSTitle"/>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="195240984"/>
- <reference key="NSMixedImage" ref="81373676"/>
+ <reference key="NSOnImage" ref="600203078"/>
+ <reference key="NSMixedImage" ref="752378347"/>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="747441327"/>
</object>
@@ -541,8 +569,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="195240984"/>
- <reference key="NSMixedImage" ref="81373676"/>
+ <reference key="NSOnImage" ref="600203078"/>
+ <reference key="NSMixedImage" ref="752378347"/>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="747441327"/>
</object>
@@ -552,8 +580,8 @@
<string key="NSKeyEquiv"/>
<int key="NSKeyEquivModMask">1048576</int>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="195240984"/>
- <reference key="NSMixedImage" ref="81373676"/>
+ <reference key="NSOnImage" ref="600203078"/>
+ <reference key="NSMixedImage" ref="752378347"/>
<string key="NSAction">_popUpItemAction:</string>
<reference key="NSTarget" ref="747441327"/>
</object>
@@ -575,6 +603,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{15, 16}, {84, 14}}</string>
<reference key="NSSuperview" ref="361997881"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="408249519">
<int key="NSCellFlags">68288064</int>
@@ -591,6 +620,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{104, 14}, {63, 19}}</string>
<reference key="NSSuperview" ref="361997881"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="659211423">
<int key="NSCellFlags">-1804468671</int>
@@ -670,10 +700,12 @@
</object>
<string key="NSFrame">{{1, 1}, {278, 71}}</string>
<reference key="NSSuperview" ref="197030792"/>
+ <reference key="NSWindow"/>
</object>
</object>
<string key="NSFrame">{{-5, -4}, {280, 73}}</string>
<reference key="NSSuperview" ref="30022357"/>
+ <reference key="NSWindow"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
<int key="NSCellFlags">67239424</int>
@@ -697,6 +729,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{-83, 41}, {100, 18}}</string>
<reference key="NSSuperview" ref="30022357"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="708153532">
<int key="NSCellFlags">67239424</int>
@@ -722,6 +755,7 @@
</object>
<string key="NSFrame">{{-2, -30}, {272, 67}}</string>
<reference key="NSSuperview" ref="762677578"/>
+ <reference key="NSWindow"/>
<string key="NSClassName">NSView</string>
</object>
<object class="NSButton" id="1003402112">
@@ -729,6 +763,7 @@
<int key="NSvFlags">292</int>
<string key="NSFrame">{{0, 40}, {29, 26}}</string>
<reference key="NSSuperview" ref="762677578"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="782137189">
<int key="NSCellFlags">67239424</int>
@@ -750,6 +785,7 @@
<int key="NSvFlags">292</int>
<string key="NSFrame">{{24, 41}, {214, 22}}</string>
<reference key="NSSuperview" ref="762677578"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="958218934">
<int key="NSCellFlags">-2080244224</int>
@@ -775,6 +811,7 @@
<int key="NSvFlags">289</int>
<string key="NSFrame">{{152, 13}, {100, 28}}</string>
<reference key="NSSuperview" ref="762677578"/>
+ <reference key="NSWindow"/>
<int key="NSTag">1</int>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="289434200">
@@ -801,6 +838,7 @@
<int key="NSvFlags">289</int>
<string key="NSFrame">{{54, 13}, {100, 28}}</string>
<reference key="NSSuperview" ref="762677578"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="758521208">
<int key="NSCellFlags">67239424</int>
@@ -827,6 +865,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{1, 0}, {32, 24}}</string>
<reference key="NSSuperview" ref="797179406"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="BWAnchoredButtonCell" key="NSCell" id="78847401">
<int key="NSCellFlags">67239424</int>
@@ -851,6 +890,7 @@
<int key="NSvFlags">268</int>
<string key="NSFrame">{{32, 0}, {32, 24}}</string>
<reference key="NSSuperview" ref="797179406"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="BWAnchoredButtonCell" key="NSCell" id="88287488">
<int key="NSCellFlags">604110336</int>
@@ -873,6 +913,7 @@
</object>
<string key="NSFrame">{{-2, 74}, {270, 24}}</string>
<reference key="NSSuperview" ref="762677578"/>
+ <reference key="NSWindow"/>
<bool key="BWABBIsResizable">NO</bool>
<bool key="BWABBIsAtBottom">NO</bool>
<bool key="BWABBHandleIsRightAligned">NO</bool>
@@ -881,10 +922,11 @@
</object>
<string key="NSFrameSize">{267, 274}</string>
<reference key="NSSuperview"/>
+ <reference key="NSWindow"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
<string key="NSMinSize">{267, 296}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
</object>
<object class="NSMenu" id="644710844">
<string key="NSTitle"/>
@@ -895,8 +937,8 @@
<string key="NSTitle">Remove Field</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="195240984"/>
- <reference key="NSMixedImage" ref="81373676"/>
+ <reference key="NSOnImage" ref="600203078"/>
+ <reference key="NSMixedImage" ref="752378347"/>
</object>
</object>
</object>
@@ -1270,6 +1312,7 @@
<reference ref="453090810"/>
<reference ref="71932948"/>
<reference ref="262306657"/>
+ <reference ref="828450159"/>
</object>
<reference key="parent" ref="431781347"/>
</object>
@@ -1615,6 +1658,11 @@
<reference key="object" ref="299133641"/>
<reference key="parent" ref="659211423"/>
</object>
+ <object class="IBObjectRecord">
+ <int key="objectID">138</int>
+ <reference key="object" ref="828450159"/>
+ <reference key="parent" ref="71441725"/>
+ </object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@@ -1649,6 +1697,8 @@
<string>136.IBNumberFormatterBehaviorMetadataKey</string>
<string>136.IBNumberFormatterLocalizesFormatMetadataKey</string>
<string>136.IBPluginDependency</string>
+ <string>138.IBPluginDependency</string>
+ <string>138.ImportedFromIB2</string>
<string>14.IBEditorWindowLastContentRect</string>
<string>14.IBPluginDependency</string>
<string>14.ImportedFromIB2</string>
@@ -1774,7 +1824,9 @@
<integer value="1041"/>
<boolean value="NO"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{631, 783}, {167, 54}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1"/>
+ <string>{{683, 655}, {167, 71}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -1870,7 +1922,7 @@
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">137</int>
+ <int key="maxID">138</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -1883,10 +1935,10 @@
</object>
</object>
<object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
+ <string key="className">NSMenu</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Frameworks/MCPKit/MCPFoundationKit/MCPConnection.h</string>
+ <string key="minorKey">Source/SPMenuAdditions.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
@@ -1985,7 +2037,10 @@
<string>doSelectionTitleCase:</string>
<string>doSelectionUpperCase:</string>
<string>doTranspose:</string>
+ <string>executeBundleItemForInputField:</string>
<string>insertNULLvalue:</string>
+ <string>moveSelectionLineDown:</string>
+ <string>moveSelectionLineUp:</string>
<string>selectCurrentLine:</string>
<string>selectCurrentWord:</string>
<string>selectEnclosingBrackets:</string>
@@ -2005,6 +2060,9 @@
<string>id</string>
<string>id</string>
<string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
@@ -2020,7 +2078,10 @@
<string>doSelectionTitleCase:</string>
<string>doSelectionUpperCase:</string>
<string>doTranspose:</string>
+ <string>executeBundleItemForInputField:</string>
<string>insertNULLvalue:</string>
+ <string>moveSelectionLineDown:</string>
+ <string>moveSelectionLineUp:</string>
<string>selectCurrentLine:</string>
<string>selectCurrentWord:</string>
<string>selectEnclosingBrackets:</string>
@@ -2064,10 +2125,22 @@
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">executeBundleItemForInputField:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">insertNULLvalue:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">moveSelectionLineDown:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">moveSelectionLineUp:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">selectCurrentLine:</string>
<string key="candidateClassName">id</string>
</object>
@@ -2132,7 +2205,9 @@
<string>import:</string>
<string>importFromClipboard:</string>
<string>openCurrentConnectionInNewWindow:</string>
+ <string>openDatabaseInNewTab:</string>
<string>optimizeTable:</string>
+ <string>refreshTables:</string>
<string>removeDatabase:</string>
<string>renameDatabase:</string>
<string>repairTable:</string>
@@ -2149,12 +2224,6 @@
<string>toggleNavigator:</string>
<string>updateWindowTitle:</string>
<string>validateSaveConnectionAccessory:</string>
- <string>viewContent:</string>
- <string>viewQuery:</string>
- <string>viewRelations:</string>
- <string>viewStatus:</string>
- <string>viewStructure:</string>
- <string>viewTriggers:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -2202,10 +2271,6 @@
<string>id</string>
<string>id</string>
<string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
@@ -2237,7 +2302,9 @@
<string>import:</string>
<string>importFromClipboard:</string>
<string>openCurrentConnectionInNewWindow:</string>
+ <string>openDatabaseInNewTab:</string>
<string>optimizeTable:</string>
+ <string>refreshTables:</string>
<string>removeDatabase:</string>
<string>renameDatabase:</string>
<string>repairTable:</string>
@@ -2254,12 +2321,6 @@
<string>toggleNavigator:</string>
<string>updateWindowTitle:</string>
<string>validateSaveConnectionAccessory:</string>
- <string>viewContent:</string>
- <string>viewQuery:</string>
- <string>viewRelations:</string>
- <string>viewStatus:</string>
- <string>viewStructure:</string>
- <string>viewTriggers:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -2364,10 +2425,18 @@
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">openDatabaseInNewTab:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">optimizeTable:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">refreshTables:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">removeDatabase:</string>
<string key="candidateClassName">id</string>
</object>
@@ -2431,30 +2500,6 @@
<string key="name">validateSaveConnectionAccessory:</string>
<string key="candidateClassName">id</string>
</object>
- <object class="IBActionInfo">
- <string key="name">viewContent:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">viewQuery:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">viewRelations:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">viewStatus:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">viewStructure:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">viewTriggers:</string>
- <string key="candidateClassName">id</string>
- </object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
@@ -2958,6 +3003,73 @@
</object>
<object class="IBPartialClassDescription">
<string key="className">SPDatabaseDocument</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>viewContent:</string>
+ <string>viewQuery:</string>
+ <string>viewRelations:</string>
+ <string>viewStatus:</string>
+ <string>viewStructure:</string>
+ <string>viewTriggers:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>viewContent:</string>
+ <string>viewQuery:</string>
+ <string>viewRelations:</string>
+ <string>viewStatus:</string>
+ <string>viewStructure:</string>
+ <string>viewTriggers:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">viewContent:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">viewQuery:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">viewRelations:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">viewStatus:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">viewStructure:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">viewTriggers:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPDatabaseViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SPDatabaseDocument</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">Source/SPPrintController.h</string>
@@ -3316,13 +3428,13 @@
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>addField:</string>
- <string>closeKeySheet:</string>
<string>closeSheet:</string>
<string>copyField:</string>
<string>reloadTable:</string>
<string>removeField:</string>
<string>resetAutoIncrement:</string>
<string>showOptimizedFieldType:</string>
+ <string>toggleColumnView:</string>
<string>unhideIndexesView:</string>
</object>
<object class="NSMutableArray" key="dict.values">
@@ -3343,13 +3455,13 @@
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>addField:</string>
- <string>closeKeySheet:</string>
<string>closeSheet:</string>
<string>copyField:</string>
<string>reloadTable:</string>
<string>removeField:</string>
<string>resetAutoIncrement:</string>
<string>showOptimizedFieldType:</string>
+ <string>toggleColumnView:</string>
<string>unhideIndexesView:</string>
</object>
<object class="NSMutableArray" key="dict.values">
@@ -3359,10 +3471,6 @@
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
- <string key="name">closeKeySheet:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
<string key="name">closeSheet:</string>
<string key="candidateClassName">id</string>
</object>
@@ -3387,6 +3495,10 @@
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">toggleColumnView:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">unhideIndexesView:</string>
<string key="candidateClassName">id</string>
</object>
@@ -3422,6 +3534,7 @@
<string>tableSourceView</string>
<string>tablesIndexesSplitView</string>
<string>tablesListInstance</string>
+ <string>viewColumnsMenu</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -3451,6 +3564,7 @@
<string>id</string>
<string>NSSplitView</string>
<string>id</string>
+ <string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
@@ -3483,6 +3597,7 @@
<string>tableSourceView</string>
<string>tablesIndexesSplitView</string>
<string>tablesListInstance</string>
+ <string>viewColumnsMenu</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -3590,6 +3705,10 @@
<string key="name">tablesListInstance</string>
<string key="candidateClassName">id</string>
</object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">viewColumnsMenu</string>
+ <string key="candidateClassName">id</string>
+ </object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
@@ -3598,6 +3717,13 @@
</object>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">SPTableStructure</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPTableStructureDelegate.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">SPTablesList</string>
<string key="superclassName">NSObject</string>
<object class="NSMutableDictionary" key="actions">
@@ -3607,6 +3733,7 @@
<string>addTable:</string>
<string>closeSheet:</string>
<string>copyTable:</string>
+ <string>openTableInNewTab:</string>
<string>removeTable:</string>
<string>renameTable:</string>
<string>togglePaneCollapse:</string>
@@ -3625,6 +3752,7 @@
<string>id</string>
<string>id</string>
<string>id</string>
+ <string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
@@ -3634,6 +3762,7 @@
<string>addTable:</string>
<string>closeSheet:</string>
<string>copyTable:</string>
+ <string>openTableInNewTab:</string>
<string>removeTable:</string>
<string>renameTable:</string>
<string>togglePaneCollapse:</string>
@@ -3656,6 +3785,10 @@
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">openTableInNewTab:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">removeTable:</string>
<string key="candidateClassName">id</string>
</object>
@@ -3697,6 +3830,8 @@
<string>duplicateTableMenuItem</string>
<string>extendedTableInfoInstance</string>
<string>listFilterField</string>
+ <string>openTableInNewTabContextMenuItem</string>
+ <string>openTableInNewTabMenuItem</string>
<string>removeTableContextMenuItem</string>
<string>removeTableMenuItem</string>
<string>renameTableContextMenuItem</string>
@@ -3708,7 +3843,6 @@
<string>showCreateSyntaxContextMenuItem</string>
<string>showCreateSyntaxMenuItem</string>
<string>spHistoryControllerInstance</string>
- <string>tabView</string>
<string>tableContentInstance</string>
<string>tableDataInstance</string>
<string>tableDocumentInstance</string>
@@ -3728,7 +3862,7 @@
<string>toolbarAddButton</string>
<string>toolbarReloadButton</string>
<string>truncateTableButton</string>
- <string>truncateTableContextButton</string>
+ <string>truncateTableContextMenuItem</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -3754,13 +3888,14 @@
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
<string>SPHistoryController</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
- <string>id</string>
<string>NSButton</string>
<string>id</string>
<string>NSSplitView</string>
@@ -3775,7 +3910,7 @@
<string>id</string>
<string>id</string>
<string>id</string>
- <string>id</string>
+ <string>NSMenuItem</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
@@ -3794,6 +3929,8 @@
<string>duplicateTableMenuItem</string>
<string>extendedTableInfoInstance</string>
<string>listFilterField</string>
+ <string>openTableInNewTabContextMenuItem</string>
+ <string>openTableInNewTabMenuItem</string>
<string>removeTableContextMenuItem</string>
<string>removeTableMenuItem</string>
<string>renameTableContextMenuItem</string>
@@ -3805,7 +3942,6 @@
<string>showCreateSyntaxContextMenuItem</string>
<string>showCreateSyntaxMenuItem</string>
<string>spHistoryControllerInstance</string>
- <string>tabView</string>
<string>tableContentInstance</string>
<string>tableDataInstance</string>
<string>tableDocumentInstance</string>
@@ -3825,7 +3961,7 @@
<string>toolbarAddButton</string>
<string>toolbarReloadButton</string>
<string>truncateTableButton</string>
- <string>truncateTableContextButton</string>
+ <string>truncateTableContextMenuItem</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -3878,6 +4014,14 @@
<string key="candidateClassName">NSSearchField</string>
</object>
<object class="IBToOneOutletInfo">
+ <string key="name">openTableInNewTabContextMenuItem</string>
+ <string key="candidateClassName">NSMenuItem</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">openTableInNewTabMenuItem</string>
+ <string key="candidateClassName">NSMenuItem</string>
+ </object>
+ <object class="IBToOneOutletInfo">
<string key="name">removeTableContextMenuItem</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
@@ -3922,10 +4066,6 @@
<string key="candidateClassName">SPHistoryController</string>
</object>
<object class="IBToOneOutletInfo">
- <string key="name">tabView</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBToOneOutletInfo">
<string key="name">tableContentInstance</string>
<string key="candidateClassName">id</string>
</object>
@@ -4002,8 +4142,8 @@
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo">
- <string key="name">truncateTableContextButton</string>
- <string key="candidateClassName">id</string>
+ <string key="name">truncateTableContextMenuItem</string>
+ <string key="candidateClassName">NSMenuItem</string>
</object>
</object>
</object>
@@ -4451,6 +4591,27 @@
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRRecorderCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRRecorderControl.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRValidator.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Sparkle.framework/Headers/SUAppcast.h</string>
</object>
</object>
diff --git a/Interfaces/English.lproj/MainMenu.xib b/Interfaces/English.lproj/MainMenu.xib
index 71e0d7f3..9b2d90a0 100644
--- a/Interfaces/English.lproj/MainMenu.xib
+++ b/Interfaces/English.lproj/MainMenu.xib
@@ -2,17 +2,17 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10H574</string>
+ <string key="IBDocument.SystemVersion">10J567</string>
<string key="IBDocument.InterfaceBuilderVersion">788</string>
<string key="IBDocument.AppKitVersion">1038.35</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <string key="IBDocument.HIToolboxVersion">462.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">788</string>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="1178"/>
+ <integer value="498"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -256,7 +256,7 @@
<bool key="NSIsAlternate">YES</bool>
<string key="NSTitle">Duplicate Connection Tab</string>
<string key="NSKeyEquiv">t</string>
- <int key="NSKeyEquivModMask">1310720</int>
+ <int key="NSKeyEquivModMask">524288</int>
<int key="NSMnemonicLoc">2147483647</int>
<reference key="NSOnImage" ref="625762401"/>
<reference key="NSMixedImage" ref="315854375"/>
@@ -1120,6 +1120,16 @@
<reference key="NSOnImage" ref="625762401"/>
<reference key="NSMixedImage" ref="315854375"/>
</object>
+ <object class="NSMenuItem" id="693676640">
+ <reference key="NSMenu" ref="466354362"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="625762401"/>
+ <reference key="NSMixedImage" ref="315854375"/>
+ </object>
<object class="NSMenuItem" id="986291195">
<reference key="NSMenu" ref="466354362"/>
<string key="NSTitle">Show Navigator</string>
@@ -1578,6 +1588,16 @@
</object>
</object>
</object>
+ <object class="NSMenuItem" id="988156931">
+ <reference key="NSMenu" ref="172963563"/>
+ <bool key="NSIsDisabled">YES</bool>
+ <bool key="NSIsSeparator">YES</bool>
+ <string key="NSTitle"/>
+ <string key="NSKeyEquiv"/>
+ <int key="NSMnemonicLoc">2147483647</int>
+ <reference key="NSOnImage" ref="625762401"/>
+ <reference key="NSMixedImage" ref="315854375"/>
+ </object>
<object class="NSMenuItem" id="929597005">
<reference key="NSMenu" ref="172963563"/>
<string key="NSTitle">Open Database in New Tab</string>
@@ -1760,7 +1780,6 @@
</object>
<object class="NSMenuItem" id="558064231">
<reference key="NSMenu" ref="171386461"/>
- <bool key="NSIsHidden">YES</bool>
<string key="NSTitle">Bundles</string>
<string key="NSKeyEquiv"/>
<int key="NSMnemonicLoc">2147483647</int>
@@ -3103,6 +3122,14 @@
</object>
<int key="connectionID">1190</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="171386461"/>
+ <reference key="destination" ref="432083121"/>
+ </object>
+ <int key="connectionID">1193</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@@ -3469,6 +3496,7 @@
<reference ref="935082963"/>
<reference ref="219440274"/>
<reference ref="929597005"/>
+ <reference ref="988156931"/>
</object>
<reference key="parent" ref="693420496"/>
</object>
@@ -4273,6 +4301,7 @@
<reference ref="330038521"/>
<reference ref="167719771"/>
<reference ref="95850380"/>
+ <reference ref="693676640"/>
</object>
<reference key="parent" ref="401969940"/>
</object>
@@ -4536,6 +4565,16 @@
<reference key="object" ref="929597005"/>
<reference key="parent" ref="172963563"/>
</object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1194</int>
+ <reference key="object" ref="693676640"/>
+ <reference key="parent" ref="466354362"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1195</int>
+ <reference key="object" ref="988156931"/>
+ <reference key="parent" ref="172963563"/>
+ </object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@@ -4613,6 +4652,8 @@
<string>1186.IBPluginDependency</string>
<string>1186.ImportedFromIB2</string>
<string>1189.IBPluginDependency</string>
+ <string>1194.IBPluginDependency</string>
+ <string>1195.IBPluginDependency</string>
<string>129.IBPluginDependency</string>
<string>129.ImportedFromIB2</string>
<string>130.IBEditorWindowLastContentRect</string>
@@ -4928,7 +4969,7 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{578, 550}, {271, 173}}</string>
+ <string>{{847, 311}, {271, 173}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{561, 605}, {181, 43}}</string>
@@ -5000,7 +5041,7 @@
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{435, 717}, {64, 6}}</string>
+ <string>{{704, 478}, {64, 6}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSMutableDictionary">
<string key="NS.key.0">ToolTip</string>
@@ -5014,6 +5055,8 @@
<integer value="1"/>
<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>{{562, 439}, {64, 6}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -5059,7 +5102,7 @@
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{279, 363}, {280, 303}}</string>
+ <string>{{402, 179}, {280, 303}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{654, 613}, {157, 223}}</string>
@@ -5087,11 +5130,11 @@
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{507, 580}, {269, 143}}</string>
+ <string>{{705, 339}, {269, 143}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{449, 1007}, {197, 53}}</string>
- <string>{{56, 723}, {583, 20}}</string>
+ <string>{{254, 482}, {583, 20}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{506, 836}, {511, 20}}</string>
@@ -5107,7 +5150,7 @@
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{526, 339}, {251, 323}}</string>
+ <string>{{446, 149}, {251, 333}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{698, 703}, {184, 133}}</string>
@@ -5133,7 +5176,7 @@
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
- <string>{{298, 420}, {273, 303}}</string>
+ <string>{{567, 171}, {273, 313}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{312, 683}, {231, 153}}</string>
@@ -5200,7 +5243,7 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{379, 490}, {292, 233}}</string>
+ <string>{{648, 251}, {292, 233}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{829, 663}, {268, 173}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -5226,7 +5269,7 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{162, 280}, {295, 443}}</string>
+ <string>{{360, 39}, {295, 443}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>{{180, 535}, {182, 253}}</string>
@@ -5399,7 +5442,7 @@
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">1190</int>
+ <int key="maxID">1206</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -5642,6 +5685,13 @@
</object>
<object class="IBPartialClassDescription">
<string key="className">NSMenu</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPMenuAdditions.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSMenu</string>
<string key="superclassName">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBUserSource</string>
@@ -5953,8 +6003,10 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <string>bundleCommandDispatcher:</string>
<string>donate:</string>
<string>duplicateTab:</string>
+ <string>executeBundleItemForApp:</string>
<string>newTab:</string>
<string>newWindow:</string>
<string>openAboutPanel:</string>
@@ -5986,14 +6038,18 @@
<string>id</string>
<string>id</string>
<string>id</string>
+ <string>id</string>
+ <string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <string>bundleCommandDispatcher:</string>
<string>donate:</string>
<string>duplicateTab:</string>
+ <string>executeBundleItemForApp:</string>
<string>newTab:</string>
<string>newWindow:</string>
<string>openAboutPanel:</string>
@@ -6011,6 +6067,10 @@
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBActionInfo">
+ <string key="name">bundleCommandDispatcher:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">donate:</string>
<string key="candidateClassName">id</string>
</object>
@@ -6019,6 +6079,10 @@
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">executeBundleItemForApp:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">newTab:</string>
<string key="candidateClassName">id</string>
</object>
@@ -6117,6 +6181,25 @@
</object>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">SPBundleCommandTextView</string>
+ <string key="superclassName">NSTextView</string>
+ <object class="NSMutableDictionary" key="outlets">
+ <string key="NS.key.0">commandScrollView</string>
+ <string key="NS.object.0">NSScrollView</string>
+ </object>
+ <object class="NSMutableDictionary" key="toOneOutletInfosByName">
+ <string key="NS.key.0">commandScrollView</string>
+ <object class="IBToOneOutletInfo" key="NS.object.0">
+ <string key="name">commandScrollView</string>
+ <string key="candidateClassName">NSScrollView</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPBundleCommandTextView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">SPBundleEditorController</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions">
@@ -6124,16 +6207,23 @@
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>addCommandBundle:</string>
+ <string>closeUndeleteDefaultBundlesSheet:</string>
<string>duplicateCommandBundle:</string>
<string>inputFallbackPopupButtonChanged:</string>
<string>inputPopupButtonChanged:</string>
+ <string>metaButtonChanged:</string>
<string>outputPopupButtonChanged:</string>
+ <string>performClose:</string>
+ <string>reloadBundles:</string>
<string>removeCommandBundle:</string>
<string>revealCommandBundleInFinder:</string>
<string>saveAndCloseWindow:</string>
<string>saveBundle:</string>
<string>scopeButtonChanged:</string>
<string>showHelp:</string>
+ <string>triggerButtonChanged:</string>
+ <string>undeleteDefaultBundles:</string>
+ <string>withBlobButtonChanged:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -6148,6 +6238,13 @@
<string>id</string>
<string>id</string>
<string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
@@ -6155,16 +6252,23 @@
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>addCommandBundle:</string>
+ <string>closeUndeleteDefaultBundlesSheet:</string>
<string>duplicateCommandBundle:</string>
<string>inputFallbackPopupButtonChanged:</string>
<string>inputPopupButtonChanged:</string>
+ <string>metaButtonChanged:</string>
<string>outputPopupButtonChanged:</string>
+ <string>performClose:</string>
+ <string>reloadBundles:</string>
<string>removeCommandBundle:</string>
<string>revealCommandBundleInFinder:</string>
<string>saveAndCloseWindow:</string>
<string>saveBundle:</string>
<string>scopeButtonChanged:</string>
<string>showHelp:</string>
+ <string>triggerButtonChanged:</string>
+ <string>undeleteDefaultBundles:</string>
+ <string>withBlobButtonChanged:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -6173,6 +6277,10 @@
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">closeUndeleteDefaultBundlesSheet:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">duplicateCommandBundle:</string>
<string key="candidateClassName">id</string>
</object>
@@ -6185,10 +6293,22 @@
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">metaButtonChanged:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">outputPopupButtonChanged:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">performClose:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">reloadBundles:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">removeCommandBundle:</string>
<string key="candidateClassName">id</string>
</object>
@@ -6212,121 +6332,223 @@
<string key="name">showHelp:</string>
<string key="candidateClassName">id</string>
</object>
+ <object class="IBActionInfo">
+ <string key="name">triggerButtonChanged:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">undeleteDefaultBundles:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">withBlobButtonChanged:</string>
+ <string key="candidateClassName">id</string>
+ </object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <string>addButton</string>
+ <string>authorLabelField</string>
+ <string>authorTextField</string>
+ <string>cancelButton</string>
<string>categoryTextField</string>
- <string>commandBundleArrayController</string>
+ <string>commandBundleTreeController</string>
+ <string>commandLabelField</string>
+ <string>commandScrollView</string>
<string>commandTextView</string>
- <string>commandsTableView</string>
- <string>dataTableScopeButton</string>
- <string>disableCheckBox</string>
+ <string>commandsOutlineView</string>
+ <string>contactLabelField</string>
+ <string>contactTextField</string>
+ <string>descriptionLabelField</string>
+ <string>descriptionScrollView</string>
+ <string>descriptionTextView</string>
+ <string>disabledCheckbox</string>
<string>duplicateMenuItem</string>
- <string>editorScopeButton</string>
<string>fallbackLabelField</string>
+ <string>helpButton</string>
<string>inputFallbackPopupButton</string>
- <string>inputFieldScopeButton</string>
<string>inputPopupButton</string>
<string>keyEquivalentField</string>
<string>nameTextField</string>
<string>outputPopupButton</string>
<string>removeButton</string>
<string>revealInFinderMenuItem</string>
- <string>tootlipTextField</string>
+ <string>saveButton</string>
+ <string>scopePopupButton</string>
+ <string>showHideMetaButton</string>
+ <string>splitView</string>
+ <string>tooltipTextField</string>
+ <string>triggerPopupButton</string>
+ <string>undeleteSheet</string>
+ <string>undeleteTableView</string>
+ <string>withBlobLabelField</string>
+ <string>withBlobPopupButton</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSButton</string>
+ <string>NSTextField</string>
<string>NSTextField</string>
- <string>NSArrayController</string>
- <string>id</string>
- <string>NSTableView</string>
<string>NSButton</string>
+ <string>NSTextField</string>
+ <string>NSTreeController</string>
+ <string>NSTextField</string>
+ <string>NSScrollView</string>
+ <string>SPBundleCommandTextView</string>
+ <string>SPOutlineView</string>
+ <string>NSTextField</string>
+ <string>NSTextField</string>
+ <string>NSTextField</string>
+ <string>NSScrollView</string>
+ <string>NSTextView</string>
<string>NSButton</string>
<string>NSMenuItem</string>
- <string>NSButton</string>
<string>NSTextField</string>
- <string>NSPopUpButton</string>
<string>NSButton</string>
<string>NSPopUpButton</string>
+ <string>NSPopUpButton</string>
<string>SRRecorderControl</string>
<string>NSTextField</string>
<string>NSPopUpButton</string>
<string>NSButton</string>
<string>NSMenuItem</string>
+ <string>NSButton</string>
+ <string>NSPopUpButton</string>
+ <string>NSButton</string>
+ <string>BWSplitView</string>
+ <string>NSTextField</string>
+ <string>NSPopUpButton</string>
+ <string>id</string>
+ <string>NSTableView</string>
<string>NSTextField</string>
+ <string>NSPopUpButton</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <string>addButton</string>
+ <string>authorLabelField</string>
+ <string>authorTextField</string>
+ <string>cancelButton</string>
<string>categoryTextField</string>
- <string>commandBundleArrayController</string>
+ <string>commandBundleTreeController</string>
+ <string>commandLabelField</string>
+ <string>commandScrollView</string>
<string>commandTextView</string>
- <string>commandsTableView</string>
- <string>dataTableScopeButton</string>
- <string>disableCheckBox</string>
+ <string>commandsOutlineView</string>
+ <string>contactLabelField</string>
+ <string>contactTextField</string>
+ <string>descriptionLabelField</string>
+ <string>descriptionScrollView</string>
+ <string>descriptionTextView</string>
+ <string>disabledCheckbox</string>
<string>duplicateMenuItem</string>
- <string>editorScopeButton</string>
<string>fallbackLabelField</string>
+ <string>helpButton</string>
<string>inputFallbackPopupButton</string>
- <string>inputFieldScopeButton</string>
<string>inputPopupButton</string>
<string>keyEquivalentField</string>
<string>nameTextField</string>
<string>outputPopupButton</string>
<string>removeButton</string>
<string>revealInFinderMenuItem</string>
- <string>tootlipTextField</string>
+ <string>saveButton</string>
+ <string>scopePopupButton</string>
+ <string>showHideMetaButton</string>
+ <string>splitView</string>
+ <string>tooltipTextField</string>
+ <string>triggerPopupButton</string>
+ <string>undeleteSheet</string>
+ <string>undeleteTableView</string>
+ <string>withBlobLabelField</string>
+ <string>withBlobPopupButton</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBToOneOutletInfo">
+ <string key="name">addButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">authorLabelField</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">authorTextField</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">cancelButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
<string key="name">categoryTextField</string>
<string key="candidateClassName">NSTextField</string>
</object>
<object class="IBToOneOutletInfo">
- <string key="name">commandBundleArrayController</string>
- <string key="candidateClassName">NSArrayController</string>
+ <string key="name">commandBundleTreeController</string>
+ <string key="candidateClassName">NSTreeController</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">commandLabelField</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">commandScrollView</string>
+ <string key="candidateClassName">NSScrollView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">commandTextView</string>
- <string key="candidateClassName">id</string>
+ <string key="candidateClassName">SPBundleCommandTextView</string>
</object>
<object class="IBToOneOutletInfo">
- <string key="name">commandsTableView</string>
- <string key="candidateClassName">NSTableView</string>
+ <string key="name">commandsOutlineView</string>
+ <string key="candidateClassName">SPOutlineView</string>
</object>
<object class="IBToOneOutletInfo">
- <string key="name">dataTableScopeButton</string>
- <string key="candidateClassName">NSButton</string>
+ <string key="name">contactLabelField</string>
+ <string key="candidateClassName">NSTextField</string>
</object>
<object class="IBToOneOutletInfo">
- <string key="name">disableCheckBox</string>
- <string key="candidateClassName">NSButton</string>
+ <string key="name">contactTextField</string>
+ <string key="candidateClassName">NSTextField</string>
</object>
<object class="IBToOneOutletInfo">
- <string key="name">duplicateMenuItem</string>
- <string key="candidateClassName">NSMenuItem</string>
+ <string key="name">descriptionLabelField</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">descriptionScrollView</string>
+ <string key="candidateClassName">NSScrollView</string>
</object>
<object class="IBToOneOutletInfo">
- <string key="name">editorScopeButton</string>
+ <string key="name">descriptionTextView</string>
+ <string key="candidateClassName">NSTextView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">disabledCheckbox</string>
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo">
+ <string key="name">duplicateMenuItem</string>
+ <string key="candidateClassName">NSMenuItem</string>
+ </object>
+ <object class="IBToOneOutletInfo">
<string key="name">fallbackLabelField</string>
<string key="candidateClassName">NSTextField</string>
</object>
<object class="IBToOneOutletInfo">
- <string key="name">inputFallbackPopupButton</string>
- <string key="candidateClassName">NSPopUpButton</string>
+ <string key="name">helpButton</string>
+ <string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo">
- <string key="name">inputFieldScopeButton</string>
- <string key="candidateClassName">NSButton</string>
+ <string key="name">inputFallbackPopupButton</string>
+ <string key="candidateClassName">NSPopUpButton</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">inputPopupButton</string>
@@ -6353,9 +6575,45 @@
<string key="candidateClassName">NSMenuItem</string>
</object>
<object class="IBToOneOutletInfo">
- <string key="name">tootlipTextField</string>
+ <string key="name">saveButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">scopePopupButton</string>
+ <string key="candidateClassName">NSPopUpButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">showHideMetaButton</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">splitView</string>
+ <string key="candidateClassName">BWSplitView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">tooltipTextField</string>
+ <string key="candidateClassName">NSTextField</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">triggerPopupButton</string>
+ <string key="candidateClassName">NSPopUpButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">undeleteSheet</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">undeleteTableView</string>
+ <string key="candidateClassName">NSTableView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">withBlobLabelField</string>
<string key="candidateClassName">NSTextField</string>
</object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">withBlobPopupButton</string>
+ <string key="candidateClassName">NSPopUpButton</string>
+ </object>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
@@ -6539,7 +6797,7 @@
<string>NSTextView</string>
<string>NSWindow</string>
<string>NSMenuItem</string>
- <string>NSTableView</string>
+ <string>SPFavoritesOutlineView</string>
<string>NSButton</string>
<string>NSProgressIndicator</string>
<string>NSTextField</string>
@@ -6657,7 +6915,7 @@
</object>
<object class="IBToOneOutletInfo">
<string key="name">favoritesTable</string>
- <string key="candidateClassName">NSTableView</string>
+ <string key="candidateClassName">SPFavoritesOutlineView</string>
</object>
<object class="IBToOneOutletInfo">
<string key="name">helpButton</string>
@@ -7051,6 +7309,7 @@
<string>editorFontMenuItem</string>
<string>encodingPopUp</string>
<string>errorText</string>
+ <string>errorTextScrollView</string>
<string>helpNavigator</string>
<string>helpSearchField</string>
<string>helpSearchFieldCell</string>
@@ -7106,6 +7365,7 @@
<string>NSMenuItem</string>
<string>NSPopUpButton</string>
<string>id</string>
+ <string>NSScrollView</string>
<string>NSSegmentedControl</string>
<string>NSSearchField</string>
<string>NSSearchFieldCell</string>
@@ -7164,6 +7424,7 @@
<string>editorFontMenuItem</string>
<string>encodingPopUp</string>
<string>errorText</string>
+ <string>errorTextScrollView</string>
<string>helpNavigator</string>
<string>helpSearchField</string>
<string>helpSearchFieldCell</string>
@@ -7265,6 +7526,10 @@
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo">
+ <string key="name">errorTextScrollView</string>
+ <string key="candidateClassName">NSScrollView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
<string key="name">helpNavigator</string>
<string key="candidateClassName">NSSegmentedControl</string>
</object>
@@ -7767,6 +8032,7 @@
<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>
@@ -7820,6 +8086,7 @@
<string>tableDataInstance</string>
<string>tableDumpInstance</string>
<string>tableInfoCollapseButton</string>
+ <string>tableInfoScrollView</string>
<string>tableInfoTable</string>
<string>tableListSplitter</string>
<string>tableRelationsInstance</string>
@@ -7838,6 +8105,7 @@
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSScrollView</string>
<string>id</string>
<string>id</string>
<string>NSWindow</string>
@@ -7891,6 +8159,7 @@
<string>id</string>
<string>id</string>
<string>NSButton</string>
+ <string>NSScrollView</string>
<string>NSTableView</string>
<string>NSSplitView</string>
<string>id</string>
@@ -7912,6 +8181,7 @@
<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>
@@ -7965,6 +8235,7 @@
<string>tableDataInstance</string>
<string>tableDumpInstance</string>
<string>tableInfoCollapseButton</string>
+ <string>tableInfoScrollView</string>
<string>tableInfoTable</string>
<string>tableListSplitter</string>
<string>tableRelationsInstance</string>
@@ -7984,6 +8255,10 @@
<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>
@@ -8196,6 +8471,10 @@
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo">
+ <string key="name">tableInfoScrollView</string>
+ <string key="candidateClassName">NSScrollView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
<string key="name">tableInfoTable</string>
<string key="candidateClassName">NSTableView</string>
</object>
@@ -8518,6 +8797,7 @@
<string>exportCustomFilenameViewButton</string>
<string>exportCustomFilenameViewLabelButton</string>
<string>exportDeselectAllTablesButton</string>
+ <string>exportDotForceLowerTableNamesCheck</string>
<string>exportExcelSheetOrFilePerTableMatrix</string>
<string>exportFilePerTableCheck</string>
<string>exportFilenameDividerBox</string>
@@ -8575,6 +8855,7 @@
<string>NSButton</string>
<string>NSButton</string>
<string>NSButton</string>
+ <string>NSButton</string>
<string>NSMatrix</string>
<string>NSButton</string>
<string>NSBox</string>
@@ -8635,6 +8916,7 @@
<string>exportCustomFilenameViewButton</string>
<string>exportCustomFilenameViewLabelButton</string>
<string>exportDeselectAllTablesButton</string>
+ <string>exportDotForceLowerTableNamesCheck</string>
<string>exportExcelSheetOrFilePerTableMatrix</string>
<string>exportFilePerTableCheck</string>
<string>exportFilenameDividerBox</string>
@@ -8750,6 +9032,10 @@
<string key="candidateClassName">NSButton</string>
</object>
<object class="IBToOneOutletInfo">
+ <string key="name">exportDotForceLowerTableNamesCheck</string>
+ <string key="candidateClassName">NSButton</string>
+ </object>
+ <object class="IBToOneOutletInfo">
<string key="name">exportExcelSheetOrFilePerTableMatrix</string>
<string key="candidateClassName">NSMatrix</string>
</object>
@@ -8953,6 +9239,14 @@
</object>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">SPFavoritesOutlineView</string>
+ <string key="superclassName">NSOutlineView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPFavoritesOutlineView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">SPHistoryController</string>
<string key="superclassName">NSObject</string>
<object class="NSMutableDictionary" key="actions">
@@ -9004,6 +9298,14 @@
</object>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">SPOutlineView</string>
+ <string key="superclassName">NSOutlineView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPOutlineView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">SPProcessListController</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions">
@@ -10077,35 +10379,14 @@
<string key="className">SPTextView</string>
<string key="superclassName">NSTextView</string>
<object class="NSMutableDictionary" key="actions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>executeBundleItemForEditor:</string>
- <string>showMySQLHelpForCurrentWord:</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- </object>
+ <string key="NS.key.0">showMySQLHelpForCurrentWord:</string>
+ <string key="NS.object.0">id</string>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>executeBundleItemForEditor:</string>
- <string>showMySQLHelpForCurrentWord:</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBActionInfo">
- <string key="name">executeBundleItemForEditor:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">showMySQLHelpForCurrentWord:</string>
- <string key="candidateClassName">id</string>
- </object>
+ <string key="NS.key.0">showMySQLHelpForCurrentWord:</string>
+ <object class="IBActionInfo" key="NS.object.0">
+ <string key="name">showMySQLHelpForCurrentWord:</string>
+ <string key="candidateClassName">id</string>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
@@ -10178,6 +10459,7 @@
<string>addSchemaPriv:</string>
<string>addUser:</string>
<string>checkAllPrivileges:</string>
+ <string>closeErrorsSheet:</string>
<string>doApply:</string>
<string>doCancel:</string>
<string>refresh:</string>
@@ -10199,6 +10481,7 @@
<string>id</string>
<string>id</string>
<string>id</string>
+ <string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
@@ -10209,6 +10492,7 @@
<string>addSchemaPriv:</string>
<string>addUser:</string>
<string>checkAllPrivileges:</string>
+ <string>closeErrorsSheet:</string>
<string>doApply:</string>
<string>doCancel:</string>
<string>refresh:</string>
@@ -10236,6 +10520,10 @@
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">closeErrorsSheet:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">doApply:</string>
<string key="candidateClassName">id</string>
</object>
@@ -10272,6 +10560,8 @@
<string>addSchemaPrivButton</string>
<string>availableController</string>
<string>availableTableView</string>
+ <string>errorsSheet</string>
+ <string>errorsTextView</string>
<string>grantedController</string>
<string>grantedTableView</string>
<string>maxConnectionsTextField</string>
@@ -10292,6 +10582,8 @@
<string>NSButton</string>
<string>NSArrayController</string>
<string>NSTableView</string>
+ <string>NSWindow</string>
+ <string>NSTextView</string>
<string>NSArrayController</string>
<string>NSTableView</string>
<string>NSTextField</string>
@@ -10315,6 +10607,8 @@
<string>addSchemaPrivButton</string>
<string>availableController</string>
<string>availableTableView</string>
+ <string>errorsSheet</string>
+ <string>errorsTextView</string>
<string>grantedController</string>
<string>grantedTableView</string>
<string>maxConnectionsTextField</string>
@@ -10345,6 +10639,14 @@
<string key="candidateClassName">NSTableView</string>
</object>
<object class="IBToOneOutletInfo">
+ <string key="name">errorsSheet</string>
+ <string key="candidateClassName">NSWindow</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">errorsTextView</string>
+ <string key="candidateClassName">NSTextView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
<string key="name">grantedController</string>
<string key="candidateClassName">NSArrayController</string>
</object>
diff --git a/Interfaces/English.lproj/MainWindow.xib b/Interfaces/English.lproj/MainWindow.xib
index ce80bb42..fe840a94 100644
--- a/Interfaces/English.lproj/MainWindow.xib
+++ b/Interfaces/English.lproj/MainWindow.xib
@@ -2,10 +2,10 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10F569</string>
+ <string key="IBDocument.SystemVersion">10J567</string>
<string key="IBDocument.InterfaceBuilderVersion">788</string>
- <string key="IBDocument.AppKitVersion">1038.29</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <string key="IBDocument.AppKitVersion">1038.35</string>
+ <string key="IBDocument.HIToolboxVersion">462.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
<string key="NS.object.0">788</string>
@@ -44,7 +44,7 @@
<string key="NSWindowRect">{{238, 168}, {948, 555}}</string>
<int key="NSWTFlags">544735232</int>
<string key="NSWindowTitle">Window</string>
- <string key="NSWindowClass">NSWindow</string>
+ <string key="NSWindowClass">SPWindow</string>
<nil key="NSViewClass"/>
<string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSWindowContentMinSize">{705, 400}</string>
@@ -224,9 +224,9 @@
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>{{321, 246}, {948, 555}}</string>
+ <string>{{54, 246}, {948, 555}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{321, 246}, {948, 555}}</string>
+ <string>{{54, 246}, {948, 555}}</string>
<boolean value="NO"/>
<string>{196, 240}</string>
<string>{{202, 428}, {480, 270}}</string>
@@ -266,10 +266,10 @@
</object>
</object>
<object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
+ <string key="className">NSMenu</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Frameworks/MCPKit/MCPFoundationKit/MCPConnection.h</string>
+ <string key="minorKey">Source/SPMenuAdditions.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
@@ -434,6 +434,14 @@
</object>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">SPWindow</string>
+ <string key="superclassName">NSWindow</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPWindow.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">SPWindowController</string>
<string key="superclassName">NSWindowController</string>
<object class="NSMutableDictionary" key="actions">
@@ -900,6 +908,27 @@
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRRecorderCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRRecorderControl.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRValidator.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Sparkle.framework/Headers/SUAppcast.h</string>
</object>
</object>
diff --git a/Interfaces/English.lproj/Preferences.xib b/Interfaces/English.lproj/Preferences.xib
index 17f5b526..97017f06 100644
--- a/Interfaces/English.lproj/Preferences.xib
+++ b/Interfaces/English.lproj/Preferences.xib
@@ -2,10 +2,10 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10H574</string>
+ <string key="IBDocument.SystemVersion">10J567</string>
<string key="IBDocument.InterfaceBuilderVersion">823</string>
<string key="IBDocument.AppKitVersion">1038.35</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <string key="IBDocument.HIToolboxVersion">462.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@@ -66,43 +66,6 @@
<object class="NSUserDefaultsController" id="151174232">
<bool key="NSSharedInstance">YES</bool>
</object>
- <object class="NSArrayController" id="937123943">
- <object class="NSMutableArray" key="NSDeclaredKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>name</string>
- <string>fav</string>
- <string>host</string>
- <string>user</string>
- <string>database</string>
- <string>socket</string>
- <string>port</string>
- <string>useSSH</string>
- <string>sshHost</string>
- <string>sshUser</string>
- <string>sshPort</string>
- <object class="NSMutableString">
- <characters key="NS.bytes">selectedFavoritePassword</characters>
- </object>
- <string>DisplayTableViewVerticalGridlines</string>
- <string>type</string>
- <string>TableRowCountQueryLevel</string>
- <string>sshKeyLocationEnabled</string>
- <string>sshKeyLocation</string>
- <string>useSSL</string>
- <string>sslKeyFileLocation</string>
- <string>sslKeyFileLocationEnabled</string>
- <string>sslCertificateFileLocation</string>
- <string>sslCertificateFileLocationEnabled</string>
- <string>sslCACertFileLocation</string>
- <string>sslCACertFileLocationEnabled</string>
- </object>
- <bool key="NSEditable">YES</bool>
- <bool key="NSAutomaticallyPreparesContent">YES</bool>
- <object class="_NSManagedProxy" key="_NSManagedProxy"/>
- <bool key="NSSelectsInsertedObjects">YES</bool>
- <bool key="NSFilterRestrictsInsertion">YES</bool>
- <bool key="NSClearsFilterPredicateOnInsertion">YES</bool>
- </object>
<object class="NSWindowTemplate" id="1005">
<int key="NSWindowStyleMask">4107</int>
<int key="NSWindowBacking">2</int>
@@ -2533,15 +2496,128 @@ AQAAAAA</bytes>
<string key="NSClassName">NSView</string>
</object>
<object class="NSCustomView" id="1033452264">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder"/>
<int key="NSvFlags">268</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSStepper" id="720862952">
+ <reference key="NSNextResponder" ref="1033452264"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{437, 251}, {15, 22}}</string>
+ <reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSStepperCell" key="NSCell" id="241334663">
+ <int key="NSCellFlags">68025888</int>
+ <int key="NSCellFlags2">131072</int>
+ <reference key="NSSupport" ref="26"/>
+ <reference key="NSControlView" ref="720862952"/>
+ <double key="NSValue">1</double>
+ <double key="NSMinValue">1</double>
+ <double key="NSMaxValue">32</double>
+ <double key="NSIncrement">1</double>
+ <bool key="NSAutorepeat">YES</bool>
+ </object>
+ </object>
+ <object class="NSTextField" id="277335147">
+ <reference key="NSNextResponder" ref="1033452264"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{407, 253}, {23, 19}}</string>
+ <reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="546511116">
+ <int key="NSCellFlags">-1804468671</int>
+ <int key="NSCellFlags2">-2076048384</int>
+ <string key="NSContents"/>
+ <reference key="NSSupport" ref="26"/>
+ <object class="NSNumberFormatter" key="NSFormatter" id="242266609">
+ <object class="NSMutableDictionary" key="NS.attributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>allowsFloats</string>
+ <string>formatterBehavior</string>
+ <string>locale</string>
+ <string>maximum</string>
+ <string>minimum</string>
+ <string>negativeInfinitySymbol</string>
+ <string>nilSymbol</string>
+ <string>positiveInfinitySymbol</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <boolean value="NO"/>
+ <integer value="1040"/>
+ <reference ref="894463536"/>
+ <real value="32"/>
+ <real value="1"/>
+ <string>-∞</string>
+ <string/>
+ <string>+∞</string>
+ </object>
+ </object>
+ <string key="NS.positiveformat">#</string>
+ <string key="NS.negativeformat">#</string>
+ <nil key="NS.positiveattrs"/>
+ <nil key="NS.negativeattrs"/>
+ <nil key="NS.zero"/>
+ <object class="NSAttributedString" key="NS.nil">
+ <string key="NSString"/>
+ </object>
+ <object class="NSAttributedString" key="NS.nan">
+ <string key="NSString">NaN</string>
+ <reference key="NSAttributes" ref="938616923"/>
+ </object>
+ <real value="1" key="NS.min"/>
+ <real value="32" key="NS.max"/>
+ <object class="NSDecimalNumberHandler" key="NS.rounding">
+ <int key="NS.roundingmode">3</int>
+ <bool key="NS.raise.overflow">YES</bool>
+ <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>
+ <bool key="NS.hasthousands">NO</bool>
+ <bool key="NS.localized">NO</bool>
+ <bool key="NS.allowsfloats">NO</bool>
+ </object>
+ <reference key="NSControlView" ref="277335147"/>
+ <bool key="NSDrawsBackground">YES</bool>
+ <reference key="NSBackgroundColor" ref="1001357688"/>
+ <reference key="NSTextColor" ref="6928728"/>
+ </object>
+ </object>
+ <object class="NSButton" id="378838807">
+ <reference key="NSNextResponder" ref="1033452264"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{270, 254}, {131, 18}}</string>
+ <reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="1729">
+ <int key="NSCellFlags">-2080244224</int>
+ <int key="NSCellFlags2">0</int>
+ <string key="NSContents">Soft indent</string>
+ <reference key="NSSupport" ref="320262838"/>
+ <reference key="NSControlView" ref="378838807"/>
+ <int key="NSButtonFlags">1211912703</int>
+ <int key="NSButtonFlags2">2</int>
+ <reference key="NSNormalImage" ref="752798171"/>
+ <reference key="NSAlternateImage" ref="888311049"/>
+ <string key="NSAlternateContents"/>
+ <string key="NSKeyEquivalent"/>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
<object class="NSTextField" id="187965597">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{124, 27}, {121, 14}}</string>
+ <string key="NSFrame">{{124, 21}, {121, 14}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="983858855">
<int key="NSCellFlags">68288064</int>
@@ -2556,8 +2632,9 @@ AQAAAAA</bytes>
<object class="NSTextField" id="919512780">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{49, 27}, {83, 14}}</string>
+ <string key="NSFrame">{{49, 21}, {83, 14}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="133660147">
<int key="NSCellFlags">68288064</int>
@@ -2582,8 +2659,9 @@ AQAAAAA</bytes>
<object class="NSTableView" id="953919633">
<reference key="NSNextResponder" ref="25515031"/>
<int key="NSvFlags">256</int>
- <string key="NSFrameSize">{220, 242}</string>
+ <string key="NSFrameSize">{220, 249}</string>
<reference key="NSSuperview" ref="25515031"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="_NSCornerView" key="NSCornerView">
<nil key="NSNextResponder"/>
@@ -2664,8 +2742,9 @@ AQAAAAA</bytes>
<int key="NSTableViewDraggingDestinationStyle">0</int>
</object>
</object>
- <string key="NSFrame">{{1, 1}, {220, 242}}</string>
+ <string key="NSFrame">{{1, 1}, {220, 249}}</string>
<reference key="NSSuperview" ref="288292400"/>
+ <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="953919633"/>
<reference key="NSDocView" ref="953919633"/>
<reference key="NSBGColor" ref="887465699"/>
@@ -2676,6 +2755,7 @@ AQAAAAA</bytes>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-100, -100}, {15, 102}}</string>
<reference key="NSSuperview" ref="288292400"/>
+ <reference key="NSWindow"/>
<reference key="NSTarget" ref="288292400"/>
<string key="NSAction">_doScroller:</string>
<double key="NSPercent">0.99658703804016113</double>
@@ -2685,14 +2765,16 @@ AQAAAAA</bytes>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-100, -100}, {223, 15}}</string>
<reference key="NSSuperview" ref="288292400"/>
+ <reference key="NSWindow"/>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="288292400"/>
<string key="NSAction">_doScroller:</string>
<double key="NSPercent">0.57142859697341919</double>
</object>
</object>
- <string key="NSFrame">{{20, 54}, {222, 244}}</string>
+ <string key="NSFrame">{{20, 47}, {222, 251}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<reference key="NSNextKeyView" ref="25515031"/>
<int key="NSsFlags">2</int>
<reference key="NSVScroller" ref="662661535"/>
@@ -2703,8 +2785,9 @@ AQAAAAA</bytes>
<object class="NSPopUpButton" id="748242000">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 22}, {24, 24}}</string>
+ <string key="NSFrame">{{20, 16}, {24, 24}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="373813305">
<int key="NSCellFlags">71433792</int>
@@ -2815,8 +2898,9 @@ AQAAAAA</bytes>
<object class="NSTextField" id="1018119488">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{407, 20}, {23, 19}}</string>
+ <string key="NSFrame">{{407, 19}, {23, 19}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="248584789">
<int key="NSCellFlags">-1804468671</int>
@@ -2887,8 +2971,9 @@ AQAAAAA</bytes>
<object class="NSTextField" id="304684720">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{269, 22}, {133, 17}}</string>
+ <string key="NSFrame">{{269, 21}, {133, 17}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="273262177">
<int key="NSCellFlags">68288064</int>
@@ -2903,8 +2988,9 @@ AQAAAAA</bytes>
<object class="NSStepper" id="161634003">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{437, 18}, {15, 22}}</string>
+ <string key="NSFrame">{{437, 17}, {15, 22}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSStepperCell" key="NSCell" id="93125704">
<int key="NSCellFlags">68025888</int>
@@ -2923,6 +3009,7 @@ AQAAAAA</bytes>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{17, 322}, {182, 17}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="10706281">
<int key="NSCellFlags">68288064</int>
@@ -2939,6 +3026,7 @@ AQAAAAA</bytes>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{433, 313}, {133, 32}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="345790946">
<int key="NSCellFlags">67239424</int>
@@ -2959,6 +3047,7 @@ AQAAAAA</bytes>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{204, 320}, {207, 22}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="66452133">
<int key="NSCellFlags">-2076049856</int>
@@ -2976,6 +3065,7 @@ AQAAAAA</bytes>
<int key="NSvFlags">268</int>
<string key="NSFrame">{{270, 282}, {292, 18}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="823431848">
<int key="NSCellFlags">-2080244224</int>
@@ -2996,8 +3086,9 @@ AQAAAAA</bytes>
<object class="NSButton" id="571822117">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{270, 253}, {292, 18}}</string>
+ <string key="NSFrame">{{270, 227}, {292, 18}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="743257684">
<int key="NSCellFlags">-2080244224</int>
@@ -3018,8 +3109,9 @@ AQAAAAA</bytes>
<object class="NSButton" id="1030846368">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{270, 195}, {292, 18}}</string>
+ <string key="NSFrame">{{270, 169}, {292, 18}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="231642073">
<int key="NSCellFlags">67239424</int>
@@ -3040,8 +3132,9 @@ AQAAAAA</bytes>
<object class="NSButton" id="397485802">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{270, 224}, {292, 18}}</string>
+ <string key="NSFrame">{{270, 198}, {292, 18}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="491730308">
<int key="NSCellFlags">-2080244224</int>
@@ -3062,8 +3155,9 @@ AQAAAAA</bytes>
<object class="NSButton" id="787536920">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{270, 138}, {292, 18}}</string>
+ <string key="NSFrame">{{270, 122}, {292, 18}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="496801621">
<int key="NSCellFlags">-2080244224</int>
@@ -3084,8 +3178,9 @@ AQAAAAA</bytes>
<object class="NSButton" id="782193237">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{270, 51}, {292, 18}}</string>
+ <string key="NSFrame">{{270, 45}, {292, 18}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="131748905">
<int key="NSCellFlags">67239424</int>
@@ -3106,8 +3201,9 @@ AQAAAAA</bytes>
<object class="NSButton" id="827082642">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{270, 109}, {292, 18}}</string>
+ <string key="NSFrame">{{270, 94}, {292, 18}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="92164221">
<int key="NSCellFlags">67239424</int>
@@ -3128,8 +3224,9 @@ AQAAAAA</bytes>
<object class="NSTextField" id="184945490">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{370, 84}, {29, 19}}</string>
+ <string key="NSFrame">{{370, 69}, {29, 19}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="409964321">
<int key="NSCellFlags">-1538130368</int>
@@ -3201,8 +3298,9 @@ AQAAAAA</bytes>
<object class="NSTextField" id="892250776">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{269, 86}, {96, 14}}</string>
+ <string key="NSFrame">{{269, 71}, {96, 14}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="1060023867">
<int key="NSCellFlags">605158976</int>
@@ -3217,8 +3315,9 @@ AQAAAAA</bytes>
<object class="NSStepper" id="107658761">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{405, 82}, {15, 22}}</string>
+ <string key="NSFrame">{{405, 67}, {15, 22}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSStepperCell" key="NSCell" id="171005061">
<int key="NSCellFlags">604896800</int>
@@ -3235,8 +3334,9 @@ AQAAAAA</bytes>
<object class="NSTextField" id="1009372112">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{423, 86}, {140, 14}}</string>
+ <string key="NSFrame">{{423, 71}, {140, 14}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="201150384">
<int key="NSCellFlags">605158976</int>
@@ -3251,8 +3351,9 @@ AQAAAAA</bytes>
<object class="NSButton" id="774563613">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">-2147483380</int>
- <string key="NSFrame">{{270, -11}, {292, 18}}</string>
+ <string key="NSFrame">{{270, 0}, {292, 18}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="420702000">
<int key="NSCellFlags">-1543373312</int>
@@ -3273,8 +3374,9 @@ AQAAAAA</bytes>
<object class="NSTextField" id="16021182">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{370, 170}, {29, 19}}</string>
+ <string key="NSFrame">{{370, 144}, {29, 19}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="992523117">
<int key="NSCellFlags">-1538130368</int>
@@ -3346,8 +3448,9 @@ AQAAAAA</bytes>
<object class="NSTextField" id="140155660">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{269, 172}, {96, 14}}</string>
+ <string key="NSFrame">{{269, 146}, {96, 14}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="499174965">
<int key="NSCellFlags">605158976</int>
@@ -3362,8 +3465,9 @@ AQAAAAA</bytes>
<object class="NSStepper" id="682694750">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{405, 168}, {15, 22}}</string>
+ <string key="NSFrame">{{405, 142}, {15, 22}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSStepperCell" key="NSCell" id="266600395">
<int key="NSCellFlags">604896800</int>
@@ -3380,8 +3484,9 @@ AQAAAAA</bytes>
<object class="NSTextField" id="659498064">
<reference key="NSNextResponder" ref="1033452264"/>
<int key="NSvFlags">268</int>
- <string key="NSFrame">{{423, 172}, {140, 14}}</string>
+ <string key="NSFrame">{{423, 146}, {140, 14}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="516695546">
<int key="NSCellFlags">605158976</int>
@@ -3398,6 +3503,7 @@ AQAAAAA</bytes>
<int key="NSvFlags">12</int>
<string key="NSFrame">{{204, 309}, {356, 5}}</string>
<reference key="NSSuperview" ref="1033452264"/>
+ <reference key="NSWindow"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
<int key="NSCellFlags">67239424</int>
@@ -3417,148 +3523,10 @@ AQAAAAA</bytes>
</object>
</object>
<string key="NSFrameSize">{580, 360}</string>
+ <reference key="NSSuperview"/>
+ <reference key="NSWindow"/>
<string key="NSClassName">NSView</string>
</object>
- <object class="NSCustomView" id="301032184">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">274</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="200831972">
- <reference key="NSNextResponder" ref="301032184"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrame">{{2, 10}, {575, 34}}</string>
- <reference key="NSSuperview" ref="301032184"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="219723569">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">138674176</int>
- <string key="NSContents">Choose a custom SSH key file to use with this connection. Note that standard locations like ~/.ssh are checked automatically, as are any files in your SSH configuration.</string>
- <reference key="NSSupport" ref="718282869"/>
- <reference key="NSControlView" ref="200831972"/>
- <reference key="NSBackgroundColor" ref="700609571"/>
- <reference key="NSTextColor" ref="1035618107"/>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{579, 51}</string>
- <string key="NSClassName">NSView</string>
- </object>
- <object class="NSCustomView" id="46104894">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">274</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="532539071">
- <reference key="NSNextResponder" ref="46104894"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrame">{{2, 10}, {575, 17}}</string>
- <reference key="NSSuperview" ref="46104894"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="925838195">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">138674176</int>
- <string key="NSContents">Please select the SSL key file to use when establishing a secure connection.</string>
- <reference key="NSSupport" ref="718282869"/>
- <reference key="NSControlView" ref="532539071"/>
- <reference key="NSBackgroundColor" ref="700609571"/>
- <reference key="NSTextColor" ref="1035618107"/>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{579, 34}</string>
- <string key="NSClassName">NSView</string>
- </object>
- <object class="NSCustomView" id="962978272">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">274</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="624133663">
- <reference key="NSNextResponder" ref="962978272"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrame">{{2, 10}, {575, 17}}</string>
- <reference key="NSSuperview" ref="962978272"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="602926229">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">138674176</int>
- <string key="NSContents">Please select the client SSL certificate file to use when establishing a secure connection.</string>
- <reference key="NSSupport" ref="718282869"/>
- <reference key="NSControlView" ref="624133663"/>
- <reference key="NSBackgroundColor" ref="700609571"/>
- <reference key="NSTextColor" ref="1035618107"/>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{579, 34}</string>
- <string key="NSClassName">NSView</string>
- </object>
- <object class="NSCustomView" id="453507512">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">274</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSTextField" id="534911197">
- <reference key="NSNextResponder" ref="453507512"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrame">{{2, 10}, {575, 34}}</string>
- <reference key="NSSuperview" ref="453507512"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="921051913">
- <int key="NSCellFlags">67239424</int>
- <int key="NSCellFlags2">138674176</int>
- <string key="NSContents">Please select the client SSL Certificate Authority certificate to use when establishing a secure connection. This must be the same as the server CA certificate.</string>
- <reference key="NSSupport" ref="718282869"/>
- <reference key="NSControlView" ref="534911197"/>
- <reference key="NSBackgroundColor" ref="700609571"/>
- <reference key="NSTextColor" ref="1035618107"/>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{579, 51}</string>
- <string key="NSClassName">NSView</string>
- </object>
- <object class="NSMenu" id="982657201">
- <string key="NSTitle"/>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="30395779">
- <reference key="NSMenu" ref="982657201"/>
- <string key="NSTitle">Remove</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1039721224"/>
- <reference key="NSMixedImage" ref="720177216"/>
- </object>
- <object class="NSMenuItem" id="580038192">
- <reference key="NSMenu" ref="982657201"/>
- <string key="NSTitle">Duplicate</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1039721224"/>
- <reference key="NSMixedImage" ref="720177216"/>
- </object>
- <object class="NSMenuItem" id="102426580">
- <reference key="NSMenu" ref="982657201"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1039721224"/>
- <reference key="NSMixedImage" ref="720177216"/>
- </object>
- <object class="NSMenuItem" id="512106570">
- <reference key="NSMenu" ref="982657201"/>
- <string key="NSTitle">Make Default</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="1039721224"/>
- <reference key="NSMixedImage" ref="720177216"/>
- </object>
- </object>
- </object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
@@ -3885,35 +3853,6 @@ AQAAAAA</bytes>
</object>
<object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
- <string key="label">contentArray: values.favorites</string>
- <reference key="source" ref="937123943"/>
- <reference key="destination" ref="151174232"/>
- <object class="NSNibBindingConnector" key="connector">
- <reference key="NSSource" ref="937123943"/>
- <reference key="NSDestination" ref="151174232"/>
- <string key="NSLabel">contentArray: values.favorites</string>
- <string key="NSBinding">contentArray</string>
- <string key="NSKeyPath">values.favorites</string>
- <object class="NSDictionary" key="NSOptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSDeletesObjectsOnRemove</string>
- <string>NSHandlesContentAsCompoundValue</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <boolean value="YES"/>
- <boolean value="YES"/>
- </object>
- </object>
- <int key="NSNibBindingConnectorVersion">2</int>
- </object>
- </object>
- <int key="connectionID">782</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBBindingConnection" key="connection">
<string key="label">value: values.CustomQueryMaxHistoryItems</string>
<reference key="source" ref="155059"/>
<reference key="destination" ref="151174232"/>
@@ -4553,14 +4492,6 @@ AQAAAAA</bytes>
<int key="connectionID">1545</int>
</object>
<object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">delegate</string>
- <reference key="source" ref="982657201"/>
- <reference key="destination" ref="1001"/>
- </object>
- <int key="connectionID">1555</int>
- </object>
- <object class="IBConnectionRecord">
<object class="IBBindingConnection" key="connection">
<string key="label">value: values.SUSendProfileInfo</string>
<reference key="source" ref="467474047"/>
@@ -4760,14 +4691,6 @@ AQAAAAA</bytes>
</object>
<object class="IBConnectionRecord">
<object class="IBOutletConnection" key="connection">
- <string key="label">favoritesController</string>
- <reference key="source" ref="343720994"/>
- <reference key="destination" ref="937123943"/>
- </object>
- <int key="connectionID">2078</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
<string key="label">defaultFavoritePopup</string>
<reference key="source" ref="343720994"/>
<reference key="destination" ref="331339372"/>
@@ -5114,6 +5037,62 @@ AQAAAAA</bytes>
</object>
<int key="connectionID">2184</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: values.CustomQuerySoftIndent</string>
+ <reference key="source" ref="378838807"/>
+ <reference key="destination" ref="151174232"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="378838807"/>
+ <reference key="NSDestination" ref="151174232"/>
+ <string key="NSLabel">value: values.CustomQuerySoftIndent</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">values.CustomQuerySoftIndent</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">2200</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: values.CustomQuerySoftIndentWidth</string>
+ <reference key="source" ref="720862952"/>
+ <reference key="destination" ref="151174232"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="720862952"/>
+ <reference key="NSDestination" ref="151174232"/>
+ <string key="NSLabel">value: values.CustomQuerySoftIndentWidth</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">values.CustomQuerySoftIndentWidth</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">2205</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBBindingConnection" key="connection">
+ <string key="label">value: values.CustomQuerySoftIndentWidth</string>
+ <reference key="source" ref="277335147"/>
+ <reference key="destination" ref="151174232"/>
+ <object class="NSNibBindingConnector" key="connector">
+ <reference key="NSSource" ref="277335147"/>
+ <reference key="NSDestination" ref="151174232"/>
+ <string key="NSLabel">value: values.CustomQuerySoftIndentWidth</string>
+ <string key="NSBinding">value</string>
+ <string key="NSKeyPath">values.CustomQuerySoftIndentWidth</string>
+ <int key="NSNibBindingConnectorVersion">2</int>
+ </object>
+ </object>
+ <int key="connectionID">2209</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">takeIntegerValueFrom:</string>
+ <reference key="source" ref="277335147"/>
+ <reference key="destination" ref="720862952"/>
+ </object>
+ <int key="connectionID">2214</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@@ -5474,12 +5453,6 @@ AQAAAAA</bytes>
<reference key="parent" ref="0"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">254</int>
- <reference key="object" ref="937123943"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">Favorites</string>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">331</int>
<reference key="object" ref="721264488"/>
<reference key="parent" ref="0"/>
@@ -5966,12 +5939,15 @@ AQAAAAA</bytes>
<reference ref="184945490"/>
<reference ref="827082642"/>
<reference ref="774563613"/>
- <reference ref="782193237"/>
<reference ref="742042283"/>
<reference ref="288292400"/>
<reference ref="748242000"/>
<reference ref="919512780"/>
<reference ref="187965597"/>
+ <reference ref="782193237"/>
+ <reference ref="378838807"/>
+ <reference ref="277335147"/>
+ <reference ref="720862952"/>
</object>
<reference key="parent" ref="0"/>
<string key="objectName">Editor</string>
@@ -6700,34 +6676,6 @@ AQAAAAA</bytes>
<reference key="parent" ref="1007936999"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">1547</int>
- <reference key="object" ref="982657201"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="30395779"/>
- <reference ref="580038192"/>
- <reference ref="102426580"/>
- <reference ref="512106570"/>
- </object>
- <reference key="parent" ref="0"/>
- <string key="objectName">Context Menu</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1548</int>
- <reference key="object" ref="30395779"/>
- <reference key="parent" ref="982657201"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1549</int>
- <reference key="object" ref="580038192"/>
- <reference key="parent" ref="982657201"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1551</int>
- <reference key="object" ref="102426580"/>
- <reference key="parent" ref="982657201"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">1615</int>
<reference key="object" ref="467474047"/>
<object class="NSMutableArray" key="children">
@@ -6752,11 +6700,6 @@ AQAAAAA</bytes>
<reference key="parent" ref="369742224"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">1640</int>
- <reference key="object" ref="512106570"/>
- <reference key="parent" ref="982657201"/>
- </object>
- <object class="IBObjectRecord">
<int key="objectID">1669</int>
<reference key="object" ref="748242000"/>
<object class="NSMutableArray" key="children">
@@ -7134,136 +7077,91 @@ AQAAAAA</bytes>
<reference key="parent" ref="202566886"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">1873</int>
- <reference key="object" ref="301032184"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="200831972"/>
- </object>
+ <int key="objectID">2074</int>
+ <reference key="object" ref="343720994"/>
<reference key="parent" ref="0"/>
- <string key="objectName">SSH Key Selection Help</string>
+ <string key="objectName">General</string>
</object>
<object class="IBObjectRecord">
- <int key="objectID">1874</int>
- <reference key="object" ref="200831972"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="219723569"/>
- </object>
- <reference key="parent" ref="301032184"/>
+ <int key="objectID">2080</int>
+ <reference key="object" ref="673566620"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Tables</string>
</object>
<object class="IBObjectRecord">
- <int key="objectID">1875</int>
- <reference key="object" ref="219723569"/>
- <reference key="parent" ref="200831972"/>
+ <int key="objectID">2143</int>
+ <reference key="object" ref="953509484"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Notifications</string>
</object>
<object class="IBObjectRecord">
- <int key="objectID">2040</int>
- <reference key="object" ref="453507512"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="534911197"/>
- </object>
+ <int key="objectID">2144</int>
+ <reference key="object" ref="153863061"/>
<reference key="parent" ref="0"/>
- <string key="objectName">SSL CA Cert File Selection Help</string>
+ <string key="objectName">Editor</string>
</object>
<object class="IBObjectRecord">
- <int key="objectID">2041</int>
- <reference key="object" ref="46104894"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="532539071"/>
- </object>
+ <int key="objectID">2145</int>
+ <reference key="object" ref="913031053"/>
<reference key="parent" ref="0"/>
- <string key="objectName">SSL Key File Selection Help</string>
+ <string key="objectName">Auto Update</string>
</object>
<object class="IBObjectRecord">
- <int key="objectID">2042</int>
- <reference key="object" ref="962978272"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="624133663"/>
- </object>
+ <int key="objectID">2146</int>
+ <reference key="object" ref="424937675"/>
<reference key="parent" ref="0"/>
- <string key="objectName">SSL Certificate File Selection Help</string>
+ <string key="objectName">Network</string>
</object>
<object class="IBObjectRecord">
- <int key="objectID">2043</int>
- <reference key="object" ref="624133663"/>
+ <int key="objectID">2185</int>
+ <reference key="object" ref="378838807"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="602926229"/>
+ <reference ref="1729"/>
</object>
- <reference key="parent" ref="962978272"/>
+ <reference key="parent" ref="1033452264"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">2044</int>
- <reference key="object" ref="602926229"/>
- <reference key="parent" ref="624133663"/>
+ <int key="objectID">2186</int>
+ <reference key="object" ref="1729"/>
+ <reference key="parent" ref="378838807"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">2045</int>
- <reference key="object" ref="532539071"/>
+ <int key="objectID">2188</int>
+ <reference key="object" ref="277335147"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="925838195"/>
+ <reference ref="546511116"/>
</object>
- <reference key="parent" ref="46104894"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2046</int>
- <reference key="object" ref="925838195"/>
- <reference key="parent" ref="532539071"/>
+ <reference key="parent" ref="1033452264"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">2047</int>
- <reference key="object" ref="534911197"/>
+ <int key="objectID">2189</int>
+ <reference key="object" ref="546511116"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="921051913"/>
+ <reference ref="242266609"/>
</object>
- <reference key="parent" ref="453507512"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2048</int>
- <reference key="object" ref="921051913"/>
- <reference key="parent" ref="534911197"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2074</int>
- <reference key="object" ref="343720994"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">General</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2080</int>
- <reference key="object" ref="673566620"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">Tables</string>
+ <reference key="parent" ref="277335147"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">2143</int>
- <reference key="object" ref="953509484"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">Notifications</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2144</int>
- <reference key="object" ref="153863061"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">Editor</string>
+ <int key="objectID">2196</int>
+ <reference key="object" ref="720862952"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="241334663"/>
+ </object>
+ <reference key="parent" ref="1033452264"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">2145</int>
- <reference key="object" ref="913031053"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">Auto Update</string>
+ <int key="objectID">2197</int>
+ <reference key="object" ref="241334663"/>
+ <reference key="parent" ref="720862952"/>
</object>
<object class="IBObjectRecord">
- <int key="objectID">2146</int>
- <reference key="object" ref="424937675"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">Network</string>
+ <int key="objectID">2203</int>
+ <reference key="object" ref="242266609"/>
+ <reference key="parent" ref="546511116"/>
</object>
</object>
</object>
@@ -7403,17 +7301,11 @@ AQAAAAA</bytes>
<string>1542.IBPluginDependency</string>
<string>1543.IBPluginDependency</string>
<string>1546.IBPluginDependency</string>
- <string>1547.IBEditorWindowLastContentRect</string>
- <string>1547.IBPluginDependency</string>
- <string>1548.IBPluginDependency</string>
- <string>1549.IBPluginDependency</string>
- <string>1551.IBPluginDependency</string>
<string>1615.IBPluginDependency</string>
<string>1615.ImportedFromIB2</string>
<string>1616.IBPluginDependency</string>
<string>1618.IBPluginDependency</string>
<string>1620.IBPluginDependency</string>
- <string>1640.IBPluginDependency</string>
<string>1669.IBAttributePlaceholdersKey</string>
<string>1669.IBPluginDependency</string>
<string>1670.IBPluginDependency</string>
@@ -7497,33 +7389,25 @@ AQAAAAA</bytes>
<string>1824.IBPluginDependency</string>
<string>1824.ImportedFromIB2</string>
<string>1825.IBPluginDependency</string>
- <string>1873.IBEditorWindowLastContentRect</string>
- <string>1873.IBPluginDependency</string>
- <string>1874.IBPluginDependency</string>
- <string>1875.IBPluginDependency</string>
<string>2.IBPluginDependency</string>
- <string>2040.IBEditorWindowLastContentRect</string>
- <string>2040.IBPluginDependency</string>
- <string>2041.IBEditorWindowLastContentRect</string>
- <string>2041.IBPluginDependency</string>
- <string>2042.IBEditorWindowLastContentRect</string>
- <string>2042.IBPluginDependency</string>
- <string>2043.IBPluginDependency</string>
- <string>2044.IBPluginDependency</string>
- <string>2045.IBPluginDependency</string>
- <string>2046.IBPluginDependency</string>
- <string>2047.IBPluginDependency</string>
- <string>2048.IBPluginDependency</string>
<string>2074.IBPluginDependency</string>
<string>2080.IBPluginDependency</string>
<string>2143.IBPluginDependency</string>
<string>2144.IBPluginDependency</string>
<string>2145.IBPluginDependency</string>
<string>2146.IBPluginDependency</string>
+ <string>2185.IBPluginDependency</string>
+ <string>2186.IBPluginDependency</string>
+ <string>2188.IBPluginDependency</string>
+ <string>2189.IBPluginDependency</string>
+ <string>2196.IBPluginDependency</string>
+ <string>2197.IBPluginDependency</string>
+ <string>2203.IBNumberFormatterBehaviorMetadataKey</string>
+ <string>2203.IBNumberFormatterLocalizesFormatMetadataKey</string>
+ <string>2203.IBPluginDependency</string>
<string>24.IBPluginDependency</string>
<string>24.ImportedFromIB2</string>
<string>25.IBPluginDependency</string>
- <string>254.IBPluginDependency</string>
<string>26.IBEditorWindowLastContentRect</string>
<string>26.IBPluginDependency</string>
<string>26.ImportedFromIB2</string>
@@ -7811,17 +7695,11 @@ AQAAAAA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{508, 537}, {142, 73}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSMutableDictionary">
<string key="NS.key.0">ToolTip</string>
<object class="IBToolTipAttribute" key="NS.object.0">
@@ -7949,16 +7827,7 @@ AQAAAAA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{249, 289}, {579, 51}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{245, 466}, {579, 51}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{245, 483}, {579, 34}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{245, 483}, {579, 34}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -7971,11 +7840,12 @@ AQAAAAA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <integer value="1040"/>
+ <boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>{{646, 14}, {276, 433}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<integer value="1"/>
@@ -8172,7 +8042,7 @@ AQAAAAA</bytes>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{450, 315}, {580, 360}}</string>
+ <string>{{311, 170}, {580, 360}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSMutableArray">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -8183,7 +8053,7 @@ AQAAAAA</bytes>
</object>
<object class="IBUserGuide">
<reference key="view" ref="1033452264"/>
- <double key="location">271</double>
+ <double key="location">315</double>
<int key="affinity">0</int>
</object>
</object>
@@ -8225,7 +8095,7 @@ AQAAAAA</bytes>
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">2184</int>
+ <int key="maxID">2214</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -8238,6 +8108,13 @@ AQAAAAA</bytes>
</object>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">NSMenu</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPMenuAdditions.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
diff --git a/Interfaces/English.lproj/QueryFavoriteManager.xib b/Interfaces/English.lproj/QueryFavoriteManager.xib
index 6d4ffdc9..c8f467bd 100644
--- a/Interfaces/English.lproj/QueryFavoriteManager.xib
+++ b/Interfaces/English.lproj/QueryFavoriteManager.xib
@@ -2,10 +2,10 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10F569</string>
- <string key="IBDocument.InterfaceBuilderVersion">788</string>
- <string key="IBDocument.AppKitVersion">1038.29</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <string key="IBDocument.SystemVersion">10J567</string>
+ <string key="IBDocument.InterfaceBuilderVersion">804</string>
+ <string key="IBDocument.AppKitVersion">1038.35</string>
+ <string key="IBDocument.HIToolboxVersion">462.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@@ -15,26 +15,22 @@
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>788</string>
- <string>1.2.5</string>
+ <string>804</string>
+ <string>1.2.2</string>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="2"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.brandonwalkin.BWToolkit</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.brandonwalkin.BWToolkit</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys" id="0">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
+ <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
+ <integer value="1" key="NS.object.0"/>
</object>
<object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -50,22 +46,23 @@
<object class="NSWindowTemplate" id="1005">
<int key="NSWindowStyleMask">15</int>
<int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{593, 356}, {529, 371}}</string>
+ <string key="NSWindowRect">{{593, 358}, {563, 369}}</string>
<int key="NSWTFlags">813171712</int>
<string key="NSWindowTitle">Query Favorite Manager</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">{529, 371}</string>
<object class="NSView" key="NSWindowView" id="1006">
- <nil key="NSNextResponder"/>
+ <reference key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSBox" id="594420157">
<reference key="NSNextResponder" ref="1006"/>
<int key="NSvFlags">4106</int>
- <string key="NSFrame">{{0, 358}, {529, 5}}</string>
+ <string key="NSFrame">{{0, 356}, {563, 5}}</string>
+ <string key="NSBounds">{{0, 10}, {563, 5}}</string>
<reference key="NSSuperview" ref="1006"/>
<string key="NSOffsets">{0, 0}</string>
<object class="NSTextFieldCell" key="NSTitleCell">
@@ -392,7 +389,7 @@
<string key="NSColorName">controlBackgroundColor</string>
<object class="NSColor" key="NSColor" id="276872502">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="810868150">
@@ -474,7 +471,6 @@
</object>
<string key="NSFrame">{{0, 17}, {178, 322}}</string>
<reference key="NSSuperview" ref="205303038"/>
- <reference key="NSNextKeyView" ref="522643855"/>
<reference key="NSDocView" ref="522643855"/>
<reference key="NSBGColor" ref="392588142"/>
<int key="NScvFlags">4</int>
@@ -508,7 +504,6 @@
</object>
<string key="NSFrameSize">{178, 17}</string>
<reference key="NSSuperview" ref="205303038"/>
- <reference key="NSNextKeyView" ref="724842455"/>
<reference key="NSDocView" ref="724842455"/>
<reference key="NSBGColor" ref="392588142"/>
<int key="NScvFlags">4</int>
@@ -517,7 +512,6 @@
</object>
<string key="NSFrame">{{0, 22}, {178, 339}}</string>
<reference key="NSSuperview" ref="1030932325"/>
- <reference key="NSNextKeyView" ref="106335880"/>
<int key="NSsFlags">528</int>
<reference key="NSVScroller" ref="322405876"/>
<reference key="NSHScroller" ref="336819166"/>
@@ -559,7 +553,7 @@
<object class="NSPopUpButton" id="150642739">
<reference key="NSNextResponder" ref="954707656"/>
<int key="NSvFlags">292</int>
- <string key="NSFrame">{{40, 15}, {122, 25}}</string>
+ <string key="NSFrame">{{40, 15}, {144, 25}}</string>
<reference key="NSSuperview" ref="954707656"/>
<bool key="NSEnabled">YES</bool>
<object class="NSPopUpButtonCell" key="NSCell" id="1063983207">
@@ -829,7 +823,7 @@
<object class="NSTextField" id="92903832">
<reference key="NSNextResponder" ref="954707656"/>
<int key="NSvFlags">290</int>
- <string key="NSFrame">{{92, 54}, {239, 19}}</string>
+ <string key="NSFrame">{{92, 54}, {273, 19}}</string>
<reference key="NSSuperview" ref="954707656"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="276546601">
@@ -888,7 +882,7 @@
<object class="NSTextField" id="247897226">
<reference key="NSNextResponder" ref="954707656"/>
<int key="NSvFlags">266</int>
- <string key="NSFrame">{{77, 328}, {254, 19}}</string>
+ <string key="NSFrame">{{77, 328}, {288, 19}}</string>
<reference key="NSSuperview" ref="954707656"/>
<bool key="NSEnabled">YES</bool>
<object class="NSTextFieldCell" key="NSCell" id="474077606">
@@ -939,7 +933,7 @@
<string>public.url</string>
</object>
</object>
- <string key="NSFrameSize">{309, 14}</string>
+ <string key="NSFrameSize">{343, 14}</string>
<reference key="NSSuperview" ref="221447089"/>
<object class="NSTextContainer" key="NSTextContainer" id="74289808">
<object class="NSLayoutManager" key="NSLayoutManager">
@@ -957,7 +951,7 @@
<nil key="NSDelegate"/>
</object>
<reference key="NSTextView" ref="556251150"/>
- <double key="NSWidth">309</double>
+ <double key="NSWidth">343</double>
<int key="NSTCFlags">1</int>
</object>
<object class="NSTextViewSharedData" key="NSSharedData">
@@ -1013,9 +1007,8 @@
<nil key="NSDelegate"/>
</object>
</object>
- <string key="NSFrame">{{1, 1}, {309, 236}}</string>
+ <string key="NSFrame">{{1, 1}, {343, 236}}</string>
<reference key="NSSuperview" ref="407061848"/>
- <reference key="NSNextKeyView" ref="556251150"/>
<reference key="NSDocView" ref="556251150"/>
<reference key="NSBGColor" ref="359131077"/>
<object class="NSCursor" key="NSCursor">
@@ -1046,9 +1039,8 @@
<double key="NSPercent">0.94565218687057495</double>
</object>
</object>
- <string key="NSFrame">{{20, 82}, {311, 238}}</string>
+ <string key="NSFrame">{{20, 82}, {345, 238}}</string>
<reference key="NSSuperview" ref="954707656"/>
- <reference key="NSNextKeyView" ref="221447089"/>
<int key="NSsFlags">530</int>
<reference key="NSVScroller" ref="978638217"/>
<reference key="NSHScroller" ref="1008017707"/>
@@ -1057,7 +1049,7 @@
<object class="NSButton" id="556514169">
<reference key="NSNextResponder" ref="954707656"/>
<int key="NSvFlags">289</int>
- <string key="NSFrame">{{248, 13}, {88, 28}}</string>
+ <string key="NSFrame">{{282, 13}, {88, 28}}</string>
<reference key="NSSuperview" ref="954707656"/>
<int key="NSTag">1</int>
<bool key="NSEnabled">YES</bool>
@@ -1083,7 +1075,7 @@
<object class="NSButton" id="602197876">
<reference key="NSNextResponder" ref="954707656"/>
<int key="NSvFlags">289</int>
- <string key="NSFrame">{{162, 13}, {88, 28}}</string>
+ <string key="NSFrame">{{196, 13}, {88, 28}}</string>
<reference key="NSSuperview" ref="954707656"/>
<bool key="NSEnabled">YES</bool>
<object class="NSButtonCell" key="NSCell" id="615814080">
@@ -1102,19 +1094,19 @@
</object>
</object>
</object>
- <string key="NSFrame">{{178, 0}, {351, 361}}</string>
+ <string key="NSFrame">{{178, 0}, {385, 361}}</string>
<reference key="NSSuperview" ref="588484039"/>
<string key="NSClassName">NSView</string>
</object>
</object>
- <string key="NSFrameSize">{529, 361}</string>
+ <string key="NSFrame">{{0, -2}, {563, 361}}</string>
<reference key="NSSuperview" ref="1006"/>
<bool key="NSIsVertical">YES</bool>
<int key="NSDividerStyle">2</int>
<string key="NSAutosaveName">SPQueryFavoriteSplitView</string>
<object class="NSColor" key="BWSVColor">
<int key="NSColorSpace">1</int>
- <bytes key="NSRGB">MC42NjY2NjY2ODY1IDAuNjY2NjY2Njg2NSAwLjY2NjY2NjY4NjUAA</bytes>
+ <bytes key="NSRGB">MC42NjY2NjY2NjY3IDAuNjY2NjY2NjY2NyAwLjY2NjY2NjY2NjcAA</bytes>
</object>
<bool key="BWSVColorIsEnabled">YES</bool>
<object class="NSMutableDictionary" key="BWSVMinValues">
@@ -1127,7 +1119,7 @@
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="152"/>
- <integer value="351"/>
+ <integer value="385"/>
</object>
</object>
<object class="NSMutableDictionary" key="BWSVMaxValues">
@@ -1173,11 +1165,12 @@
<bool key="BWSVDividerCanCollapse">NO</bool>
</object>
</object>
- <string key="NSFrameSize">{529, 371}</string>
+ <string key="NSFrameSize">{563, 369}</string>
+ <reference key="NSSuperview"/>
</object>
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
<string key="NSMinSize">{529, 393}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
<string key="NSFrameAutosaveName">SPQueryFavoriteManagerWindow</string>
</object>
<object class="NSUserDefaultsController" id="592597522">
@@ -1614,7 +1607,9 @@
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="IBObjectRecord">
<int key="objectID">0</int>
- <reference key="object" ref="0"/>
+ <object class="NSArray" key="object" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
<reference key="children" ref="1000"/>
<nil key="parent"/>
</object>
@@ -2344,9 +2339,9 @@
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{448, 417}, {529, 371}}</string>
+ <string>{{448, 419}, {563, 369}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{448, 417}, {529, 371}}</string>
+ <string>{{448, 419}, {563, 369}}</string>
<boolean value="NO"/>
<string>{196, 240}</string>
<string>{{357, 418}, {480, 270}}</string>
@@ -2709,10 +2704,10 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
</object>
</object>
<object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
+ <string key="className">NSMenu</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Frameworks/MCPKit/MCPFoundationKit/MCPConnection.h</string>
+ <string key="minorKey">Source/SPMenuAdditions.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
@@ -2811,7 +2806,10 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>doSelectionTitleCase:</string>
<string>doSelectionUpperCase:</string>
<string>doTranspose:</string>
+ <string>executeBundleItemForInputField:</string>
<string>insertNULLvalue:</string>
+ <string>moveSelectionLineDown:</string>
+ <string>moveSelectionLineUp:</string>
<string>selectCurrentLine:</string>
<string>selectCurrentWord:</string>
<string>selectEnclosingBrackets:</string>
@@ -2831,6 +2829,9 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>id</string>
<string>id</string>
<string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
@@ -2846,7 +2847,10 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>doSelectionTitleCase:</string>
<string>doSelectionUpperCase:</string>
<string>doTranspose:</string>
+ <string>executeBundleItemForInputField:</string>
<string>insertNULLvalue:</string>
+ <string>moveSelectionLineDown:</string>
+ <string>moveSelectionLineUp:</string>
<string>selectCurrentLine:</string>
<string>selectCurrentWord:</string>
<string>selectEnclosingBrackets:</string>
@@ -2890,10 +2894,22 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">executeBundleItemForInputField:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">insertNULLvalue:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">moveSelectionLineDown:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">moveSelectionLineUp:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">selectCurrentLine:</string>
<string key="candidateClassName">id</string>
</object>
@@ -3118,14 +3134,35 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string key="className">SPCopyTable</string>
<string key="superclassName">SPTableView</string>
<object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">copy:</string>
- <string key="NS.object.0">id</string>
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>copy:</string>
+ <string>executeBundleItemForDataTable:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ </object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
- <string key="NS.key.0">copy:</string>
- <object class="IBActionInfo" key="NS.object.0">
- <string key="name">copy:</string>
- <string key="candidateClassName">id</string>
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>copy:</string>
+ <string>executeBundleItemForDataTable:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">copy:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">executeBundleItemForDataTable:</string>
+ <string key="candidateClassName">id</string>
+ </object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
@@ -3161,6 +3198,14 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
</object>
</object>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPCopyTable.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SPCopyTable</string>
+ <string key="superclassName">SPTableView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBUserSource</string>
<string key="minorKey"/>
</object>
@@ -3366,6 +3411,7 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>editorFontMenuItem</string>
<string>encodingPopUp</string>
<string>errorText</string>
+ <string>errorTextScrollView</string>
<string>helpNavigator</string>
<string>helpSearchField</string>
<string>helpSearchFieldCell</string>
@@ -3421,6 +3467,7 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>NSMenuItem</string>
<string>NSPopUpButton</string>
<string>id</string>
+ <string>NSScrollView</string>
<string>NSSegmentedControl</string>
<string>NSSearchField</string>
<string>NSSearchFieldCell</string>
@@ -3479,6 +3526,7 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>editorFontMenuItem</string>
<string>encodingPopUp</string>
<string>errorText</string>
+ <string>errorTextScrollView</string>
<string>helpNavigator</string>
<string>helpSearchField</string>
<string>helpSearchFieldCell</string>
@@ -3580,6 +3628,10 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo">
+ <string key="name">errorTextScrollView</string>
+ <string key="candidateClassName">NSScrollView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
<string key="name">helpNavigator</string>
<string key="candidateClassName">NSSegmentedControl</string>
</object>
@@ -3781,7 +3833,9 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>import:</string>
<string>importFromClipboard:</string>
<string>openCurrentConnectionInNewWindow:</string>
+ <string>openDatabaseInNewTab:</string>
<string>optimizeTable:</string>
+ <string>refreshTables:</string>
<string>removeDatabase:</string>
<string>renameDatabase:</string>
<string>repairTable:</string>
@@ -3798,12 +3852,6 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>toggleNavigator:</string>
<string>updateWindowTitle:</string>
<string>validateSaveConnectionAccessory:</string>
- <string>viewContent:</string>
- <string>viewQuery:</string>
- <string>viewRelations:</string>
- <string>viewStatus:</string>
- <string>viewStructure:</string>
- <string>viewTriggers:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -3851,10 +3899,6 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>id</string>
<string>id</string>
<string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
@@ -3886,7 +3930,9 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>import:</string>
<string>importFromClipboard:</string>
<string>openCurrentConnectionInNewWindow:</string>
+ <string>openDatabaseInNewTab:</string>
<string>optimizeTable:</string>
+ <string>refreshTables:</string>
<string>removeDatabase:</string>
<string>renameDatabase:</string>
<string>repairTable:</string>
@@ -3903,12 +3949,6 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>toggleNavigator:</string>
<string>updateWindowTitle:</string>
<string>validateSaveConnectionAccessory:</string>
- <string>viewContent:</string>
- <string>viewQuery:</string>
- <string>viewRelations:</string>
- <string>viewStatus:</string>
- <string>viewStructure:</string>
- <string>viewTriggers:</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -4013,10 +4053,18 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">openDatabaseInNewTab:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">optimizeTable:</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">refreshTables:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">removeDatabase:</string>
<string key="candidateClassName">id</string>
</object>
@@ -4080,30 +4128,6 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string key="name">validateSaveConnectionAccessory:</string>
<string key="candidateClassName">id</string>
</object>
- <object class="IBActionInfo">
- <string key="name">viewContent:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">viewQuery:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">viewRelations:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">viewStatus:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">viewStructure:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">viewTriggers:</string>
- <string key="candidateClassName">id</string>
- </object>
</object>
</object>
<object class="NSMutableDictionary" key="outlets">
@@ -4607,6 +4631,73 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
</object>
<object class="IBPartialClassDescription">
<string key="className">SPDatabaseDocument</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>viewContent:</string>
+ <string>viewQuery:</string>
+ <string>viewRelations:</string>
+ <string>viewStatus:</string>
+ <string>viewStructure:</string>
+ <string>viewTriggers:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>viewContent:</string>
+ <string>viewQuery:</string>
+ <string>viewRelations:</string>
+ <string>viewStatus:</string>
+ <string>viewStructure:</string>
+ <string>viewTriggers:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">viewContent:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">viewQuery:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">viewRelations:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">viewStatus:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">viewStructure:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">viewTriggers:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPDatabaseViewController.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">SPDatabaseDocument</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
<string key="minorKey">Source/SPPrintController.h</string>
@@ -4855,6 +4946,7 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>addTable:</string>
<string>closeSheet:</string>
<string>copyTable:</string>
+ <string>openTableInNewTab:</string>
<string>removeTable:</string>
<string>renameTable:</string>
<string>togglePaneCollapse:</string>
@@ -4873,6 +4965,7 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>id</string>
<string>id</string>
<string>id</string>
+ <string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
@@ -4882,6 +4975,7 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>addTable:</string>
<string>closeSheet:</string>
<string>copyTable:</string>
+ <string>openTableInNewTab:</string>
<string>removeTable:</string>
<string>renameTable:</string>
<string>togglePaneCollapse:</string>
@@ -4904,6 +4998,10 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">openTableInNewTab:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">removeTable:</string>
<string key="candidateClassName">id</string>
</object>
@@ -4945,6 +5043,8 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>duplicateTableMenuItem</string>
<string>extendedTableInfoInstance</string>
<string>listFilterField</string>
+ <string>openTableInNewTabContextMenuItem</string>
+ <string>openTableInNewTabMenuItem</string>
<string>removeTableContextMenuItem</string>
<string>removeTableMenuItem</string>
<string>renameTableContextMenuItem</string>
@@ -4956,7 +5056,6 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>showCreateSyntaxContextMenuItem</string>
<string>showCreateSyntaxMenuItem</string>
<string>spHistoryControllerInstance</string>
- <string>tabView</string>
<string>tableContentInstance</string>
<string>tableDataInstance</string>
<string>tableDocumentInstance</string>
@@ -4976,7 +5075,7 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>toolbarAddButton</string>
<string>toolbarReloadButton</string>
<string>truncateTableButton</string>
- <string>truncateTableContextButton</string>
+ <string>truncateTableContextMenuItem</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -5002,13 +5101,14 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
<string>NSMenuItem</string>
+ <string>NSMenuItem</string>
+ <string>NSMenuItem</string>
<string>SPHistoryController</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
<string>id</string>
- <string>id</string>
<string>NSButton</string>
<string>id</string>
<string>NSSplitView</string>
@@ -5023,7 +5123,7 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>id</string>
<string>id</string>
<string>id</string>
- <string>id</string>
+ <string>NSMenuItem</string>
</object>
</object>
<object class="NSMutableDictionary" key="toOneOutletInfosByName">
@@ -5042,6 +5142,8 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>duplicateTableMenuItem</string>
<string>extendedTableInfoInstance</string>
<string>listFilterField</string>
+ <string>openTableInNewTabContextMenuItem</string>
+ <string>openTableInNewTabMenuItem</string>
<string>removeTableContextMenuItem</string>
<string>removeTableMenuItem</string>
<string>renameTableContextMenuItem</string>
@@ -5053,7 +5155,6 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>showCreateSyntaxContextMenuItem</string>
<string>showCreateSyntaxMenuItem</string>
<string>spHistoryControllerInstance</string>
- <string>tabView</string>
<string>tableContentInstance</string>
<string>tableDataInstance</string>
<string>tableDocumentInstance</string>
@@ -5073,7 +5174,7 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string>toolbarAddButton</string>
<string>toolbarReloadButton</string>
<string>truncateTableButton</string>
- <string>truncateTableContextButton</string>
+ <string>truncateTableContextMenuItem</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -5126,6 +5227,14 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string key="candidateClassName">NSSearchField</string>
</object>
<object class="IBToOneOutletInfo">
+ <string key="name">openTableInNewTabContextMenuItem</string>
+ <string key="candidateClassName">NSMenuItem</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">openTableInNewTabMenuItem</string>
+ <string key="candidateClassName">NSMenuItem</string>
+ </object>
+ <object class="IBToOneOutletInfo">
<string key="name">removeTableContextMenuItem</string>
<string key="candidateClassName">NSMenuItem</string>
</object>
@@ -5170,10 +5279,6 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string key="candidateClassName">SPHistoryController</string>
</object>
<object class="IBToOneOutletInfo">
- <string key="name">tabView</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBToOneOutletInfo">
<string key="name">tableContentInstance</string>
<string key="candidateClassName">id</string>
</object>
@@ -5250,8 +5355,8 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string key="candidateClassName">id</string>
</object>
<object class="IBToOneOutletInfo">
- <string key="name">truncateTableContextButton</string>
- <string key="candidateClassName">id</string>
+ <string key="name">truncateTableContextMenuItem</string>
+ <string key="candidateClassName">NSMenuItem</string>
</object>
</object>
</object>
@@ -5791,6 +5896,27 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRRecorderCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRRecorderControl.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRValidator.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Sparkle.framework/Headers/SUAppcast.h</string>
</object>
</object>
@@ -6247,7 +6373,7 @@ IG5vdCBiZSB1c2VkIGluc2lkZSBvZiBhIHRhYiBzbmlwcGV0XeKAqA</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>{15, 15}</string>
+ <string>{10, 10}</string>
<string>{9, 8}</string>
<string>{7, 2}</string>
<string>{32, 23}</string>
diff --git a/Interfaces/English.lproj/UserManagerView.xib b/Interfaces/English.lproj/UserManagerView.xib
index 795c247c..fbde0774 100644
--- a/Interfaces/English.lproj/UserManagerView.xib
+++ b/Interfaces/English.lproj/UserManagerView.xib
@@ -2,10 +2,10 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
- <string key="IBDocument.SystemVersion">10F569</string>
- <string key="IBDocument.InterfaceBuilderVersion">804</string>
- <string key="IBDocument.AppKitVersion">1038.29</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
+ <string key="IBDocument.SystemVersion">10J567</string>
+ <string key="IBDocument.InterfaceBuilderVersion">788</string>
+ <string key="IBDocument.AppKitVersion">1038.35</string>
+ <string key="IBDocument.HIToolboxVersion">462.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@@ -15,18 +15,19 @@
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
- <string>804</string>
+ <string>788</string>
<string>1.2.5</string>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="593"/>
+ <integer value="43"/>
+ <integer value="984"/>
</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.brandonwalkin.BWToolkit</string>
</object>
<object class="NSMutableDictionary" key="IBDocument.Metadata">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -56,7 +57,7 @@
<string key="NSWindowTitle">User Managment</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">{752, 506}</string>
<object class="NSView" key="NSWindowView" id="846307432">
<reference key="NSNextResponder"/>
@@ -148,7 +149,7 @@
<string key="NSColorName">controlBackgroundColor</string>
<object class="NSColor" key="NSColor" id="246134814">
<int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MC42NjY2NjY2ODY1AA</bytes>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
</object>
</object>
<object class="NSColor" key="NSTextColor" id="315534074">
@@ -2224,7 +2225,7 @@
</object>
<string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
<string key="NSMinSize">{752, 528}</string>
- <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
</object>
<object class="NSTreeController" id="889422316">
<object class="NSMutableArray" key="NSDeclaredKeys">
@@ -2430,6 +2431,201 @@
</object>
</object>
</object>
+ <object class="NSWindowTemplate" id="574715766">
+ <int key="NSWindowStyleMask">9</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{157, 20}, {480, 441}}</string>
+ <int key="NSWTFlags">1954022400</int>
+ <string key="NSWindowTitle">Errors Sheet</string>
+ <string key="NSWindowClass">NSWindow</string>
+ <nil key="NSViewClass"/>
+ <object class="NSView" key="NSWindowView" id="340939829">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextField" id="521208280">
+ <reference key="NSNextResponder" ref="340939829"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{17, 327}, {446, 94}}</string>
+ <reference key="NSSuperview" ref="340939829"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="758533948">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">272891904</int>
+ <string type="base64-UTF8" key="NSContents">RXJyb3JzIG9jY3VycmVkIHdoZW4gYXBwbHlpbmcgeW91ciBjaGFuZ2VzIHRvIHRoZSBzZXJ2ZXIuCgpT
+b21lIGNoYW5nZXMgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGFwcGxpZWQ7IHBsZWFzZSByZXZpZXcgdGhl
+IGVycm9ycyBiZWxvdyBiZWZvcmUgcHJvY2VlZGluZy4</string>
+ <object class="NSFont" key="NSSupport">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ <reference key="NSControlView" ref="521208280"/>
+ <reference key="NSBackgroundColor" ref="409859189"/>
+ <reference key="NSTextColor" ref="315534074"/>
+ </object>
+ </object>
+ <object class="NSScrollView" id="798811064">
+ <reference key="NSNextResponder" ref="340939829"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSClipView" id="306241942">
+ <reference key="NSNextResponder" ref="798811064"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextView" id="234756526">
+ <reference key="NSNextResponder" ref="306241942"/>
+ <int key="NSvFlags">2322</int>
+ <string key="NSFrameSize">{438, 25}</string>
+ <reference key="NSSuperview" ref="306241942"/>
+ <object class="NSTextContainer" key="NSTextContainer" id="181756437">
+ <object class="NSLayoutManager" key="NSLayoutManager">
+ <object class="NSTextStorage" key="NSTextStorage">
+ <object class="NSMutableString" key="NSString">
+ <characters key="NS.bytes"/>
+ </object>
+ <nil key="NSDelegate"/>
+ </object>
+ <object class="NSMutableArray" key="NSTextContainers">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="181756437"/>
+ </object>
+ <int key="NSLMFlags">134</int>
+ <nil key="NSDelegate"/>
+ </object>
+ <reference key="NSTextView" ref="234756526"/>
+ <double key="NSWidth">438</double>
+ <int key="NSTCFlags">1</int>
+ </object>
+ <object class="NSTextViewSharedData" key="NSSharedData">
+ <int key="NSFlags">11237</int>
+ <int key="NSTextCheckingTypes">0</int>
+ <nil key="NSMarkedAttributes"/>
+ <reference key="NSBackgroundColor" ref="888720323"/>
+ <object class="NSDictionary" key="NSSelectedAttributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSBackgroundColor</string>
+ <string>NSColor</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">selectedTextBackgroundColor</string>
+ <reference key="NSColor" ref="246134814"/>
+ </object>
+ <object class="NSColor">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">selectedTextColor</string>
+ <reference key="NSColor" ref="194396468"/>
+ </object>
+ </object>
+ </object>
+ <reference key="NSInsertionColor" ref="194396468"/>
+ <object class="NSDictionary" key="NSLinkAttributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSColor</string>
+ <string>NSCursor</string>
+ <string>NSUnderline</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSColor">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MCAwIDEAA</bytes>
+ </object>
+ <object class="NSCursor">
+ <string key="NSHotSpot">{8, -8}</string>
+ <int key="NSCursorType">13</int>
+ </object>
+ <integer value="1"/>
+ </object>
+ </object>
+ <nil key="NSDefaultParagraphStyle"/>
+ </object>
+ <int key="NSTVFlags">6</int>
+ <string key="NSMaxSize">{463, 1e+07}</string>
+ <string key="NSMinize">{223, 25}</string>
+ <nil key="NSDelegate"/>
+ </object>
+ </object>
+ <string key="NSFrame">{{1, 1}, {438, 257}}</string>
+ <reference key="NSSuperview" ref="798811064"/>
+ <reference key="NSNextKeyView" ref="234756526"/>
+ <reference key="NSDocView" ref="234756526"/>
+ <reference key="NSBGColor" ref="888720323"/>
+ <object class="NSCursor" key="NSCursor">
+ <string key="NSHotSpot">{4, -5}</string>
+ <int key="NSCursorType">1</int>
+ </object>
+ <int key="NScvFlags">4</int>
+ </object>
+ <object class="NSScroller" id="403581926">
+ <reference key="NSNextResponder" ref="798811064"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{424, 1}, {15, 257}}</string>
+ <reference key="NSSuperview" ref="798811064"/>
+ <reference key="NSTarget" ref="798811064"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">1</double>
+ <double key="NSPercent">0.85256409645080566</double>
+ </object>
+ <object class="NSScroller" id="584287791">
+ <reference key="NSNextResponder" ref="798811064"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-100, -100}, {87, 18}}</string>
+ <reference key="NSSuperview" ref="798811064"/>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="798811064"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">1</double>
+ <double key="NSPercent">0.94565218687057495</double>
+ </object>
+ </object>
+ <string key="NSFrame">{{20, 60}, {440, 259}}</string>
+ <reference key="NSSuperview" ref="340939829"/>
+ <reference key="NSNextKeyView" ref="306241942"/>
+ <int key="NSsFlags">562</int>
+ <reference key="NSVScroller" ref="403581926"/>
+ <reference key="NSHScroller" ref="584287791"/>
+ <reference key="NSContentView" ref="306241942"/>
+ </object>
+ <object class="NSButton" id="942389557">
+ <reference key="NSNextResponder" ref="340939829"/>
+ <int key="NSvFlags">268</int>
+ <string key="NSFrame">{{314, 12}, {152, 32}}</string>
+ <reference key="NSSuperview" ref="340939829"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="521888647">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">OK</string>
+ <reference key="NSSupport" ref="746597359"/>
+ <reference key="NSControlView" ref="942389557"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">129</int>
+ <string key="NSAlternateContents"/>
+ <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ </object>
+ <string key="NSFrameSize">{480, 441}</string>
+ <reference key="NSSuperview"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1440, 878}}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ </object>
</object>
<object class="IBObjectContainer" key="IBDocument.Objects">
<object class="NSMutableArray" key="connectionRecords">
@@ -4145,6 +4341,30 @@
</object>
<int key="connectionID">982</int>
</object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">errorsSheet</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="574715766"/>
+ </object>
+ <int key="connectionID">993</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">errorsTextView</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="234756526"/>
+ </object>
+ <int key="connectionID">994</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">closeErrorsSheet:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="942389557"/>
+ </object>
+ <int key="connectionID">998</int>
+ </object>
</object>
<object class="IBMutableOrderedSet" key="objectRecords">
<object class="NSArray" key="orderedObjects">
@@ -5411,6 +5631,80 @@
<reference key="object" ref="765293659"/>
<reference key="parent" ref="473921129"/>
</object>
+ <object class="IBObjectRecord">
+ <int key="objectID">983</int>
+ <reference key="object" ref="574715766"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="340939829"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">984</int>
+ <reference key="object" ref="340939829"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="521208280"/>
+ <reference ref="798811064"/>
+ <reference ref="942389557"/>
+ </object>
+ <reference key="parent" ref="574715766"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">985</int>
+ <reference key="object" ref="521208280"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="758533948"/>
+ </object>
+ <reference key="parent" ref="340939829"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">986</int>
+ <reference key="object" ref="758533948"/>
+ <reference key="parent" ref="521208280"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">987</int>
+ <reference key="object" ref="798811064"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="403581926"/>
+ <reference ref="584287791"/>
+ <reference ref="234756526"/>
+ </object>
+ <reference key="parent" ref="340939829"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">988</int>
+ <reference key="object" ref="403581926"/>
+ <reference key="parent" ref="798811064"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">989</int>
+ <reference key="object" ref="584287791"/>
+ <reference key="parent" ref="798811064"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">990</int>
+ <reference key="object" ref="234756526"/>
+ <reference key="parent" ref="798811064"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">995</int>
+ <reference key="object" ref="942389557"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="521888647"/>
+ </object>
+ <reference key="parent" ref="340939829"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">996</int>
+ <reference key="object" ref="521888647"/>
+ <reference key="parent" ref="942389557"/>
+ </object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@@ -5594,6 +5888,19 @@
<string>973.IBNumberFormatterBehaviorMetadataKey</string>
<string>973.IBNumberFormatterLocalizesFormatMetadataKey</string>
<string>973.IBPluginDependency</string>
+ <string>983.IBEditorWindowLastContentRect</string>
+ <string>983.IBPluginDependency</string>
+ <string>983.IBWindowTemplateEditedContentRect</string>
+ <string>983.NSWindowTemplate.visibleAtLaunch</string>
+ <string>984.IBPluginDependency</string>
+ <string>985.IBPluginDependency</string>
+ <string>986.IBPluginDependency</string>
+ <string>987.IBPluginDependency</string>
+ <string>988.IBPluginDependency</string>
+ <string>989.IBPluginDependency</string>
+ <string>990.IBPluginDependency</string>
+ <string>995.IBPluginDependency</string>
+ <string>996.IBPluginDependency</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -5617,9 +5924,9 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{315, 326}, {815, 506}}</string>
+ <string>{{187, 326}, {815, 506}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{315, 326}, {815, 506}}</string>
+ <string>{{187, 326}, {815, 506}}</string>
<boolean value="NO"/>
<boolean value="YES"/>
<string>{752, 506}</string>
@@ -5795,6 +6102,19 @@
<integer value="1040"/>
<boolean value="YES"/>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{348, 393}, {480, 441}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{348, 393}, {480, 441}}</string>
+ <boolean value="NO"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
@@ -5813,7 +6133,7 @@
</object>
</object>
<nil key="sourceID"/>
- <int key="maxID">982</int>
+ <int key="maxID">998</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
@@ -5833,10 +6153,10 @@
</object>
</object>
<object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
+ <string key="className">NSMenu</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
- <string key="minorKey">Frameworks/MCPKit/MCPFoundationKit/MCPConnection.h</string>
+ <string key="minorKey">Source/SPMenuAdditions.h</string>
</object>
</object>
<object class="IBPartialClassDescription">
@@ -5921,6 +6241,143 @@
</object>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">NSTextView</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>doDecomposedStringWithCanonicalMapping:</string>
+ <string>doDecomposedStringWithCompatibilityMapping:</string>
+ <string>doPrecomposedStringWithCanonicalMapping:</string>
+ <string>doPrecomposedStringWithCompatibilityMapping:</string>
+ <string>doRemoveDiacritics:</string>
+ <string>doSelectionLowerCase:</string>
+ <string>doSelectionTitleCase:</string>
+ <string>doSelectionUpperCase:</string>
+ <string>doTranspose:</string>
+ <string>executeBundleItemForInputField:</string>
+ <string>insertNULLvalue:</string>
+ <string>moveSelectionLineDown:</string>
+ <string>moveSelectionLineUp:</string>
+ <string>selectCurrentLine:</string>
+ <string>selectCurrentWord:</string>
+ <string>selectEnclosingBrackets:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="actionInfosByName">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>doDecomposedStringWithCanonicalMapping:</string>
+ <string>doDecomposedStringWithCompatibilityMapping:</string>
+ <string>doPrecomposedStringWithCanonicalMapping:</string>
+ <string>doPrecomposedStringWithCompatibilityMapping:</string>
+ <string>doRemoveDiacritics:</string>
+ <string>doSelectionLowerCase:</string>
+ <string>doSelectionTitleCase:</string>
+ <string>doSelectionUpperCase:</string>
+ <string>doTranspose:</string>
+ <string>executeBundleItemForInputField:</string>
+ <string>insertNULLvalue:</string>
+ <string>moveSelectionLineDown:</string>
+ <string>moveSelectionLineUp:</string>
+ <string>selectCurrentLine:</string>
+ <string>selectCurrentWord:</string>
+ <string>selectEnclosingBrackets:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBActionInfo">
+ <string key="name">doDecomposedStringWithCanonicalMapping:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">doDecomposedStringWithCompatibilityMapping:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">doPrecomposedStringWithCanonicalMapping:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">doPrecomposedStringWithCompatibilityMapping:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">doRemoveDiacritics:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">doSelectionLowerCase:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">doSelectionTitleCase:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">doSelectionUpperCase:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">doTranspose:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">executeBundleItemForInputField:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">insertNULLvalue:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">moveSelectionLineDown:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">moveSelectionLineUp:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">selectCurrentLine:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">selectCurrentWord:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
+ <string key="name">selectEnclosingBrackets:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">Source/SPTextViewAdditions.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">NSWindow</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBProjectSource</string>
@@ -5946,6 +6403,7 @@
<string>addSchemaPriv:</string>
<string>addUser:</string>
<string>checkAllPrivileges:</string>
+ <string>closeErrorsSheet:</string>
<string>doApply:</string>
<string>doCancel:</string>
<string>refresh:</string>
@@ -5967,6 +6425,7 @@
<string>id</string>
<string>id</string>
<string>id</string>
+ <string>id</string>
</object>
</object>
<object class="NSMutableDictionary" key="actionInfosByName">
@@ -5977,6 +6436,7 @@
<string>addSchemaPriv:</string>
<string>addUser:</string>
<string>checkAllPrivileges:</string>
+ <string>closeErrorsSheet:</string>
<string>doApply:</string>
<string>doCancel:</string>
<string>refresh:</string>
@@ -6004,6 +6464,10 @@
<string key="candidateClassName">id</string>
</object>
<object class="IBActionInfo">
+ <string key="name">closeErrorsSheet:</string>
+ <string key="candidateClassName">id</string>
+ </object>
+ <object class="IBActionInfo">
<string key="name">doApply:</string>
<string key="candidateClassName">id</string>
</object>
@@ -6040,6 +6504,8 @@
<string>addSchemaPrivButton</string>
<string>availableController</string>
<string>availableTableView</string>
+ <string>errorsSheet</string>
+ <string>errorsTextView</string>
<string>grantedController</string>
<string>grantedTableView</string>
<string>maxConnectionsTextField</string>
@@ -6060,6 +6526,8 @@
<string>NSButton</string>
<string>NSArrayController</string>
<string>NSTableView</string>
+ <string>NSWindow</string>
+ <string>NSTextView</string>
<string>NSArrayController</string>
<string>NSTableView</string>
<string>NSTextField</string>
@@ -6083,6 +6551,8 @@
<string>addSchemaPrivButton</string>
<string>availableController</string>
<string>availableTableView</string>
+ <string>errorsSheet</string>
+ <string>errorsTextView</string>
<string>grantedController</string>
<string>grantedTableView</string>
<string>maxConnectionsTextField</string>
@@ -6113,6 +6583,14 @@
<string key="candidateClassName">NSTableView</string>
</object>
<object class="IBToOneOutletInfo">
+ <string key="name">errorsSheet</string>
+ <string key="candidateClassName">NSWindow</string>
+ </object>
+ <object class="IBToOneOutletInfo">
+ <string key="name">errorsTextView</string>
+ <string key="candidateClassName">NSTextView</string>
+ </object>
+ <object class="IBToOneOutletInfo">
<string key="name">grantedController</string>
<string key="candidateClassName">NSArrayController</string>
</object>
@@ -6680,6 +7158,27 @@
<string key="className">NSObject</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
<string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRRecorderCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRRecorderControl.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">ShortcutRecorder.framework/Headers/SRValidator.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
<string key="minorKey">Sparkle.framework/Headers/SUAppcast.h</string>
</object>
</object>
@@ -6879,6 +7378,14 @@
<reference key="sourceIdentifier" ref="739519750"/>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">NSText</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSText.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">NSTextField</string>
<string key="superclassName">NSControl</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
@@ -6895,6 +7402,14 @@
</object>
</object>
<object class="IBPartialClassDescription">
+ <string key="className">NSTextView</string>
+ <string key="superclassName">NSText</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSTextView.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
<string key="className">NSTreeController</string>
<string key="superclassName">NSObjectController</string>
<object class="IBClassDescriptionSource" key="sourceIdentifier">
diff --git a/Models/SPUserManager.xcdatamodel/elements b/Models/SPUserManager.xcdatamodel/elements
index d9f1e943..01aa994f 100644
--- a/Models/SPUserManager.xcdatamodel/elements
+++ b/Models/SPUserManager.xcdatamodel/elements
Binary files differ
diff --git a/Models/SPUserManager.xcdatamodel/layout b/Models/SPUserManager.xcdatamodel/layout
index 7e8fd9cf..d177ace3 100644
--- a/Models/SPUserManager.xcdatamodel/layout
+++ b/Models/SPUserManager.xcdatamodel/layout
Binary files differ
diff --git a/README b/README
index cb788d74..8c303520 100644
--- a/README
+++ b/README
@@ -1,22 +1,27 @@
BUILDING SEQUEL PRO
-------------------
-Before you can start making changes to any of the xib files in Interface
-Builder you will need to install the BWToolkit plugin from
-http://www.brandonwalkin.com/bwtoolkit/.
+Sequel Pro uses two external frameworks which come with .ibplugins (Interface Builder
+Plugins); to build Sequel Pro, Interface Builder must have detected these plugins.
-To install the plugin you will need to do a Release build of the project so
-that the BWTookit plugin and frameworks are compiled.
+The two frameworks are:
+ BWToolkit
+ ShortcutRecorder
-Once you have done this double click on the BWToolkit.ibplugin located at:
+Each of these frameworks is included in the Sequel Pro source tree with its .ibplugin;
+the locations of these .ibplugins are:
+ ./Frameworks/BWToolkitFramework.framework/Versions/A/Resources/BWToolkit.ibplugin
+ ./Frameworks/ShortcutRecorder.framework/Versions/A/Resources/ShortcutRecorder.ibplugin
- ./trunk/Frameworks/BWToolkitFramework.framework/build/Release/
+By including these .ibplugins within the frameworks, Interface Builder should detect them automatically when you build. If you get build errors about "Unable to resolve plug-in
+dependency for ", automatic detection has failed. The first thing to try is to quit Xcode
+and Interface Builder, re-open Xcode, and try again; if this still fails, locate
+the .ibplugins and double click on them to add them to Interface Builder.
If Interface Builder complains that it's already installed then you might want
-to replace the current one with the one you just built.
-
-To do this go to the Interface Builder preferences and click on 'Plugins' and
-remove the BWToolkit plugin using the [ - ] button below the list.
+to replace the current version with the version in the project; to do this go to the
+Interface Builder preferences, click on 'Plugins', and remove the BWToolkit plugin
+using the [ - ] button below the list.
You will need to relaunch Interface Builder before you can re-add the plugin
from the location mentioned above.
diff --git a/Resources/English.lproj/Credits.rtf b/Resources/English.lproj/Credits.rtf
index d8a3dfb3..e344a10c 100644
--- a/Resources/English.lproj/Credits.rtf
+++ b/Resources/English.lproj/Credits.rtf
@@ -1,6 +1,7 @@
{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;\f1\fmodern\fcharset0 Courier;}
{\colortbl;\red255\green255\blue255;\red25\green25\blue25;\red0\green27\blue199;}
+\vieww10500\viewh9600\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
\f0\b\fs22 \cf2 Current Developers
@@ -109,6 +110,16 @@ Copyright (c) 2009\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
\cf0 All rights reserved.\
\
+\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
+
+\b \cf0 ShortcutRecorderFramework
+\b0 \
+Copyright (c) 2006-2010\
+\pard\pardeftab720\qc
+{\field{\*\fldinst{HYPERLINK "http://code.google.com/p/shortcutrecorder/"}}{\fldrslt \cf0 Jesper, Dauer, Kirkpatrick}}\
+\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
+\cf0 All rights reserved.\
+\
\pard\pardeftab720\qc
\b \cf0 Artwork
diff --git a/Resources/English.lproj/DBView.strings b/Resources/English.lproj/DBView.strings
index b2b0b4b9..35f47990 100644
--- a/Resources/English.lproj/DBView.strings
+++ b/Resources/English.lproj/DBView.strings
Binary files differ
diff --git a/Resources/English.lproj/IndexesView.strings b/Resources/English.lproj/IndexesView.strings
index ebbaab67..a2c1a5d7 100644
--- a/Resources/English.lproj/IndexesView.strings
+++ b/Resources/English.lproj/IndexesView.strings
Binary files differ
diff --git a/Resources/English.lproj/Localizable.strings b/Resources/English.lproj/Localizable.strings
index 18431777..101f45e3 100644
--- a/Resources/English.lproj/Localizable.strings
+++ b/Resources/English.lproj/Localizable.strings
Binary files differ
diff --git a/Resources/English.lproj/MainWindow.strings b/Resources/English.lproj/MainWindow.strings
index 1191d0d2..2afdf3b5 100644
--- a/Resources/English.lproj/MainWindow.strings
+++ b/Resources/English.lproj/MainWindow.strings
Binary files differ
diff --git a/Resources/English.lproj/Preferences.strings b/Resources/English.lproj/Preferences.strings
index f906e011..1dc95010 100644
--- a/Resources/English.lproj/Preferences.strings
+++ b/Resources/English.lproj/Preferences.strings
Binary files differ
diff --git a/Resources/English.lproj/UserManagerView.strings b/Resources/English.lproj/UserManagerView.strings
index bf8bad55..9f31028f 100644
--- a/Resources/English.lproj/UserManagerView.strings
+++ b/Resources/English.lproj/UserManagerView.strings
Binary files differ
diff --git a/Resources/Plists/CompletionTokens.plist b/Resources/Plists/CompletionTokens.plist
index 6d48e267..f089401d 100644
--- a/Resources/Plists/CompletionTokens.plist
+++ b/Resources/Plists/CompletionTokens.plist
@@ -60,6 +60,7 @@
<string>CASCADE</string>
<string>CASCADED</string>
<string>CASE</string>
+ <string>CATALOG_NAME</string>
<string>CHAIN</string>
<string>CHANGE</string>
<string>CHANGED</string>
@@ -72,6 +73,7 @@
<string>CHECKSUM</string>
<string>CHECKSUM TABLE</string>
<string>CIPHER</string>
+ <string>CLASS_ORIGIN</string>
<string>CLIENT</string>
<string>CLOSE</string>
<string>COALESCE</string>
@@ -79,6 +81,7 @@
<string>COLLATE</string>
<string>COLLATION</string>
<string>COLUMN</string>
+ <string>COLUMN_NAME</string>
<string>COLUMNS</string>
<string>COLUMN_FORMAT</string>
<string>COMMENT</string>
@@ -92,10 +95,14 @@
<string>CONNECTION</string>
<string>CONSISTENT</string>
<string>CONSTRAINT</string>
+ <string>CONSTRAINT_CATALOG</string>
+ <string>CONSTRAINT_NAME</string>
+ <string>CONSTRAINT_SCHEMA</string>
<string>CONTAINS</string>
<string>CONTINUE</string>
<string>CONTRIBUTORS</string>
<string>CONVERT</string>
+ <string>CURSOR_NAME</string>
<string>CREATE</string>
<string>CREATE DATABASE</string>
<string>CREATE EVENT</string>
@@ -104,6 +111,7 @@
<string>CREATE LOGFILE GROUP</string>
<string>CREATE PROCEDURE</string>
<string>CREATE SCHEMA</string>
+ <string>CREATE SERVER</string>
<string>CREATE TABLE</string>
<string>CREATE TABLESPACE</string>
<string>CREATE TRIGGER</string>
@@ -216,6 +224,7 @@
<string>FOR UPDATE</string>
<string>FORCE</string>
<string>FOREIGN</string>
+ <string>FOREIGN DATA WRAPPER</string>
<string>FOREIGN KEY</string>
<string>FOUND</string>
<string>FRAC_SECOND</string>
@@ -223,6 +232,7 @@
<string>FULL</string>
<string>FULLTEXT</string>
<string>FUNCTION</string>
+ <string>GENERAL</string>
<string>GEOMETRY</string>
<string>GEOMETRYCOLLECTION</string>
<string>GLOBAL</string>
@@ -235,6 +245,7 @@
<string>HAVING</string>
<string>HELP</string>
<string>HIGH_PRIORITY</string>
+ <string>HOST</string>
<string>HOSTS</string>
<string>HOUR</string>
<string>HOUR_MICROSECOND</string>
@@ -243,6 +254,7 @@
<string>IDENTIFIED</string>
<string>IF</string>
<string>IGNORE</string>
+ <string>IGNORE_SERVER_IDS</string>
<string>IMPORT</string>
<string>IN</string>
<string>INDEX</string>
@@ -315,6 +327,7 @@
<string>LOW_PRIORITY</string>
<string>MASTER</string>
<string>MASTER_CONNECT_RETRY</string>
+ <string>MASTER_HEARTBEAT_PERIOD</string>
<string>MASTER_HOST</string>
<string>MASTER_LOG_FILE</string>
<string>MASTER_LOG_POS</string>
@@ -342,6 +355,7 @@
<string>MEDIUMTEXT</string>
<string>MEMORY</string>
<string>MERGE</string>
+ <string>MESSAGE_TEXT</string>
<string>MICROSECOND</string>
<string>MIDDLEINT</string>
<string>MIGRATE</string>
@@ -358,6 +372,7 @@
<string>MULTIPOINT</string>
<string>MULTIPOLYGON</string>
<string>MUTEX</string>
+ <string>MYSQL_ERRNO</string>
<string>NAME</string>
<string>NAMES</string>
<string>NATIONAL</string>
@@ -394,6 +409,7 @@
<string>OUT</string>
<string>OUTER</string>
<string>OUTFILE</string>
+ <string>OWNER</string>
<string>PACK_KEYS</string>
<string>PARSER</string>
<string>PARTIAL</string>
@@ -406,6 +422,7 @@
<string>PLUGINS</string>
<string>POINT</string>
<string>POLYGON</string>
+ <string>PORT</string>
<string>PRECISION</string>
<string>PREPARE</string>
<string>PRESERVE</string>
@@ -453,6 +470,7 @@
<string>REQUIRE</string>
<string>RESET</string>
<string>RESET MASTER</string>
+ <string>RESIGNAL</string>
<string>RESTORE</string>
<string>RESTORE TABLE</string>
<string>RESTRICT</string>
@@ -475,6 +493,7 @@
<string>SCHEDULER</string>
<string>SCHEMA</string>
<string>SCHEMAS</string>
+ <string>SCHEMA_NAME</string>
<string>SECOND</string>
<string>SECOND_MICROSECOND</string>
<string>SECURITY</string>
@@ -484,6 +503,7 @@
<string>SEPARATOR</string>
<string>SERIAL</string>
<string>SERIALIZABLE</string>
+ <string>SERVER</string>
<string>SESSION</string>
<string>SET</string>
<string>SET GLOBAL</string>
@@ -541,11 +561,14 @@
<string>SHOW VARIABLES</string>
<string>SHOW WARNINGS</string>
<string>SHUTDOWN</string>
+ <string>SIGNAL</string>
<string>SIGNED</string>
<string>SIMPLE</string>
<string>SLAVE</string>
+ <string>SLOW</string>
<string>SMALLINT</string>
<string>SNAPSHOT</string>
+ <string>SOCKET</string>
<string>SOME</string>
<string>SONAME</string>
<string>SOUNDS</string>
@@ -591,6 +614,7 @@
<string>STRAIGHT_JOIN</string>
<string>STRING</string>
<string>SUBJECT</string>
+ <string>SUBCLASS_ORIGIN</string>
<string>SUBPARTITION</string>
<string>SUBPARTITIONS</string>
<string>SUPER</string>
@@ -598,6 +622,7 @@
<string>TABLE</string>
<string>TABLES</string>
<string>TABLESPACE</string>
+ <string>TABLE_NAME</string>
<string>TEMPORARY</string>
<string>TEMPTABLE</string>
<string>TERMINATED</string>
@@ -663,6 +688,7 @@
<string>WITH</string>
<string>WITH CONSISTENT SNAPSHOT</string>
<string>WORK</string>
+ <string>WRAPPER</string>
<string>WRITE</string>
<string>X509</string>
<string>XA</string>
diff --git a/Resources/Plists/PreferenceDefaults.plist b/Resources/Plists/PreferenceDefaults.plist
index 591bb967..0c34ab58 100644
--- a/Resources/Plists/PreferenceDefaults.plist
+++ b/Resources/Plists/PreferenceDefaults.plist
@@ -177,7 +177,9 @@
<true/>
<key>deletedDefaultBundles</key>
<array/>
- <key>updatedDefaultBundles</key>
- <array/>
+ <key>CustomQuerySoftIndent</key>
+ <false/>
+ <key>CustomQuerySoftIndentWidth</key>
+ <integer>2</integer>
</dict>
</plist>
diff --git a/Scripts/build-mysql-client.sh b/Scripts/build-mysql-client.sh
index 1641053c..fbaef809 100755
--- a/Scripts/build-mysql-client.sh
+++ b/Scripts/build-mysql-client.sh
@@ -1,16 +1,36 @@
#! /bin/ksh
-## $Id: build-mysql-client.sh 1044 2009-07-17 14:30:58Z stuart02 $
-##
-## Author: Stuart Connolly (stuconnolly.com)
-## Copyright (c) 2009 Stuart Connolly. All rights reserved.
-##
-## Paramters: -s -- The path to the MySQL source directory.
-## -q -- Quiet. Don't output any compiler messages.
-## -c -- Clean the source after build completes.
-## -d -- Debug. Output the build statements.
-##
-## Description: Builds the MySQL client libraries for distrubution in Sequel Pro's MCPKit MySQL framework.
+#
+# $Id$
+#
+# build-mysql-client.sh
+# sequel-pro
+#
+# Created by Stuart Connolly (stuconnolly.com)
+# Copyright (c) 2009 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/>
+
+# Builds the MySQL client libraries for distrubution in Sequel Pro's MCPKit MySQL framework.
+#
+# Paramters: -s -- The path to the MySQL source directory.
+# -q -- Quiet. Don't output any compiler messages.
+# -c -- Clean the source after build completes.
+# -d -- Debug. Output the build statements.
QUIET='NO'
DEBUG='NO'
diff --git a/Scripts/build-version.pl b/Scripts/build-version.pl
index fa12bfdb..92dcc15b 100755
--- a/Scripts/build-version.pl
+++ b/Scripts/build-version.pl
@@ -1,22 +1,42 @@
-#! /usr/bin/perl -w
-
-## $Id$
-##
-## Author: Stuart Connolly (stuconnolly.com)
-## Copyright (c) 2009 Stuart Connolly. All rights reserved.
-##
-## Paramters: <none>
-##
-## Description: Updates the application/bundle's Info.plist CFBundleVersion to match that of the current
-## Subversion revision.
+#! /usr/bin/perl
+
+#
+# $Id$
+#
+# build-version.pl
+# sequel-pro
+#
+# Created by Stuart Connolly (stuconnolly.com)
+# Copyright (c) 2009 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/>
+
+# Updates the application/bundle's Info.plist CFBundleVersion to match that of the current
+# Subversion revision.
use strict;
use warnings;
+use Carp;
+
die "$0: Must be run from within Xcode. Exiting..." unless $ENV{"BUILT_PRODUCTS_DIR"};
my $revision = `svnversion -n ./`;
-my $info_plist = "$ENV{BUILT_PRODUCTS_DIR}/$ENV{INFOPLIST_PATH}";
+my $plist_path = "$ENV{BUILT_PRODUCTS_DIR}/$ENV{INFOPLIST_PATH}";
my $version = $revision;
@@ -24,12 +44,18 @@ my $version = $revision;
die "$0: No Subversion revision found. Exiting..." unless $version;
-open(INFO_FH, "$info_plist") or die "$0: $info_plist: $!";
-my $info = join("", <INFO_FH>);
-close(INFO_FH);
+open(my $plist, $plist_path) || croak "Unable to open plist file for reading: $!";
+
+my $info = join('', <$plist>);
+
+close($plist);
$info =~ s/([\t ]+<key>CFBundleVersion<\/key>\n[\t ]+<string>).*?(<\/string>)/$1$version$2/;
-open(INFO_FH, ">$info_plist") or die "$0: $info_plist: $!";
-print INFO_FH $info;
-close(INFO_FH);
+open($plist, '>', $plist_path) || croak "Unable to open plist file for writing: $!";
+
+print $plist $info;
+
+close($plist);
+
+exit 0
diff --git a/Scripts/build.sh b/Scripts/build.sh
index a9291abb..51ae052c 100755
--- a/Scripts/build.sh
+++ b/Scripts/build.sh
@@ -1,15 +1,33 @@
#! /bin/ksh
-## $Id$
-##
-## Author: Stuart Connolly (stuconnolly.com)
-## Copyright (c) 2009 Stuart Connolly. All rights reserved.
-##
-## Paramters: <none>
-##
-## Description: Generic Sequel Pro build script. This script is intended to replace entering lots of code
-## into Xcode's 'Run Scripts' build phase to make it easier to work with. As such this script
-## can only be run by Xcode.
+#
+# $Id$
+#
+# build.sh
+# sequel-pro
+#
+# Created by Stuart Connolly (stuconnolly.com).
+# Copyright (c) 2009 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/>
+
+# Generic Sequel Pro build script. This script is intended to replace entering lots of code
+# into Xcode's 'Run Scripts' build phase to make it easier to work with. As such this script
+# can only be run by Xcode.
if [ "${BUILT_PRODUCTS_DIR}x" == 'x' ]
then
diff --git a/Scripts/create-test-stubs.pl b/Scripts/create-test-stubs.pl
new file mode 100755
index 00000000..ac4193ca
--- /dev/null
+++ b/Scripts/create-test-stubs.pl
@@ -0,0 +1,191 @@
+#! /usr/bin/perl
+
+#
+# $Id$
+#
+# create-test-stubs.sh
+# sequel-pro
+#
+# Created by Stuart Connolly (stuconnolly.com) on January 8, 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/>
+
+use strict;
+use warnings;
+
+use Carp;
+use Getopt::Long;
+
+use constant PROJECT_NAME => 'sequel-pro';
+use constant PROJECT_URL => 'http://code.google.com/p/sequel-pro/';
+
+#
+# Print this script's usage.
+#
+sub usage
+{
+ print << "EOF";
+Usage: perl $0 [options]
+
+Possible options are:
+
+ --header (-h) Source header file path (required)
+ --output (-c) The output path (required)
+ --author (-a) The author of the eventual test cases (required)
+ --help (-h) Print this help message
+
+EOF
+
+ exit 0;
+}
+
+#
+# Writes the standard license/copyright header to the supplied file handle;
+#
+sub write_header_to_file
+{
+ my ($handle, $filename, $author, $is_header) = @_;
+
+ my @date = localtime(time);
+
+ my @months = qw(January February March April May June July August September October November December);
+
+ my $year = ($date[5] + 1900);
+ my $month = $months[$date[4]];
+
+ my $project = PROJECT_NAME;
+ my $project_url = PROJECT_URL;
+
+ $filename = ($is_header) ? "${filename}.h" : "${filename}.m";
+
+ my $content = << "EOF";
+//
+// \$Id\$
+//
+// $filename
+// $project
+//
+// Created by $author on $month $date[3], $year
+// Copyright (c) $year ${author}. 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 <${project_url}>
+
+EOF
+
+ print $handle $content;
+}
+
+my ($header, $output, $author, $comments, $help);
+
+# Get options
+GetOptions('header|s=s' => \$header,
+ 'output|o=s' => \$output,
+ 'author|a=s' => \$author,
+ 'comments|c' => \$comments,
+ 'help|h' => \$help);
+
+usage if $help;
+usage if ((!$header) && (!$output) && (!$author));
+
+open(my $header_handle, $header) || croak "Unable to open source header file: $!";
+
+my @methods;
+my $class_name;
+my $category_name;
+
+# Extract all the methods (both instance and class) from the source header
+while (<$header_handle>)
+{
+ ($_ =~ /^\s*\@interface\s*([a-zA-z0-9_-]+)\s*\(([a-zA-z0-9_-]+)\)\s*$/) && ($class_name = $1, $category_name = $2);
+ ($_ =~ /^\s*[-|+]\s*\([a-zA-Z\s*\*_-]+\)(.*)$/) && (my $method_sig = $1);
+
+ $class_name =~ s/^\s+// if $class_name;
+ $class_name =~ s/\s+$// if $class_name;
+
+ $category_name =~ s/^\s+// if $category_name;
+ $category_name =~ s/\s+$// if $category_name;
+
+ push(@methods, $method_sig) if $method_sig;
+}
+
+close($header_handle);
+
+my $filename = ($category_name) ? $category_name : $class_name;
+my $new_filename = "${filename}Tests";
+
+my $header_file = "${output}/${new_filename}.h";
+my $imp_file = "${output}/${new_filename}.m";
+
+# Create the new header and implementation files
+open(my $output_header_handle, '>', $header_file) || croak "Unable to open output file: $!";
+open(my $output_imp_handle, '>', $imp_file) || croak "Unable to open output file: $!";
+
+print "Creating file '${header_file}'...\n";
+print "Creating file '${imp_file}'...\n";
+
+# Write the license header to the new files
+write_header_to_file($output_header_handle, $new_filename, $author, 1);
+write_header_to_file($output_imp_handle, $new_filename, $author, 0);
+
+print $output_header_handle "#import <SenTestingKit/SenTestingKit.h>\n\n\@interface $new_filename : SenTestCase\n{\n\n}\n\n\@end\n";
+print $output_imp_handle "#import \"${new_filename}.h\"\n#import \"${filename}.h\"\n\n\@implementation $new_filename\n\n";
+
+# Write the setup and tear down methods
+print $output_imp_handle "/**\n * Test case setup.\n */\n" if $comments;
+print $output_imp_handle "- (void)setUp\n{\n\n}\n\n";
+print $output_imp_handle "/**\n * Test case tear down.\n */\n" if $comments;
+print $output_imp_handle "- (void)tearDown\n{\n\n}\n\n";
+
+# For each of the extracted methods write a test case stub to the new test implementation file
+foreach (@methods)
+{
+ $_ =~ s/\([a-zA-Z\s*\*_-]*\)\s*[a-zA-z0-9_-]+//gi;
+ $_ =~ s/:\s*([a-zA-z0-9_-]+)\s*/\u$1/gi;
+ $_ =~ s/://;
+ $_ =~ s/;//;
+
+ my $method = "test\u$_";
+
+ print "Writing test case stub: $method\n";
+
+ print $output_imp_handle "/**\n * $_ test case.\n */\n" if $comments;
+ print $output_imp_handle "- (void)${method}\n{\n\n}\n\n";
+}
+
+print $output_imp_handle "\@end\n\n";
+
+close($output_header_handle);
+close($output_imp_handle);
+
+print "Test case stub generation complete for class '${filename}'\n";
+
+exit 0
diff --git a/Scripts/localize.sh b/Scripts/localize.sh
index e3de6957..0c74a01f 100755
--- a/Scripts/localize.sh
+++ b/Scripts/localize.sh
@@ -1,13 +1,31 @@
-#! /bin/ksh
-
-## $Id$
-##
-## Author: Created by Rowan Beentje.
-## Copyright (c) 2010 Sequel Pro Team. All rights reserved.
-##
-## Paramters: <none>
-##
-## Description: Localizes all of the application's NIB files. This script should only be run by Xcode.
+#! /bin/ksh
+
+#
+# $Id$
+#
+# localize.sh
+# sequel-pro
+#
+# Created by Rowan Beentje.
+# Copyright (c) 2010 Sequel Pro Team. 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/>
+
+# Localizes all of the application's NIB files. This script should only be run by Xcode.
if [ "${BUILT_PRODUCTS_DIR}x" == 'x' ]
then
diff --git a/Scripts/package-application.sh b/Scripts/package-application.sh
index 69e14058..7bc402b9 100755
--- a/Scripts/package-application.sh
+++ b/Scripts/package-application.sh
@@ -1,17 +1,34 @@
#!/bin/sh
-# $Id$
#
-# package-application.sh
-# sequel-pro
+# $Id$
#
-# A very basic script to build and sign a disk image for Sequel Pro; based on better work by Stuart Connolly.
+# package-application.sh
+# sequel-pro
#
-# Created by Rowan Beentje on 25/03/2009.
-# Copyright 2009 Sequel Pro Team. All rights reserved.
+# Created by Rowan Beentje on March 25, 2009.
+# Copyright (c) 2009 Sequel Pro Team. 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/>
-# Ensure the path to the application has been supplied - should have occurred when the
-# script was run by selecting "Distribution" target and building.
+# A very basic script to build and sign a disk image for Sequel Pro; based on better work by Stuart Connolly.
+#
+# Ensure the path to the application has been supplied - should have occurred when the
+# script was run by selecting 'Distribution' target and building.
if [ $# -eq 0 ]
then
diff --git a/Scripts/run-tests.sh b/Scripts/run-tests.sh
new file mode 100755
index 00000000..22ed51dd
--- /dev/null
+++ b/Scripts/run-tests.sh
@@ -0,0 +1,36 @@
+#! /bin/ksh
+
+#
+# $Id$
+#
+# run-tests.sh
+# sequel-pro
+#
+# Created by Stuart Connolly (stuconnolly.com)
+# 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/>
+
+# Runs Sequel Pro's unit tests. This script should only be run by Xcode.
+
+# Add the unit test bundle's Frameworks/ path to the search paths for dynamic libraries
+export DYLD_FRAMEWORK_PATH="${CONFIGURATION_BUILD_DIR}/${FULL_PRODUCT_NAME}/Contents/Frameworks"
+
+# Run the unit tests in this test bundle
+"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests"
+
+exit 0
diff --git a/Scripts/trim-application.sh b/Scripts/trim-application.sh
index a8194060..bc6a99ec 100755
--- a/Scripts/trim-application.sh
+++ b/Scripts/trim-application.sh
@@ -1,23 +1,43 @@
-#! /bin/ksh
-
-## $Id$
-##
-## Author: Stuart Connolly (stuconnolly.com)
-## Copyright (c) 2009 Stuart Connolly. All rights reserved.
-##
-## Largely based on 'trim-app' by Ankur Kothari ( http://lipidity.com/downloads/trim-app/ )
-##
-## Paramters: -p -- The path to the application that is to be trimmed
-## -d -- Remove unnecessary files (i.e. .DS_Store files, etc) (optional).
-## -n -- Trim nib files (i.e. remove .info.nib, classes.nib, data.dependency and designable.nib) (optional).
-## -s -- Strip debug symbols from application binary (optional).
-## -t -- Compress tiff images using LZW compression (optional).
-## -f -- Remove framework headers (optional).
-## -r -- Remove resource forks (optional).
-## -a -- All of above optional options. Equivalent to '-d -n -s -t -f -r'.
-##
-## Description: Trims an application bundle of unnecessary files and resources that are generally not required and otherwise
-## waste disk space.
+#! /bin/ksh
+
+#
+# $Id$
+#
+# trim-application.sh
+# sequel-pro
+#
+# Created by Stuart Connolly (stuconnolly.com)
+# Copyright (c) 2009 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/>
+
+# Trims an application bundle of unnecessary files and resources that are generally not required and otherwise
+# waste disk space.
+#
+# Largely based on 'trim-app' by Ankur Kothari ( http://lipidity.com/downloads/trim-app/ )
+#
+# Parameters: -p -- The path to the application that is to be trimmed
+# -d -- Remove unnecessary files (i.e. .DS_Store files, etc) (optional).
+# -n -- Trim nib files (i.e. remove .info.nib, classes.nib, data.dependency and designable.nib) (optional).
+# -s -- Strip debug symbols from application binary (optional).
+# -t -- Compress tiff images using LZW compression (optional).
+# -f -- Remove framework headers (optional).
+# -r -- Remove resource forks (optional).
+# -a -- All of above optional options. Equivalent to '-d -n -s -t -f -r'.
usage()
{
diff --git a/SharedSupport/Default Bundles/CopyAsJSON.spBundle/command.plist b/SharedSupport/Default Bundles/CopyAsJSON.spBundle/command.plist
new file mode 100644
index 00000000..f4f1ecd9
--- /dev/null
+++ b/SharedSupport/Default Bundles/CopyAsJSON.spBundle/command.plist
@@ -0,0 +1,132 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>author</key>
+ <string>Hans-Jörg Bibiko</string>
+ <key>category</key>
+ <string>Copy</string>
+ <key>command</key>
+ <string>cat | perl -e '
+
+# read first line to get the column names (header)
+$firstLine = &lt;&gt;;
+
+# bail if nothing could read
+if(!defined($firstLine)) {
+ exit 0;
+}
+
+# store the column names
+chomp($firstLine);
+$firstLine =~ s/\"/\\\"/g; # escape "
+@header = split(/\t/, $firstLine);
+
+$h_cnt = $#header; # number of columns
+
+# get the column definitions
+open(META, $ENV{"SP_BUNDLE_INPUT_TABLE_METADATA"}) or die $!;
+@meta = ();
+while(&lt;META&gt;) {
+ chomp();
+ my @arr = split(/\t/);
+ push @meta, \@arr;
+}
+close(META);
+
+print "{\n\t\"data\":\n\t[\n";
+
+# read row data of each selected row
+$rowData=&lt;&gt;;
+while($rowData) {
+
+ print "\t\t{\n";
+
+ # remove line ending
+ chomp($rowData);
+
+ # escape "
+ $rowData=~s/\"/\\\"/g;
+
+ # split column data which are tab-delimited
+ @data = split(/\t/, $rowData);
+ for($i=0; $i&lt;=$h_cnt; $i++) {
+
+ # re-escape \t and \n
+ $cellData = $data[$i];
+ $cellData =~ s/↵/\n/g;
+ $cellData =~ s/⇥/\t/g;
+
+ print "\t\t\t\"$header[$i]\": ";
+
+ # check for data types
+ if($cellData eq "NULL") {
+ print "null";
+ }
+ elsif($meta[$i]-&gt;[1] eq "integer" || $meta[$i]-&gt;[1] eq "float") {
+ chomp($cellData);
+ $d = $cellData+0;
+ print "$d";
+ } else {
+ chomp($cellData);
+ print "\"$cellData\"";
+ }
+
+ # suppress last ,
+ if($i&lt;$h_cnt) {
+ print ",";
+ }
+
+ print "\n";
+
+ }
+
+ print "\t\t}";
+
+ # get next row
+ $rowData=&lt;&gt;;
+
+ # suppress last ,
+ if($rowData) {
+ print ",";
+ }
+
+ print "\n";
+}
+
+print "\t]\n}";
+
+' | __CF_USER_TEXT_ENCODING=$UID:0x8000100:0x8000100 pbcopy</string>
+ <key>contact</key>
+ <string>znvy@ovovxb.qr</string>
+ <key>description</key>
+ <string>Copies the selected rows excluding any BLOB data in a data table JSON formatted into the pasteboard.
+
+Version 1.0</string>
+ <key>input</key>
+ <string>selectedtablerowsastab</string>
+ <key>internalKeyEquivalent</key>
+ <dict>
+ <key>characters</key>
+ <string>C</string>
+ <key>keyCode</key>
+ <integer>8</integer>
+ <key>modifierFlags</key>
+ <integer>262144</integer>
+ </dict>
+ <key>keyEquivalent</key>
+ <string>^c</string>
+ <key>name</key>
+ <string>Copy as JSON</string>
+ <key>output</key>
+ <string>none</string>
+ <key>scope</key>
+ <string>datatable</string>
+ <key>tooltip</key>
+ <string>Copies the selected rows excluding any BLOB data JSON formatted into the pasteboard</string>
+ <key>uuid</key>
+ <string>CBB8B7A7-5AB9-4F4C-A404-D99CA9521337</string>
+ <key>isDefaultBundle</key>
+ <true/>
+</dict>
+</plist>
diff --git a/SharedSupport/Default Bundles/CopySingleLineQuoted.spBundle/command.plist b/SharedSupport/Default Bundles/CopySingleLineQuoted.spBundle/command.plist
new file mode 100644
index 00000000..56cdd9c4
--- /dev/null
+++ b/SharedSupport/Default Bundles/CopySingleLineQuoted.spBundle/command.plist
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>author</key>
+ <string>Hans-Jörg Bibiko</string>
+ <key>category</key>
+ <string>Query Editor</string>
+ <key>command</key>
+ <string>cat | perl -ne 'chomp;s/\t/ /g;s/"/\\"/g;print "\"".$_."\" . \"\\n\" .\n"' | sed '$ s/.........$//' | sed '$ s/$/;/' | __CF_USER_TEXT_ENCODING=$UID:0x8000100:0x8000100 pbcopy</string>
+ <key>contact</key>
+ <string>znvy@ovovxb.qr</string>
+ <key>description</key>
+ <string>Takes the current query or the selection and copies it as a single line quoted multi-line string by appending a ; into the pasteboard for usage in other IDEs as e.g. PHP code snippet.
+
+Example:
+
+SELECT a
+ FROM b
+ ORDER BY c DESC
+
+will copy
+
+"SELECT a" . "\n" .
+" FROM b" . "\n" .
+" ORDER BY c DESC";
+
+Version 1.0
+</string>
+ <key>input</key>
+ <string>selectedtext</string>
+ <key>input_fallback</key>
+ <string>currentquery</string>
+ <key>keyEquivalent</key>
+ <string></string>
+ <key>name</key>
+ <string>Copy Single Line Quoted</string>
+ <key>output</key>
+ <string>none</string>
+ <key>scope</key>
+ <string>inputfield</string>
+ <key>tooltip</key>
+ <string>Takes the current query or the selection and copies it as a single line quoted multi-line string by appending a ; into the pasteboard</string>
+ <key>uuid</key>
+ <string>CDAC825A-AE80-4544-9DBB-8E68A5C540D0</string>
+ <key>isDefaultBundle</key>
+ <true/>
+</dict>
+</plist>
diff --git a/SharedSupport/Default Bundles/DB Report.spBundle/Support/header.html b/SharedSupport/Default Bundles/DB Report.spBundle/Support/header.html
new file mode 100644
index 00000000..b67b633c
--- /dev/null
+++ b/SharedSupport/Default Bundles/DB Report.spBundle/Support/header.html
@@ -0,0 +1,41 @@
+<html>
+ <head>
+ <title>Database Report</title>
+ <style type="text/css">
+ hr {
+ background: #606060;
+ color: #606060;
+ border-style: solid;
+ border-color: #606060;
+ border-width: 2px 0 0 0;
+ margin-top: 0;
+ }
+ a:hover {
+ text-decoration: none;
+ }
+ a {
+ text-decoration: none;
+ }
+ a:hover:after {
+ content: " ➪";
+ }
+ .nonVisible {
+ display:none;
+ }
+ </style>
+ <script type="text/javascript" charset="utf-8">
+ function toggle_display(elt)
+ {
+ var e; var p;
+ e = elt.getAttribute("id") + ":data";
+ if (window.document.getElementById(e).className != "") {
+ window.document.getElementById(e).className = "";
+ elt.innerHTML = "▼";
+ } else {
+ window.document.getElementById(e).className = "nonVisible";
+ elt.innerHTML = "▶";
+ }
+ }
+ </script>
+ </head>
+<body>
diff --git a/SharedSupport/Default Bundles/DB Report.spBundle/Support/processTableData.pl b/SharedSupport/Default Bundles/DB Report.spBundle/Support/processTableData.pl
new file mode 100755
index 00000000..7d0b5545
--- /dev/null
+++ b/SharedSupport/Default Bundles/DB Report.spBundle/Support/processTableData.pl
@@ -0,0 +1,32 @@
+#!/usr/bin/env perl -w
+
+while(<>) {
+
+ # split tab delimited data
+ @data = split(/\t/);
+
+ $pid = $ENV{"PID"};
+ $db = $ENV{"DB"};
+ $res = $ENV{"RES"};
+ $itemType = "table";
+
+ # $data[1] is NULL indicates item is a view
+ if($data[1] eq "NULL") {
+ $img = "file://$res/table-view-small-square.tiff";
+ $itemType = "view";
+ } else {
+ $img = "file://$res/table-small-square.tiff";
+ }
+
+ print <<HTML4;
+ <tr>
+ <td align=center width='40px'><img src=\"$img\"></td>
+ <td><a href=\"sequelpro://$pid\@passToDoc/SelectDatabase/$db/$data[0]/\" title=\"Click to select $itemType “$db.$data[0]”\">$data[0]</a></td>
+ <td>$data[1]</td>
+ <td align=right>$data[4]</td>
+ <td align=right>$data[6]</td>
+ <td align=right>$data[11]</td>
+ <td align=right>$data[12]</td>
+ </tr>
+HTML4
+} \ No newline at end of file
diff --git a/SharedSupport/Default Bundles/DB Report.spBundle/command.plist b/SharedSupport/Default Bundles/DB Report.spBundle/command.plist
new file mode 100644
index 00000000..e6c808ae
--- /dev/null
+++ b/SharedSupport/Default Bundles/DB Report.spBundle/command.plist
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>author</key>
+ <string>Hans-Jörg Bibiko</string>
+ <key>category</key>
+ <string>Report</string>
+ <key>command</key>
+ <string>
+# Since this command will execute SQL statements at the front most
+# document window's connection check for a passed process ID to cancel
+# this command by displaying a tooltip. Otherwise the loop after
+# “open "sequelpro://$SP_PROCESS_ID@passToDoc/ExecuteQuery"”
+# won't break.
+if [ -z $SP_PROCESS_ID ]; then
+ echo "&lt;font color=red&gt;No front most connection window found!&lt;/font&gt;"
+ exit $SP_BUNDLE_EXIT_SHOW_AS_HTML_TOOLTIP
+fi
+
+# send query to Sequel Pro
+cat &lt;&lt;SQL &gt; "$SP_QUERY_FILE"
+SELECT TABLE_SCHEMA AS Name, FORMAT((SUM(DATA_LENGTH)+SUM(INDEX_LENGTH))/1000, 1) AS \`Size (kiB) incl. indices\`
+FROM information_schema.TABLES
+GROUP BY TABLE_SCHEMA
+SQL
+
+# execute the SQL statement; the result will be available in the file $SP_QUERY_RESULT_FILE
+open "sequelpro://$SP_PROCESS_ID@passToDoc/ExecuteQuery"
+
+# wait for Sequel Pro; status file will be written to disk if query was finished
+while [ 1 ]
+do
+ [[ -e "$SP_QUERY_RESULT_STATUS_FILE" ]] &amp;&amp; break
+ sleep 0.01
+done
+
+# Prepair HTML code
+cat "$SP_BUNDLE_PATH/Support/header.html"
+cat &lt;&lt;HTML1
+&lt;center&gt;
+&lt;h3&gt;&lt;font color=blue&gt;Connection: ‘$SP_CURRENT_HOST’ – $SP_RDBMS_TYPE ($SP_RDBMS_VERSION)&lt;/font&gt;&lt;/h3&gt;
+&lt;table width=80%&gt;
+ &lt;tr&gt;
+ &lt;td align=center&gt;&lt;img width='96px' src='file://$SP_ICON_FILE'&gt;&lt;/td&gt;
+ &lt;td&gt;
+ &lt;table style='border-collapse:collapse'&gt;
+ &lt;tr&gt;
+ &lt;th align=left&gt;
+HTML1
+
+# Check for possible MySQL error
+if [ `cat "$SP_QUERY_RESULT_STATUS_FILE"` == 1 ]; then
+
+ # If error
+ echo "&lt;i&gt;No global summary available&lt;/i&gt;"
+
+else
+
+ # $SP_QUERY_RESULT_FILE contains the file path to the query result
+
+ # First line contains the column names - wrap them into &lt;th&gt; tags
+ cat "$SP_QUERY_RESULT_FILE" | head -n 1 |perl -pe 's!\t!&lt;/th&gt;&lt;th&gt;&lt;/th&gt;&lt;th align=right&gt;!g;s!$!&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;!'
+
+ # Output all row except the first one and wrap them into &lt;tr&gt;&lt;td&gt; tags
+ cat "$SP_QUERY_RESULT_FILE" | sed '1d' | perl -pe 's!\t!&lt;/td&gt;&lt;td&gt;&amp;nbsp;&amp;nbsp;&lt;/td&gt;&lt;td align='right'&gt;!g;s!$!&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;!'
+
+fi
+cat &lt;&lt;HTML2
+ &lt;/table&gt;
+ &lt;/td&gt;
+ &lt;/tr&gt;
+&lt;/table&gt;
+&lt;hr&gt;
+&lt;/center&gt;
+HTML2
+
+# Clear hand-shake files for further usage
+rm -f "$SP_QUERY_FILE"
+rm -f "$SP_QUERY_RESULT_STATUS_FILE"
+rm -f "$SP_QUERY_RESULT_FILE"
+rm -f "$SP_QUERY_RESULT_META_FILE"
+
+# Read all databases into a BASH array; $SP_ALL_DATABASES provides them as a tab delimited string
+# Set the Internal Field Separator IFS to 'tab' and process the array by using the new IFS due to
+# the fact that a database name could contain 'spaces'
+OLDIFS="$IFS"
+IFS=" "
+dbs=("$SP_ALL_DATABASES")
+
+# Loop through all databases
+cnt=1
+for db in $dbs
+do
+
+ cat &lt;&lt;HTML3
+ &lt;br&gt;
+ &lt;table width=100% style='background-color:#ECECEC;'&gt;
+ &lt;tr&gt;
+ &lt;td width=20px&gt;&lt;span id="$cnt" onclick=toggle_display(this) style="cursor:pointer;color:gray;font-size:smaller;" title="Toggle visibility"&gt;▼&lt;/span&gt;&lt;/td&gt;
+ &lt;td align=center width='40px'&gt;&lt;img src='file://$SP_APP_RESOURCES_DIRECTORY/database-small.png'&gt;&lt;/td&gt;
+ &lt;td&gt;&lt;big&gt;&lt;a href='sequelpro://$SP_PROCESS_ID@passToDoc/SelectDatabase/$db' title='Click to select database “$db”'&gt;$db&lt;/big&gt;&lt;/a&gt;&lt;/td&gt;
+ &lt;/tr&gt;
+ &lt;/table&gt;
+ &lt;table id="$cnt:data" border=1 style='border-collapse:collapse' width=100%&gt;
+ &lt;tr&gt;
+ &lt;th&gt;&lt;/th&gt;&lt;th&gt;Name&lt;/th&gt;&lt;th&gt;Engine&lt;/th&gt;&lt;th&gt;Rows&lt;/th&gt;&lt;th&gt;Size&lt;/th&gt;&lt;th&gt;Created&lt;/th&gt;&lt;th&gt;Updated&lt;/th&gt;
+ &lt;/tr&gt;
+HTML3
+
+ # Query for table status
+ echo "SHOW TABLE STATUS IN \`$db\`" &gt; "$SP_QUERY_FILE"
+ open "sequelpro://$SP_PROCESS_ID@passToDoc/ExecuteQuery"
+
+ # wait for Sequel Pro; status file will be written to disk if query was finished
+ while [ 1 ]
+ do
+ [[ -e "$SP_QUERY_RESULT_STATUS_FILE" ]] &amp;&amp; break
+ sleep 0.01
+ done
+
+ cnt=$((cnt+1))
+
+ export DB="$db"
+ export PID="$SP_PROCESS_ID"
+ export RES="$SP_APP_RESOURCES_DIRECTORY";
+ cat "$SP_QUERY_RESULT_FILE" | sed '1d' | perl "$SP_BUNDLE_PATH/Support/processTableData.pl"
+
+ echo "&lt;/table&gt;"
+
+ # Clear hand-shake files
+ rm -f "$SP_QUERY_FILE"
+ rm -f "$SP_QUERY_RESULT_STATUS_FILE"
+ rm -f "$SP_QUERY_RESULT_FILE"
+ rm -f "$SP_QUERY_RESULT_META_FILE"
+
+done
+
+# Reset IFS
+IFS="$OLDIFS"
+
+echo "&lt;/body&gt;&lt;/html&gt;"
+</string>
+ <key>contact</key>
+ <string>znvy@ovovxb.qr</string>
+ <key>description</key>
+ <string>Display a report about all databases of the current connection including the possibility to select a database or table via hyperlink.
+
+Version 1.0</string>
+ <key>internalKeyEquivalent</key>
+ <dict>
+ <key>characters</key>
+ <string>A</string>
+ <key>keyCode</key>
+ <integer>0</integer>
+ <key>modifierFlags</key>
+ <integer>1835008</integer>
+ </dict>
+ <key>keyEquivalent</key>
+ <string>^~@a</string>
+ <key>name</key>
+ <string>Database Report</string>
+ <key>output</key>
+ <string>showashtml</string>
+ <key>scope</key>
+ <string>general</string>
+ <key>tooltip</key>
+ <string>Display report about all databases of the current connection</string>
+ <key>uuid</key>
+ <string>AC45C093-9157-4E18-9683-C94415995935</string>
+ <key>isDefaultBundle</key>
+ <true/>
+</dict>
+</plist>
diff --git a/SharedSupport/Default Bundles/Format SQL.spBundle/command.plist b/SharedSupport/Default Bundles/Format SQL.spBundle/command.plist
new file mode 100644
index 00000000..13e86145
--- /dev/null
+++ b/SharedSupport/Default Bundles/Format SQL.spBundle/command.plist
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>author</key>
+ <string>Hans-Jörg Bibiko</string>
+ <key>category</key>
+ <string>Format</string>
+ <key>command</key>
+ <string>
+
+# check for empty STDIN
+SQL=$(cat)
+if [ -z "$SQL" ]; then
+ echo "No SQL statements passed."
+ exit $SP_BUNDLE_EXIT_SHOW_AS_TEXT_TOOLTIP
+fi
+
+# check if connected to the internet and if server is up
+connected=$(/sbin/ping -t 8 -c 1 -on www.dpriver.com 2&gt; /dev/null | grep '69\.5\.11\.169' | wc -l)
+if [ $connected -eq "0" ]; then
+ echo "&lt;font color=red&gt;You are probably not connected to the internet or http://www.dpriver.com/ server is down.&lt;/font&gt;"
+ exit $SP_BUNDLE_EXIT_SHOW_AS_HTML_TOOLTIP
+fi
+
+# show info alert about sending the SQL statements to an online service
+if [ ! -e infoShowed ]; then
+ touch infoShowed
+ osascript -e 'tell app "Sequel Pro" to display dialog "This command will send the SQL statement(s) - unencrypted - to an online service (http://www.dpriver.com). Please consider this before sending confidential data!\n\nThis message will only be displayed once." with icon caution' 2&gt; 1
+ if [ `cat 1 | wc -c` -ne 0 ]; then
+ rm -f 1
+ exit $SP_BUNDLE_EXIT_NONE
+ fi
+ rm -f 1
+fi
+
+# send SQL to www.dpriver.com and replace the formatted SQL string in first responder; if a parser error occurred
+# show error message and try to jump to the error
+cat &lt;&lt;HTML
+&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"&gt;
+&lt;html&gt;
+&lt;head&gt;
+ &lt;base href="http://www.dpriver.com/pp/"&gt;
+ &lt;title&gt;Connecting www.dpriver.com&lt;/title&gt;
+ &lt;script&gt;
+ function lookForResult() {
+ if(document.all.outputsql.value.length &gt; 8) {
+ if(document.all.errorhint.style.display == "inline") {
+ var errormes = document.all.outputsql.value;
+ var re = /.*?\(\d+\s*,\s*(\d+)\).*/;
+ re.exec(errormes);
+ var pos = parseInt(RegExp.\$1) - 1;
+ re = /.*?(\d+).*/;
+ re.exec('$SP_SELECTED_TEXT_RANGE');
+ var offset = parseInt(RegExp.\$1);
+ pos = pos + offset;
+ alert(document.all.outputsql.value);
+ window.system.setSelectedTextRange(pos+'');
+ } else {
+ var txt = document.all.outputsql.value;
+ var len = txt.length;
+ window.system.setSelectedTextRange('$SP_SELECTED_TEXT_RANGE');
+ window.system.insertText(txt.slice(0,len-2));
+ }
+ window.system.closeHTMLOutputWindow();
+ } else {
+ setTimeout("lookForResult()",50);
+ }
+ }
+
+ function waitForResult() {
+ window.system.suppressExceptionAlert();
+ setTimeout("lookForResult()",50);
+ }
+ &lt;/script&gt;
+ &lt;script language="JavaScript" type="text/javascript" src="pp.js"&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body onload='window.resizeTo(300,200);SQLFMT.format(document.all.sp_submit);waitForResult()'&gt;
+&lt;div id="retvalues"&gt;&lt;/div&gt;
+&lt;p&gt;&lt;b&gt;Copyright &amp;copy; 2001-2010 Gudu Software&lt;br&gt;All Rights Reserved&lt;br&gt;&lt;a href="mailto:support@dpriver.com"&gt;Contact US&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
+&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
+&lt;p align=right&gt;Please wait…&lt;/p&gt;
+&lt;div class="page-container-1" style="display:none;"&gt;
+ &lt;div id="container"&gt;
+ &lt;div id="wrapper"&gt;
+ &lt;div id="content"&gt;
+ &lt;form id="SqlFmtForm" name="frm_sqlformat" method="post" action="/cgi-bin/ppserver" onsubmit="return false;"&gt;
+ &lt;div id="secondpanel"&gt;
+ &lt;div id="sp_database"&gt;
+ &lt;label class="desc" style="display:inline;"&gt;Database&lt;/label&gt;
+ &lt;select name="dbvendor"&gt;
+ &lt;option value="mysql" selected&gt;MySQL&lt;/option&gt;
+ &lt;/select&gt;
+ &lt;label class="desc" style="display:inline;padding:0 0 0px 40px; border:0px solid;"&gt;Output:&lt;/label&gt;
+ &lt;select name="outputfmt"&gt;
+ &lt;option value="SQL" selected&gt;SQL(Text)&lt;/option&gt;
+ &lt;/select&gt;
+ &lt;/div&gt;
+ &lt;/div&gt;
+ &lt;div id="sqlpanel"&gt;
+ &lt;div id="sp_inputsql"&gt;
+ &lt;textarea id ="inputsql" name="inputsql" cols="1" rows="1" wrap="off"&gt;
+ $SQL
+ &lt;/textarea&gt;
+ &lt;/div&gt;
+ &lt;div id="sp_submit"&gt;
+ &lt;input type="button" id="btnformat" name="print" value="Format SQL" onclick="SQLFMT.format(this)" value="Format SQL"&gt;
+ &lt;label style="display:none;"&gt;(Time used: &lt;span id="timestamp"&gt;0&lt;/span&gt; seconds)&lt;/label&gt;
+ &lt;/div&gt;
+ &lt;div id="sp_submit" style="text-align:left;"&gt;
+ &lt;/div&gt;
+ &lt;label id="errorhint" class="desc" style="color:#DF0000 !important;display:none;"&gt;
+ Can't format input sql, make sure there is no syntax error and select correct database.
+ &lt;a href="" style="display:none;"&gt;OR Report a bug of this sql beautifier&lt;/a&gt;
+ &lt;/label&gt;
+ &lt;iframe id="ioutputsql" &gt;&lt;/iframe&gt;
+ &lt;div id="sp_outputsql" style="display:none;"&gt;
+ &lt;textarea id = "outputsql" name="outputsql" cols="80" rows="15" wrap="off" &gt;
+ &lt;/textarea&gt;
+ &lt;/div&gt;
+ &lt;div id="sp_errormsg" style="display:none;"&gt;
+ Error message goes to here!
+ &lt;/div&gt;
+ &lt;/div&gt;
+ &lt;div id="formatoptions"&gt;
+ &lt;select name="keywordcs"&gt;
+ &lt;option value="Uppercase" selected &gt;Uppercase&lt;/option&gt;
+ &lt;option value="Lowercase" &gt;Lowercase&lt;/option&gt;
+ &lt;option value="InitCap" &gt;InitCap&lt;/option&gt;
+ &lt;option value="Unchanged" &gt;Unchanged&lt;/option&gt;
+ &lt;/select&gt;
+ &lt;select name="identifiercs"&gt;
+ &lt;option value="Uppercase" &gt;Uppercase&lt;/option&gt;
+ &lt;option value="Lowercase" selected &gt;Lowercase&lt;/option&gt;
+ &lt;option value="InitCap" &gt;InitCap&lt;/option&gt;
+ &lt;option value="Unchanged" &gt;Unchanged&lt;/option&gt;
+ &lt;option value="initcapeachword" &gt;Init cap each word&lt;/option&gt;
+ &lt;/select&gt;
+ &lt;select name="functioncs"&gt;
+ &lt;option value="Uppercase" &gt;Uppercase&lt;/option&gt;
+ &lt;option value="Lowercase" &gt;Lowercase&lt;/option&gt;
+ &lt;option value="InitCap" selected &gt;InitCap&lt;/option&gt;
+ &lt;option value="Unchanged" &gt;Unchanged&lt;/option&gt;
+ &lt;/select&gt;
+ &lt;input type="radio" name="lnbrwithcomma" value="after" checked &gt; After
+ &lt;input type="radio" name="lnbrwithcomma" value="before" &gt; Before
+ &lt;input type="radio" name="lnbrwithcomma" value= "beforewithspace" &gt; Before with space
+ &lt;input type="radio" name="liststyle" value="stack" checked&gt;Stacked
+ &lt;input type="radio" name="liststyle" value="nostack"&gt;Not Stacked
+ &lt;input type="radio" name="salign" value="sleft" checked&gt; Align left
+ &lt;input type="radio" name="salign" value="sright" &gt; Align right
+ &lt;input type="checkbox" name="andorunderwhere" value="yes" checked&gt; And/Or under Where
+ &lt;input type="checkbox" name="removelnbr" value="no" checked&gt; Remove Linebreak before beautify
+ &lt;input type="checkbox" name="trimquotechar" value="yes"&gt; Trim Quoted Char of Each Line quoted char of eachline: &lt;input type="text" name="quotechar" value= "&amp;#34" size = 5 &gt;
+ &lt;input type="checkbox" name="compactmode" value="yes"&gt; Compact the output of sql output
+ &lt;input type="text" name="maxlenincm" value= "80" size = 5 &gt;
+ &lt;/div&gt;
+ &lt;input type="hidden" name="clientid" value="4149-9094-8133-2031" /&gt;
+ &lt;/form&gt;
+ &lt;/div&gt;
+ &lt;/div&gt;
+ &lt;/div&gt;
+&lt;/div&gt;
+
+&lt;/body&gt;
+&lt;/html&gt;
+HTML
+</string>
+ <key>contact</key>
+ <string>znvy@ovovxb.qr</string>
+ <key>description</key>
+ <string>Send the current query or selection to www.dpriver.com and replace the current query or selection of the first responder by the server's formatted output. If a parser error occurred alert that error and tries to jump to the error location.
+
+Version 1.0</string>
+ <key>input</key>
+ <string>selectedtext</string>
+ <key>input_fallback</key>
+ <string>currentquery</string>
+ <key>internalKeyEquivalent</key>
+ <dict>
+ <key>characters</key>
+ <string>T</string>
+ <key>keyCode</key>
+ <integer>17</integer>
+ <key>modifierFlags</key>
+ <integer>1835008</integer>
+ </dict>
+ <key>keyEquivalent</key>
+ <string>^~@t</string>
+ <key>name</key>
+ <string>Format SQL</string>
+ <key>output</key>
+ <string>showashtml</string>
+ <key>scope</key>
+ <string>inputfield</string>
+ <key>tooltip</key>
+ <string>Send query or selection to www.dpriver.com to insert the SQL statement formatted</string>
+ <key>uuid</key>
+ <string>36E1F94D-D6C4-460A-A663-C694AF85E099</string>
+ <key>isDefaultBundle</key>
+ <true/>
+</dict>
+</plist>
diff --git a/SharedSupport/Default Bundles/Toggle JSON Format.spBundle/command.plist b/SharedSupport/Default Bundles/Toggle JSON Format.spBundle/command.plist
new file mode 100644
index 00000000..39555369
--- /dev/null
+++ b/SharedSupport/Default Bundles/Toggle JSON Format.spBundle/command.plist
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>author</key>
+ <string>Hans-Jörg Bibiko</string>
+ <key>category</key>
+ <string>Format</string>
+ <key>command</key>
+ <string>DATA=$(cat)
+
+FORMAT=$(echo "$DATA" | head -n 1 | perl -e '$l=&lt;&gt;;if($l=~m/^\s*\{\s*$/) {print "1";} else {print "2";}')
+
+# if FORMAT == 1 then serialize JSON data otherwise pretty print them
+if [ "$FORMAT" -eq "1" ]; then
+
+ DATA=$(echo "$DATA" | php -r '
+ $jsonData = "";
+ $inputStream = fopen("php://stdin", "r");
+ while($d = fgets($inputStream)) { $jsonData .= $d; }
+ print json_encode(json_decode($jsonData));
+ ')
+ if [ "$DATA" == "null" ]; then
+ echo "&lt;font&gt;An error occured while serializing JSON data!&lt;/font&gt;"
+ exit $SP_BUNDLE_EXIT_SHOW_AS_HTML_TOOLTIP
+ fi
+
+else
+
+ DATA=$(echo "$DATA" | python -mjson.tool)
+
+fi
+
+# if there's a need to preserve Unicode characters remove the first to characters of the following line
+# DATA=$(echo "$DATA" | perl -Xpe 'binmode STDIN,":utf8";binmode STDOUT,":utf8";s/\\u([0-9A-F]{4})/chr(hex($1))/ieg')
+
+printf "%b" "$DATA"</string>
+ <key>contact</key>
+ <string>znvy@ovovxb.qr</string>
+ <key>description</key>
+ <string>If the first line of the selection or the entire content of the current text input field only contains a "{" then serialize the JSON data otherwise the JSON data will be pretty printed. If there's a need to preserve the Unicode characters you can uncomment the line 22.
+
+Version 1.0</string>
+ <key>input</key>
+ <string>selectedtext</string>
+ <key>input_fallback</key>
+ <string>entirecontent</string>
+ <key>internalKeyEquivalent</key>
+ <dict>
+ <key>characters</key>
+ <string>J</string>
+ <key>keyCode</key>
+ <integer>38</integer>
+ <key>modifierFlags</key>
+ <integer>1572864</integer>
+ </dict>
+ <key>keyEquivalent</key>
+ <string>~@j</string>
+ <key>name</key>
+ <string>Toggle JSON Format</string>
+ <key>output</key>
+ <string>replaceselection</string>
+ <key>scope</key>
+ <string>inputfield</string>
+ <key>tooltip</key>
+ <string>Serialize or pretty print JSON data</string>
+ <key>uuid</key>
+ <string>87FD8A4F-90AA-4020-9E0B-8CDD05764D08</string>
+ <key>isDefaultBundle</key>
+ <true/>
+</dict>
+</plist>
diff --git a/SharedSupport/Default Bundles/WrapInDelimiter.spBundle/command.plist b/SharedSupport/Default Bundles/WrapInDelimiter.spBundle/command.plist
new file mode 100644
index 00000000..3588396e
--- /dev/null
+++ b/SharedSupport/Default Bundles/WrapInDelimiter.spBundle/command.plist
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>author</key>
+ <string>Hans-Jörg Bibiko</string>
+ <key>category</key>
+ <string>Query Editor</string>
+ <key>command</key>
+ <string>echo "DELIMITER \${0:;;}"
+echo "\${1:`cat`}\${1:\$0}"
+echo "DELIMITER ;"</string>
+ <key>contact</key>
+ <string>znvy@ovovxb.qr</string>
+ <key>description</key>
+ <string>Wrap the current query or the selection in DELIMITER inserted as snippet to allow to modify the default delimiter ;;
+
+Version 1.0</string>
+ <key>input</key>
+ <string>selectedtext</string>
+ <key>input_fallback</key>
+ <string>currentquery</string>
+ <key>internalKeyEquivalent</key>
+ <dict>
+ <key>characters</key>
+ <string>W</string>
+ <key>keyCode</key>
+ <integer>13</integer>
+ <key>modifierFlags</key>
+ <integer>1835008</integer>
+ </dict>
+ <key>keyEquivalent</key>
+ <string>^~@w</string>
+ <key>name</key>
+ <string>Wrap query/selection in DELIMITER</string>
+ <key>output</key>
+ <string>insertassnippet</string>
+ <key>scope</key>
+ <string>inputfield</string>
+ <key>tooltip</key>
+ <string>Wrap the current query or selection in DELIMITER ;;</string>
+ <key>uuid</key>
+ <string>A67BDE10-0A76-45C2-98DB-B35AC731E8DA</string>
+ <key>isDefaultBundle</key>
+ <true/>
+</dict>
+</plist>
diff --git a/Source/MGTemplateEngine.m b/Source/MGTemplateEngine.m
index 86068b66..89ea3a1d 100644
--- a/Source/MGTemplateEngine.m
+++ b/Source/MGTemplateEngine.m
@@ -177,10 +177,16 @@
- (void)reportError:(NSString *)errorStr code:(NSInteger)code continuing:(BOOL)continuing
{
if (delegate) {
- NSString *errStr = NSLocalizedString(errorStr, nil);
- if (!continuing) {
- errStr = [NSString stringWithFormat:@"%@: %@", NSLocalizedString(@"Fatal Error", nil), errStr];
- }
+
+ NSString *errStr;
+ if(errorStr)
+ errStr = [NSString stringWithString:errorStr];
+ else
+ errStr = NSLocalizedString(@"MGTemplateEngine Error", @"mgtemplateengine error");
+
+ if (!continuing)
+ errStr = [NSString stringWithFormat:@"%@: %@", NSLocalizedString(@"Fatal Error", @"fatal error"), errStr];
+
SEL selector = @selector(templateEngine:encounteredError:isContinuing:);
if ([(NSObject *)delegate respondsToSelector:selector]) {
NSError *error = [NSError errorWithDomain:TEMPLATE_ENGINE_ERROR_DOMAIN
diff --git a/Source/NoodleLineNumberView.m b/Source/NoodleLineNumberView.m
index 9e0d284a..3df2b423 100644
--- a/Source/NoodleLineNumberView.m
+++ b/Source/NoodleLineNumberView.m
@@ -191,75 +191,78 @@
NSLayoutManager *layoutManager;
NSTextContainer *container;
NSRange nullRange;
- NSMutableArray *lines;
+ NSArray *lines;
id view;
-
+
view = [self clientView];
visibleRect = [[[self scrollView] contentView] bounds];
-
+
lines = [self lineIndices];
location += NSMinY(visibleRect);
if ([view isKindOfClass:[NSTextView class]])
{
+
nullRange = NSMakeRange(NSNotFound, 0);
layoutManager = [view layoutManager];
container = [view textContainer];
count = [lines count];
-
- for (line = 0; line < count; line++)
+
+ // Find the characters that are currently visible
+ NSRange range = [layoutManager characterRangeForGlyphRange:[layoutManager glyphRangeForBoundingRect:visibleRect inTextContainer:container] actualGlyphRange:NULL];
+
+ // Fudge the range a tad in case there is an extra new line at end.
+ // It doesn't show up in the glyphs so would not be accounted for.
+ range.length++;
+
+ for (line = [self lineNumberForCharacterIndex:range.location inText:@""]; line < count; line++)
{
+
index = [NSArrayObjectAtIndex(lines, line) unsignedIntegerValue];
-
+
rects = [layoutManager rectArrayForCharacterRange:NSMakeRange(index, 0)
withinSelectedCharacterRange:nullRange
inTextContainer:container
rectCount:&rectCount];
-
+
for (i = 0; i < rectCount; i++)
- {
if ((location >= NSMinY(rects[i])) && (location < NSMaxY(rects[i])))
- {
return line + 1;
- }
- }
- }
+
+ }
}
return NSNotFound;
}
- (void)calculateLines
{
- id view;
-
- view = [self clientView];
+ id view = [self clientView];
if ([view isKindOfClass:[NSTextView class]])
{
- NSUInteger index, numberOfLines, stringLength, lineEnd, contentEnd;
+ NSUInteger index, stringLength, lineEnd, contentEnd;
NSString *text;
CGFloat oldThickness, newThickness;
text = [view string];
stringLength = [text length];
+
// Switch off line numbering if text larger than 6MB
// for performance reasons.
// TODO improve performance maybe via threading
if(stringLength>6000000)
return;
- if (lineIndices) [lineIndices release];
- lineIndices = [[NSMutableArray alloc] init];
+
+ if (lineIndices) [lineIndices release], lineIndices = nil;
+ lineIndices = [[NSMutableArray alloc] initWithCapacity:1];
index = 0;
- numberOfLines = 0;
do
{
[lineIndices addObject:[NSNumber numberWithUnsignedInteger:index]];
-
index = NSMaxRange([text lineRangeForRange:NSMakeRange(index, 0)]);
- numberOfLines++;
}
while (index < stringLength);
@@ -274,7 +277,7 @@
newThickness = [self requiredThickness];
if (fabs(oldThickness - newThickness) > 1)
{
- NSInvocation *invocation;
+ NSInvocation *invocation;
// Not a good idea to resize the view during calculations (which can happen during
// display). Do a delayed perform (using NSInvocation since arg is a float).
@@ -381,7 +384,7 @@
CGFloat ypos, yinset;
NSDictionary *textAttributes;
NSSize stringSize;
- NSMutableArray *lines;
+ NSArray *lines;
layoutManager = [view layoutManager];
container = [view textContainer];
@@ -407,7 +410,7 @@
CGFloat boundsRULERMargin2 = NSWidth(bounds) - RULER_MARGIN * 2.0;
CGFloat boundsWidthRULER = NSWidth(bounds) - RULER_MARGIN;
- CGFloat yinsetMinY = yinset - NSMinY(visibleRect);
+ CGFloat yinsetMinY = yinset - NSMinY(visibleRect);
for (line = [self lineNumberForCharacterIndex:range.location inText:text]; line < count; line++)
{
@@ -462,11 +465,11 @@
if (line != NSNotFound)
{
NSUInteger selectionStart, selectionEnd;
- NSMutableArray *lines = [self lineIndices];
+ NSArray *lines = [self lineIndices];
- selectionStart = [[lines objectAtIndex:(line - 1)] unsignedIntegerValue];
+ selectionStart = [NSArrayObjectAtIndex(lines, (line - 1)) unsignedIntegerValue];
if (line < [lines count]) {
- selectionEnd = [[lines objectAtIndex:line] unsignedIntegerValue];
+ selectionEnd = [NSArrayObjectAtIndex(lines, line) unsignedIntegerValue];
} else {
selectionEnd = [[view string] length];
}
@@ -489,7 +492,7 @@
if (line != NSNotFound)
{
NSUInteger selectionStart, selectionEnd;
- NSMutableArray *lines = [self lineIndices];
+ NSArray *lines = [self lineIndices];
if (line >= dragSelectionStartLine) {
startLine = dragSelectionStartLine;
endLine = line;
@@ -498,9 +501,9 @@
endLine = dragSelectionStartLine;
}
- selectionStart = [[lines objectAtIndex:(startLine - 1)] unsignedIntegerValue];
+ selectionStart = [NSArrayObjectAtIndex(lines, (startLine - 1)) unsignedIntegerValue];
if (endLine < [lines count]) {
- selectionEnd = [[lines objectAtIndex:endLine] unsignedIntegerValue];
+ selectionEnd = [NSArrayObjectAtIndex(lines, endLine) unsignedIntegerValue];
} else {
selectionEnd = [[view string] length];
}
diff --git a/Source/SPAppController.m b/Source/SPAppController.m
index d89f0cce..ba65df6f 100644
--- a/Source/SPAppController.m
+++ b/Source/SPAppController.m
@@ -42,6 +42,19 @@
#import <PSMTabBar/PSMTabBarControl.h>
#import <Sparkle/Sparkle.h>
+#import "SPEditorTokens.h"
+
+#pragma mark lex init
+
+/*
+* Include all the extern variables and prototypes required for flex (used for syntax highlighting)
+*/
+extern NSUInteger yylex();
+extern NSUInteger yyuoffset, yyuleng;
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+void yy_switch_to_buffer(YY_BUFFER_STATE);
+YY_BUFFER_STATE yy_scan_string (const char *);
+
@implementation SPAppController
@synthesize lastBundleBlobFilesDirectory;
@@ -496,7 +509,7 @@
NSFileManager *fm = [NSFileManager defaultManager];
- NSString *bundlePath = [[NSFileManager defaultManager] applicationSupportDirectoryForSubDirectory:SPBundleSupportFolder error:nil];
+ NSString *bundlePath = [fm applicationSupportDirectoryForSubDirectory:SPBundleSupportFolder error:nil];
if(!bundlePath) return;
@@ -539,6 +552,11 @@
if (cmdData) [cmdData release];
return;
}
+
+ // Reload Bundles if Sequel Pro didn't run
+ if(![installedBundleUUIDs count])
+ [self reloadBundles:self];
+
if([[installedBundleUUIDs allKeys] containsObject:[cmdData objectForKey:SPBundleFileUUIDKey]]) {
NSAlert *alert = [NSAlert alertWithMessageText:[NSString stringWithFormat:NSLocalizedString(@"Installing Bundle", @"Open Files : Bundle : Already-Installed : 'Update Bundle' question dialog title")]
defaultButton:NSLocalizedString(@"Update", @"Open Files : Bundle : Already-Installed : Update button")
@@ -550,10 +568,11 @@
NSInteger answer = [alert runModal];
if(answer == NSAlertDefaultReturn) {
NSError *error = nil;
- NSString *moveToTrashCommand = [NSString stringWithFormat:@"osascript -e 'tell application \"Finder\" to move (POSIX file \"%@\") to the trash'", newPath];
+ NSString *removePath = [[[installedBundleUUIDs objectForKey:[cmdData objectForKey:SPBundleFileUUIDKey]] objectForKey:@"path"] substringToIndex:([[[installedBundleUUIDs objectForKey:[cmdData objectForKey:SPBundleFileUUIDKey]] objectForKey:@"path"] length]-[SPBundleFileName length]-1)];
+ NSString *moveToTrashCommand = [NSString stringWithFormat:@"osascript -e 'tell application \"Finder\" to move (POSIX file \"%@\") to the trash'", removePath];
[moveToTrashCommand runBashCommandWithEnvironment:nil atCurrentDirectoryPath:nil error:&error];
if(error != nil) {
- NSAlert *alert = [NSAlert alertWithMessageText:[NSString stringWithFormat:NSLocalizedString(@"Error while moving “%@” to Trash.", @"Open Files : Bundle : Already-Installed : Delete-Old-Error : Could not delete old bundle before installing new version."), [[installedBundleUUIDs objectForKey:[cmdData objectForKey:SPBundleFileUUIDKey]] objectForKey:@"path"]]
+ NSAlert *alert = [NSAlert alertWithMessageText:[NSString stringWithFormat:NSLocalizedString(@"Error while moving “%@” to Trash.", @"Open Files : Bundle : Already-Installed : Delete-Old-Error : Could not delete old bundle before installing new version."), removePath]
defaultButton:NSLocalizedString(@"OK", @"Open Files : Bundle : Already-Installed : Delete-Old-Error : OK button")
alternateButton:nil
otherButton:nil
@@ -621,7 +640,12 @@
{
NSURL *url = [NSURL URLWithString:[[event paramDescriptorForKeyword:keyDirectObject] stringValue]];
- [self handleEventWithURL:url];
+ if(url)
+ [self handleEventWithURL:url];
+ else {
+ NSBeep();
+ NSLog(@"Error in sequelpro URL scheme");
+ }
}
- (void)handleEventWithURL:(NSURL*)url
@@ -635,13 +659,14 @@
else
parameter = [NSArray array];
+ NSFileManager *fm = [NSFileManager defaultManager];
// Handle commands which don't need a connection window
if([command isEqualToString:@"chooseItemFromList"]) {
NSString *statusFileName = [NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultStatusPathHeader, (passedProcessID && [passedProcessID length]) ? passedProcessID : @""];
NSString *resultFileName = [NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultPathHeader, (passedProcessID && [passedProcessID length]) ? passedProcessID : @""];
- [[NSFileManager defaultManager] removeItemAtPath:statusFileName error:nil];
- [[NSFileManager defaultManager] removeItemAtPath:resultFileName error:nil];
+ [fm removeItemAtPath:statusFileName error:nil];
+ [fm removeItemAtPath:resultFileName error:nil];
NSString *result = @"";
NSString *status = @"0";
if([parameter count]) {
@@ -659,6 +684,50 @@
return;
}
+ if([command isEqualToString:@"SyntaxHighlighting"]) {
+
+ BOOL isDir;
+
+ NSString *anUUID = (passedProcessID && [passedProcessID length]) ? passedProcessID : @"";
+ NSString *queryFileName = [NSString stringWithFormat:@"%@%@", SPURLSchemeQueryInputPathHeader, anUUID];
+ NSString *resultFileName = [NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultPathHeader, anUUID];
+ NSString *metaFileName = [NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultMetaPathHeader, anUUID];
+ NSString *statusFileName = [NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultStatusPathHeader, anUUID];
+
+ NSError *inError = nil;
+ NSString *query = [NSString stringWithContentsOfFile:queryFileName encoding:NSUTF8StringEncoding error:inError];
+ NSString *result = @"";
+ NSString *status = @"0";
+
+ if([fm fileExistsAtPath:queryFileName isDirectory:&isDir] && !isDir) {
+
+ if(inError == nil && query && [query length]) {
+ if([parameter count] > 0) {
+ if([[parameter lastObject] isEqualToString:@"html"])
+ result = [NSString stringWithString:[self doSQLSyntaxHighlightForString:query cssLike:NO]];
+ else if([[parameter lastObject] isEqualToString:@"htmlcss"])
+ result = [NSString stringWithString:[self doSQLSyntaxHighlightForString:query cssLike:YES]];
+ }
+ }
+ }
+
+ [fm removeItemAtPath:queryFileName error:nil];
+ [fm removeItemAtPath:resultFileName error:nil];
+ [fm removeItemAtPath:metaFileName error:nil];
+ [fm removeItemAtPath:statusFileName error:nil];
+
+ if(![result writeToFile:resultFileName atomically:YES encoding:NSUTF8StringEncoding error:nil])
+ status = @"1";
+
+ // write status file as notification that query was finished
+ BOOL succeed = [status writeToFile:statusFileName atomically:YES encoding:NSUTF8StringEncoding error:nil];
+ if(!succeed) {
+ NSBeep();
+ SPBeginAlertSheet(NSLocalizedString(@"BASH Error", @"bash error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [self parentWindow], self, nil, nil,
+ NSLocalizedString(@"Status file for sequelpro url scheme command couldn't be written!", @"status file for sequelpro url scheme command couldn't be written error message"));
+ }
+ return;
+ }
NSString *activeProcessID = [[[[self frontDocumentWindow] delegate] selectedTableDocument] processID];
@@ -695,14 +764,33 @@
[cmdDict setObject:parameter forKey:@"parameter"];
[cmdDict setObject:(passedProcessID)?:@"" forKey:@"id"];
[processDocument handleSchemeCommand:cmdDict];
- return;
- }
- else {
+ } else {
SPBeginAlertSheet(NSLocalizedString(@"sequelpro URL Scheme Error", @"sequelpro url Scheme Error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [NSApp mainWindow], self, nil, nil,
[NSString stringWithFormat:@"%@ “%@”:\n%@", NSLocalizedString(@"Error for", @"error for message"), [command description], NSLocalizedString(@"sequelpro URL scheme command not supported.", @"sequelpro URL scheme command not supported.")]);
+
+ // If command failed notify the file handle hand shake mechanism
+ NSString *out = @"1";
+ NSString *anUUID = @"";
+ if(command && passedProcessID && [passedProcessID length])
+ anUUID = passedProcessID;
+ else
+ anUUID = command;
- return;
+ [out writeToFile:[NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultStatusPathHeader, anUUID]
+ atomically:YES
+ encoding:NSUTF8StringEncoding
+ error:nil];
+
+ out = @"Error";
+ [out writeToFile:[NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultPathHeader, anUUID]
+ atomically:YES
+ encoding:NSUTF8StringEncoding
+ error:nil];
+
}
+
+ return;
+
}
if(passedProcessID && [passedProcessID length]) {
@@ -723,10 +811,10 @@
usleep(5000);
- [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultStatusPathHeader, passedProcessID] error:nil];
- [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultPathHeader, passedProcessID] error:nil];
- [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultMetaPathHeader, passedProcessID] error:nil];
- [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@%@", SPURLSchemeQueryInputPathHeader, passedProcessID] error:nil];
+ [fm removeItemAtPath:[NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultStatusPathHeader, passedProcessID] error:nil];
+ [fm removeItemAtPath:[NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultPathHeader, passedProcessID] error:nil];
+ [fm removeItemAtPath:[NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultMetaPathHeader, passedProcessID] error:nil];
+ [fm removeItemAtPath:[NSString stringWithFormat:@"%@%@", SPURLSchemeQueryInputPathHeader, passedProcessID] error:nil];
@@ -745,6 +833,86 @@
}
+/**
+ * Return an HTML formatted string representing the passed SQL string syntax highlighted
+ */
+- (NSString*)doSQLSyntaxHighlightForString:(NSString*)sqlText cssLike:(BOOL)cssLike
+{
+
+ NSMutableString *sqlHTML = [[[NSMutableString alloc] initWithCapacity:[sqlText length]] autorelease];
+
+ NSRange textRange = NSMakeRange(0, [sqlText length]);
+ NSString *tokenColor;
+ NSString *cssId;
+ size_t token;
+ NSRange tokenRange;
+
+ // initialise flex
+ yyuoffset = 0; yyuleng = 0;
+ yy_switch_to_buffer(yy_scan_string([sqlText UTF8String]));
+ BOOL skipFontTag;
+
+ while (token=yylex()){
+ skipFontTag = NO;
+ switch (token) {
+ case SPT_SINGLE_QUOTED_TEXT:
+ case SPT_DOUBLE_QUOTED_TEXT:
+ tokenColor = @"#A7221C";
+ cssId = @"sp_sql_quoted";
+ break;
+ case SPT_BACKTICK_QUOTED_TEXT:
+ tokenColor = @"#001892";
+ cssId = @"sp_sql_backtick";
+ break;
+ case SPT_RESERVED_WORD:
+ tokenColor = @"#0041F6";
+ cssId = @"sp_sql_keyword";
+ break;
+ case SPT_NUMERIC:
+ tokenColor = @"#67350F";
+ cssId = @"sp_sql_numeric";
+ break;
+ case SPT_COMMENT:
+ tokenColor = @"#265C10";
+ cssId = @"sp_sql_comment";
+ break;
+ case SPT_VARIABLE:
+ tokenColor = @"#6C6C6C";
+ cssId = @"sp_sql_variable";
+ break;
+ case SPT_WHITESPACE:
+ skipFontTag = YES;
+ cssId = @"";
+ break;
+ default:
+ skipFontTag = YES;
+ cssId = @"";
+ }
+
+ tokenRange = NSMakeRange(yyuoffset, yyuleng);
+
+ if(skipFontTag)
+ [sqlHTML appendString:[[sqlText substringWithRange:tokenRange] HTMLEscapeString]];
+ else {
+ if(cssLike)
+ [sqlHTML appendFormat:@"<span class=\"%@\">%@</span>", cssId, [[sqlText substringWithRange:tokenRange] HTMLEscapeString]];
+ else
+ [sqlHTML appendFormat:@"<font color=%@>%@</font>", tokenColor, [[sqlText substringWithRange:tokenRange] HTMLEscapeString]];
+ }
+
+ }
+
+ // Wrap lines, and replace tabs with spaces
+ [sqlHTML replaceOccurrencesOfString:@"\n" withString:@"<br>" options:NSLiteralSearch range:NSMakeRange(0, [sqlHTML length])];
+ [sqlHTML replaceOccurrencesOfString:@"\t" withString:@"&nbsp;&nbsp;&nbsp;&nbsp;" options:NSLiteralSearch range:NSMakeRange(0, [sqlHTML length])];
+
+ if(sqlHTML)
+ return sqlHTML;
+ else
+ return @"";
+
+}
+
- (IBAction)executeBundleItemForApp:(id)sender
{
@@ -760,6 +928,7 @@
}
if(!infoPath) {
+ NSLog(@"No path to Bundle command passed");
NSBeep();
return;
}
@@ -939,8 +1108,6 @@
}
}
- // if(doc && [doc shellVariables]) [env addEntriesFromDictionary:[doc shellVariables]];
- // if(doc) [doc release];
id firstResponder = [[NSApp keyWindow] firstResponder];
if([firstResponder respondsToSelector:@selector(executeBundleItemForInputField:)]) {
BOOL selfIsQueryEditor = ([[[firstResponder class] description] isEqualToString:@"SPTextView"]) ;
@@ -999,6 +1166,19 @@
{
[runningActivitiesArray addObject:commandDict];
[[NSNotificationCenter defaultCenter] postNotificationOnMainThreadWithName:SPActivitiesUpdateNotification object:nil];
+
+ SPDatabaseDocument* frontMostDoc = [self frontDocument];
+ if(frontMostDoc) {
+ if([runningActivitiesArray count] || [[frontMostDoc runningActivities] count])
+ [frontMostDoc performSelector:@selector(setActivityPaneHidden:) withObject:[NSNumber numberWithInteger:0] afterDelay:1.0];
+ else {
+ [NSObject cancelPreviousPerformRequestsWithTarget:frontMostDoc
+ selector:@selector(setActivityPaneHidden:)
+ object:[NSNumber numberWithInteger:0]];
+ [frontMostDoc setActivityPaneHidden:[NSNumber numberWithInteger:1]];
+ }
+ }
+
}
- (void)removeRegisteredActivity:(NSInteger)pid
@@ -1009,7 +1189,20 @@
break;
}
}
+
[[NSNotificationCenter defaultCenter] postNotificationOnMainThreadWithName:SPActivitiesUpdateNotification object:nil];
+
+ SPDatabaseDocument* frontMostDoc = [self frontDocument];
+ if(frontMostDoc) {
+ if([runningActivitiesArray count] || [[frontMostDoc runningActivities] count])
+ [frontMostDoc performSelector:@selector(setActivityPaneHidden:) withObject:[NSNumber numberWithInteger:0] afterDelay:1.0];
+ else {
+ [NSObject cancelPreviousPerformRequestsWithTarget:frontMostDoc
+ selector:@selector(setActivityPaneHidden:)
+ object:[NSNumber numberWithInteger:0]];
+ [frontMostDoc setActivityPaneHidden:[NSNumber numberWithInteger:1]];
+ }
+ }
}
- (NSArray*)runningActivities
@@ -1324,6 +1517,7 @@
- (IBAction)reloadBundles:(id)sender
{
+ // Force releasing of any HTML output windows
for(id c in bundleHTMLOutputController) {
if(![[c window] isVisible]) {
[c release];
@@ -1346,26 +1540,38 @@
// Clean menu
[menu compatibleRemoveAllItems];
+ // Set up the bundle search paths
+ // First process all in Application Support folder installed ones then Default ones
+ NSFileManager *fm = [NSFileManager defaultManager];
+ NSError *appPathError = nil;
NSArray *bundlePaths = [NSArray arrayWithObjects:
- ([[NSFileManager defaultManager] applicationSupportDirectoryForSubDirectory:SPBundleSupportFolder createIfNotExists:NO error:nil])?:@"",
+ [fm applicationSupportDirectoryForSubDirectory:SPBundleSupportFolder createIfNotExists:YES error:&appPathError],
[NSString stringWithFormat:@"%@/Contents/SharedSupport/Default Bundles", [[NSBundle mainBundle] bundlePath]],
nil];
+ // If ~/Library/Application Path/Sequel Pro/Bundles couldn't be created bail
+ if(appPathError != nil) {
+ NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@"Bundles Installation Error", @"bundles installation error")
+ defaultButton:NSLocalizedString(@"OK", @"OK button")
+ alternateButton:nil
+ otherButton:nil
+ informativeTextWithFormat:[NSString stringWithFormat:NSLocalizedString(@"Couldn't create Application Support Bundle folder!\nError: %@", @"Couldn't create Application Support Bundle folder!\nError: %@"), [appPathError localizedDescription]]];
+
+ [alert runModal];
+ return;
+ }
+
BOOL processDefaultBundles = NO;
- NSFileManager *fm = [NSFileManager defaultManager];
-
+
NSArray *deletedDefaultBundles;
- NSMutableArray *updatedDefaultBundles = [NSMutableArray array];
- if([[NSUserDefaults standardUserDefaults] objectForKey:SPBundleDeletedDefaultBundlesKey]) {
+
+ if([[NSUserDefaults standardUserDefaults] objectForKey:SPBundleDeletedDefaultBundlesKey])
deletedDefaultBundles = [[[NSUserDefaults standardUserDefaults] objectForKey:SPBundleDeletedDefaultBundlesKey] retain];
- } else {
+ else
deletedDefaultBundles = [[NSArray array] retain];
- }
- if([[NSUserDefaults standardUserDefaults] objectForKey:SPBundleUpdatedDefaultBundlesKey]) {
- [updatedDefaultBundles setArray:[[NSUserDefaults standardUserDefaults] objectForKey:SPBundleUpdatedDefaultBundlesKey]];
- }
NSMutableString *infoAboutUpdatedDefaultBundles = [NSMutableString string];
+ BOOL doBundleUpdate = ([[NSUserDefaults standardUserDefaults] objectForKey:@"doBundleUpdate"]) ? YES : NO;
for(NSString* bundlePath in bundlePaths) {
if([bundlePath length]) {
@@ -1386,125 +1592,115 @@
NSString *infoPath = [NSString stringWithFormat:@"%@/%@/%@", bundlePath, bundle, SPBundleFileName];
NSData *pData = [NSData dataWithContentsOfFile:infoPath options:NSUncachedRead error:&readError];
- cmdData = [[NSPropertyListSerialization propertyListFromData:pData
- mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&convError] retain];
+ cmdData = [NSPropertyListSerialization propertyListFromData:pData
+ mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&convError];
if(!cmdData || readError != nil || [convError length] || !(format == NSPropertyListXMLFormat_v1_0 || format == NSPropertyListBinaryFormat_v1_0)) {
-
NSLog(@"“%@” file couldn't be read.", infoPath);
NSBeep();
+ continue;
+ }
- } else {
- if((![cmdData objectForKey:SPBundleFileDisabledKey] || ![[cmdData objectForKey:SPBundleFileDisabledKey] intValue])
- && [cmdData objectForKey:SPBundleFileNameKey]
- && [[cmdData objectForKey:SPBundleFileNameKey] length]
- && [cmdData objectForKey:SPBundleFileScopeKey])
- {
-
- if([cmdData objectForKey:SPBundleFileUUIDKey] && [[cmdData objectForKey:SPBundleFileUUIDKey] length]) {
-
- if(processDefaultBundles) {
-
- // Skip deleted default Bundles
- BOOL bundleWasDeleted = NO;
- if([deletedDefaultBundles count]) {
- for(NSArray* item in deletedDefaultBundles) {
- if([[item objectAtIndex:0] isEqualToString:[cmdData objectForKey:SPBundleFileUUIDKey]]) {
- bundleWasDeleted = YES;
- break;
- }
+ if((![cmdData objectForKey:SPBundleFileDisabledKey] || ![[cmdData objectForKey:SPBundleFileDisabledKey] intValue])
+ && [cmdData objectForKey:SPBundleFileNameKey]
+ && [[cmdData objectForKey:SPBundleFileNameKey] length]
+ && [cmdData objectForKey:SPBundleFileScopeKey])
+ {
+
+ BOOL defaultBundleWasUpdated = NO;
+
+ if([cmdData objectForKey:SPBundleFileUUIDKey] && [[cmdData objectForKey:SPBundleFileUUIDKey] length]) {
+
+ if(processDefaultBundles) {
+
+ // Skip deleted default Bundles
+ BOOL bundleWasDeleted = NO;
+ if([deletedDefaultBundles count]) {
+ for(NSArray* item in deletedDefaultBundles) {
+ if([[item objectAtIndex:0] isEqualToString:[cmdData objectForKey:SPBundleFileUUIDKey]]) {
+ bundleWasDeleted = YES;
+ break;
}
}
- if(bundleWasDeleted) continue;
+ }
+ if(bundleWasDeleted) continue;
+
+ // If default Bundle is already installed check for possible update,
+ // if so duplicate the modified one by appending (user) and updated it
+ if(doBundleUpdate || [installedBundleUUIDs objectForKey:[cmdData objectForKey:SPBundleFileUUIDKey]] == nil) {
- // If default Bundle is already install check for possible update,
- // if so duplicate the modified one by appending (user) and updated it
if([installedBundleUUIDs objectForKey:[cmdData objectForKey:SPBundleFileUUIDKey]]) {
- if([updatedDefaultBundles containsObject:[cmdData objectForKey:SPBundleFileUUIDKey]]) {
-
- NSString *oldPath = [NSString stringWithFormat:@"%@/%@/%@", [bundlePaths objectAtIndex:0], bundle, SPBundleFileName];
- NSError *readError = nil;
- NSString *convError = nil;
- NSPropertyListFormat format;
- NSDictionary *cmdData = nil;
-
- NSData *pData = [NSData dataWithContentsOfFile:oldPath options:NSUncachedRead error:&readError];
- cmdData = [[NSPropertyListSerialization propertyListFromData:pData
- mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&convError] retain];
- if(!cmdData || readError != nil || [convError length] || !(format == NSPropertyListXMLFormat_v1_0 || format == NSPropertyListBinaryFormat_v1_0)) {
- NSLog(@"“%@” file couldn't be read.", oldPath);
- NSBeep();
- if (cmdData) [cmdData release];
- continue;
- } else {
- NSString *oldBundle = [NSString stringWithFormat:@"%@/%@", [bundlePaths objectAtIndex:0], bundle];
- // Check for modifications
- if([cmdData objectForKey:SPBundleFileDefaultBundleWasModifiedKey]) {
-
- // Duplicate Bundle, change the UUID and rename the menu label
- NSString *duplicatedBundle = [NSString stringWithFormat:@"%@/%@_%ld.%@", [bundlePaths objectAtIndex:0], [bundle substringToIndex:([bundle length] - [SPUserBundleFileExtension length] - 1)], (NSUInteger)(random() % 35000), SPUserBundleFileExtension];
- if(![[NSFileManager defaultManager] copyItemAtPath:oldBundle toPath:duplicatedBundle error:nil]) {
- NSLog(@"Couldn't copy “%@” to update it", bundle);
- NSBeep();
- if (cmdData) [cmdData release];
- continue;
- }
- NSError *readError1 = nil;
- NSString *convError1 = nil;
- NSMutableDictionary *dupData = [NSMutableDictionary dictionary];
- NSString *duplicatedBundleCommand = [NSString stringWithFormat:@"%@/%@", duplicatedBundle, SPBundleFileName];
- NSData *dData = [NSData dataWithContentsOfFile:duplicatedBundleCommand options:NSUncachedRead error:&readError1];
- [dupData setDictionary:[NSPropertyListSerialization propertyListFromData:dData
- mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&convError1]];
- if(!dupData && ![dupData count] || readError1 != nil || [convError1 length] || !(format == NSPropertyListXMLFormat_v1_0 || format == NSPropertyListBinaryFormat_v1_0)) {
- NSLog(@"“%@” file couldn't be read.", duplicatedBundleCommand);
- NSBeep();
- continue;
- }
- [dupData setObject:[NSString stringWithNewUUID] forKey:SPBundleFileUUIDKey];
- NSString *orgName = [dupData objectForKey:SPBundleFileNameKey];
- [dupData setObject:[NSString stringWithFormat:@"%@ (user)", orgName] forKey:SPBundleFileNameKey];
- [dupData removeObjectForKey:SPBundleFileIsDefaultBundleKey];
- [dupData writeToFile:duplicatedBundleCommand atomically:YES];
-
- NSError *error = nil;
- NSString *moveToTrashCommand = [NSString stringWithFormat:@"osascript -e 'tell application \"Finder\" to move (POSIX file \"%@\") to the trash'", oldBundle];
- [moveToTrashCommand runBashCommandWithEnvironment:nil atCurrentDirectoryPath:nil error:&error];
-
- if(error != nil) {
- NSAlert *alert = [NSAlert alertWithMessageText:[NSString stringWithFormat:NSLocalizedString(@"Error while moving “%@” to Trash.", @"error while moving “%@” to trash"), [[installedBundleUUIDs objectForKey:[cmdData objectForKey:SPBundleFileUUIDKey]] objectForKey:@"path"]]
- defaultButton:NSLocalizedString(@"OK", @"OK button")
- alternateButton:nil
- otherButton:nil
- informativeTextWithFormat:[error localizedDescription]];
-
- [alert setAlertStyle:NSCriticalAlertStyle];
- [alert runModal];
- if (cmdData) [cmdData release];
- continue;
- }
- [infoAboutUpdatedDefaultBundles appendFormat:@"• %@\n", orgName];
- } else {
-
- // If no modifications are done simply remove the old one
- if(![fm removeItemAtPath:oldBundle error:nil]) {
- NSLog(@"Couldn't remove “%@” to update it", bundle);
- NSBeep();
- if (cmdData) [cmdData release];
- continue;
- }
+ NSString *oldPath = [NSString stringWithFormat:@"%@/%@/%@", [bundlePaths objectAtIndex:0], bundle, SPBundleFileName];
+ NSError *readError = nil;
+ NSString *convError = nil;
+ NSPropertyListFormat format;
+ NSDictionary *cmdDataOld = nil;
+
+ NSData *pDataOld = [NSData dataWithContentsOfFile:oldPath options:NSUncachedRead error:&readError];
+ cmdDataOld = [NSPropertyListSerialization propertyListFromData:pDataOld
+ mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&convError];
+ if(!cmdDataOld || readError != nil || [convError length] || !(format == NSPropertyListXMLFormat_v1_0 || format == NSPropertyListBinaryFormat_v1_0)) {
+ NSLog(@"“%@” file couldn't be read.", oldPath);
+ NSBeep();
+ continue;
+ } else {
+ NSString *oldBundle = [NSString stringWithFormat:@"%@/%@", [bundlePaths objectAtIndex:0], bundle];
+ // Check for modifications
+ if([cmdDataOld objectForKey:SPBundleFileDefaultBundleWasModifiedKey]) {
+
+ // Duplicate Bundle, change the UUID and rename the menu label
+ NSString *duplicatedBundle = [NSString stringWithFormat:@"%@/%@_%ld.%@", [bundlePaths objectAtIndex:0], [bundle substringToIndex:([bundle length] - [SPUserBundleFileExtension length] - 1)], (NSUInteger)(random() % 35000), SPUserBundleFileExtension];
+ if(![[NSFileManager defaultManager] copyItemAtPath:oldBundle toPath:duplicatedBundle error:nil]) {
+ NSLog(@"Couldn't copy “%@” to update it", bundle);
+ NSBeep();
+ continue;
}
+ NSError *readError1 = nil;
+ NSString *convError1 = nil;
+ NSMutableDictionary *dupData = [NSMutableDictionary dictionary];
+ NSString *duplicatedBundleCommand = [NSString stringWithFormat:@"%@/%@", duplicatedBundle, SPBundleFileName];
+ NSData *dData = [NSData dataWithContentsOfFile:duplicatedBundleCommand options:NSUncachedRead error:&readError1];
+ [dupData setDictionary:[NSPropertyListSerialization propertyListFromData:dData
+ mutabilityOption:NSPropertyListImmutable format:&format errorDescription:&convError1]];
+ if(!dupData && ![dupData count] || readError1 != nil || [convError1 length] || !(format == NSPropertyListXMLFormat_v1_0 || format == NSPropertyListBinaryFormat_v1_0)) {
+ NSLog(@"“%@” file couldn't be read.", duplicatedBundleCommand);
+ NSBeep();
+ continue;
+ }
+ [dupData setObject:[NSString stringWithNewUUID] forKey:SPBundleFileUUIDKey];
+ NSString *orgName = [dupData objectForKey:SPBundleFileNameKey];
+ [dupData setObject:[NSString stringWithFormat:@"%@ (user)", orgName] forKey:SPBundleFileNameKey];
+ [dupData removeObjectForKey:SPBundleFileIsDefaultBundleKey];
+ [dupData writeToFile:duplicatedBundleCommand atomically:YES];
+
+ NSError *error = nil;
+ NSString *moveToTrashCommand = [NSString stringWithFormat:@"osascript -e 'tell application \"Finder\" to move (POSIX file \"%@\") to the trash'", oldBundle];
+ [moveToTrashCommand runBashCommandWithEnvironment:nil atCurrentDirectoryPath:nil error:&error];
+
+ if(error != nil) {
+ NSAlert *alert = [NSAlert alertWithMessageText:[NSString stringWithFormat:NSLocalizedString(@"Error while moving “%@” to Trash.", @"error while moving “%@” to trash"), [[installedBundleUUIDs objectForKey:[cmdDataOld objectForKey:SPBundleFileUUIDKey]] objectForKey:@"path"]]
+ defaultButton:NSLocalizedString(@"OK", @"OK button")
+ alternateButton:nil
+ otherButton:nil
+ informativeTextWithFormat:[error localizedDescription]];
+
+ [alert setAlertStyle:NSCriticalAlertStyle];
+ [alert runModal];
+ continue;
+ }
+ [infoAboutUpdatedDefaultBundles appendFormat:@"• %@\n", orgName];
+ } else {
- // Remove item from update list which will be updated in the Prefs
- [updatedDefaultBundles removeObject:[cmdData objectForKey:SPBundleFileUUIDKey]];
+ // If no modifications are done simply remove the old one
+ if(![fm removeItemAtPath:oldBundle error:nil]) {
+ NSLog(@"Couldn't remove “%@” to update it", bundle);
+ NSBeep();
+ continue;
+ }
}
- if (cmdData) [cmdData release];
-
- } else {
- continue;
}
}
@@ -1523,96 +1719,93 @@
}
infoPath = [NSString stringWithString:newInfoPath];
- }
-
- [installedBundleUUIDs setObject:[NSDictionary dictionaryWithObjectsAndKeys:
- [NSString stringWithFormat:@"%@ (%@)", bundle, [cmdData objectForKey:SPBundleFileNameKey]], @"name",
- infoPath, @"path", nil] forKey:[cmdData objectForKey:SPBundleFileUUIDKey]];
-
- } else {
- NSLog(@"No UUID for %@", bundle);
- NSBeep();
- continue;
- }
-
- NSArray *scopes = [[cmdData objectForKey:SPBundleFileScopeKey] componentsSeparatedByString:@" "];
- for(NSString *scope in scopes) {
+ defaultBundleWasUpdated = YES;
- if(![bundleUsedScopes containsObject:scope]) {
- [bundleUsedScopes addObject:scope];
- [bundleItems setObject:[NSMutableArray array] forKey:scope];
- [bundleCategories setObject:[NSMutableArray array] forKey:scope];
- [bundleKeyEquivalents setObject:[NSMutableDictionary dictionary] forKey:scope];
}
- if([cmdData objectForKey:SPBundleFileCategoryKey] && [[cmdData objectForKey:SPBundleFileCategoryKey] length] && ![[bundleCategories objectForKey:scope] containsObject:[cmdData objectForKey:SPBundleFileCategoryKey]])
- [[bundleCategories objectForKey:scope] addObject:[cmdData objectForKey:SPBundleFileCategoryKey]];
- }
+ if(!defaultBundleWasUpdated) continue;
- NSMutableDictionary *aDict = [NSMutableDictionary dictionary];
- [aDict setObject:[cmdData objectForKey:SPBundleFileNameKey] forKey:SPBundleInternLabelKey];
- [aDict setObject:infoPath forKey:SPBundleInternPathToFileKey];
-
- // Register trigger
- if([cmdData objectForKey:SPBundleFileTriggerKey]) {
- if(![bundleTriggers objectForKey:[cmdData objectForKey:SPBundleFileTriggerKey]])
- [bundleTriggers setObject:[NSMutableArray array] forKey:[cmdData objectForKey:SPBundleFileTriggerKey]];
- [[bundleTriggers objectForKey:[cmdData objectForKey:SPBundleFileTriggerKey]] addObject:
- [NSString stringWithFormat:@"%@|%@|%@",
- infoPath,
- [cmdData objectForKey:SPBundleFileScopeKey],
- ([[cmdData objectForKey:SPBundleFileOutputActionKey] isEqualToString:SPBundleOutputActionShowAsHTML])?[cmdData objectForKey:SPBundleFileUUIDKey]:@""]];
}
- if([cmdData objectForKey:SPBundleFileKeyEquivalentKey] && [[cmdData objectForKey:SPBundleFileKeyEquivalentKey] length]) {
-
- NSString *theKey = [cmdData objectForKey:SPBundleFileKeyEquivalentKey];
- NSString *theChar = [theKey substringFromIndex:[theKey length]-1];
- NSString *theMods = [theKey substringToIndex:[theKey length]-1];
- NSUInteger mask = 0;
- if([theMods rangeOfString:@"^"].length)
- mask = mask | NSControlKeyMask;
- if([theMods rangeOfString:@"@"].length)
- mask = mask | NSCommandKeyMask;
- if([theMods rangeOfString:@"~"].length)
- mask = mask | NSAlternateKeyMask;
- if([theMods rangeOfString:@"$"].length)
- mask = mask | NSShiftKeyMask;
- for(NSString* scope in scopes) {
- if(![[bundleKeyEquivalents objectForKey:scope] objectForKey:[cmdData objectForKey:SPBundleFileKeyEquivalentKey]])
- [[bundleKeyEquivalents objectForKey:scope] setObject:[NSMutableArray array] forKey:[cmdData objectForKey:SPBundleFileKeyEquivalentKey]];
-
- [[[bundleKeyEquivalents objectForKey:scope] objectForKey:[cmdData objectForKey:SPBundleFileKeyEquivalentKey]] addObject:
- [NSDictionary dictionaryWithObjectsAndKeys:
- infoPath, @"path",
- [cmdData objectForKey:SPBundleFileNameKey], @"title",
- ([cmdData objectForKey:SPBundleFileTooltipKey]) ?: @"", @"tooltip",
- nil]];
+ [installedBundleUUIDs setObject:[NSDictionary dictionaryWithObjectsAndKeys:
+ [NSString stringWithFormat:@"%@ (%@)", bundle, [cmdData objectForKey:SPBundleFileNameKey]], @"name",
+ infoPath, @"path", nil] forKey:[cmdData objectForKey:SPBundleFileUUIDKey]];
- }
+ } else {
+ NSLog(@"No UUID for %@", bundle);
+ NSBeep();
+ continue;
+ }
- [aDict setObject:[NSArray arrayWithObjects:theChar, [NSNumber numberWithInteger:mask], nil] forKey:SPBundleInternKeyEquivalentKey];
- }
+ // Register Bundle
+ NSString *scope = [cmdData objectForKey:SPBundleFileScopeKey];
- if([cmdData objectForKey:SPBundleFileTooltipKey] && [[cmdData objectForKey:SPBundleFileTooltipKey] length])
- [aDict setObject:[cmdData objectForKey:SPBundleFileTooltipKey] forKey:SPBundleFileTooltipKey];
+ // Register scope/category menu structure
+ if(![bundleUsedScopes containsObject:scope]) {
+ [bundleUsedScopes addObject:scope];
+ [bundleItems setObject:[NSMutableArray array] forKey:scope];
+ [bundleCategories setObject:[NSMutableArray array] forKey:scope];
+ [bundleKeyEquivalents setObject:[NSMutableDictionary dictionary] forKey:scope];
+ }
+ if([cmdData objectForKey:SPBundleFileCategoryKey] && [[cmdData objectForKey:SPBundleFileCategoryKey] length] && ![[bundleCategories objectForKey:scope] containsObject:[cmdData objectForKey:SPBundleFileCategoryKey]])
+ [[bundleCategories objectForKey:scope] addObject:[cmdData objectForKey:SPBundleFileCategoryKey]];
+
+ NSMutableDictionary *aDict = [NSMutableDictionary dictionary];
+ [aDict setObject:[cmdData objectForKey:SPBundleFileNameKey] forKey:SPBundleInternLabelKey];
+ [aDict setObject:infoPath forKey:SPBundleInternPathToFileKey];
+
+ // Register trigger
+ if([cmdData objectForKey:SPBundleFileTriggerKey]) {
+ if(![bundleTriggers objectForKey:[cmdData objectForKey:SPBundleFileTriggerKey]])
+ [bundleTriggers setObject:[NSMutableArray array] forKey:[cmdData objectForKey:SPBundleFileTriggerKey]];
+ [[bundleTriggers objectForKey:[cmdData objectForKey:SPBundleFileTriggerKey]] addObject:
+ [NSString stringWithFormat:@"%@|%@|%@",
+ infoPath,
+ [cmdData objectForKey:SPBundleFileScopeKey],
+ ([[cmdData objectForKey:SPBundleFileOutputActionKey] isEqualToString:SPBundleOutputActionShowAsHTML])?[cmdData objectForKey:SPBundleFileUUIDKey]:@""]];
+ }
- if([cmdData objectForKey:SPBundleFileCategoryKey] && [[cmdData objectForKey:SPBundleFileCategoryKey] length])
- [aDict setObject:[cmdData objectForKey:SPBundleFileCategoryKey] forKey:SPBundleFileCategoryKey];
+ // Register key equivalent
+ if([cmdData objectForKey:SPBundleFileKeyEquivalentKey] && [[cmdData objectForKey:SPBundleFileKeyEquivalentKey] length]) {
+
+ NSString *theKey = [cmdData objectForKey:SPBundleFileKeyEquivalentKey];
+ NSString *theChar = [theKey substringFromIndex:[theKey length]-1];
+ NSString *theMods = [theKey substringToIndex:[theKey length]-1];
+ NSUInteger mask = 0;
+ if([theMods rangeOfString:@"^"].length) mask = mask | NSControlKeyMask;
+ if([theMods rangeOfString:@"@"].length) mask = mask | NSCommandKeyMask;
+ if([theMods rangeOfString:@"~"].length) mask = mask | NSAlternateKeyMask;
+ if([theMods rangeOfString:@"$"].length) mask = mask | NSShiftKeyMask;
+
+ if(![[bundleKeyEquivalents objectForKey:scope] objectForKey:[cmdData objectForKey:SPBundleFileKeyEquivalentKey]])
+ [[bundleKeyEquivalents objectForKey:scope] setObject:[NSMutableArray array] forKey:[cmdData objectForKey:SPBundleFileKeyEquivalentKey]];
+
+ if(!doBundleUpdate || (doBundleUpdate && (![[cmdData objectForKey:SPBundleFileIsDefaultBundleKey] boolValue] || processDefaultBundles)))
+ [[[bundleKeyEquivalents objectForKey:scope] objectForKey:[cmdData objectForKey:SPBundleFileKeyEquivalentKey]] addObject:
+ [NSDictionary dictionaryWithObjectsAndKeys:
+ infoPath, @"path",
+ [cmdData objectForKey:SPBundleFileNameKey], @"title",
+ ([cmdData objectForKey:SPBundleFileTooltipKey]) ?: @"", @"tooltip",
+ nil]];
+
+ [aDict setObject:[NSArray arrayWithObjects:theChar, [NSNumber numberWithInteger:mask], nil] forKey:SPBundleInternKeyEquivalentKey];
+ }
- if([cmdData objectForKey:SPBundleFileKeyEquivalentKey] && [[cmdData objectForKey:SPBundleFileKeyEquivalentKey] length])
- [aDict setObject:[cmdData objectForKey:SPBundleFileKeyEquivalentKey] forKey:@"key"];
+ if([cmdData objectForKey:SPBundleFileTooltipKey] && [[cmdData objectForKey:SPBundleFileTooltipKey] length])
+ [aDict setObject:[cmdData objectForKey:SPBundleFileTooltipKey] forKey:SPBundleFileTooltipKey];
- for(NSString* scope in scopes)
- [[bundleItems objectForKey:scope] addObject:aDict];
+ if([cmdData objectForKey:SPBundleFileCategoryKey] && [[cmdData objectForKey:SPBundleFileCategoryKey] length])
+ [aDict setObject:[cmdData objectForKey:SPBundleFileCategoryKey] forKey:SPBundleFileCategoryKey];
- }
+ if([cmdData objectForKey:SPBundleFileKeyEquivalentKey] && [[cmdData objectForKey:SPBundleFileKeyEquivalentKey] length])
+ [aDict setObject:[cmdData objectForKey:SPBundleFileKeyEquivalentKey] forKey:@"key"];
- if (cmdData) [cmdData release];
+ [[bundleItems objectForKey:scope] addObject:aDict];
}
}
+ // Sort items for menus
NSSortDescriptor *sortDescriptor = [[[NSSortDescriptor alloc] initWithKey:SPBundleInternLabelKey ascending:YES] autorelease];
for(NSString* scope in [bundleItems allKeys]) {
[[bundleItems objectForKey:scope] sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];
@@ -1624,9 +1817,10 @@
}
[deletedDefaultBundles release];
-
- // Synchronize updated Bundles
- [[NSUserDefaults standardUserDefaults] setObject:updatedDefaultBundles forKey:SPBundleUpdatedDefaultBundlesKey];
+ if(doBundleUpdate) {
+ [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"doBundleUpdate"];
+ [[NSUserDefaults standardUserDefaults] synchronize];
+ }
// Inform user about default Bundle updates which were modified by the user and re-run Reload Bundles
if([infoAboutUpdatedDefaultBundles length]) {
diff --git a/Source/SPBundleCommandTextView.m b/Source/SPBundleCommandTextView.m
index 6411ccfd..d9aae0f7 100644
--- a/Source/SPBundleCommandTextView.m
+++ b/Source/SPBundleCommandTextView.m
@@ -31,8 +31,8 @@
- (void)dealloc
{
- [prefs removeObserver:self forKeyPath:SPCustomQueryEditorTabStopWidth];
[[NSNotificationCenter defaultCenter] removeObserver:self];
+ [prefs removeObserver:self forKeyPath:SPCustomQueryEditorTabStopWidth];
[prefs release];
[lineNumberView release];
}
@@ -58,12 +58,13 @@
// Re-define tab stops for a better editing
[self setTabStops];
- // add NSViewBoundsDidChangeNotification to scrollView
- [[commandScrollView contentView] setPostsBoundsChangedNotifications:YES];
-
// disabled to get the current text range in textView safer
[[self layoutManager] setBackgroundLayoutEnabled:NO];
+ // add NSViewBoundsDidChangeNotification to scrollView
+ [commandScrollView setPostsBoundsChangedNotifications:YES];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(boundsDidChangeNotification:) name:NSViewBoundsDidChangeNotification object:[commandScrollView contentView]];
+
}
- (void)drawRect:(NSRect)rect
@@ -781,6 +782,15 @@
textWasChanged = YES;
}
+/**
+ * Scrollview delegate after the command textView's view port was changed.
+ * Manily used to render line numbering.
+ */
+- (void)boundsDidChangeNotification:(NSNotification *)notification
+{
+ [commandScrollView display];
+}
+
#pragma mark -
// Store the font in the prefs for selected delegates only
diff --git a/Source/SPBundleEditorController.h b/Source/SPBundleEditorController.h
index ac4c9e6b..1c3c0dab 100644
--- a/Source/SPBundleEditorController.h
+++ b/Source/SPBundleEditorController.h
@@ -27,7 +27,7 @@
#import "SPBundleCommandTextView.h"
#import "SPOutlineView.h"
-@class SRRecorderControl;
+@class SRRecorderControl, BWSplitView;
@interface SPBundleEditorController : NSWindowController {
@@ -61,9 +61,9 @@
IBOutlet NSMenuItem *revealInFinderMenuItem;
IBOutlet SRRecorderControl *keyEquivalentField;
IBOutlet NSButton *disabledCheckbox;
- IBOutlet NSView *bundleDataView;
IBOutlet NSScrollView *commandScrollView;
IBOutlet NSScrollView *descriptionScrollView;
+ IBOutlet BWSplitView *splitView;
IBOutlet id undeleteSheet;
IBOutlet NSTableView *undeleteTableView;
diff --git a/Source/SPBundleEditorController.m b/Source/SPBundleEditorController.m
index de779e67..279002f4 100644
--- a/Source/SPBundleEditorController.m
+++ b/Source/SPBundleEditorController.m
@@ -38,6 +38,8 @@
#define SP_BUNDLEEDITOR_SCOPE_GENERAL_STRING NSLocalizedString(@"General", @"Bundle Editor : Scope dropdown : 'general' item")
#define SP_BUNDLEEDITOR_OUTLINE_BUNDLE_TOOLTIP_STRING NSLocalizedString(@"“%@” Bundle",@"Bundle Editor : Outline View : Bundle item : tooltip")
+#define SP_BUNDLEEDITOR_SPLITVIEW_AUTOSAVE_STRING @"SPBundleEditorSplitView"
+
@interface SPBundleEditorController (PrivateAPI)
- (void)_updateBundleDataView;
@@ -116,6 +118,15 @@
- (void)awakeFromNib
{
+ // Set up the splitview width manually; autosave appears to save but not restore this value
+ // here, so restore in code if present.
+ NSString *splitViewKeyName = [NSString stringWithFormat:@"NSSplitView Subview Frames %@", SP_BUNDLEEDITOR_SPLITVIEW_AUTOSAVE_STRING];
+ if ([[NSUserDefaults standardUserDefaults] arrayForKey:splitViewKeyName]) {
+ NSString *detailString = [[[NSUserDefaults standardUserDefaults] arrayForKey:splitViewKeyName] objectAtIndex:0];
+ float dividerPosition = [[[detailString componentsSeparatedByString:@", "] objectAtIndex:2] floatValue];
+ [splitView setPosition:dividerPosition ofDividerAtIndex:0];
+ }
+
// Init all needed variables; popup menus (with the chance for localization); and set
// defaults
@@ -131,6 +142,7 @@
[[commandBundleTree objectForKey:kChildrenKey] addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:[NSMutableArray array], kChildrenKey, SP_BUNDLEEDITOR_SCOPE_INPUTFIELD_STRING, kBundleNameKey, nil]];
[[commandBundleTree objectForKey:kChildrenKey] addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:[NSMutableArray array], kChildrenKey, SP_BUNDLEEDITOR_SCOPE_DATATABLE_STRING, kBundleNameKey, nil]];
[[commandBundleTree objectForKey:kChildrenKey] addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:[NSMutableArray array], kChildrenKey, SP_BUNDLEEDITOR_SCOPE_GENERAL_STRING, kBundleNameKey, nil]];
+ [commandBundleTreeController setContent:commandBundleTree];
// Init all needed menus
inputGeneralScopePopUpMenu = [[NSMenu alloc] initWithTitle:@""];
@@ -353,6 +365,7 @@
SPBundleShellVariableSelectedTable,
SPBundleShellVariableSelectedTables,
SPBundleShellVariableSelectedText,
+ SPBundleShellVariableSelectedTextRange,
SPBundleShellVariableUsedQueryForTable,
nil
] retain];
@@ -1031,10 +1044,13 @@
if(deletionSuccessfully) {
[commandBundleTreeController removeObjectsAtArrangedObjectIndexPaths:selIndexPaths];
[commandBundleTreeController rearrangeObjects];
- } else {
- [self reloadBundles:self];
}
+ [self reloadBundles:self];
+
+ [commandBundleTreeController setSelectionIndexPath:[[selIndexPaths objectAtIndex:0] indexPathByRemovingLastIndex]];
+ [commandsOutlineView expandItem:[self _currentSelectedNode] expandChildren:NO];
+
// Set focus to table view to avoid an unstable state
[[self window] makeFirstResponder:commandsOutlineView];
@@ -1291,7 +1307,7 @@
[touchedBundleArray addObject:oldBundleName];
[self _updateBundleDataView];
-
+ [commandTextView setSelectedRange:NSMakeRange(0,0)];
}
- (BOOL)outlineView:(NSOutlineView *)outlineView shouldShowOutlineCellForItem:(id)item
@@ -1793,7 +1809,6 @@
[removeButton setEnabled:([[commandBundleTreeController selectedObjects] count] == 1 && ![[[commandBundleTreeController selectedObjects] objectAtIndex:0] objectForKey:kChildrenKey])];
[addButton setEnabled:([[commandBundleTreeController selectionIndexPath] length] > 1)];
- [commandBundleTreeController setContent:commandBundleTree];
NSUInteger *selPath[2];
selPath[0] = 0;
selPath[1] = 0;
diff --git a/Source/SPBundleHTMLOutputController.h b/Source/SPBundleHTMLOutputController.h
index ea0b96da..3665fc8e 100644
--- a/Source/SPBundleHTMLOutputController.h
+++ b/Source/SPBundleHTMLOutputController.h
@@ -33,6 +33,7 @@
NSString *initHTMLSourceString;
NSString *windowUUID;
NSString *docUUID;
+ BOOL suppressExceptionAlert;
WebPreferences *webPreferences;
}
@@ -41,6 +42,7 @@
@property(readwrite,retain) NSString *initHTMLSourceString;
@property(readwrite,retain) NSString *windowUUID;
@property(readwrite,retain) NSString *docUUID;
+@property(assign) BOOL suppressExceptionAlert;
- (IBAction)printDocument:(id)sender;
diff --git a/Source/SPBundleHTMLOutputController.m b/Source/SPBundleHTMLOutputController.m
index 7bcff455..3c47964a 100644
--- a/Source/SPBundleHTMLOutputController.m
+++ b/Source/SPBundleHTMLOutputController.m
@@ -33,6 +33,7 @@
@synthesize initHTMLSourceString;
@synthesize windowUUID;
@synthesize docUUID;
+@synthesize suppressExceptionAlert;
/**
* Initialisation
@@ -50,6 +51,7 @@
[webView setEditable:NO];
[webView setShouldCloseWithWindow:YES];
[webView setShouldUpdateWhileOffscreen:NO];
+ suppressExceptionAlert = NO;
}
@@ -364,8 +366,18 @@
return @"run";
if (aSelector == @selector(getShellEnvironmentForName:))
return @"getShellEnvironmentForName";
+ if (aSelector == @selector(insertText:))
+ return @"insertText";
+ if (aSelector == @selector(setText:))
+ return @"setText";
+ if (aSelector == @selector(setSelectedTextRange:))
+ return @"setSelectedTextRange";
if (aSelector == @selector(makeHTMLOutputWindowKeyWindow))
return @"makeHTMLOutputWindowKeyWindow";
+ if (aSelector == @selector(closeHTMLOutputWindow))
+ return @"closeHTMLOutputWindow";
+ if (aSelector == @selector(suppressExceptionAlert))
+ return @"suppressExceptionAlert";
return @"";
}
@@ -376,9 +388,24 @@
if (selector == @selector(getShellEnvironmentForName:)) {
return NO;
}
+ if (selector == @selector(insertText:)) {
+ return NO;
+ }
+ if (selector == @selector(setText:)) {
+ return NO;
+ }
+ if (selector == @selector(setSelectedTextRange:)) {
+ return NO;
+ }
if (selector == @selector(makeHTMLOutputWindowKeyWindow)) {
return NO;
}
+ if (selector == @selector(closeHTMLOutputWindow)) {
+ return NO;
+ }
+ if (selector == @selector(suppressExceptionAlert)) {
+ return NO;
+ }
return YES;
}
@@ -389,6 +416,15 @@
if (strcmp(property, "getShellEnvironmentForName") == 0) {
return NO;
}
+ if (strcmp(property, "insertText") == 0) {
+ return NO;
+ }
+ if (strcmp(property, "setText") == 0) {
+ return NO;
+ }
+ if (strcmp(property, "setSelectedTextRange") == 0) {
+ return NO;
+ }
if (strcmp(property, "makeHTMLOutputWindowKeyWindow") == 0) {
return NO;
}
@@ -411,8 +447,14 @@
- (void)webView:(WebView *)webView exceptionWasRaised:(WebScriptCallFrame *)frame sourceId:(NSInteger)sid line:(NSInteger)lineno forWebFrame:(WebFrame *)webFrame
{
+
NSString *mes = [NSString stringWithFormat:@"Exception:\nline = %ld\nfunction = %@\ncaller = %@\nexception = %@", lineno, [frame functionName], [frame caller], [frame userInfo], [frame exception]];
+ if([self suppressExceptionAlert]) {
+ NSLog(@"%@", mes);
+ return;
+ }
+
NSAlert *alert = [NSAlert alertWithMessageText:NSLocalizedString(@"JavaScript Exception", @"javascript exception")
defaultButton:NSLocalizedString(@"OK", @"OK button")
alternateButton:nil
@@ -441,6 +483,70 @@
}
/**
+ * JavaScript window.system.makeHTMLOutputWindowKeyWindow() function
+ * to close the HTML window
+ */
+- (void)closeHTMLOutputWindow
+{
+ [[self window] close];
+}
+
+/**
+ * JavaScript window.system.insertText(text) function
+ * to insert text into the first responder
+ */
+- (void)insertText:(NSString*)text
+{
+ id firstResponder = [[NSApp keyWindow] firstResponder];
+ if([firstResponder isKindOfClass:[NSTextView class]]) {
+ [firstResponder insertText:text];
+ return;
+ }
+ NSBeep();
+}
+
+/**
+ * JavaScript window.system.setText(text) function
+ * to set the content of the first responder to text
+ */
+- (void)setText:(NSString*)text
+{
+ id firstResponder = [[NSApp keyWindow] firstResponder];
+ if([firstResponder isKindOfClass:[NSTextView class]]) {
+ [firstResponder setSelectedRange:NSMakeRange(0, [[firstResponder string] length])];
+ [firstResponder insertText:text];
+ return;
+ }
+ NSBeep();
+}
+
+/**
+ * JavaScript window.system.setSelectedRange({location,length}) function
+ * to set the selection range of the first responder
+ */
+- (void)setSelectedTextRange:(NSString*)range
+{
+ id firstResponder = [[NSApp keyWindow] firstResponder];
+ if([firstResponder isKindOfClass:[NSTextView class]]) {
+ NSRange theRange = NSIntersectionRange(NSRangeFromString(range), NSMakeRange(0, [[firstResponder string] length]));
+ if(theRange.location != NSNotFound) {
+ [firstResponder setSelectedRange:theRange];
+ }
+ return;
+ }
+ NSBeep();
+}
+
+/**
+ * JavaScript window.system.suppressExceptionAlert() function
+ * to suppress an exception alert, instead write the message to NSLog
+ */
+- (void)suppressExceptionAlert
+{
+ [self setSuppressExceptionAlert:YES];
+}
+
+/**
* JavaScript window.system.run('a_command'|new Array('a_command', 'uuid')) function
* to return the result of the BASH command a_command
*/
diff --git a/Source/SPConnectionController.h b/Source/SPConnectionController.h
index 73a7ef77..590349bc 100644
--- a/Source/SPConnectionController.h
+++ b/Source/SPConnectionController.h
@@ -83,6 +83,7 @@
NSString *sshKeyLocation;
NSString *sshPort;
+ NSString *connectionKeychainID;
NSString *connectionKeychainItemName;
NSString *connectionKeychainItemAccount;
NSString *connectionSSHKeychainItemName;
diff --git a/Source/SPConnectionController.m b/Source/SPConnectionController.m
index c12f1ac4..9f542cec 100644
--- a/Source/SPConnectionController.m
+++ b/Source/SPConnectionController.m
@@ -285,15 +285,10 @@ static NSComparisonResult compareFavoritesUsingKey(id favorite1, id favorite2, v
[favoritesOutlineView setEnabled:NO];
[addToFavoritesButton setHidden:YES];
- [addToFavoritesButton display];
[helpButton setHidden:YES];
- [helpButton display];
[connectButton setEnabled:NO];
- [connectButton display];
[progressIndicator startAnimation:self];
- [progressIndicator display];
[progressIndicatorText setHidden:NO];
- [progressIndicatorText display];
// Start the current tab's progress indicator
[dbDocument setIsProcessing:YES];
@@ -424,7 +419,7 @@ static NSComparisonResult compareFavoritesUsingKey(id favorite1, id favorite2, v
[self setSslCertificateFileLocation:nil];
return;
}
- permittedFileTypes = [NSArray arrayWithObjects:@"pem", @"cert", @"", nil];
+ permittedFileTypes = [NSArray arrayWithObjects:@"pem", @"cert", @"crt", @"", nil];
[openPanel setAccessoryView:sslCertificateLocationHelp];
// SSL CA certificate file location:
@@ -433,7 +428,7 @@ static NSComparisonResult compareFavoritesUsingKey(id favorite1, id favorite2, v
[self setSslCACertFileLocation:nil];
return;
}
- permittedFileTypes = [NSArray arrayWithObjects:@"pem", @"cert", @"", nil];
+ permittedFileTypes = [NSArray arrayWithObjects:@"pem", @"cert", @"crt", @"", nil];
[openPanel setAccessoryView:sslCACertLocationHelp];
}
diff --git a/Source/SPConnectionHandler.m b/Source/SPConnectionHandler.m
index 6d777ff5..adf21ffa 100644
--- a/Source/SPConnectionHandler.m
+++ b/Source/SPConnectionHandler.m
@@ -330,13 +330,7 @@ certificateAuthorityCertificatePath:[self sslCACertFileLocationEnabled] ? [self
for (NSInteger i = 0; i < [toolbarItems count]; i++) [[toolbarItems objectAtIndex:i] setEnabled:YES];
- // Set keychain id for saving SPF files
- if ([self valueForKeyPath:@"selectedFavorite.id"]) {
- [dbDocument setKeychainID:[[self valueForKeyPath:@"selectedFavorite.id"] stringValue]];
- }
- else {
- [dbDocument setKeychainID:@""];
- }
+ if (connectionKeychainID) [dbDocument setKeychainID:connectionKeychainID];
// Pass the connection to the table document, allowing it to set
// up the other classes and the rest of the interface.
diff --git a/Source/SPConstants.h b/Source/SPConstants.h
index c5a932ea..3a15f71c 100644
--- a/Source/SPConstants.h
+++ b/Source/SPConstants.h
@@ -180,6 +180,16 @@ typedef enum
SPEncodingEUCKRKorean = 180
} SPEncodingTypes;
+// Table index type menu tags
+typedef enum
+{
+ SPPrimaryKeyMenuTag = 0,
+ SPIndexMenuTag = 1,
+ SPUniqueMenuTag = 2,
+ SPFullTextMenuTag = 3,
+ SPSpatialMenuTag = 4
+} SPTableIndexTypeTags;
+
// File compression formats
typedef enum
{
@@ -312,6 +322,8 @@ extern NSString *SPCustomQueryAutoComplete;
extern NSString *SPCustomQueryAutoCompleteDelay;
extern NSString *SPCustomQueryFunctionCompletionInsertsArguments;
extern NSString *SPCustomQueryEditorThemeName;
+extern NSString *SPCustomQuerySoftIndent;
+extern NSString *SPCustomQuerySoftIndentWidth;
// AutoUpdate Prefpane
extern NSString *SPLastUsedVersion;
@@ -369,7 +381,6 @@ extern NSString *SPLastImportIntoNewTableEncoding;
extern NSString *SPLastImportIntoNewTableType;
extern NSString *SPGlobalValueHistory;
extern NSString *SPBundleDeletedDefaultBundlesKey;
-extern NSString *SPBundleUpdatedDefaultBundlesKey;
// URLs
extern NSString *SPDonationsURL;
@@ -510,6 +521,7 @@ extern NSString *SPBundleShellVariableSelectedText;
extern NSString *SPBundleShellVariableCurrentWord;
extern NSString *SPBundleShellVariableCurrentLine;
extern NSString *SPBundleShellVariableSelectedRowIndices;
+extern NSString *SPBundleShellVariableSelectedTextRange;
extern NSString *SPBundleShellVariableAllDatabases;
extern NSString *SPBundleShellVariableSelectedTables;
extern NSString *SPBundleShellVariableSelectedDatabase;
diff --git a/Source/SPConstants.m b/Source/SPConstants.m
index c7ac921d..df1d71dc 100644
--- a/Source/SPConstants.m
+++ b/Source/SPConstants.m
@@ -123,6 +123,8 @@ NSString *SPCustomQueryAutoComplete = @"CustomQueryAutoComplete";
NSString *SPCustomQueryAutoCompleteDelay = @"CustomQueryAutoCompleteDelay";
NSString *SPCustomQueryFunctionCompletionInsertsArguments = @"CustomQueryFunctionCompletionInsertsArguments";
NSString *SPCustomQueryEditorThemeName = @"CustomQueryEditorThemeName";
+NSString *SPCustomQuerySoftIndent = @"CustomQuerySoftIndent";
+NSString *SPCustomQuerySoftIndentWidth = @"CustomQuerySoftIndentWidth";
// AutoUpdate Prefpane
NSString *SPLastUsedVersion = @"LastUsedVersion";
@@ -180,11 +182,10 @@ NSString *SPLastImportIntoNewTableEncoding = @"LastImportIntoNewTableEncod
NSString *SPLastImportIntoNewTableType = @"LastImportIntoNewTableType";
NSString *SPGlobalValueHistory = @"GlobalValueHistory";
NSString *SPBundleDeletedDefaultBundlesKey = @"deletedDefaultBundles";
-NSString *SPBundleUpdatedDefaultBundlesKey = @"updatedDefaultBundles";
// URLs
NSString *SPDonationsURL = @"http://www.sequelpro.com/donate.html";
-NSString *SPMySQLSearchURL = @"http://search.mysql.com/search?q=%@&site=refman-%@&lr=lang_%@";
+NSString *SPMySQLSearchURL = @"http://search.mysql.com/search/query/search?q=%@&group=refman-%@";
NSString *SPDevURL = @"http://code.google.com/p/sequel-pro/";
// Toolbar constants
@@ -325,7 +326,7 @@ NSString *SPBundleShellVariableExitShowAsHTML = @"SP_BUNDLE_EXIT_S
NSString *SPBundleShellVariableExitShowAsHTMLTooltip = @"SP_BUNDLE_EXIT_SHOW_AS_HTML_TOOLTIP";
NSString *SPBundleShellVariableExitInsertAsSnippet = @"SP_BUNDLE_EXIT_INSERT_AS_SNIPPET";
NSString *SPBundleShellVariableExitInsertAsText = @"SP_BUNDLE_EXIT_INSERT_AS_TEXT";
-NSString *SPBundleShellVariableExitShowAsTextTooltip = @"SP_BUNDLE_EXIT_SHOW_AS_TEXT_TOOLTIP";
+NSString *SPBundleShellVariableExitShowAsTextTooltip = @"SP_BUNDLE_EXIT_SHOW_AS_TEXT_TOOLTIP";
NSString *SPBundleShellVariableExitNone = @"SP_BUNDLE_EXIT_NONE";
NSString *SPBundleShellVariableExitReplaceContent = @"SP_BUNDLE_EXIT_REPLACE_CONTENT";
NSString *SPBundleShellVariableExitReplaceSelection = @"SP_BUNDLE_EXIT_REPLACE_SELECTION";
@@ -345,6 +346,7 @@ NSString *SPBundleShellVariableSelectedRowIndices = @"SP_SELECTED_ROW_
NSString *SPBundleShellVariableSelectedTable = @"SP_SELECTED_TABLE";
NSString *SPBundleShellVariableSelectedTables = @"SP_SELECTED_TABLES";
NSString *SPBundleShellVariableSelectedText = @"SP_SELECTED_TEXT";
+NSString *SPBundleShellVariableSelectedTextRange = @"SP_SELECTED_TEXT_RANGE";
NSString *SPBundleShellVariableUsedQueryForTable = @"SP_USED_QUERY_FOR_TABLE";
const NSInteger SPBundleRedirectActionNone = 200;
diff --git a/Source/SPCopyTable.m b/Source/SPCopyTable.m
index 827672b5..3b84d867 100644
--- a/Source/SPCopyTable.m
+++ b/Source/SPCopyTable.m
@@ -698,6 +698,10 @@ NSInteger kBlobAsImageFile = 4;
NSUInteger columnWidth;
NSUInteger allColumnWidths = 0;
+ // Determine the available size
+ NSScrollView *parentScrollView = [[self superview] superview];
+ CGFloat visibleTableWidth = [parentScrollView bounds].size.width - [NSScroller scrollerWidth] - [columnDefinitions count] * 3.5;
+
for (NSDictionary *columnDefinition in columnDefinitions) {
if ([[NSThread currentThread] isCancelled]) return nil;
@@ -707,7 +711,7 @@ NSInteger kBlobAsImageFile = 4;
}
// Compare the column widths to the table width. If wider, narrow down wide columns as necessary
- if (allColumnWidths > [self bounds].size.width) {
+ if (allColumnWidths > visibleTableWidth) {
NSUInteger availableWidthToReduce = 0;
// Look for columns that are wider than the multi-column max
@@ -717,7 +721,7 @@ NSInteger kBlobAsImageFile = 4;
}
// Determine how much width can be reduced
- NSUInteger widthToReduce = allColumnWidths - [self bounds].size.width;
+ NSUInteger widthToReduce = allColumnWidths - visibleTableWidth;
if (availableWidthToReduce < widthToReduce) widthToReduce = availableWidthToReduce;
// Proportionally decrease the column sizes
@@ -930,6 +934,10 @@ NSInteger kBlobAsImageFile = 4;
{
NSInteger menuItemTag = [anItem tag];
+ if ([anItem action] == @selector(performFindPanelAction:)) {
+ return (menuItemTag == 1 && [[self delegate] isKindOfClass:[SPTableContent class]]);
+ }
+
// Don't validate anything other than the copy commands
if (menuItemTag != MENU_EDIT_COPY && menuItemTag != MENU_EDIT_COPY_WITH_COLUMN && menuItemTag != MENU_EDIT_COPY_AS_SQL) {
return YES;
@@ -1091,6 +1099,13 @@ NSInteger kBlobAsImageFile = 4;
[super keyDown:theEvent];
}
+- (void)performFindPanelAction:(id)sender
+{
+ if([sender tag] == 1 && [[self delegate] isKindOfClass:[SPTableContent class]]) {
+ [[self delegate] showFilterTable:self];
+ }
+}
+
#pragma mark -
#pragma mark Bundle Command Support
@@ -1221,33 +1236,47 @@ NSInteger kBlobAsImageFile = 4;
return;
}
+
+ // Create an array of table column mappings for fast iteration
+ NSArray *columns = [self tableColumns];
+ NSUInteger numColumns = [columns count];
+ NSUInteger *columnMappings = malloc(numColumns * sizeof(NSUInteger));
+ NSInteger c;
+ for ( c = 0; c < numColumns; c++ )
+ columnMappings[c] = [[NSArrayObjectAtIndex(columns, c) identifier] unsignedIntValue];
+
NSMutableString *tableMetaData = [NSMutableString string];
if([[self delegate] isKindOfClass:[SPCustomQuery class]]) {
[env setObject:@"query" forKey:SPBundleShellVariableDataTableSource];
NSArray *defs = [[self delegate] dataColumnDefinitions];
- for(NSDictionary* col in defs) {
- [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"type"]];
- [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"typegrouping"]];
- [tableMetaData appendFormat:@"%@\t", ([col objectForKey:@"char_length"]) ? : @""];
- [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"UNSIGNED_FLAG"]];
- [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"AUTO_INCREMENT_FLAG"]];
- [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"PRI_KEY_FLAG"]];
- [tableMetaData appendString:@"\n"];
- }
+ if(defs && [defs count] == numColumns)
+ for( c = 0; c < numColumns; c++ ) {
+ NSDictionary *col = NSArrayObjectAtIndex(defs, columnMappings[c]);
+ [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"type"]];
+ [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"typegrouping"]];
+ [tableMetaData appendFormat:@"%@\t", ([col objectForKey:@"char_length"]) ? : @""];
+ [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"UNSIGNED_FLAG"]];
+ [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"AUTO_INCREMENT_FLAG"]];
+ [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"PRI_KEY_FLAG"]];
+ [tableMetaData appendString:@"\n"];
+ }
}
else if([[self delegate] isKindOfClass:[SPTableContent class]]) {
[env setObject:@"content" forKey:SPBundleShellVariableDataTableSource];
NSArray *defs = [[self delegate] dataColumnDefinitions];
- for(NSDictionary* col in defs) {
- [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"type"]];
- [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"typegrouping"]];
- [tableMetaData appendFormat:@"%@\t", ([col objectForKey:@"length"]) ? : @""];
- [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"unsigned"]];
- [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"autoincrement"]];
- [tableMetaData appendFormat:@"%@\t", ([col objectForKey:@"isprimarykey"]) ? : @"0"];
- [tableMetaData appendFormat:@"%@\n", [col objectForKey:@"comment"]];
- }
+ if(defs && [defs count] == numColumns)
+ for( c = 0; c < numColumns; c++ ) {
+ NSDictionary *col = NSArrayObjectAtIndex(defs, columnMappings[c]);
+ [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"type"]];
+ [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"typegrouping"]];
+ [tableMetaData appendFormat:@"%@\t", ([col objectForKey:@"length"]) ? : @""];
+ [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"unsigned"]];
+ [tableMetaData appendFormat:@"%@\t", [col objectForKey:@"autoincrement"]];
+ [tableMetaData appendFormat:@"%@\t", ([col objectForKey:@"isprimarykey"]) ? : @"0"];
+ [tableMetaData appendFormat:@"%@\n", [col objectForKey:@"comment"]];
+ }
}
+ free(columnMappings);
inputFileError = nil;
[tableMetaData writeToFile:bundleInputTableMetaDataFilePath
diff --git a/Source/SPCustomQuery.h b/Source/SPCustomQuery.h
index f4c2440d..317db0c9 100644
--- a/Source/SPCustomQuery.h
+++ b/Source/SPCustomQuery.h
@@ -147,6 +147,7 @@
BOOL queryIsTableSorter;
BOOL isDesc;
BOOL isFieldEditable;
+ BOOL textViewWasChanged;
NSNumber *sortField;
NSIndexSet *selectionIndexToRestore;
@@ -170,6 +171,8 @@
NSString *kCellEditorErrorTooManyMatches;
}
+@property(assign) BOOL textViewWasChanged;
+
// IBAction methods
- (IBAction)runAllQueries:(id)sender;
- (void) runAllQueriesCallback;
@@ -245,7 +248,7 @@
- (void)commentOutCurrentQueryTakingSelection:(BOOL)takeSelection;
- (NSString *)usedQuery;
- (NSString *)argumentForRow:(NSUInteger)rowIndex ofTable:(NSString *)tableForColumn andDatabase:(NSString *)database includeBlobs:(BOOL)includeBlobs;
-- (NSArray*)fieldEditStatusForRow:(NSInteger)rowIndex andColumn:(NSInteger)columnIndex;
+- (NSArray*)fieldEditStatusForRow:(NSInteger)rowIndex andColumn:(NSNumber *)columnIndex;
- (NSUInteger)numberOfQueries;
- (NSRange)currentQueryRange;
- (NSString *)buildHistoryString;
diff --git a/Source/SPCustomQuery.m b/Source/SPCustomQuery.m
index e8420b7c..b2859010 100644
--- a/Source/SPCustomQuery.m
+++ b/Source/SPCustomQuery.m
@@ -45,6 +45,8 @@
@implementation SPCustomQuery
+@synthesize textViewWasChanged;
+
#pragma mark IBAction methods
/*
@@ -940,7 +942,8 @@
// Split the current text into ranges of queries
// only if the textView was really changed, otherwise use the cache
- if([[textView textStorage] editedMask] != 0) {
+ if([[textView textStorage] editedMask] != 0 || [self textViewWasChanged]) {
+ [self setTextViewWasChanged:NO];
customQueryParser = [[SPSQLParser alloc] initWithString:[textView string]];
[customQueryParser setDelimiterSupport:YES];
queries = [[NSArray alloc] initWithArray:[customQueryParser splitStringIntoRangesByCharacter:';']];
@@ -1634,7 +1637,7 @@
* -2 for other errors
* and the used WHERE clause to identify
*/
-- (NSArray*)fieldEditStatusForRow:(NSInteger)rowIndex andColumn:(NSInteger)columnIndex
+- (NSArray*)fieldEditStatusForRow:(NSInteger)rowIndex andColumn:(NSNumber*)columnIndex
{
NSDictionary *columnDefinition = nil;
@@ -2580,6 +2583,7 @@
BOOL isLookBehind = YES;
NSRange currentSelection = [textView selectedRange];
NSUInteger caretPosition = currentSelection.location;
+
NSRange qRange = [self queryRangeAtPosition:caretPosition lookBehind:&isLookBehind];
if(qRange.length)
@@ -3679,8 +3683,9 @@
column = [customQueryView editedColumn];
// Retrieve the column defintion
+ NSNumber *colIdentifier = [NSArrayObjectAtIndex([customQueryView tableColumns], column) identifier];
for(id c in cqColumnDefinition) {
- if([[c objectForKey:@"datacolumnindex"] isEqualToNumber:[NSNumber numberWithInteger:column]]) {
+ if([[c objectForKey:@"datacolumnindex"] isEqualToNumber:colIdentifier]) {
columnDefinition = [NSDictionary dictionaryWithDictionary:c];
break;
}
@@ -3688,8 +3693,8 @@
if(!columnDefinition) return NO;
- NSArray *editStatus = [self fieldEditStatusForRow:row andColumn:[NSArrayObjectAtIndex([customQueryView tableColumns], column) identifier]];
- NSInteger numberOfPossibleUpdateRows = [[editStatus objectAtIndex:0] integerValue];
+ NSArray *editStatus = [self fieldEditStatusForRow:row andColumn:colIdentifier];
+ NSInteger numberOfPossibleUpdateRows = [NSArrayObjectAtIndex(editStatus, 0) integerValue];
NSPoint pos = [[tableDocumentInstance parentWindow] convertBaseToScreen:[customQueryView convertPoint:[customQueryView frameOfCellAtColumn:column row:row].origin toView:nil]];
pos.y -= 20;
switch(numberOfPossibleUpdateRows) {
diff --git a/Source/SPDatabaseDocument.h b/Source/SPDatabaseDocument.h
index bcd92d59..3459b9b8 100644
--- a/Source/SPDatabaseDocument.h
+++ b/Source/SPDatabaseDocument.h
@@ -65,6 +65,9 @@
IBOutlet NSSearchField *listFilterField;
+ IBOutlet NSScrollView *tableInfoScrollView;
+ IBOutlet NSScrollView *activitiesScrollView;
+
IBOutlet NSView *parentView;
IBOutlet id titleAccessoryView;
@@ -363,6 +366,7 @@
- (void)handleSchemeCommand:(NSDictionary*)commandDict;
- (void)registerActivity:(NSDictionary*)commandDict;
- (void)removeRegisteredActivity:(NSInteger)pid;
+- (void)setActivityPaneHidden:(NSNumber*)hide;
- (NSArray*)runningActivities;
- (NSDictionary*)shellVariables;
diff --git a/Source/SPDatabaseDocument.m b/Source/SPDatabaseDocument.m
index 787817bc..e122205e 100644
--- a/Source/SPDatabaseDocument.m
+++ b/Source/SPDatabaseDocument.m
@@ -56,18 +56,6 @@
#import "SPDatabaseRename.h"
#import "SPServerSupport.h"
#import "SPTooltip.h"
-#import "SPEditorTokens.h"
-
-#pragma mark lex init
-
-/*
-* Include all the extern variables and prototypes required for flex (used for syntax highlighting)
-*/
-extern NSUInteger yylex();
-extern NSUInteger yyuoffset, yyuleng;
-typedef struct yy_buffer_state *YY_BUFFER_STATE;
-void yy_switch_to_buffer(YY_BUFFER_STATE);
-YY_BUFFER_STATE yy_scan_string (const char *);
@interface SPDatabaseDocument (PrivateAPI)
@@ -2514,8 +2502,10 @@ YY_BUFFER_STATE yy_scan_string (const char *);
[saveConnectionEncrypt setState:[[spfDocData objectForKey:@"encrypted"] boolValue]];
if([spfDocData objectForKey:@"include_session"])
[saveConnectionIncludeData setState:[[spfDocData objectForKey:@"include_session"] boolValue]];
- if([spfDocData objectForKey:@"save_editor_content"])
+ if([[spfDocData objectForKey:@"save_editor_content"] boolValue])
[saveConnectionIncludeQuery setState:[[spfDocData objectForKey:@"save_editor_content"] boolValue]];
+ else
+ [saveConnectionIncludeQuery setState:NSOnState];
[saveConnectionIncludeQuery setEnabled:([[[[customQueryInstance valueForKeyPath:@"textView"] textStorage] string] length])];
@@ -2568,8 +2558,10 @@ YY_BUFFER_STATE yy_scan_string (const char *);
[saveConnectionEncrypt setState:[[spfSessionData objectForKey:@"encrypted"] boolValue]];
if([spfSessionData objectForKey:@"include_session"])
[saveConnectionIncludeData setState:[[spfSessionData objectForKey:@"include_session"] boolValue]];
- if([spfSessionData objectForKey:@"save_editor_content"])
+ if([[spfSessionData objectForKey:@"save_editor_content"] boolValue])
[saveConnectionIncludeQuery setState:[[spfSessionData objectForKey:@"save_editor_content"] boolValue]];
+ else
+ [saveConnectionIncludeQuery setState:YES];
// Update accessory button states
[self validateSaveConnectionAccessory:nil];
@@ -4558,86 +4550,6 @@ YY_BUFFER_STATE yy_scan_string (const char *);
#pragma mark Scheme scripting methods
/**
- * Return an HTML formatted string representing the passed SQL string syntax highlighted
- */
-- (NSString*)doSQLSyntaxHighlightForString:(NSString*)sqlText cssLike:(BOOL)cssLike
-{
-
- NSMutableString *sqlHTML = [[[NSMutableString alloc] initWithCapacity:[sqlText length]] autorelease];
-
- NSRange textRange = NSMakeRange(0, [sqlText length]);
- NSString *tokenColor;
- NSString *cssId;
- size_t token;
- NSRange tokenRange;
-
- // initialise flex
- yyuoffset = 0; yyuleng = 0;
- yy_switch_to_buffer(yy_scan_string([sqlText UTF8String]));
- BOOL skipFontTag;
-
- while (token=yylex()){
- skipFontTag = NO;
- switch (token) {
- case SPT_SINGLE_QUOTED_TEXT:
- case SPT_DOUBLE_QUOTED_TEXT:
- tokenColor = @"#A7221C";
- cssId = @"sp_sql_quoted";
- break;
- case SPT_BACKTICK_QUOTED_TEXT:
- tokenColor = @"#001892";
- cssId = @"sp_sql_backtick";
- break;
- case SPT_RESERVED_WORD:
- tokenColor = @"#0041F6";
- cssId = @"sp_sql_keyword";
- break;
- case SPT_NUMERIC:
- tokenColor = @"#67350F";
- cssId = @"sp_sql_numeric";
- break;
- case SPT_COMMENT:
- tokenColor = @"#265C10";
- cssId = @"sp_sql_comment";
- break;
- case SPT_VARIABLE:
- tokenColor = @"#6C6C6C";
- cssId = @"sp_sql_variable";
- break;
- case SPT_WHITESPACE:
- skipFontTag = YES;
- cssId = @"";
- break;
- default:
- skipFontTag = YES;
- cssId = @"";
- }
-
- tokenRange = NSMakeRange(yyuoffset, yyuleng);
-
- if(skipFontTag)
- [sqlHTML appendString:[[sqlText substringWithRange:tokenRange] HTMLEscapeString]];
- else {
- if(cssLike)
- [sqlHTML appendFormat:@"<span class=\"%@\">%@</span>", cssId, [[sqlText substringWithRange:tokenRange] HTMLEscapeString]];
- else
- [sqlHTML appendFormat:@"<font color=%@>%@</font>", tokenColor, [[sqlText substringWithRange:tokenRange] HTMLEscapeString]];
- }
-
- }
-
- // Wrap lines, and replace tabs with spaces
- [sqlHTML replaceOccurrencesOfString:@"\n" withString:@"<br>" options:NSLiteralSearch range:NSMakeRange(0, [sqlHTML length])];
- [sqlHTML replaceOccurrencesOfString:@"\t" withString:@"&nbsp;&nbsp;&nbsp;&nbsp;" options:NSLiteralSearch range:NSMakeRange(0, [sqlHTML length])];
-
- if(sqlHTML)
- return sqlHTML;
- else
- return @"";
-
-}
-
-/**
* Called by handleSchemeCommand: to break a while loop
*/
- (void)setTimeout
@@ -4733,57 +4645,52 @@ YY_BUFFER_STATE yy_scan_string (const char *);
return;
}
- if([command isEqualToString:@"SyntaxHighlighting"]) {
-
- NSFileManager *fm = [NSFileManager defaultManager];
- BOOL isDir;
-
- NSString *queryFileName = [NSString stringWithFormat:@"%@%@", SPURLSchemeQueryInputPathHeader, docProcessID];
- NSString *resultFileName = [NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultPathHeader, docProcessID];
- NSString *metaFileName = [NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultMetaPathHeader, docProcessID];
- NSString *statusFileName = [NSString stringWithFormat:@"%@%@", SPURLSchemeQueryResultStatusPathHeader, docProcessID];
-
- NSError *inError = nil;
- NSString *query = [NSString stringWithContentsOfFile:queryFileName encoding:NSUTF8StringEncoding error:inError];
- NSString *result = @"";
- NSString *status = @"0";
+ // ==== the following commands need an authentication for safety reasons
- if([fm fileExistsAtPath:queryFileName isDirectory:&isDir] && !isDir) {
+ // Authenticate command
+ if(![docProcessID isEqualToString:[commandDict objectForKey:@"id"]]) {
+ SPBeginAlertSheet(NSLocalizedString(@"Remote Error", @"remote error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [self parentWindow], self, nil, nil,
+ NSLocalizedString(@"URL scheme command couldn't authenticated", @"URL scheme command couldn't authenticated"));
+ return;
+ }
- if(inError == nil && query && [query length]) {
- if([params count] > 1) {
- if([[params lastObject] isEqualToString:@"html"])
- result = [NSString stringWithString:[self doSQLSyntaxHighlightForString:query cssLike:NO]];
- else if([[params lastObject] isEqualToString:@"htmlcss"])
- result = [NSString stringWithString:[self doSQLSyntaxHighlightForString:query cssLike:YES]];
+ if([command isEqualToString:@"SetSelectedTextRange"]) {
+ if([params count] > 1) {
+ id firstResponder = [parentWindow firstResponder];
+ if([firstResponder isKindOfClass:[NSTextView class]]) {
+ NSRange theRange = NSIntersectionRange(NSRangeFromString([params objectAtIndex:1]), NSMakeRange(0, [[firstResponder string] length]));
+ if(theRange.location != NSNotFound) {
+ [firstResponder setSelectedRange:theRange];
}
+ return;
}
+ NSBeep();
}
+ return;
+ }
- [fm removeItemAtPath:queryFileName error:nil];
- [fm removeItemAtPath:resultFileName error:nil];
- [fm removeItemAtPath:metaFileName error:nil];
- [fm removeItemAtPath:statusFileName error:nil];
-
- if(![result writeToFile:resultFileName atomically:YES encoding:NSUTF8StringEncoding error:nil])
- status = @"1";
-
- // write status file as notification that query was finished
- BOOL succeed = [status writeToFile:statusFileName atomically:YES encoding:NSUTF8StringEncoding error:nil];
- if(!succeed) {
+ if([command isEqualToString:@"InsertText"]) {
+ if([params count] > 1) {
+ id firstResponder = [parentWindow firstResponder];
+ if([firstResponder isKindOfClass:[NSTextView class]]) {
+ [firstResponder insertText:[params objectAtIndex:1]];
+ return;
+ }
NSBeep();
- SPBeginAlertSheet(NSLocalizedString(@"BASH Error", @"bash error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [self parentWindow], self, nil, nil,
- NSLocalizedString(@"Status file for sequelpro url scheme command couldn't be written!", @"status file for sequelpro url scheme command couldn't be written error message"));
}
return;
}
- // ==== the following commands need an authentication for safety reasons
-
- // Authenticate command
- if(![docProcessID isEqualToString:[commandDict objectForKey:@"id"]]) {
- SPBeginAlertSheet(NSLocalizedString(@"Remote Error", @"remote error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [self parentWindow], self, nil, nil,
- NSLocalizedString(@"URL scheme command couldn't authenticated", @"URL scheme command couldn't authenticated"));
+ if([command isEqualToString:@"SetText"]) {
+ if([params count] > 1) {
+ id firstResponder = [parentWindow firstResponder];
+ if([firstResponder isKindOfClass:[NSTextView class]]) {
+ [firstResponder setSelectedRange:NSMakeRange(0, [[firstResponder string] length])];
+ [firstResponder insertText:[params objectAtIndex:1]];
+ return;
+ }
+ NSBeep();
+ }
return;
}
@@ -5141,17 +5048,50 @@ YY_BUFFER_STATE yy_scan_string (const char *);
{
[runningActivitiesArray addObject:commandDict];
[[NSNotificationCenter defaultCenter] postNotificationOnMainThreadWithName:SPActivitiesUpdateNotification object:nil];
+
+ if([runningActivitiesArray count] || [[[NSApp delegate] runningActivities] count])
+ [self performSelector:@selector(setActivityPaneHidden:) withObject:[NSNumber numberWithInteger:0] afterDelay:1.0];
+ else {
+ [NSObject cancelPreviousPerformRequestsWithTarget:self
+ selector:@selector(setActivityPaneHidden:)
+ object:[NSNumber numberWithInteger:0]];
+ [self setActivityPaneHidden:[NSNumber numberWithInteger:1]];
+ }
+
}
- (void)removeRegisteredActivity:(NSInteger)pid
{
+
for(id cmd in runningActivitiesArray) {
if([[cmd objectForKey:@"pid"] integerValue] == pid) {
[runningActivitiesArray removeObject:cmd];
break;
}
}
+
+ if([runningActivitiesArray count] || [[[NSApp delegate] runningActivities] count])
+ [self performSelector:@selector(setActivityPaneHidden:) withObject:[NSNumber numberWithInteger:0] afterDelay:1.0];
+ else {
+ [NSObject cancelPreviousPerformRequestsWithTarget:self
+ selector:@selector(setActivityPaneHidden:)
+ object:[NSNumber numberWithInteger:0]];
+ [self setActivityPaneHidden:[NSNumber numberWithInteger:1]];
+ }
+
[[NSNotificationCenter defaultCenter] postNotificationOnMainThreadWithName:SPActivitiesUpdateNotification object:nil];
+
+}
+
+- (void)setActivityPaneHidden:(NSNumber*)hide
+{
+ if(![hide integerValue] == 1) {
+ [tableInfoScrollView setHidden:YES];
+ [activitiesScrollView setHidden:NO];
+ } else {
+ [activitiesScrollView setHidden:YES];
+ [tableInfoScrollView setHidden:NO];
+ }
}
- (NSArray*)runningActivities
diff --git a/Source/SPEditorTokens.l b/Source/SPEditorTokens.l
index a5726cce..7b19804a 100644
--- a/Source/SPEditorTokens.l
+++ b/Source/SPEditorTokens.l
@@ -56,9 +56,9 @@ ops "+"|"-"|"*"|"/"
word [a-z_\.0-9À-゚@]
variable @{1,2}[a-z_\.0-9À-゚$]+
nonword [^a-z_0-9À-゚#\n\t\r]
-keyworda (G(R(OUP{s}BY|ANT(S)?)|E(T_FORMAT|OMETRY(COLLECTION)?)|LOBAL)|B(Y(TE)?|TREE|I(GINT|N(LOG|ARY)|T)|O(TH|OL(EAN)?)|E(GIN|TWEEN|FORE)|LOB|ACKUP{s}TABLE)|H(IGH_PRIORITY|O(STS|UR(_(MI(NUTE|CROSECOND)|SECOND))?)|ELP|A(SH|NDLER|VING))|C(R(OSS|EATE)|H(ECK(SUM)?|A(R(SET|ACTER)?|NGE(D)?|IN))|IPHER|O(M(M(IT(TED)?|ENT)|P(RESSED|LETION|ACT))|N(S(TRAINT|ISTENT)|NECTION|CURRENT|T(RIBUTORS|INUE|AINS)|DITION|VERT)|DE|L(UMN(_FORMAT)?|LATE)|ALESCE{s}PARTITION)|U(R(RENT_(TIME(STAMP)?|DATE|USER)|SOR)|BE)|L(IENT|OSE)|A(S(CADE(D)?|E)|CHE{s}INDEX|LL))|I(GNORE|MPORT{s}TABLESPACE|S(SUER|OLATION)?|N(S(TALL({s}PLUGIN)?|E(RT(_METHOD)?|NSITIVE))|N(O(BASE|DB)|ER)|T(1|2|8|3|O({s}(DUMP|OUT)FILE)?|4|E(RVAL|GER))?|ITIAL_SIZE|OUT|DEX(ES)?|VOKER|FILE)?|TERATE|O_THREAD|DENTIFIED|F)|D(ROP|YNAMIC|I(RECTORY|S(CARD{s}TABLESPACE|TINCT(ROW)?|K|ABLE{s}KEYS)|V)|O(UBLE)?|U(MPFILE|PLICATE|AL)|E(S(C(RIBE)?|_KEY_FILE)|C(IMAL|LARE)?|TERMINISTIC|F(INER|AULT)|L(ETE|AY(_KEY_WRITE|ED))|ALLOCATE)|A(Y(_(MI(NUTE|CROSECOND)|SECOND|HOUR))?|T(E(TIME)?|A(BASE(S)?|FILE)?)))|JOIN|E(RRORS|X(TEN(T_SIZE|DED)|I(STS|T)|P(LAIN|ANSION)|ECUTE)|SCAPE(D{s}BY)?|N(GINE(S)?|CLOSED{s}BY|D(S)?|UM|ABLE{s}KEYS)|VE(RY|NT)|LSE(IF)?|ACH)|K(ILL({s}(CONNECTION|QUERY))?|EY(S|_BLOCK_SIZE)?)|F(R(OM|AC_SECOND)|I(RST|XED|LE)|O(R(CE|EIGN)?|UND)|U(NCTION|LL(TEXT)?)|ETCH|L(OAT(8|4)?|USH)|A(ST|LSE))|A(G(GREGATE|AINST)|S(C(II)?|ENSITIVE)?|N(Y|D|ALYZE)|C(CESSIBLE|TION)|T|DD|UT(HORS|O(_INCREMENT|EXTEND_SIZE))|VG(_ROW_LENGTH)?|FTER|L(GORITHM|TER|L)))
-keywordl (R(TREE|IGHT|O(UTINE|W(S|_FORMAT)?|LL(BACK|UP))|E(GEXP|MOVE{s}PARTITIONING|BUILD{s}PARTITION|S(T(RICT|ORE{s}TABLE)|UME|ET)|NAME|COVER|TURN(S)?|ORGANIZE{s}PARTITION|D(O(_BUFFER_SIZE|FILE)|UNDANT)|P(EAT(ABLE)?|L(ICATION|ACE)|AIR)|VOKE|QUIRE|FERENCES|L(OAD|EASE|AY_(THREAD|LOG_(POS|FILE)))|A(D(S|_(ONLY|WRITE))?|L))|LIKE|ANGE)|M(I(GRATE|N(_ROWS|UTE(_(MICROSECOND|SECOND))?)|CROSECOND|DDLEINT)|O(NTH|D(IF(Y|IES)|E)?)|U(TEX|LTI(PO(INT|LYGON)|LINESTRING))|E(RGE|MORY|DIUM(BLOB|TEXT|INT)?)|A(X(_(ROWS|SIZE|CONNECTIONS_PER_HOUR|U(SER_CONNECTIONS|PDATES_PER_HOUR)|QUERIES_PER_HOUR)|VALUE)|STER(_(S(SL(_(C(IPHER|ERT|A(PATH)?)|VERIFY_SERVER_CERT|KEY))?|ERVER_ID)|HOST|CONNECT_RETRY|USER|P(ORT|ASSWORD)|LOG_(POS|FILE)))?|TCH))|N(CHAR|O(NE|_W(RITE_TO_BINLOG|AIT)|T|DEGROUP)?|DB(CLUSTER)?|U(MERIC|LL)|E(XT|W)|VARCHAR|A(ME(S)?|T(IONAL|URAL)))|O(R(DER{s}BY)?|N({s}(DUPLICATE{s}KEY{s}UPDATE)?|E(_SHOT)?|LINE)|UT(ER|FILE)?|P(TI(MIZE|ON(S|ALLY)?)|EN)|FF(SET|LINE)|LD_PASSWORD)|P(R(I(MARY|VILEGES)|OCE(SS|DURE{s}(ANALYSE)?)|E(SERVE|CISION|PARE|V))|HASE|O(INT|LYGON)|URGE|A(R(SER|TI(TION(S|ING)?|AL))|SSWORD|CK_KEYS))|QU(ICK|ERY|ARTER)|L(I(MIT|ST|NE(S(TRING)?|AR)|KE)|O(G(S|FILE({s}GROUP))|NG(BLOB|TEXT)?|C(K(S)?|AL(TIME(STAMP)?)?)|OP|W_PRIORITY|AD{s}(DATA|INDEX{s}INTO{s}CACHE|XML))|E(SS|VEL|FT|A(DING|VE(S)?))|A(ST|NGUAGE)))
-keywords (X(OR|509|A)|S(MALLINT|SL|H(OW({s}(E(NGINE(S)?|RRORS)|M(ASTER|UTEX)|BINLOG|GRANTS|INNODB|P(RIVILEGES|ROFILE(S)?|ROCEDURE{s}CODE)|SLAVE{s}(HOSTS|STATUS)|TRIGGERS|VARIABLES|WARNINGS|(FULL{s})?PROCESSLIST|FIELDS|PLUGIN(S)?|STORAGE{s}ENGINES|TABLE{s}TYPES|CO(LUMNS|LLATION)|BINLOG{s}EVENTS))?|UTDOWN|ARE)|NAPSHOT|CHE(MA(S)?|DULE(R)?)|T(R(ING|AIGHT_JOIN)|O(RAGE|P)|A(RT(S|ING{s}BY)?|TUS))|I(GNED|MPLE)|O(ME|NAME|UNDS)|U(B(JECT|PARTITION(S)?)|SPEND|PER)|P(ECIFIC|ATIAL)|E(RIAL(IZABLE)?|SSION|NSITIVE|C(OND(_MICROSECOND)?|URITY)|T({s}(PASSWORD|NAMES|ONE_SHOT))?|PARATOR|LECT)|QL(STATE|_(MAX_JOIN_SIZE|B(IG_(RESULT|SELECTS|TABLES)|UFFER_RESULT)|S(MALL_RESULT|ELECT_LIMIT|LAVE_SKIP_COUNTER|AFE_UPDATES)|NO_CACHE|CA(CHE|LC_FOUND_ROWS)|T(SI_(M(INUTE|ONTH)|SECOND|HOUR|YEAR|DAY|QUARTER|FRAC_SECOND|WEEK)|HREAD)|QUOTE_SHOW_CREATE|WARNINGS|LO(G_(BIN|OFF|UPDATE)|W_PRIORITY_UPDATES)|AUTO_IS_NULL)|EXCEPTION|WARNING)?|LAVE|AVEPOINT)|YEAR(_MONTH)?|T(R(IGGER(S)?|U(NCATE|E)|A(NSACTION|ILING))|H(EN|AN)|YPE|I(ME(STAMP(DIFF|ADD)?)?|NY(BLOB|TEXT|INT))|O|E(RMINATED{s}BY|XT|MP(TABLE|ORARY))|ABLE(S(PACE)?)?)|ZEROFILL|U(S(ING|E(R(_RESOURCES)?|_FRM)?|AGE)|N(SIGNED|COMMITTED|TIL|I(NSTALL({s}PLUGIN)?|CODE|ON|QUE)|D(O(_BUFFER_SIZE|FILE)?|EFINED)|KNOWN|LOCK)|TC_(TIME(STAMP)?|DATE)|P(GRADE|DATE))|V(IEW|A(R(BINARY|YING|CHAR(ACTER)?|IABLES)|LUE(S)?))|W(RITE|H(ILE|E(RE|N))|ITH({s}PARSER)?|ORK|EEK|A(RNINGS|IT)))
+keyworda (G(R(OUP{s}BY|ANT(S)?)|E(NERAL|T_FORMAT|OMETRY(COLLECTION)?)|LOBAL)|B(Y(TE)?|TREE|I(GINT|N(LOG|ARY)|T)|O(TH|OL(EAN)?)|E(GIN|TWEEN|FORE)|LOB|ACKUP{s}TABLE)|H(IGH_PRIORITY|O(ST(S)?|UR(_(MI(NUTE|CROSECOND)|SECOND))?)|ELP|A(SH|NDLER|VING))|C(R(OSS|EATE)|H(ECK(SUM)?|A(R(SET|ACTER)?|NGE(D)?|IN))|IPHER|O(M(M(IT(TED)?|ENT)|P(RESSED|LETION|ACT))|N(S(TRAINT(_(SCHEMA|NAME|CATALOG))?|ISTENT)|NECTION|CURRENT|T(RIBUTORS|INUE|AINS)|DITION|VERT)|DE|L(UMN(S|_(NAME|FORMAT))?|LATE)|ALESCE{s}PARTITION)|U(R(RENT_(TIME(STAMP)?|DATE|USER)|SOR(_NAME)?)|BE)|L(IENT|OSE|ASS_ORIGIN)|A(S(CADE(D)?|E)|CHE{s}INDEX|TALOG_NAME|LL))|I(GNORE(_SERVER_IDS)?|MPORT{s}TABLESPACE|S(SUER|OLATION)?|N(S(TALL({s}PLUGIN)?|E(RT(_METHOD)?|NSITIVE))|N(O(BASE|DB)|ER)|T(1|2|8|3|O({s}(DUMP|OUT)FILE)?|4|E(RVAL|GER))?|ITIAL_SIZE|OUT|DEX(ES)?|VOKER|FILE)?|TERATE|O_THREAD|DENTIFIED|F)|D(ROP|YNAMIC|I(RECTORY|S(CARD{s}TABLESPACE|TINCT(ROW)?|K|ABLE{s}KEYS)|V)|O(UBLE)?|U(MPFILE|PLICATE|AL)|E(S(C(RIBE)?|_KEY_FILE)|C(IMAL|LARE)?|TERMINISTIC|F(INER|AULT)|L(ETE|AY(_KEY_WRITE|ED))|ALLOCATE)|A(Y(_(MI(NUTE|CROSECOND)|SECOND|HOUR))?|T(E(TIME)?|A(BASE(S)?|FILE)?)))|JOIN|E(RRORS|X(TEN(T_SIZE|DED)|I(STS|T)|P(LAIN|ANSION)|ECUTE)|SCAPE(D{s}BY)?|N(GINE(S)?|CLOSED{s}BY|D(S)?|UM|ABLE{s}KEYS)|VE(RY|NT)|LSE(IF)?|ACH)|K(ILL({s}(CONNECTION|QUERY))?|EY(S|_BLOCK_SIZE)?)|F(R(OM|AC_SECOND)|I(RST|XED|LE)|O(R(CE|EIGN)?|UND)|U(NCTION|LL(TEXT)?)|ETCH|L(OAT(8|4)?|USH)|A(ST|LSE))|A(G(GREGATE|AINST)|S(C(II)?|ENSITIVE)?|N(Y|D|ALYZE)|C(CESSIBLE|TION)|T|DD|UT(HORS|O(_INCREMENT|EXTEND_SIZE))|VG(_ROW_LENGTH)?|FTER|L(GORITHM|TER|L)))
+keywordl (R(TREE|IGHT|O(UTINE|W(S|_FORMAT)?|LL(BACK|UP))|E(GEXP|MOVE{s}PARTITIONING|BUILD{s}PARTITION|S(T(RICT|ORE{s}TABLE)|IGNAL|UME|ET)|NAME|COVER|TURN(S)?|ORGANIZE{s}PARTITION|D(O(_BUFFER_SIZE|FILE)|UNDANT)|P(EAT(ABLE)?|L(ICATION|ACE)|AIR)|VOKE|QUIRE|FERENCES|L(OAD|EASE|AY_(THREAD|LOG_(POS|FILE)))|A(D(S|_(ONLY|WRITE))?|L))|LIKE|ANGE)|M(YSQL_ERRNO|I(GRATE|N(_ROWS|UTE(_(MICROSECOND|SECOND))?)|CROSECOND|DDLEINT)|O(NTH|D(IF(Y|IES)|E)?)|U(TEX|LTI(PO(INT|LYGON)|LINESTRING))|E(RGE|MORY|SSAGE_TEXT|DIUM(BLOB|TEXT|INT)?)|A(X(_(ROWS|SIZE|CONNECTIONS_PER_HOUR|U(SER_CONNECTIONS|PDATES_PER_HOUR)|QUERIES_PER_HOUR)|VALUE)|STER(_(S(SL(_(C(IPHER|ERT|A(PATH)?)|VERIFY_SERVER_CERT|KEY))?|ERVER_ID)|H(OST|EARTBEAT_PERIOD)|CONNECT_RETRY|USER|P(ORT|ASSWORD)|LOG_(POS|FILE)))?|TCH))|N(CHAR|O(NE|_W(RITE_TO_BINLOG|AIT)|T|DEGROUP)?|DB(CLUSTER)?|U(MERIC|LL)|E(XT|W)|VARCHAR|A(ME(S)?|T(IONAL|URAL)))|O(R(DER{s}BY)?|N({s}(DUPLICATE{s}KEY{s}UPDATE)?|E(_SHOT)?|LINE)|UT(ER|FILE)?|P(TI(MIZE|ON(S|ALLY)?)|EN)|FF(SET|LINE)|WNER|LD_PASSWORD)|P(R(I(MARY|VILEGES)|OCE(SS|DURE{s}(ANALYSE)?)|E(SERVE|CISION|PARE|V))|HASE|O(RT|INT|LYGON)|URGE|A(R(SER|TI(TION(S|ING)?|AL))|SSWORD|CK_KEYS))|QU(ICK|ERY|ARTER)|L(I(MIT|ST|NE(S(TRING)?|AR)|KE)|O(G(S|FILE({s}GROUP))|NG(BLOB|TEXT)?|C(K(S)?|AL(TIME(STAMP)?)?)|OP|W_PRIORITY|AD{s}(DATA|INDEX{s}INTO{s}CACHE|XML))|E(SS|VEL|FT|A(DING|VE(S)?))|A(ST|NGUAGE)))
+keywords (X(OR|509|A)|S(MALLINT|SL|H(OW({s}(E(NGINE(S)?|RRORS)|M(ASTER|UTEX)|BINLOG|GRANTS|INNODB|P(RIVILEGES|ROFILE(S)?|ROCEDURE{s}CODE)|SLAVE{s}(HOSTS|STATUS)|TRIGGERS|VARIABLES|WARNINGS|(FULL{s})?PROCESSLIST|FIELDS|PLUGIN(S)?|STORAGE{s}ENGINES|TABLE{s}TYPES|CO(LUMNS|LLATION)|BINLOG{s}EVENTS))?|UTDOWN|ARE)|NAPSHOT|CHE(MA(S|_NAME)?|DULE(R)?)|T(R(ING|AIGHT_JOIN)|O(RAGE|P)|A(RT(S|ING{s}BY)?|TUS))|I(GN(ED|AL)|MPLE)|O(ME|NAME|CKET|UNDS)|U(B(CLASS_ORIGIN|JECT|PARTITION(S)?)|SPEND|PER)|P(ECIFIC|ATIAL)|E(R(IAL(IZABLE)?|VER)|SSION|NSITIVE|C(OND(_MICROSECOND)?|URITY)|T({s}(PASSWORD|NAMES|ONE_SHOT))?|PARATOR|LECT)|QL(STATE|_(MAX_JOIN_SIZE|B(IG_(RESULT|SELECTS|TABLES)|UFFER_RESULT)|S(MALL_RESULT|ELECT_LIMIT|LAVE_SKIP_COUNTER|AFE_UPDATES)|NO_CACHE|CA(CHE|LC_FOUND_ROWS)|T(SI_(M(INUTE|ONTH)|SECOND|HOUR|YEAR|DAY|QUARTER|FRAC_SECOND|WEEK)|HREAD)|QUOTE_SHOW_CREATE|WARNINGS|LO(G_(BIN|OFF|UPDATE)|W_PRIORITY_UPDATES)|AUTO_IS_NULL)|EXCEPTION|WARNING)?|L(OW|AVE)|AVEPOINT)|YEAR(_MONTH)?|T(R(IGGER(S)?|U(NCATE|E)|A(NSACTION|ILING))|H(EN|AN)|YPE|I(ME(STAMP(DIFF|ADD)?)?|NY(BLOB|TEXT|INT))|O|E(RMINATED{s}BY|XT|MP(TABLE|ORARY))|ABLE(S(PACE)?|_NAME)?)|ZEROFILL|U(S(ING|E(R(_RESOURCES)?|_FRM)?|AGE)|N(SIGNED|COMMITTED|TIL|I(NSTALL({s}PLUGIN)?|CODE|ON|QUE)|D(O(_BUFFER_SIZE|FILE)?|EFINED)|KNOWN|LOCK)|TC_(TIME(STAMP)?|DATE)|P(GRADE|DATE))|V(IEW|A(R(BINARY|YING|CHAR(ACTER)?|IABLES)|LUE(S)?))|W(R(ITE|APPER)|H(ILE|E(RE|N))|ITH({s}PARSER)?|ORK|EEK|A(RNINGS|IT)))
%x comment
@@ -87,6 +87,7 @@ keywords (X(OR|509|A)|S(MALLINT|SL|H(OW({s}(E(NGINE(S)?|RRORS)|M(ASTER|UTEX)|BIN
*/
#[^\n\r]*(\n|\r)? | /* # Comments */
+--[\n\r] { return SPT_COMMENT; } /* -- */
--[ \t][^\n\r]*(\n|\r)? { return SPT_COMMENT; } /* -- Comments */
{variable}/{ops} { BEGIN(varequation); return SPT_VARIABLE; }/* SQL variables before operator*/
@@ -216,6 +217,7 @@ CALL
CASCADE
CASCADED
CASE
+CATALOG_NAME
CHAIN
CHANGE
CHANGED
@@ -225,6 +227,7 @@ CHARSET
CHECK
CHECKSUM
CIPHER
+CLASS_ORIGIN
CLIENT
CLOSE
COALESCE{s}PARTITION
@@ -232,6 +235,8 @@ CODE
COLLATE
COLUMN
COLUMN_FORMAT
+COLUMN_NAME
+COLUMNS
COMMENT
COMMIT
COMMITTED
@@ -243,6 +248,9 @@ CONDITION
CONNECTION
CONSISTENT
CONSTRAINT
+CONSTRAINT_CATALOG
+CONSTRAINT_NAME
+CONSTRAINT_SCHEMA
CONTAINS
CONTINUE
CONTRIBUTORS
@@ -255,6 +263,7 @@ CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_USER
CURSOR
+CURSOR_NAME
DATA
DATABASE
DATABASES
@@ -334,6 +343,7 @@ FROM
FULL
FULLTEXT
FUNCTION
+GENERAL
GEOMETRY
GEOMETRYCOLLECTION
GET_FORMAT
@@ -346,6 +356,7 @@ HASH
HAVING
HELP
HIGH_PRIORITY
+HOST
HOSTS
HOUR
HOUR_MICROSECOND
@@ -354,6 +365,7 @@ HOUR_SECOND
IDENTIFIED
IF
IGNORE
+IGNORE_SERVER_IDS
IMPORT{s}TABLESPACE
IN
INDEX
@@ -417,6 +429,7 @@ LOOP
LOW_PRIORITY
MASTER
MASTER_CONNECT_RETRY
+MASTER_HEARTBEAT_PERIOD
MASTER_HOST
MASTER_LOG_FILE
MASTER_LOG_POS
@@ -445,6 +458,7 @@ MEDIUMINT
MEDIUMTEXT
MEMORY
MERGE
+MESSAGE_TEXT
MICROSECOND
MIDDLEINT
MIGRATE
@@ -461,6 +475,7 @@ MULTILINESTRING
MULTIPOINT
MULTIPOLYGON
MUTEX
+MYSQL_ERRNO
NAME
NAMES
NATIONAL
@@ -489,13 +504,14 @@ ON{s}(DUPLICATE{s}KEY{s}UPDATE)?
OPEN
OPTIMIZE
OPTION
-OPTIONS
OPTIONALLY
+OPTIONS
OR
ORDER{s}BY
OUT
OUTER
OUTFILE
+OWNER
PACK_KEYS
PARSER
PARTIAL
@@ -506,6 +522,7 @@ PASSWORD
PHASE
POINT
POLYGON
+PORT
PRECISION
PREPARE
PRESERVE
@@ -546,6 +563,7 @@ REPLACE
REPLICATION
REQUIRE
RESET
+RESIGNAL
RESTORE{s}TABLE
RESTRICT
RESUME
@@ -566,6 +584,7 @@ SCHEDULE
SCHEDULER
SCHEMA
SCHEMAS
+SCHEMA_NAME
SECOND
SECOND_MICROSECOND
SECURITY
@@ -574,16 +593,20 @@ SENSITIVE
SEPARATOR
SERIAL
SERIALIZABLE
+SERVER
SESSION
SET({s}(PASSWORD|NAMES|ONE_SHOT))?
SHARE
SHOW({s}(E(NGINE(S)?|RRORS)|M(ASTER|UTEX)|BINLOG|GRANTS|INNODB|P(RIVILEGES|ROFILE(S)?|ROCEDURE{s}CODE)|SLAVE{s}(HOSTS|STATUS)|TRIGGERS|VARIABLES|WARNINGS|(FULL{s})?PROCESSLIST|FIELDS|PLUGIN(S)?|STORAGE{s}ENGINES|TABLE{s}TYPES|CO(LUMNS|LLATION)|BINLOG{s}EVENTS))?
SHUTDOWN
+SIGNAL
SIGNED
SIMPLE
SLAVE
+SLOW
SMALLINT
SNAPSHOT
+SOCKET
SOME
SONAME
SOUNDS
@@ -631,6 +654,7 @@ STOP
STORAGE
STRAIGHT_JOIN
STRING
+SUBCLASS_ORIGIN
SUBJECT
SUBPARTITION
SUBPARTITIONS
@@ -639,6 +663,7 @@ SUSPEND
TABLE
TABLES
TABLESPACE
+TABLE_NAME
TEMPORARY
TEMPTABLE
TERMINATED{s}BY
@@ -700,6 +725,7 @@ WHERE
WHILE
WITH({s}PARSER)?
WORK
+WRAPPER
WRITE
X509
XA
diff --git a/Source/SPExportController.m b/Source/SPExportController.m
index 1d70f88f..9081b942 100644
--- a/Source/SPExportController.m
+++ b/Source/SPExportController.m
@@ -282,10 +282,12 @@ static const NSString *SPTableViewDropColumnID = @"drop";
// Close the advanced options view if it's open
[exportAdvancedOptionsView setHidden:YES];
[exportAdvancedOptionsViewButton setState:NSOffState];
+ showAdvancedView = NO;
// Close the customize filename view if it's open
[exportCustomFilenameView setHidden:YES];
[exportCustomFilenameViewButton setState:NSOffState];
+ showCustomFilenameView = NO;
// If open close the advanced options view and custom filename view
[self _resizeWindowForAdvancedOptionsViewByHeightDelta:0];
diff --git a/Source/SPExtendedTableInfo.m b/Source/SPExtendedTableInfo.m
index a765f6df..6f039659 100644
--- a/Source/SPExtendedTableInfo.m
+++ b/Source/SPExtendedTableInfo.m
@@ -98,7 +98,7 @@
}
// Alter table's storage type
- [connection queryString:[NSString stringWithFormat:@"ALTER TABLE %@ TYPE = %@", [selectedTable backtickQuotedString], newType]];
+ [connection queryString:[NSString stringWithFormat:@"ALTER TABLE %@ %@ = %@", [selectedTable backtickQuotedString], [[tableDocumentInstance serverSupport] engineTypeQueryName], newType]];
if ([connection getLastErrorID] == 0) {
// Reload the table's data
diff --git a/Source/SPFieldEditorController.m b/Source/SPFieldEditorController.m
index 2e761f80..5075ffaf 100644
--- a/Source/SPFieldEditorController.m
+++ b/Source/SPFieldEditorController.m
@@ -917,7 +917,10 @@
*/
- (id)previewPanel:(id)panel previewItemAtIndex:(NSInteger)index
{
- return [NSURL fileURLWithPath:tmpFileName];
+ if(tmpFileName)
+ return [NSURL fileURLWithPath:tmpFileName];
+
+ return nil;
}
/**
diff --git a/Source/SPHistoryController.m b/Source/SPHistoryController.m
index 3fb0e100..107c24cb 100644
--- a/Source/SPHistoryController.m
+++ b/Source/SPHistoryController.m
@@ -269,6 +269,7 @@
NSIndexSet *contentSelectedIndexSet = [tableContentInstance selectedRowIndexes];
NSRect contentViewport = [tableContentInstance viewport];
NSDictionary *contentFilter = [tableContentInstance filterSettings];
+ NSData *filterTableData = [tableContentInstance filterTableData];
if (!theDatabase) return;
// If a table is selected, save state information
@@ -283,6 +284,7 @@
if (contentSortCol) [contentState setObject:contentSortCol forKey:@"sortCol"];
if (contentSelectedIndexSet) [contentState setObject:contentSelectedIndexSet forKey:@"selection"];
if (contentFilter) [contentState setObject:contentFilter forKey:@"filter"];
+ if (filterTableData) [contentState setObject:filterTableData forKey:@"filterTable"];
// Update the table content states with this information - used when switching tables to restore last used view.
[tableContentStates setObject:contentState forKey:[NSString stringWithFormat:@"%@.%@", [theDatabase backtickQuotedString], [theTable backtickQuotedString]]];
diff --git a/Source/SPIndexesController.m b/Source/SPIndexesController.m
index 27b4471d..49ac8594 100644
--- a/Source/SPIndexesController.m
+++ b/Source/SPIndexesController.m
@@ -39,7 +39,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
- (void)_reloadIndexedColumnsTableData;
- (void)_addIndexUsingDetails:(NSDictionary *)indexDetails;
-- (void)_removeIndexUsingDeatails:(NSDictionary *)indexDetails;
+- (void)_removeIndexUsingDetails:(NSDictionary *)indexDetails;
- (void)_resizeWindowForAdvancedOptionsViewByHeightDelta:(NSInteger)delta;
@@ -122,18 +122,26 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
// Check whether a save of the current field row is required.
if (![tableStructure saveRowOnDeselect]) return;
- [indexTypePopUpButton insertItemWithTitle:@"PRIMARY KEY" atIndex:0];
+ // Reset visibility of the primary key item
+ [[[indexTypePopUpButton menu] itemWithTag:SPPrimaryKeyMenuTag] setHidden:NO];
// Set sheet defaults - key type PRIMARY, key name PRIMARY and disabled
- [indexTypePopUpButton selectItemAtIndex:0];
+ [indexTypePopUpButton selectItemWithTag:SPPrimaryKeyMenuTag];
[indexNameTextField setEnabled:NO];
[indexNameTextField setStringValue:@"PRIMARY"];
-
- // If the table is of type MyISAM and Spatial extension support is available, add the SPATIAL type
+
+ // Remove any existing SPATIAL menu item
+ if ([indexTypePopUpButton indexOfItemWithTag:SPSpatialMenuTag] != -1)
+ [indexTypePopUpButton removeItemAtIndex:[indexTypePopUpButton indexOfItemWithTag:SPSpatialMenuTag]];
+
+ // If the table is of type MyISAM and Spatial extension support is available, (re-)add the SPATIAL type
NSString *engine = [[tableData statusValues] objectForKey:@"Engine"];
if ([engine isEqualToString:@"MyISAM"] && [[dbDocument serverSupport] supportsSpatialExtensions]) {
- [indexTypePopUpButton addItemWithTitle:@"SPATIAL"];
+ NSMenuItem *spatialMenuItem = [[[NSMenuItem alloc] init] autorelease];
+ [spatialMenuItem setTitle:NSLocalizedString(@"SPATIAL", @"Spatial index menu item title")];
+ [spatialMenuItem setTag:SPSpatialMenuTag];
+ [[indexTypePopUpButton menu] addItem:spatialMenuItem];
}
// Check to see whether a primary key already exists for the table, and if so select INDEX instead
@@ -156,11 +164,11 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
if (isPrimaryKey || hasCompositePrimaryKey) {
- // Remove primary key option
- [indexTypePopUpButton removeItemAtIndex:0];
+ // Hide primary key option
+ [[[indexTypePopUpButton menu] itemWithTag:SPPrimaryKeyMenuTag] setHidden:YES];
// Select INDEX type
- [indexTypePopUpButton selectItemAtIndex:0];
+ [indexTypePopUpButton selectItemWithTag:SPIndexMenuTag];
[indexNameTextField setEnabled:YES];
[indexNameTextField setStringValue:@""];
@@ -188,8 +196,11 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
break;
}
}
+
+ // If no initial field has been selected yet - all fields are indexed - add the first field.
+ if (!initialField) initialField = [fields objectAtIndex:0];
- if (initialField) [indexedFieldNames release], initialField = nil;
+ if (indexedFieldNames) [indexedFieldNames release], indexedFieldNames = nil;
// Reset the indexed columns
[indexedFields removeAllObjects];
@@ -275,11 +286,12 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
*/
- (IBAction)chooseIndexType:(id)sender
{
- NSString *indexType = [indexTypePopUpButton titleOfSelectedItem];
+ NSInteger *indexType = [[indexTypePopUpButton selectedItem] tag];
- if ([indexType isEqualToString:@"PRIMARY KEY"] ) {
+ if (indexType == SPPrimaryKeyMenuTag) {
[indexNameTextField setEnabled:NO];
[indexNameTextField setStringValue:@"PRIMARY"];
+ [indexStorageTypePopUpButton setEnabled:NO];
}
else {
[indexNameTextField setEnabled:YES];
@@ -289,7 +301,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
}
// Specifiying an index storage type (i.e. HASH or BTREE) is not permitted with SPATIAL indexes
- [indexStorageTypePopUpButton setEnabled:(![indexType isEqualToString:@"SPATIAL"])];
+ [indexStorageTypePopUpButton setEnabled:(indexType != SPSpatialMenuTag)];
}
}
@@ -301,6 +313,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
// Close the advanced options view if it's open
[indexAdvancedOptionsView setHidden:YES];
[indexAdvancedOptionsViewButton setState:NSOffState];
+ showAdvancedView = NO;
// Hide the size column
[indexSizeTableColumn setHidden:YES];
@@ -532,14 +545,30 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
[indexDetails setObject:indexedFields forKey:SPNewIndexIndexedColumns];
[indexDetails setObject:[indexNameTextField stringValue] forKey:SPNewIndexIndexName];
- [indexDetails setObject:[indexTypePopUpButton titleOfSelectedItem] forKey:SPNewIndexIndexType];
+ switch ([[indexTypePopUpButton selectedItem] tag]) {
+ case SPPrimaryKeyMenuTag:
+ [indexDetails setObject:@"PRIMARY KEY" forKey:SPNewIndexIndexType];
+ break;
+ case SPIndexMenuTag:
+ [indexDetails setObject:@"INDEX" forKey:SPNewIndexIndexType];
+ break;
+ case SPUniqueMenuTag:
+ [indexDetails setObject:@"UNIQUE" forKey:SPNewIndexIndexType];
+ break;
+ case SPFullTextMenuTag:
+ [indexDetails setObject:@"FULLTEXT" forKey:SPNewIndexIndexType];
+ break;
+ case SPSpatialMenuTag:
+ [indexDetails setObject:@"SPATIAL" forKey:SPNewIndexIndexType];
+ break;
+ }
// If there is a key block size set it means the database version supports it
if ([[indexKeyBlockSizeTextField stringValue] length]) {
[indexDetails setObject:[NSNumber numberWithInteger:[indexKeyBlockSizeTextField integerValue]] forKey:SPNewIndexKeyBlockSize];
}
- if (([indexStorageTypePopUpButton indexOfSelectedItem] > 0) && (![[indexTypePopUpButton titleOfSelectedItem] isEqualToString:@"SPATIAL"])) {
+ if (([indexStorageTypePopUpButton indexOfSelectedItem] > 0) && ([[indexTypePopUpButton selectedItem] tag] != SPSpatialMenuTag)) {
[indexDetails setObject:[indexStorageTypePopUpButton titleOfSelectedItem] forKey:SPNewIndexStorageType];
}
@@ -572,12 +601,12 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
[indexDetails setObject:[NSNumber numberWithBool:[contextInfo hasSuffix:@"AndForeignKey"]] forKey:@"RemoveForeignKey"];
if ([NSThread isMainThread]) {
- [NSThread detachNewThreadSelector:@selector(_removeIndexUsingDeatails:) toTarget:self withObject:indexDetails];
+ [NSThread detachNewThreadSelector:@selector(_removeIndexUsingDetails:) toTarget:self withObject:indexDetails];
[dbDocument enableTaskCancellationWithTitle:NSLocalizedString(@"Cancel", @"cancel button") callbackObject:self callbackFunction:NULL];
}
else {
- [self _removeIndexUsingDeatails:indexDetails];
+ [self _removeIndexUsingDetails:indexDetails];
}
}
}
@@ -729,14 +758,14 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
[query appendString:indexName];
}
- // Add the columns
- [query appendFormat:@" (%@)", [tempIndexedColumns componentsJoinedByCommas]];
-
// If supplied specify the index's storage type
if (indexStorageType) {
[query appendString:@" USING "];
[query appendString:indexStorageType];
}
+
+ // Add the columns
+ [query appendFormat:@" (%@)", [tempIndexedColumns componentsJoinedByCommas]];
// If supplied specify the index's key block size
if (indexKeyBlockSize) {
@@ -776,7 +805,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
*
* @param indexDetails A dictionary containing the details of the index to be removed
*/
-- (void)_removeIndexUsingDeatails:(NSDictionary *)indexDetails
+- (void)_removeIndexUsingDetails:(NSDictionary *)indexDetails
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
diff --git a/Source/SPNarrowDownCompletion.h b/Source/SPNarrowDownCompletion.h
index 7b33dea0..192bbf38 100644
--- a/Source/SPNarrowDownCompletion.h
+++ b/Source/SPNarrowDownCompletion.h
@@ -55,6 +55,7 @@
NSRange theCharRange;
NSRange theParseRange;
NSString *theDbName;
+ NSString *theAliasName;
NSTimer *stateTimer;
NSArray *syncArrowImages;
@@ -78,7 +79,7 @@
dictMode:(BOOL)mode dbMode:(BOOL)theDbMode tabTriggerMode:(BOOL)tabTriggerMode fuzzySearch:(BOOL)fuzzySearch
backtickMode:(NSInteger)theBackTickMode withDbName:(NSString*)dbName withTableName:(NSString*)tableName
selectedDb:(NSString*)selectedDb caretMovedLeft:(BOOL)caretMovedLeft autoComplete:(BOOL)autoComplete oneColumn:(BOOL)oneColumn
- isQueryingDBStructure:(BOOL)isQueryingDBStructure;
+ alias:(NSString*)anAlias isQueryingDBStructure:(BOOL)isQueryingDBStructure;
- (void)setCaretPos:(NSPoint)aPos;
- (void)insert_text:(NSString* )aString;
- (void)insertAutocompletePlaceholder;
diff --git a/Source/SPNarrowDownCompletion.m b/Source/SPNarrowDownCompletion.m
index f86c66c5..abc00d9a 100644
--- a/Source/SPNarrowDownCompletion.m
+++ b/Source/SPNarrowDownCompletion.m
@@ -215,7 +215,7 @@
dictMode:(BOOL)mode dbMode:(BOOL)theDbMode tabTriggerMode:(BOOL)tabTriggerMode fuzzySearch:(BOOL)fuzzySearch
backtickMode:(NSInteger)theBackTickMode withDbName:(NSString*)dbName withTableName:(NSString*)tableName
selectedDb:(NSString*)selectedDb caretMovedLeft:(BOOL)caretMovedLeft autoComplete:(BOOL)autoComplete oneColumn:(BOOL)oneColumn
- isQueryingDBStructure:(BOOL)isQueryingDBStructure
+ alias:(NSString*)anAlias isQueryingDBStructure:(BOOL)isQueryingDBStructure
{
if(self = [self init])
{
@@ -228,6 +228,7 @@
autoCompletionMode = autoComplete;
+ theAliasName = anAlias;
oneColumnMode = oneColumn;
isQueryingDatabaseStructure = isQueryingDBStructure;
@@ -953,8 +954,10 @@
NSString* toInsert = [curMatch substringFromIndex:[originalFilterString length]];
theCharRange.length += [toInsert length] - currentAutocompleteLength;
theParseRange.length += [toInsert length];
+
[theView breakUndoCoalescing];
[theView insertText:[toInsert lowercaseString]];
+
autocompletePlaceholderWasInserted = YES;
// Restore the text selection location, and clearly mark the autosuggested text
@@ -970,8 +973,14 @@
{
if (!autocompletePlaceholderWasInserted) return;
+ [theView breakUndoCoalescing];
+
if (useFastMethod) {
- [theView setSelectedRange:theCharRange];
+ if(backtickMode) {
+ NSRange r = NSMakeRange(theCharRange.location+1,theCharRange.length);
+ [theView setSelectedRange:r];
+ } else
+ [theView setSelectedRange:theCharRange];
[theView insertText:originalFilterString];
} else {
NSRange attributeResultRange = NSMakeRange(0, 0);
@@ -1015,12 +1024,30 @@
if(NSMaxRange(theCharRange) > [[theView string] length])
theCharRange = NSIntersectionRange(NSMakeRange(0,[[theView string] length]), theCharRange);
+ [theView breakUndoCoalescing];
+
NSRange r = [theView selectedRange];
if(r.length)
[theView setSelectedRange:r];
- else
- [theView setSelectedRange:theCharRange];
+ else {
+ if(backtickMode == 100) {
+ NSString *replaceString = [[theView string] substringWithRange:theCharRange];
+ BOOL nextCharIsBacktick = ([replaceString hasSuffix:@"`"]);
+ if(theCharRange.length == 1) nextCharIsBacktick = NO;
+ if(!nextCharIsBacktick) {
+ if([replaceString hasPrefix:@"`"])
+ [theView setSelectedRange:NSMakeRange(theCharRange.location, theCharRange.length+2)];
+ else
+ [theView setSelectedRange:theCharRange];
+ } else {
+ [theView setSelectedRange:theCharRange];
+ }
+ backtickMode = 0;
+ } else
+ [theView setSelectedRange:theCharRange];
+ }
+ [theView breakUndoCoalescing];
[theView insertText:aString];
// If completion string contains backticks move caret out of the backticks
@@ -1052,10 +1079,9 @@
NSString* candidateMatch = [selectedItem objectForKey:@"match"] ?: [selectedItem objectForKey:@"display"];
if([selectedItem objectForKey:@"isRef"]
&& ([[NSApp currentEvent] modifierFlags] & (NSShiftKeyMask))
- && [[selectedItem objectForKey:@"path"] length]) {
+ && [[selectedItem objectForKey:@"path"] length] && theAliasName == nil) {
NSString *path = [[[selectedItem objectForKey:@"path"] componentsSeparatedByString:SPUniqueSchemaDelimiter] componentsJoinedByPeriodAndBacktickQuotedAndIgnoreFirst];
-
// Check if path's db name is the current selected db name
NSRange r = [path rangeOfString:[currentDb backtickQuotedString] options:NSCaseInsensitiveSearch range:NSMakeRange(0, [[currentDb backtickQuotedString] length])];
theCharRange = theParseRange;
@@ -1068,7 +1094,7 @@
} else {
// Is completion string a schema name for current connection
if([selectedItem objectForKey:@"isRef"]) {
- backtickMode = 0; // suppress move the caret one step rightwards
+ backtickMode = 100; // suppress move the caret one step rightwards
[self insert_text:[candidateMatch backtickQuotedString]];
} else {
[self insert_text:candidateMatch];
diff --git a/Source/SPPreferencesUpgrade.m b/Source/SPPreferencesUpgrade.m
index 6f95057b..51bcd1b4 100644
--- a/Source/SPPreferencesUpgrade.m
+++ b/Source/SPPreferencesUpgrade.m
@@ -48,7 +48,7 @@ void SPApplyRevisionChanges(void)
// Get the current revision
if ([prefs objectForKey:@"lastUsedVersion"]) recordedVersionNumber = [[prefs objectForKey:@"lastUsedVersion"] integerValue];
if ([prefs objectForKey:SPLastUsedVersion]) recordedVersionNumber = [[prefs objectForKey:SPLastUsedVersion] integerValue];
-
+
// Skip processing if the current version matches or is less than recorded version
if (currentVersionNumber <= recordedVersionNumber) return;
@@ -57,7 +57,10 @@ void SPApplyRevisionChanges(void)
[prefs setObject:[NSNumber numberWithInteger:currentVersionNumber] forKey:SPLastUsedVersion];
return;
}
-
+
+ // Inform SPAppController to check installed default Bundles for available updates
+ [prefs setObject:[NSNumber numberWithBool:YES] forKey:@"doBundleUpdate"];
+
// For versions prior to r336 (0.9.4), where column widths have been saved, walk through them and remove
// any table widths set to 15 or less (fix for mangled columns caused by Issue #140)
if (recordedVersionNumber < 336 && [prefs objectForKey:SPTableColumnWidths] != nil) {
diff --git a/Source/SPQueryFavoriteManager.m b/Source/SPQueryFavoriteManager.m
index 609b083e..5e270a07 100644
--- a/Source/SPQueryFavoriteManager.m
+++ b/Source/SPQueryFavoriteManager.m
@@ -465,6 +465,7 @@
*/
- (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(NSInteger)rowIndex
{
+ if (rowIndex == -1) return YES;
return ([[favorites objectAtIndex:rowIndex] objectForKey:@"headerOfFileURL"]) ? NO : YES;
}
diff --git a/Source/SPSSHTunnel.m b/Source/SPSSHTunnel.m
index 76508304..0d4b5993 100644
--- a/Source/SPSSHTunnel.m
+++ b/Source/SPSSHTunnel.m
@@ -328,8 +328,8 @@
[taskEnvironment setObject:tunnelConnectionVerifyHash forKey:@"SP_CONNECTION_VERIFY_HASH"];
if (passwordInKeychain) {
[taskEnvironment setObject:[[NSNumber numberWithInteger:SPSSHPasswordUsesKeychain] stringValue] forKey:@"SP_PASSWORD_METHOD"];
- [taskEnvironment setObject:keychainName forKey:@"SP_KEYCHAIN_ITEM_NAME"];
- [taskEnvironment setObject:keychainAccount forKey:@"SP_KEYCHAIN_ITEM_ACCOUNT"];
+ [taskEnvironment setObject:[keychainName stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] forKey:@"SP_KEYCHAIN_ITEM_NAME"];
+ [taskEnvironment setObject:[keychainAccount stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] forKey:@"SP_KEYCHAIN_ITEM_ACCOUNT"];
} else if (password) {
[taskEnvironment setObject:[[NSNumber numberWithInteger:SPSSHPasswordAsksUI] stringValue] forKey:@"SP_PASSWORD_METHOD"];
} else {
diff --git a/Source/SPServerSupport.h b/Source/SPServerSupport.h
index fc16b426..bf18a8e8 100644
--- a/Source/SPServerSupport.h
+++ b/Source/SPServerSupport.h
@@ -65,6 +65,7 @@
BOOL supportsShowPrivileges;
// Storage engines
+ NSString *engineTypeQueryName;
BOOL supportsInformationSchemaEngines;
BOOL supportsPre41StorageEngines;
BOOL supportsBlackholeStorageEngine;
@@ -172,6 +173,11 @@
@property (readonly) BOOL supportsShowPrivileges;
/**
+ * @property engineTypeQueryName Returns the appropriate query part for specifying table engine - ENGINE or TYPE
+ */
+@property (readonly) NSString *engineTypeQueryName;
+
+/**
* @property supportsInformationSchemaEngines Indicates if the server supports the information_schema.engines table
*/
@property (readonly) BOOL supportsInformationSchemaEngines;
diff --git a/Source/SPServerSupport.m b/Source/SPServerSupport.m
index 0b3ba79d..6f8213d6 100644
--- a/Source/SPServerSupport.m
+++ b/Source/SPServerSupport.m
@@ -54,6 +54,7 @@
@synthesize supportsFullDropUser;
@synthesize supportsUserMaxVars;
@synthesize supportsShowPrivileges;
+@synthesize engineTypeQueryName;
@synthesize supportsInformationSchemaEngines;
@synthesize supportsPre41StorageEngines;
@synthesize supportsBlackholeStorageEngine;
@@ -150,7 +151,10 @@
// The SHOW PRIVILEGES statement wasn't added until MySQL 4.1.0
supportsShowPrivileges = [self isEqualToOrGreaterThanMajorVersion:4 minor:1 release:0];
-
+
+ // MySQL 4.0.18+ and 4.1.2+ changed the TYPE option to ENGINE, but 4.x supports both
+ engineTypeQueryName = [self isEqualToOrGreaterThanMajorVersion:5 minor:0 release:0]?@"ENGINE":@"TYPE";
+
// Before MySQL 4.1 the MEMORY engine was known as HEAP and the ISAM engine was available
supportsPre41StorageEngines = (![self isEqualToOrGreaterThanMajorVersion:4 minor:1 release:0]);
@@ -245,6 +249,7 @@
supportsFullDropUser = NO;
supportsUserMaxVars = NO;
supportsShowPrivileges = NO;
+ engineTypeQueryName = @"ENGINE";
supportsInformationSchemaEngines = NO;
supportsPre41StorageEngines = NO;
supportsBlackholeStorageEngine = NO;
diff --git a/Source/SPTableContent.h b/Source/SPTableContent.h
index e3fd8a53..0b33146b 100644
--- a/Source/SPTableContent.h
+++ b/Source/SPTableContent.h
@@ -226,12 +226,14 @@
- (void) setFiltersToRestore:(NSDictionary *)filterSettings;
- (void) storeCurrentDetailsForRestoration;
- (void) clearDetailsToRestore;
+- (void) setFilterTableData:(NSData*)arcData;
+- (NSData*) filterTableData;
- (NSString *)escapeFilterArgument:(NSString *)argument againstClause:(NSString *)clause;
- (void)openContentFilterManager;
- (void)makeContentFilterHaveFocus;
-- (NSArray*)fieldEditStatusForRow:(NSInteger)rowIndex andColumn:(NSInteger)columnIndex;
+- (NSArray*)fieldEditStatusForRow:(NSInteger)rowIndex andColumn:(NSNumber *)columnIndex;
- (void)updateFilterTableClause:(id)currentValue;
- (NSString*)escapeFilterTableDefaultOperator:(NSString*)anOperator;
diff --git a/Source/SPTableContent.m b/Source/SPTableContent.m
index 8e2bde89..b136d90a 100644
--- a/Source/SPTableContent.m
+++ b/Source/SPTableContent.m
@@ -1604,6 +1604,12 @@
column = NSArrayObjectAtIndex(dataColumns, i);
if ([column objectForKey:@"default"] == nil || [column objectForKey:@"default"] == [NSNull null]) {
[newRow addObject:[NSNull null]];
+ } else if ([[column objectForKey:@"default"] isEqualToString:@""]
+ && ![[column objectForKey:@"null"] boolValue]
+ && ([[column objectForKey:@"typegrouping"] isEqualToString:@"float"]
+ || [[column objectForKey:@"typegrouping"] isEqualToString:@"integer"]))
+ {
+ [newRow addObject:@"0"];
} else {
[newRow addObject:[column objectForKey:@"default"]];
}
@@ -2394,9 +2400,11 @@
NSMutableArray *rowFieldsToSave = [[NSMutableArray alloc] initWithCapacity:[dataColumns count]];
NSMutableArray *rowValuesToSave = [[NSMutableArray alloc] initWithCapacity:[dataColumns count]];
NSInteger i;
+ NSDictionary *fieldDefinition;
id rowObject;
for (i = 0; i < [dataColumns count]; i++) {
rowObject = [tableValues cellDataAtRow:currentlyEditingRow column:i];
+ fieldDefinition = NSArrayObjectAtIndex(dataColumns, i);
// Skip "not loaded" cells entirely - these only occur when editing tables when the
// preference setting is enabled, and don't need to be saved back to the table.
@@ -2408,13 +2416,13 @@
// Prepare to derive the value to save
NSString *fieldValue;
- NSString *fieldTypeGroup = [NSArrayObjectAtIndex(dataColumns, i) objectForKey:@"typegrouping"];
+ NSString *fieldTypeGroup = [fieldDefinition objectForKey:@"typegrouping"];
// Use NULL when the user has entered the nullValue string defined in the preferences,
// or when a numeric field is empty.
if ([rowObject isNSNull]
|| (([fieldTypeGroup isEqualToString:@"float"] || [fieldTypeGroup isEqualToString:@"integer"])
- && [[rowObject description] isEqualToString:@""]))
+ && [[rowObject description] isEqualToString:@""] && [[fieldDefinition objectForKey:@"null"] boolValue]))
{
fieldValue = @"NULL";
@@ -2449,7 +2457,7 @@
}
// Store the key and value in the ordered arrays for saving.
- [rowFieldsToSave addObject:[NSArrayObjectAtIndex(dataColumns, i) objectForKey:@"name"]];
+ [rowFieldsToSave addObject:[fieldDefinition objectForKey:@"name"]];
[rowValuesToSave addObject:fieldValue];
}
@@ -2490,10 +2498,19 @@
} else {
NSBeep();
}
- [tableValues replaceRowAtIndex:currentlyEditingRow withRowContents:oldRow];
+
+ // If creating a new row, remove the row; otherwise revert the row contents
+ if (isEditingNewRow) {
+ tableRowsCount--;
+ [tableValues removeRowAtIndex:currentlyEditingRow];
+ [self updateCountText];
+ isEditingNewRow = NO;
+ } else {
+ [tableValues replaceRowAtIndex:currentlyEditingRow withRowContents:oldRow];
+ }
isEditingRow = NO;
- isEditingNewRow = NO;
currentlyEditingRow = -1;
+ [tableContentView reloadData];
[[SPQueryController sharedQueryController] showErrorInConsole:NSLocalizedString(@"/* WARNING: No rows have been affected */\n", @"warning shown in the console when no rows have been affected after writing to the db") connection:[tableDocumentInstance name]];
return YES;
@@ -2784,7 +2801,7 @@
* -2 for other errors
* and the used WHERE clause to identify
*/
-- (NSArray*)fieldEditStatusForRow:(NSInteger)rowIndex andColumn:(NSInteger)columnIndex
+- (NSArray*)fieldEditStatusForRow:(NSInteger)rowIndex andColumn:(NSNumber *)columnIndex
{
NSDictionary *columnDefinition = nil;
@@ -2919,10 +2936,12 @@
NSInteger row = -1;
NSInteger column = -1;
+ NSInteger editedColumn = -1;
if(contextInfo) {
row = [[contextInfo objectForKey:@"row"] integerValue];
column = [[contextInfo objectForKey:@"column"] integerValue];
+ editedColumn = [[contextInfo objectForKey:@"editedColumn"] integerValue];
}
if (data && contextInfo) {
@@ -2958,8 +2977,8 @@
[[tableDocumentInstance parentWindow] makeFirstResponder:tableContentView];
- if(row > -1 && column > -1)
- [tableContentView editColumn:column row:row withEvent:nil select:YES];
+ if(row > -1 && editedColumn > -1)
+ [tableContentView editColumn:editedColumn row:row withEvent:nil select:YES];
}
#pragma mark -
@@ -3278,6 +3297,25 @@
[self setFiltersToRestore:nil];
}
+- (void) setFilterTableData:(NSData*)arcData
+{
+ if(!arcData) return;
+ NSDictionary *filterData = [NSUnarchiver unarchiveObjectWithData:arcData];
+ [filterTableData removeAllObjects];
+ [filterTableData addEntriesFromDictionary:filterData];
+ [filterTableWindow makeKeyAndOrderFront:nil];
+ // [filterTableView reloadData];
+}
+
+- (NSData*) filterTableData
+{
+ if(![filterTableWindow isVisible]) return nil;
+
+ [filterTableView deselectAll:nil];
+
+ return [NSArchiver archivedDataWithRootObject:filterTableData];
+}
+
#pragma mark -
#pragma mark Table drawing and editing
@@ -3494,8 +3532,9 @@
return c;
} else
return NSArrayObjectAtIndex([[filterTableData objectForKey:[NSNumber numberWithInteger:rowIndex]] objectForKey:@"filter"], [[aTableColumn identifier] integerValue]-1);
- else
+ else {
return NSArrayObjectAtIndex([[filterTableData objectForKey:[aTableColumn identifier]] objectForKey:@"filter"], rowIndex);
+ }
}
else if(aTableView == tableContentView) {
@@ -4050,6 +4089,12 @@
if ([cellValue isNSNull])
cellValue = [NSString stringWithString:[prefs objectForKey:SPNullValue]];
+ NSInteger editedColumn = 0;
+ for(NSTableColumn* col in [tableContentView tableColumns]) {
+ if([[col identifier] isEqualToNumber:[aTableColumn identifier]]) break;
+ editedColumn++;
+ }
+
[fieldEditor editWithObject:cellValue
fieldName:[[aTableColumn headerCell] stringValue]
usingEncoding:[mySQLConnection stringEncoding]
@@ -4060,6 +4105,7 @@
contextInfo:[NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInteger:rowIndex], @"row",
[aTableColumn identifier], @"column",
+ [NSNumber numberWithInteger:editedColumn], @"editedColumn",
[NSNumber numberWithBool:isFieldEditable], @"isFieldEditable",
nil]];
@@ -4444,6 +4490,8 @@
NSString *re1 = @"^\\s*(<[=>]?|>=?|!?=|≠|≤|≥)\\s*(.*?)\\s*$";
NSString *re2 = @"^\\s*(.*)\\s+(.*?)\\s*$";
NSCharacterSet *whiteSpaceCharSet = [NSCharacterSet whitespaceAndNewlineCharacterSet];
+ NSInteger editedRow = [filterTableView editedRow];
+
if(currentValue == filterTableGearLookAllFields) {
numberOfRows = 1;
@@ -4477,7 +4525,7 @@
}
// Take value from currently edited table cell
} else if([currentValue isKindOfClass:[NSString class]]){
- if(index == [filterTableView editedColumn] && i == [filterTableView editedRow])
+ if(i == editedRow && index == [[NSArrayObjectAtIndex([filterTableView tableColumns], [filterTableView editedColumn]) identifier] integerValue])
filterCell = (NSString*)currentValue;
else
filterCell = NSArrayObjectAtIndex([filterCellData objectForKey:@"filter"], i);
diff --git a/Source/SPTableStructure.m b/Source/SPTableStructure.m
index f57a881f..1cd5ca4e 100644
--- a/Source/SPTableStructure.m
+++ b/Source/SPTableStructure.m
@@ -758,13 +758,7 @@
*/
- (void)setAutoIncrementTo:(NSString*)valueAsString
{
- NSString *selTable = nil;
-
- // if selectedTable is nil try to get the name from SPTablesList
- if (selectedTable == nil || ![selectedTable length])
- selTable = [tablesListInstance tableName];
- else
- selTable = [NSString stringWithString:selectedTable];
+ NSString *selTable = [tablesListInstance tableName];
if (selTable == nil || ![selTable length]) return;
@@ -1219,8 +1213,18 @@
alertSheetOpened = NO;
if(contextInfo && [contextInfo isEqualToString:@"autoincrementindex"]) {
- if(returnCode) {
- autoIncrementIndex = [chooseKeyButton titleOfSelectedItem];
+ if (returnCode) {
+ switch ([[chooseKeyButton selectedItem] tag]) {
+ case SPPrimaryKeyMenuTag:
+ autoIncrementIndex = @"PRIMARY KEY";
+ break;
+ case SPIndexMenuTag:
+ autoIncrementIndex = @"INDEX";
+ break;
+ case SPUniqueMenuTag:
+ autoIncrementIndex = @"UNIQUE";
+ break;
+ }
} else {
autoIncrementIndex = nil;
if([tableSourceView selectedRow] > -1 && [extraFieldSuggestions count])
diff --git a/Source/SPTableStructureDelegate.m b/Source/SPTableStructureDelegate.m
index d63064e2..17ad817d 100644
--- a/Source/SPTableStructureDelegate.m
+++ b/Source/SPTableStructureDelegate.m
@@ -116,9 +116,10 @@
isCurrentExtraAutoIncrement = [[[anObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString] isEqualToString:@"AUTO_INCREMENT"];
if(isCurrentExtraAutoIncrement) {
[currentRow setObject:[NSNumber numberWithInteger:0] forKey:@"null"];
+
// Asks the user to add an index to query if AUTO_INCREMENT is set and field isn't indexed
if ((![currentRow objectForKey:@"Key"] || [[currentRow objectForKey:@"Key"] isEqualToString:@""])) {
- [chooseKeyButton selectItemAtIndex:0];
+ [chooseKeyButton selectItemWithTag:SPPrimaryKeyMenuTag];
[NSApp beginSheet:keySheet
modalForWindow:[tableDocumentInstance parentWindow] modalDelegate:self
diff --git a/Source/SPTablesList.h b/Source/SPTablesList.h
index e53fb178..7729ed1d 100644
--- a/Source/SPTablesList.h
+++ b/Source/SPTablesList.h
@@ -103,6 +103,9 @@
BOOL tableListContainsViews;
BOOL alertSheetOpened;
+
+ NSFont *smallSystemFont;
+
}
// IBAction methods
diff --git a/Source/SPTablesList.m b/Source/SPTablesList.m
index da787a6d..a0a9bf92 100644
--- a/Source/SPTablesList.m
+++ b/Source/SPTablesList.m
@@ -1477,34 +1477,51 @@
/**
* Table view delegate method
*/
-- (void)tableView:(NSTableView *)aTableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
+- (void)tableView:(NSTableView *)aTableView willDisplayCell:(ImageAndTextCell*)aCell forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
- if (rowIndex > 0 && rowIndex < [filteredTableTypes count]
- && [[aTableColumn identifier] isEqualToString:@"tables"]) {
- if(![[filteredTables objectAtIndex:rowIndex] isKindOfClass:[NSString class]]) {
- [(ImageAndTextCell*)aCell setImage:nil];
- [(ImageAndTextCell*)aCell setIndentationLevel:0];
- }
- else if ([[filteredTableTypes objectAtIndex:rowIndex] integerValue] == SPTableTypeView) {
- [(ImageAndTextCell*)aCell setImage:[NSImage imageNamed:@"table-view-small"]];
- } else if ([[filteredTableTypes objectAtIndex:rowIndex] integerValue] == SPTableTypeTable) {
- [(ImageAndTextCell*)aCell setImage:[NSImage imageNamed:@"table-small"]];
- } else if ([[filteredTableTypes objectAtIndex:rowIndex] integerValue] == SPTableTypeProc) {
- [(ImageAndTextCell*)aCell setImage:[NSImage imageNamed:@"proc-small"]];
- } else if ([[filteredTableTypes objectAtIndex:rowIndex] integerValue] == SPTableTypeFunc) {
- [(ImageAndTextCell*)aCell setImage:[NSImage imageNamed:@"func-small"]];
+ if (rowIndex > 0 && rowIndex < [filteredTableTypes count] && [[aTableColumn identifier] isEqualToString:@"tables"]) {
+
+ id item = NSArrayObjectAtIndex(filteredTables, rowIndex);
+
+ if(![item isKindOfClass:[NSString class]]) {
+ [aCell setImage:nil];
+ [aCell setIndentationLevel:0];
+ return;
}
- if ([[filteredTableTypes objectAtIndex:rowIndex] integerValue] == SPTableTypeNone) {
- [(ImageAndTextCell*)aCell setImage:nil];
- [(ImageAndTextCell*)aCell setIndentationLevel:0];
- } else {
- [(ImageAndTextCell*)aCell setIndentationLevel:1];
- [(ImageAndTextCell*)aCell setFont:[NSFont systemFontOfSize:[NSFont smallSystemFontSize]]];
+ switch([NSArrayObjectAtIndex(filteredTableTypes, rowIndex) integerValue]) {
+ case SPTableTypeView:
+ [aCell setImage:[NSImage imageNamed:@"table-view-small"]];
+ [aCell setIndentationLevel:1];
+ [aCell setFont:smallSystemFont];
+ break;
+ case SPTableTypeTable:
+ [aCell setImage:[NSImage imageNamed:@"table-small"]];
+ [aCell setIndentationLevel:1];
+ [aCell setFont:smallSystemFont];
+ break;
+ case SPTableTypeProc:
+ [aCell setImage:[NSImage imageNamed:@"proc-small"]];
+ [aCell setIndentationLevel:1];
+ [aCell setFont:smallSystemFont];
+ break;
+ case SPTableTypeFunc:
+ [aCell setImage:[NSImage imageNamed:@"func-small"]];
+ [aCell setIndentationLevel:1];
+ [aCell setFont:smallSystemFont];
+ break;
+ case SPTableTypeNone:
+ [aCell setImage:nil];
+ [aCell setIndentationLevel:0];
+ break;
+ default:
+ [aCell setIndentationLevel:1];
+ [aCell setFont:smallSystemFont];
}
+
} else {
- [(ImageAndTextCell*)aCell setImage:nil];
- [(ImageAndTextCell*)aCell setIndentationLevel:0];
+ [aCell setImage:nil];
+ [aCell setIndentationLevel:0];
}
}
@@ -1775,6 +1792,7 @@
selectedTableType = SPTableTypeNone;
selectedTableName = nil;
[tables addObject:NSLocalizedString(@"TABLES",@"header for table list")];
+ smallSystemFont = [NSFont systemFontOfSize:[NSFont smallSystemFontSize]];
}
return self;
@@ -2007,7 +2025,7 @@
// If there is a type selected other than the default we must specify it in CREATE TABLE statement
if ([tableTypeButton indexOfSelectedItem] > 0) {
- engineStatement = [NSString stringWithFormat:@"ENGINE = %@", [tableType backtickQuotedString]];
+ engineStatement = [NSString stringWithFormat:@"%@ = %@", [[tableDocumentInstance serverSupport] engineTypeQueryName], [tableType backtickQuotedString]];
}
NSString *createStatement = [NSString stringWithFormat:@"CREATE TABLE %@ (%@) %@ %@", [tableName backtickQuotedString], ([tableType isEqualToString:@"CSV"]) ? @"id INT NOT NULL" : @"id INT", charSetStatement, engineStatement];
diff --git a/Source/SPTextView.h b/Source/SPTextView.h
index 797fff34..b15030b4 100644
--- a/Source/SPTextView.h
+++ b/Source/SPTextView.h
@@ -107,6 +107,7 @@
- (BOOL) isNextCharMarkedBy:(id)attribute withValue:(id)aValue;
- (BOOL) areAdjacentCharsLinked;
- (BOOL) isCaretAdjacentToAlphanumCharWithInsertionOf:(unichar)aChar;
+- (BOOL) isCaretAtIndentPositionIgnoreLineStart:(BOOL)ignoreLineStart;
- (BOOL) wrapSelectionWithPrefix:(NSString *)prefix suffix:(NSString *)suffix;
- (BOOL) shiftSelectionRight;
- (BOOL) shiftSelectionLeft;
diff --git a/Source/SPTextView.m b/Source/SPTextView.m
index af4356a2..82bfdedf 100644
--- a/Source/SPTextView.m
+++ b/Source/SPTextView.m
@@ -144,7 +144,6 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
[self setAutohelp:[prefs boolForKey:SPCustomQueryUpdateAutoHelp]];
[self setAutouppercaseKeywords:[prefs boolForKey:SPCustomQueryAutoUppercaseKeywords]];
[self setCompletionWasReinvokedAutomatically:NO];
-
// Re-define tab stops for a better editing
[self setTabStops];
@@ -153,9 +152,8 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
[[self layoutManager] setBackgroundLayoutEnabled:NO];
// add NSViewBoundsDidChangeNotification to scrollView
- [[scrollView contentView] setPostsBoundsChangedNotifications:YES];
- NSNotificationCenter *aNotificationCenter = [NSNotificationCenter defaultCenter];
- [aNotificationCenter addObserver:self selector:@selector(boundsDidChangeNotification:) name:@"NSViewBoundsDidChangeNotification" object:[scrollView contentView]];
+ [scrollView setPostsBoundsChangedNotifications:YES];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(boundsDidChangeNotification:) name:NSViewBoundsDidChangeNotification object:[scrollView contentView]];
[self setQueryHiliteColor:[NSUnarchiver unarchiveObjectWithData:[prefs dataForKey:SPCustomQueryEditorHighlightQueryColor]]];
[self setQueryEditorBackgroundColor:[NSUnarchiver unarchiveObjectWithData:[prefs dataForKey:SPCustomQueryEditorBackgroundColor]]];
@@ -775,6 +773,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
object:nil];
// Check for table name aliases
+ NSString *alias = nil;
if(dbBrowseMode && tableDocumentInstance && customQueryInstance) {
NSString *theDb = (dbName == nil) ? [NSString stringWithString:currentDb] : [NSString stringWithString:dbName];
NSString *connectionID = [tableDocumentInstance connectionID];
@@ -790,7 +789,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
for(NSString* m in matches) {
NSRange aliasRange = [m rangeOfRegex:re capture:1L];
if(aliasRange.length) {
- NSString *alias = [[m substringWithRange:aliasRange] stringByReplacingOccurrencesOfString:@"``" withString:@"`"];
+ alias = [[m substringWithRange:aliasRange] stringByReplacingOccurrencesOfString:@"``" withString:@"`"];
// If alias refers to db.table split and check it
if([alias rangeOfString:@"."].length) {
NSRange dbRange = [alias rangeOfRegex:@"^`?(.*?)`?\\." capture:1L];
@@ -819,6 +818,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
}
if (completionIsOpen) [completionPopup close], completionPopup = nil;
+
completionIsOpen = YES;
completionPopup = [[SPNarrowDownCompletion alloc] initWithItems:[self suggestionsForSQLCompletionWith:currentWord dictMode:isDictMode browseMode:dbBrowseMode withTableName:tableName withDbName:dbName]
alreadyTyped:filter
@@ -839,24 +839,19 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
caretMovedLeft:caretMovedLeft
autoComplete:autoCompleteMode
oneColumn:isDictMode
+ alias:alias
isQueryingDBStructure:[mySQLConnection isQueryingDatabaseStructure]];
completionParseRangeLocation = parseRange.location;
//Get the NSPoint of the first character of the current word
- NSRange glyphRange = [[self layoutManager] glyphRangeForCharacterRange:NSMakeRange(completionRange.location,0) actualCharacterRange:NULL];
+ NSRange glyphRange = [[self layoutManager] glyphRangeForCharacterRange:NSMakeRange(completionRange.location,1) actualCharacterRange:NULL];
NSRect boundingRect = [[self layoutManager] boundingRectForGlyphRange:glyphRange inTextContainer:[self textContainer]];
- boundingRect = [self convertRect: boundingRect toView: NULL];
- NSPoint pos = [[self window] convertBaseToScreen: NSMakePoint(boundingRect.origin.x + boundingRect.size.width,boundingRect.origin.y + boundingRect.size.height)];
-
- // TODO: check if needed
- // if(filter)
- // pos.x -= [filter sizeWithAttributes:[NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName]].width;
-
- // Adjust list location to be under the current word or insertion point
+ boundingRect = [self convertRect:boundingRect toView:nil];
+ NSPoint pos = [[self window] convertBaseToScreen:NSMakePoint(boundingRect.origin.x + boundingRect.size.width,boundingRect.origin.y + boundingRect.size.height)];
pos.y -= [[self font] pointSize]*1.25;
-
[completionPopup setCaretPos:pos];
+
[completionPopup orderFront:self];
[completionPopup insertAutocompletePlaceholder];
@@ -924,6 +919,24 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
}
/**
+ * Checks if all the characters left from the caret are white spaces or caret is at the line begin.
+ */
+- (BOOL) isCaretAtIndentPositionIgnoreLineStart:(BOOL)ignoreLineStart
+{
+ NSString *textViewString = [[self textStorage] string];
+ NSUInteger caretPosition = [self selectedRange].location;
+ NSUInteger currentLineStartPosition = [textViewString lineRangeForRange:NSMakeRange(caretPosition, 0)].location;
+
+ // Check if caret is at the beginning of a line
+ // - used for deleteBackward: to allow to delete leading \n
+ if(!ignoreLineStart && caretPosition == currentLineStartPosition)
+ return NO;
+
+ NSString *lineHeadToCaret = [textViewString substringWithRange:NSMakeRange(currentLineStartPosition, caretPosition-currentLineStartPosition)];
+ return (![lineHeadToCaret length] || [lineHeadToCaret isMatchedByRegex:@"^\\s+$"]);
+}
+
+/**
* Checks if the caret is wrapped by auto-paired characters.
* e.g. [| := caret]: "|"
*/
@@ -1112,27 +1125,39 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
{
NSString *textViewString = [[self textStorage] string];
NSRange currentLineRange;
-
- if ([self selectedRange].location == NSNotFound || ![self isEditable]) return NO;
+ NSRange selectedRange = [self selectedRange];
+
+ if (selectedRange.location == NSNotFound || ![self isEditable]) return NO;
+
+ NSString *indentString = @"\t";
+ if ([prefs boolForKey:SPCustomQuerySoftIndent]) {
+ NSUInteger numberOfSpaces = [prefs integerForKey:SPCustomQuerySoftIndentWidth];
+ if(numberOfSpaces < 1) numberOfSpaces = 1;
+ if(numberOfSpaces > 32) numberOfSpaces = 32;
+ NSMutableString *spaces = [NSMutableString string];
+ for(NSInteger i = 0; i < numberOfSpaces; i++)
+ [spaces appendString:@" "];
+ indentString = [NSString stringWithString:spaces];
+ }
// Indent the currently selected line if the caret is within a single line
- if ([self selectedRange].length == 0) {
+ if (selectedRange.length == 0) {
// Extract the current line range based on the text caret
- currentLineRange = [textViewString lineRangeForRange:[self selectedRange]];
+ currentLineRange = [textViewString lineRangeForRange:selectedRange];
// Register the indent for undo
- [self shouldChangeTextInRange:NSMakeRange(currentLineRange.location, 0) replacementString:@"\t"];
+ [self shouldChangeTextInRange:NSMakeRange(currentLineRange.location, 0) replacementString:indentString];
// Insert the new tab
- [self replaceCharactersInRange:NSMakeRange(currentLineRange.location, 0) withString:@"\t"];
+ [self replaceCharactersInRange:NSMakeRange(currentLineRange.location, 0) withString:indentString];
return YES;
}
// Otherwise, something is selected
- NSRange firstLineRange = [textViewString lineRangeForRange:NSMakeRange([self selectedRange].location,0)];
- NSUInteger lastLineMaxRange = NSMaxRange([textViewString lineRangeForRange:NSMakeRange(NSMaxRange([self selectedRange])-1,0)]);
+ NSRange firstLineRange = [textViewString lineRangeForRange:NSMakeRange(selectedRange.location,0)];
+ NSUInteger lastLineMaxRange = NSMaxRange([textViewString lineRangeForRange:NSMakeRange(NSMaxRange(selectedRange)-1,0)]);
// Expand selection for first and last line to begin and end resp. but not the last line ending
NSRange blockRange = NSMakeRange(firstLineRange.location, lastLineMaxRange - firstLineRange.location);
@@ -1143,13 +1168,13 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
NSString *newString;
// check for line ending
if([textViewString characterAtIndex:NSMaxRange(firstLineRange)-1] == '\r')
- newString = [[NSString stringWithString:@"\t"] stringByAppendingString:
+ newString = [indentString stringByAppendingString:
[[textViewString substringWithRange:blockRange]
- stringByReplacingOccurrencesOfString:@"\r" withString:@"\r\t"]];
+ stringByReplacingOccurrencesOfString:@"\r" withString:[NSString stringWithFormat:@"\r%@", indentString]]];
else
- newString = [[NSString stringWithString:@"\t"] stringByAppendingString:
+ newString = [indentString stringByAppendingString:
[[textViewString substringWithRange:blockRange]
- stringByReplacingOccurrencesOfString:@"\n" withString:@"\n\t"]];
+ stringByReplacingOccurrencesOfString:@"\n" withString:[NSString stringWithFormat:@"\n%@", indentString]]];
// Register the indent for undo
[self shouldChangeTextInRange:blockRange replacementString:newString];
@@ -1190,11 +1215,30 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
|| ([textViewString characterAtIndex:currentLineRange.location] != '\t' && [textViewString characterAtIndex:currentLineRange.location] != ' '))
return NO;
+ NSRange replaceRange;
+
+ // Check for soft indention
+ NSUInteger indentStringLength = 1;
+ if ([prefs boolForKey:SPCustomQuerySoftIndent]) {
+ NSUInteger numberOfSpaces = [prefs integerForKey:SPCustomQuerySoftIndentWidth];
+ if(numberOfSpaces < 1) numberOfSpaces = 1;
+ if(numberOfSpaces > 32) numberOfSpaces = 32;
+ indentStringLength = numberOfSpaces;
+ replaceRange = NSIntersectionRange(NSMakeRange(currentLineRange.location, indentStringLength), NSMakeRange(0,[[self string] length]));
+ // Correct length for only white spaces
+ NSString *possibleIndentString = [[[self textStorage] string] substringWithRange:replaceRange];
+ NSUInteger numberOfLeadingWhiteSpaces = [possibleIndentString rangeOfRegex:@"^(\\s*)" capture:1L].length;
+ if(numberOfLeadingWhiteSpaces == NSNotFound) numberOfLeadingWhiteSpaces = 0;
+ replaceRange = NSMakeRange(currentLineRange.location, numberOfLeadingWhiteSpaces);
+ } else {
+ replaceRange = NSMakeRange(currentLineRange.location, indentStringLength);
+ }
+
// Register the undent for undo
- [self shouldChangeTextInRange:NSMakeRange(currentLineRange.location, 1) replacementString:@""];
+ [self shouldChangeTextInRange:replaceRange replacementString:@""];
// Remove the tab
- [self replaceCharactersInRange:NSMakeRange(currentLineRange.location, 1) withString:@""];
+ [self replaceCharactersInRange:replaceRange withString:@""];
return YES;
}
@@ -1208,25 +1252,36 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
if([textViewString characterAtIndex:NSMaxRange(blockRange)-1] == '\n' || [textViewString characterAtIndex:NSMaxRange(blockRange)-1] == '\r')
blockRange.length--;
+ // Check for soft or hard indention
+ NSString *indentString = @"\t";
+ NSUInteger indentStringLength = 1;
+ if ([prefs boolForKey:SPCustomQuerySoftIndent]) {
+ indentStringLength = [prefs integerForKey:SPCustomQuerySoftIndentWidth];
+ if(indentStringLength < 1) indentStringLength = 1;
+ if(indentStringLength > 32) indentStringLength = 32;
+ NSMutableString *spaces = [NSMutableString string];
+ for(NSInteger i = 0; i < indentStringLength; i++)
+ [spaces appendString:@" "];
+ indentString = [NSString stringWithString:spaces];
+ }
+
// Check if blockRange starts with SPACE or TAB
// (this also catches the first line of the entire text buffer or
// if only one line is selected)
NSInteger leading = 0;
if([textViewString characterAtIndex:blockRange.location] == ' '
|| [textViewString characterAtIndex:blockRange.location] == '\t')
- leading++;
+ leading += indentStringLength;
// Replace \n[ \t] by \n of all lines in blockRange
NSString *newString;
// check for line ending
if([textViewString characterAtIndex:NSMaxRange(firstLineRange)-1] == '\r')
- newString = [[[textViewString substringWithRange:NSMakeRange(blockRange.location+leading, blockRange.length-leading)]
- stringByReplacingOccurrencesOfString:@"\r\t" withString:@"\r"]
- stringByReplacingOccurrencesOfString:@"\r " withString:@"\r"];
+ newString = [[textViewString substringWithRange:NSMakeRange(blockRange.location+leading, blockRange.length-leading)]
+ stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"\r%@", indentString] withString:@"\r"];
else
- newString = [[[textViewString substringWithRange:NSMakeRange(blockRange.location+leading, blockRange.length-leading)]
- stringByReplacingOccurrencesOfString:@"\n\t" withString:@"\n"]
- stringByReplacingOccurrencesOfString:@"\n " withString:@"\n"];
+ newString = [[textViewString substringWithRange:NSMakeRange(blockRange.location+leading, blockRange.length-leading)]
+ stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"\n%@", indentString] withString:@"\n"];
// Register the unindent for undo
[self shouldChangeTextInRange:blockRange replacementString:newString];
@@ -1407,10 +1462,11 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
caretMovedLeft:NO
autoComplete:NO
oneColumn:NO
+ alias:nil
isQueryingDBStructure:NO];
//Get the NSPoint of the first character of the current word
- NSRange glyphRange = [[self layoutManager] glyphRangeForCharacterRange:NSMakeRange(aRange.location,0) actualCharacterRange:NULL];
+ NSRange glyphRange = [[self layoutManager] glyphRangeForCharacterRange:NSMakeRange(aRange.location,1) actualCharacterRange:NULL];
NSRect boundingRect = [[self layoutManager] boundingRectForGlyphRange:glyphRange inTextContainer:[self textContainer]];
boundingRect = [self convertRect: boundingRect toView: NULL];
NSPoint pos = [[self window] convertBaseToScreen: NSMakePoint(boundingRect.origin.x + boundingRect.size.width,boundingRect.origin.y + boundingRect.size.height)];
@@ -1563,10 +1619,11 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
caretMovedLeft:NO
autoComplete:NO
oneColumn:YES
+ alias:nil
isQueryingDBStructure:NO];
//Get the NSPoint of the first character of the current word
- NSRange glyphRange = [[self layoutManager] glyphRangeForCharacterRange:NSMakeRange(r2.location,0) actualCharacterRange:NULL];
+ NSRange glyphRange = [[self layoutManager] glyphRangeForCharacterRange:NSMakeRange(r2.location,1) actualCharacterRange:NULL];
NSRect boundingRect = [[self layoutManager] boundingRectForGlyphRange:glyphRange inTextContainer:[self textContainer]];
boundingRect = [self convertRect: boundingRect toView: NULL];
NSPoint pos = [[self window] convertBaseToScreen: NSMakePoint(boundingRect.origin.x + boundingRect.size.width,boundingRect.origin.y + boundingRect.size.height)];
@@ -2033,6 +2090,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
}
// Check for {SHIFT}TAB to try to insert query favorite via TAB trigger if SPTextView belongs to SPCustomQuery
+ // and TAB as soft indention
if ([theEvent keyCode] == 48 && [self isEditable] && [[self delegate] isKindOfClass:[SPCustomQuery class]]){
NSRange targetRange = [self getRangeForCurrentWord];
NSString *tabTrigger = [[self string] substringWithRange:targetRange];
@@ -2079,13 +2137,19 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
}
// Check if tab trigger is defined; if so insert it, otherwise pass through event
- if(snippetControlCounter < 0 && [tableDocumentInstance fileURL]) {
+ if(snippetControlCounter < 0 && [tabTrigger length] && [tableDocumentInstance fileURL]) {
NSArray *snippets = [[SPQueryController sharedQueryController] queryFavoritesForFileURL:[tableDocumentInstance fileURL] andTabTrigger:tabTrigger includeGlobals:YES];
if([snippets count] > 0 && [(NSString*)[(NSDictionary*)[snippets objectAtIndex:0] objectForKey:@"query"] length]) {
[self insertAsSnippet:[(NSDictionary*)[snippets objectAtIndex:0] objectForKey:@"query"] atRange:targetRange];
return;
}
}
+
+ // Check for TAB as indention for current line, i.e. left of the caret there are only white spaces
+ // but only if Soft Indent is set
+ if([prefs boolForKey:SPCustomQuerySoftIndent] && [self isCaretAtIndentPositionIgnoreLineStart:YES]) {
+ if([self shiftSelectionRight]) return;
+ }
}
// Note: switch(insertedCharacter) {} does not work instead use charactersIgnoringModifiers
@@ -2277,7 +2341,14 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
- (void)moveWordRight:(id)sender
{
[super moveWordRight:sender];
- while([self selectedRange].location < [[[self textStorage] string] length] && [[[self textStorage] string] characterAtIndex:[self selectedRange].location] == '.')
+ NSCharacterSet *whiteSet = [NSCharacterSet whitespaceAndNewlineCharacterSet];
+ while([self selectedRange].location < [[[self textStorage] string] length]
+ && ([[[self textStorage] string] characterAtIndex:[self selectedRange].location] == '.'
+ || (
+ [[[self textStorage] string] characterAtIndex:[self selectedRange].location-1] == '.'
+ && ![whiteSet characterIsMember:[[[self textStorage] string] characterAtIndex:[self selectedRange].location]]
+ )
+ ))
[super moveWordRight:sender];
}
@@ -2298,22 +2369,41 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
- (void)moveWordRightAndModifySelection:(id)sender
{
[super moveWordRightAndModifySelection:sender];
- while(NSMaxRange([self selectedRange]) < [[[self textStorage] string] length] && [[[self textStorage] string] characterAtIndex:NSMaxRange([self selectedRange])] == '.')
+ NSCharacterSet *whiteSet = [NSCharacterSet whitespaceAndNewlineCharacterSet];
+ while(NSMaxRange([self selectedRange]) < [[[self textStorage] string] length]
+ && ([[[self textStorage] string] characterAtIndex:NSMaxRange([self selectedRange])] == '.'
+ || (
+ [[[self textStorage] string] characterAtIndex:NSMaxRange([self selectedRange])-1] == '.'
+ && ![whiteSet characterIsMember:[[[self textStorage] string] characterAtIndex:NSMaxRange([self selectedRange])]]
+ )
+ ))
[super moveWordRightAndModifySelection:sender];
}
- (void) deleteBackward:(id)sender
{
- // If the caret is currently inside a marked auto-pair, delete the characters on both sides
- // of the caret.
NSRange currentRange = [self selectedRange];
- if (currentRange.length == 0 && currentRange.location > 0 && [self areAdjacentCharsLinked])
- [self setSelectedRange:NSMakeRange(currentRange.location - 1,2)];
- // Avoid auto-uppercasing if resulting word would be a SQL keyword;
- // e.g. type inta| and deleteBackward:
- delBackwardsWasPressed = YES;
+ if (currentRange.length == 0) {
+
+ // If the caret is currently inside a marked auto-pair, delete the characters on both sides
+ // of the caret.
+ if (currentRange.location > 0 && [self areAdjacentCharsLinked]) {
+ [self setSelectedRange:NSMakeRange(currentRange.location - 1,2)];
+ // Avoid auto-uppercasing if resulting word would be a SQL keyword;
+ // e.g. type inta| and deleteBackward:
+ delBackwardsWasPressed = YES;
+ }
+
+ // Remove soft indent if active and left from caret are only white spaces
+ else if ([prefs boolForKey:SPCustomQuerySoftIndent] && [self isCaretAtIndentPositionIgnoreLineStart:NO])
+ {
+ [self shiftSelectionLeft];
+ return;
+ }
+
+ }
[super deleteBackward:sender];
@@ -2365,6 +2455,18 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
// Return to avoid the original implementation, preventing double linebreaks
return;
}
+
+ // Remove soft indent if active and left from caret are only white spaces
+ if (aSelector == @selector(deleteForward:)
+ && ![self selectedRange].length
+ && [prefs boolForKey:SPCustomQuerySoftIndent]
+ && [self isCaretAtIndentPositionIgnoreLineStart:YES]
+ && [self selectedRange].location < [[self string] length] && [[self string] characterAtIndex:[self selectedRange].location] == ' ')
+ {
+ [self shiftSelectionLeft];
+ return;
+ }
+
[super doCommandBySelector:aSelector];
}
@@ -3015,9 +3117,9 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
/**
* Scrollview delegate after the textView's view port was changed.
- * Manily used to update the syntax highlighting for a large text size.
+ * Manily used to update the syntax highlighting for a large text size and line numbering rendering.
*/
-- (void) boundsDidChangeNotification:(NSNotification *)notification
+- (void)boundsDidChangeNotification:(NSNotification *)notification
{
// Invoke syntax highlighting if text view port was changed for large text
if(startListeningToBoundChanges && [[self string] length] > SP_TEXT_SIZE_TRIGGER_FOR_PARTLY_PARSING)
@@ -3029,6 +3131,8 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
if(![[self textStorage] changeInLength])
[self performSelector:@selector(doSyntaxHighlighting) withObject:nil afterDelay:0.4];
}
+ // else
+ // [scrollView displayRect:[scrollView visibleRect]];
}
@@ -3057,7 +3161,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
}
// Start autocompletion if enabled
- if([[NSApp keyWindow] firstResponder] == self && [prefs boolForKey:SPCustomQueryAutoComplete] && !completionIsOpen && editedMask != 1 && [textStore editedRange].length)
+ if([[NSApp keyWindow] firstResponder] == self && [prefs boolForKey:SPCustomQueryAutoComplete] && !completionIsOpen && editedMask != 1 && [textStore changeInLength] == 1)
[self performSelector:@selector(doAutoCompletion) withObject:nil afterDelay:[[prefs valueForKey:SPCustomQueryAutoCompleteDelay] doubleValue]];
// Cancel calling doSyntaxHighlighting for large text
@@ -3069,6 +3173,8 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
// Do syntax highlighting/re-calculate snippet ranges only if the user really changed the text
if(editedMask != 1) {
+ [customQueryInstance setTextViewWasChanged:YES];
+
// Re-calculate snippet ranges if snippet session is active
if(snippetControlCounter > -1 && !snippetWasJustInserted && !isProcessingMirroredSnippets) {
// Remove any fully nested snippets relative to the current snippet which was edited
@@ -3132,6 +3238,7 @@ NSInteger alphabeticSort(id string1, id string2, void *reverse)
[self doSyntaxHighlighting];
} else {
+ [customQueryInstance setTextViewWasChanged:NO];
textBufferSizeIncreased = NO;
}
diff --git a/Source/SPTextViewAdditions.m b/Source/SPTextViewAdditions.m
index 2e1f8f9b..9cefa758 100644
--- a/Source/SPTextViewAdditions.m
+++ b/Source/SPTextViewAdditions.m
@@ -41,41 +41,34 @@
if (curRange.length)
return curRange;
- NSUInteger curLocation = curRange.location;
+ NSInteger curLocation = curRange.location;
+ NSInteger start = curLocation;
+ NSInteger end = curLocation;
+ NSUInteger strLen = [[self string] length];
+
+ NSMutableCharacterSet *wordCharSet = [NSMutableCharacterSet alphanumericCharacterSet];
+ [wordCharSet addCharactersInString:@"_."];
+ [wordCharSet removeCharactersInString:@"`"];
+
+ if(start) {
+ start--;
+ while([wordCharSet characterIsMember:[[self string] characterAtIndex:start]]) {
+ start--;
+ if(start < 0) break;
+ }
+ start++;
+ }
- [self moveWordLeft:self];
- [self moveWordRightAndModifySelection:self];
-
- NSUInteger newStartRange = [self selectedRange].location;
- NSUInteger newEndRange = newStartRange + [self selectedRange].length;
-
- // if current location does not intersect with found range
- // then caret is at the begin of a word -> change strategy
- if(curLocation < newStartRange || curLocation > newEndRange)
- {
- [self setSelectedRange:curRange];
- [self moveWordRight:self];
- [self moveWordLeftAndModifySelection:self];
- newStartRange = [self selectedRange].location;
- newEndRange = newStartRange + [self selectedRange].length;
+ while(end < strLen && [wordCharSet characterIsMember:[[self string] characterAtIndex:end]]) {
+ end++;
}
-
- // how many space in front of the selection
- NSInteger bias = [self selectedRange].length - [[[[self string] substringWithRange:[self selectedRange]] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length];
- [self setSelectedRange:NSMakeRange([self selectedRange].location+bias, [self selectedRange].length-bias)];
- newStartRange += bias;
- newEndRange -= bias;
-
- // is caret inside the selection still?
- if(curLocation < newStartRange || curLocation > newEndRange
- || [[[self string] substringWithRange:[self selectedRange]] rangeOfCharacterFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]].location != NSNotFound)
- [self setSelectedRange:curRange];
-
- NSRange wordRange = [self selectedRange];
-
- [self setSelectedRange:curRange];
-
+
+ NSRange wordRange = NSMakeRange(start, end-start);
+ if(wordRange.length && [[self string] characterAtIndex:NSMaxRange(wordRange)-1] == '.')
+ wordRange.length--;
+
return(wordRange);
+
}
/*
@@ -534,7 +527,7 @@
[[NSFileManager defaultManager] removeItemAtPath:bundleInputFilePath error:nil];
- BOOL selfIsQueryEditor = ([[[self class] description] isEqualToString:@"SPTextView"] && [self respondsToSelector:@selector(currentQueryRange)]) ;
+ BOOL selfIsQueryEditor = ([[[self class] description] isEqualToString:@"SPTextView"] && [[self delegate] respondsToSelector:@selector(currentQueryRange)]);
if([cmdData objectForKey:SPBundleFileInputSourceKey])
inputAction = [[cmdData objectForKey:SPBundleFileInputSourceKey] lowercaseString];
@@ -562,7 +555,7 @@
replaceRange = currentLineRange;
else if([inputFallBackAction isEqualToString:SPBundleInputSourceCurrentQuery])
replaceRange = currentQueryRange;
- else if([inputAction isEqualToString:SPBundleInputSourceEntireContent])
+ else if([inputFallBackAction isEqualToString:SPBundleInputSourceEntireContent])
replaceRange = NSMakeRange(0,[[self string] length]);
} else {
replaceRange = currentSelectionRange;
@@ -622,8 +615,11 @@
if(currentLineRange.length)
[env setObject:[[self string] substringWithRange:currentLineRange] forKey:SPBundleShellVariableCurrentLine];
+ [env setObject:NSStringFromRange(replaceRange) forKey:SPBundleShellVariableSelectedTextRange];
+
NSError *inputFileError = nil;
NSString *input = [NSString stringWithString:[[self string] substringWithRange:replaceRange]];
+
[input writeToFile:bundleInputFilePath
atomically:YES
encoding:NSUTF8StringEncoding
@@ -739,8 +735,9 @@
}
else if([action isEqualToString:SPBundleOutputActionReplaceSelection]) {
- [self shouldChangeTextInRange:replaceRange replacementString:output];
- [self replaceCharactersInRange:replaceRange withString:output];
+ NSRange safeRange = NSIntersectionRange(replaceRange, NSMakeRange(0, [[self string] length]));
+ [self shouldChangeTextInRange:safeRange replacementString:output];
+ [self replaceCharactersInRange:safeRange withString:output];
}
} else {
diff --git a/Source/SPTooltip.m b/Source/SPTooltip.m
index e1cccbf9..b0344d52 100644
--- a/Source/SPTooltip.m
+++ b/Source/SPTooltip.m
@@ -257,24 +257,20 @@ static CGFloat slow_in_out (CGFloat t)
id fr = [[NSApp keyWindow] firstResponder];
//If first responder is a textview return the caret position
- if([fr respondsToSelector:@selector(getRangeForCurrentWord)] ) {
- NSRange range = NSMakeRange([fr selectedRange].location,0);
+ if(([fr isMemberOfClass:[NSTextView class]] && [fr alignment] == NSLeftTextAlignment) || [[[fr class] description] isEqualToString:@"SPTextView"]) {
+ NSRange range = NSMakeRange([fr selectedRange].location,1);
NSRange glyphRange = [[fr layoutManager] glyphRangeForCharacterRange:range actualCharacterRange:NULL];
NSRect boundingRect = [[fr layoutManager] boundingRectForGlyphRange:glyphRange inTextContainer:[fr textContainer]];
- boundingRect = [fr convertRect: boundingRect toView: NULL];
+ boundingRect = [fr convertRect: boundingRect toView:NULL];
pos = [[fr window] convertBaseToScreen: NSMakePoint(boundingRect.origin.x + boundingRect.size.width,boundingRect.origin.y + boundingRect.size.height)];
NSFont* font = [fr font];
- pos.y -= [font pointSize]*1.3;
+ if(font) pos.y -= [font pointSize]*1.3;
return pos;
- // Otherwise return the upper left corner of the current keyWindow
+ // Otherwise return mouse location
} else {
pos = [NSEvent mouseLocation];
pos.y -= 16;
return pos;
- // pos = [[NSApp keyWindow] frame].origin;
- // pos.x += 5;
- // pos.y += [[NSApp keyWindow] frame].size.height - 23;
- // return pos;
}
}
diff --git a/Source/SPUserManager.h b/Source/SPUserManager.h
index c4eff098..8bb4e4d2 100644
--- a/Source/SPUserManager.h
+++ b/Source/SPUserManager.h
@@ -59,6 +59,9 @@
IBOutlet NSTextField *userNameTextField;
+ IBOutlet NSWindow *errorsSheet;
+ IBOutlet NSTextView *errorsTextView;
+
IBOutlet BWAnchoredButtonBar *splitViewButtonBar;
NSMutableArray *schemas;
@@ -67,6 +70,9 @@
NSArray *treeSortDescriptors;
NSSortDescriptor *treeSortDescriptor;
+
+ BOOL isSaving;
+ NSMutableString *errorsString;
}
@property (nonatomic, retain) MCPConnection *mySqlConnection;
@@ -93,6 +99,7 @@
- (IBAction)doApply:(id)sender;
- (IBAction)checkAllPrivileges:(id)sender;
- (IBAction)uncheckAllPrivileges:(id)sender;
+- (IBAction)closeErrorsSheet:(id)sender;
// Schema Privieges
- (IBAction)addSchemaPriv:(id)sender;
diff --git a/Source/SPUserManager.m b/Source/SPUserManager.m
index b8d0e826..9118d8a9 100644
--- a/Source/SPUserManager.m
+++ b/Source/SPUserManager.m
@@ -91,6 +91,7 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn";
schemas = [[NSMutableArray alloc] init];
availablePrivs = [[NSMutableArray alloc] init];
grantedSchemaPrivs = [[NSMutableArray alloc] init];
+ isSaving = NO;
}
return self;
@@ -112,7 +113,11 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn";
// Set the button delegate
[splitViewButtonBar setSplitViewDelegate:self];
-
+
+ // Set schema table double-click actions
+ [grantedTableView setDoubleAction:@selector(doubleClickSchemaPriv:)];
+ [availableTableView setDoubleAction:@selector(doubleClickSchemaPriv:)];
+
[self _initializeUsers];
[self _initializeSchemaPrivs];
@@ -363,6 +368,10 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn";
{
// Assumes that the child has already been initialized with values from the
// global user table.
+
+ // Set an originalhost key on the child to allow the tracking of edits
+ [child setPrimitiveValue:[child valueForKey:@"host"] forKey:@"originalhost"];
+
// Select rows from the db table that contains schema privs for each user/host
NSString *queryString = [NSString stringWithFormat:@"SELECT * from mysql.db d WHERE d.user = %@ and d.host = %@",
[[[child parent] valueForKey:@"user"] tickQuotedString], [[child valueForKey:@"host"] tickQuotedString]];
@@ -597,21 +606,29 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn";
- (IBAction)doApply:(id)sender
{
NSError *error = nil;
+ errorsString = [[NSMutableString alloc] init];
//Change the first responder to end editing in any field
[[self window] makeFirstResponder:self];
+ isSaving = YES;
[[self managedObjectContext] save:&error];
-
- if (error != nil) {
- [[NSApplication sharedApplication] presentError:error];
- }
- else {
- // Close sheet
- [self.mySqlConnection queryString:@"FLUSH PRIVILEGES"];
- [NSApp endSheet:[self window] returnCode:0];
- [[self window] orderOut:self];
+ isSaving = NO;
+ if (error != nil) [errorsString appendString:[error localizedDescription]];
+
+ [self.mySqlConnection queryString:@"FLUSH PRIVILEGES"];
+
+ // Display any errors
+ if ([errorsString length]) {
+ [errorsTextView setString:errorsString];
+ [NSApp beginSheet:errorsSheet modalForWindow:[NSApp keyWindow] modalDelegate:nil didEndSelector:NULL contextInfo:nil];
+ [errorsString release];
+ return;
}
+
+ // Otherwise, close the sheet
+ [NSApp endSheet:[self window] returnCode:0];
+ [[self window] orderOut:self];
}
/**
@@ -779,6 +796,23 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn";
}
/**
+ * Move double-clicked rows across to the other table, using the
+ * appropriate methods.
+ */
+- (IBAction)doubleClickSchemaPriv:(id)sender
+{
+
+ // Ignore double-clicked header cells
+ if ([sender clickedRow] == -1) return;
+
+ if (sender == availableTableView) {
+ [self addSchemaPriv:sender];
+ } else {
+ [self removeSchemaPriv:sender];
+ }
+}
+
+/**
* Refreshes the current list of users.
*/
- (IBAction)refresh:(id)sender
@@ -934,12 +968,25 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn";
}
}
+/**
+ * Closes the supplied sheet, before closing the master window.
+ */
+- (IBAction)closeErrorsSheet:(id)sender
+{
+ [NSApp endSheet:[sender window] returnCode:[sender tag]];
+ [[sender window] orderOut:self];
+
+ // Close the window
+ [NSApp endSheet:[self window] returnCode:0];
+ [[self window] orderOut:self];
+}
+
#pragma mark -
#pragma mark Notifications
/**
* This notification is called when the managedObjectContext save happens.
- * This takes the inserted, updated, and deleted arrays and applys them to
+ * This takes the inserted, updated, and deleted arrays and applies them to
* the database.
*/
- (void)contextDidSave:(NSNotification *)notification
@@ -995,7 +1042,7 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn";
NSString *renameUserStatement = [NSString stringWithFormat:
@"RENAME USER %@@%@ TO %@@%@",
[[user valueForKey:@"originaluser"] tickQuotedString],
- [[child host] tickQuotedString],
+ [([child valueForKey:@"originalhost"]?[child valueForKey:@"originalhost"]:[child host]) tickQuotedString],
[[user valueForKey:@"user"] tickQuotedString],
[[child host] tickQuotedString]];
@@ -1020,6 +1067,19 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn";
}
}
else {
+
+ // If the hostname has changed, remane the detail before editing details.
+ if (![[user valueForKey:@"host"] isEqualToString:[user valueForKey:@"originalhost"]]) {
+ NSString *renameUserStatement = [NSString stringWithFormat:
+ @"RENAME USER %@@%@ TO %@@%@",
+ [[[user parent] valueForKey:@"originaluser"] tickQuotedString],
+ [[user valueForKey:@"originalhost"] tickQuotedString],
+ [[[user parent] valueForKey:@"user"] tickQuotedString],
+ [[user valueForKey:@"host"] tickQuotedString]];
+
+ [self.mySqlConnection queryString:renameUserStatement];
+ }
+
if ([serverSupport supportsUserMaxVars]) [self updateResourcesForUser:user];
[self grantPrivilegesToUser:user];
@@ -1366,11 +1426,14 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn";
- (BOOL)_checkAndDisplayMySqlError
{
if ([self.mySqlConnection queryErrored]) {
-
- SPBeginAlertSheet(NSLocalizedString(@"An error occurred", @"mysql error occurred message"),
- NSLocalizedString(@"OK", @"OK button"), nil, nil, [self window], self, nil, nil,
- [NSString stringWithFormat:NSLocalizedString(@"An error occurred whilst trying to perform the operation.\n\nMySQL said: %@", @"mysql error occurred informative message"), [self.mySqlConnection getLastErrorMessage]]);
-
+ if (isSaving) {
+ [errorsString appendFormat:@"%@\n", [self.mySqlConnection getLastErrorMessage]];
+ } else {
+ SPBeginAlertSheet(NSLocalizedString(@"An error occurred", @"mysql error occurred message"),
+ NSLocalizedString(@"OK", @"OK button"), nil, nil, [self window], self, nil, nil,
+ [NSString stringWithFormat:NSLocalizedString(@"An error occurred whilst trying to perform the operation.\n\nMySQL said: %@", @"mysql error occurred informative message"), [self.mySqlConnection getLastErrorMessage]]);
+ }
+
return NO;
}
@@ -1470,7 +1533,7 @@ static const NSString *SPTableViewNameColumnID = @"NameColumn";
*/
- (CGFloat)splitView:(NSSplitView *)sender constrainMaxCoordinate:(CGFloat)proposedMax ofSubviewAt:(NSInteger)offset
{
- return (proposedMax - 555);
+ return (proposedMax - 620);
}
/**
diff --git a/Source/SPWindow.h b/Source/SPWindow.h
new file mode 100644
index 00000000..369ce769
--- /dev/null
+++ b/Source/SPWindow.h
@@ -0,0 +1,32 @@
+//
+// $Id$
+//
+// SPWindow.h
+// sequel-pro
+//
+// Created by Rowan Beentje on January 23, 2011
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// More info at <http://code.google.com/p/sequel-pro/>
+
+#import <Cocoa/Cocoa.h>
+
+
+@interface SPWindow : NSWindow {
+
+}
+
+@end
diff --git a/Source/SPWindow.m b/Source/SPWindow.m
new file mode 100644
index 00000000..58f38d0b
--- /dev/null
+++ b/Source/SPWindow.m
@@ -0,0 +1,112 @@
+//
+// $Id$
+//
+// SPWindow.m
+// sequel-pro
+//
+// Created by Rowan Beentje on January 23, 2011
+//
+// 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 "SPWindow.h"
+
+
+@implementation SPWindow
+
+#pragma mark -
+#pragma mark Keyboard shortcut additions
+
+/**
+ * While keyboard shortcuts are an easy way to apply code app-wide, alternate menu
+ * items only collapse if the unmodified key matches; this method allows keyboard
+ * shortcuts without menu equivalents for a window, or the use of different base shortcuts.
+ */
+- (void) sendEvent:(NSEvent *)theEvent
+{
+
+ if ([theEvent type] == NSKeyDown && [[theEvent characters] length]) {
+
+ unichar theCharacter = [[theEvent charactersIgnoringModifiers] characterAtIndex:0];
+
+ // ⌃⎋ sends a right-click to order front the context menu under the first responder's visible Rect
+ if ([theEvent keyCode] == 53 && (([theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask) == (NSAlternateKeyMask))) {
+
+ id firstResponder = [[NSApp keyWindow] firstResponder];
+
+ if(firstResponder && [firstResponder respondsToSelector:@selector(menuForEvent:)]) {
+
+ NSRect theRect = [firstResponder visibleRect];
+ NSPoint loc = theRect.origin;
+ loc.y += theRect.size.height+5;
+ loc = [firstResponder convertPoint:loc toView:nil];
+ NSEvent *anEvent = [NSEvent
+ mouseEventWithType:NSRightMouseDown
+ location:loc
+ modifierFlags:0
+ timestamp:1
+ windowNumber:[self windowNumber]
+ context:[NSGraphicsContext currentContext]
+ eventNumber:0
+ clickCount:1
+ pressure:0.0];
+
+ [NSMenu popUpContextMenu:[firstResponder menuForEvent:theEvent] withEvent:anEvent forView:firstResponder];
+
+ return;
+
+ }
+
+ }
+
+ switch (theCharacter) {
+
+ // Alternate keys for switching tabs - ⇧⌘[ and ⇧⌘]. These seem to be standards on some apps,
+ // including Apple applications under some circumstances
+ case '}':
+ if (([theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask) == (NSCommandKeyMask | NSShiftKeyMask))
+ {
+ return [[self windowController] selectNextDocumentTab:self];
+ }
+ break;
+ case '{':
+ if (([theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask) == (NSCommandKeyMask | NSShiftKeyMask))
+ {
+ return [[self windowController] selectPreviousDocumentTab:self];
+ }
+ break;
+
+ // Also support ⌥⌘← and ⌥⌘→, used in other applications, for maximum compatibility
+ case NSRightArrowFunctionKey:
+ if (([theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask) == (NSCommandKeyMask | NSAlternateKeyMask | NSNumericPadKeyMask | NSFunctionKeyMask))
+ {
+ return [[self windowController] selectNextDocumentTab:self];
+ }
+ break;
+ case NSLeftArrowFunctionKey:
+ if (([theEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask) == (NSCommandKeyMask | NSAlternateKeyMask | NSNumericPadKeyMask | NSFunctionKeyMask))
+ {
+ return [[self windowController] selectPreviousDocumentTab:self];
+ }
+ break;
+ }
+ }
+
+ [super sendEvent:theEvent];
+}
+
+
+@end
diff --git a/Source/SequelProTunnelAssistant.m b/Source/SequelProTunnelAssistant.m
index bbf21a3c..eb16ef5e 100644
--- a/Source/SequelProTunnelAssistant.m
+++ b/Source/SequelProTunnelAssistant.m
@@ -72,8 +72,8 @@ int main(int argc, const char *argv[])
// request the password
if ([[environment objectForKey:@"SP_PASSWORD_METHOD"] integerValue] == SPSSHPasswordUsesKeychain) {
SPKeychain *keychain;
- NSString *keychainName = [environment objectForKey:@"SP_KEYCHAIN_ITEM_NAME"];
- NSString *keychainAccount = [environment objectForKey:@"SP_KEYCHAIN_ITEM_ACCOUNT"];
+ NSString *keychainName = [[environment objectForKey:@"SP_KEYCHAIN_ITEM_NAME"] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
+ NSString *keychainAccount = [[environment objectForKey:@"SP_KEYCHAIN_ITEM_ACCOUNT"] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
if (!keychainName || !keychainAccount) {
NSLog(@"SSH Tunnel: keychain authentication specified but insufficient internal details supplied");
@@ -82,17 +82,16 @@ int main(int argc, const char *argv[])
}
keychain = [[SPKeychain alloc] init];
- if (![keychain passwordExistsForName:keychainName account:keychainAccount]) {
- NSLog(@"SSH Tunnel: specified keychain password not found");
+ if ([keychain passwordExistsForName:keychainName account:keychainAccount]) {
+ printf("%s\n", [[keychain getPasswordForName:keychainName account:keychainAccount] UTF8String]);
[keychain release];
[pool release];
- return 1;
+ return 0;
}
- printf("%s\n", [[keychain getPasswordForName:keychainName account:keychainAccount] UTF8String]);
- [keychain release];
- [pool release];
- return 0;
+ // If retrieving the password failed, log an error and fall back to requesting from the GUI
+ NSLog(@"SSH Tunnel: specified keychain password not found");
+ argument = [NSString stringWithFormat:NSLocalizedString(@"The SSH password could not be loaded from the keychain; please enter the SSH password for %@:", @"Prompt for SSH password when keychain fetch failed"), connectionName];
}
// If the password method is set to request the password from the tunnel instance, do so.
@@ -113,15 +112,15 @@ int main(int argc, const char *argv[])
}
password = [sequelProTunnel getPasswordWithVerificationHash:verificationHash];
- if (!password) {
- NSLog(@"SSH Tunnel: unable to successfully request password from Sequel Pro for internal authentication");
+ if (password) {
+ printf("%s\n", [password UTF8String]);
[pool release];
- return 1;
+ return 0;
}
-
- printf("%s\n", [password UTF8String]);
- [pool release];
- return 0;
+
+ // If retrieving the password failed, log an error and fall back to requesting from the GUI
+ NSLog(@"SSH Tunnel: unable to successfully request password from Sequel Pro for internal authentication");
+ argument = [NSString stringWithFormat:NSLocalizedString(@"The SSH password could not be loaded; please enter the SSH password for %@:", @"Prompt for SSH password when direct fetch failed"), connectionName];
}
}
diff --git a/UnitTests/MCPKitTest.h b/UnitTests/MCPKitTest.h
index d4d1ffec..926780fa 100644
--- a/UnitTests/MCPKitTest.h
+++ b/UnitTests/MCPKitTest.h
@@ -27,6 +27,17 @@
@class MCPConnection;
+/**
+ * @class MCPKitTest MCPKitTest.h
+ *
+ * MCPKit test case class.
+ *
+ * Note that this test case class uses the 'sakila' database to perform it's tests. It is available from:
+ *
+ * http://downloads.mysql.com/docs/sakila-db.zip
+ *
+ * You must also create a user called 'sp_tester' with no password and all permissions on the database 'sakila'.
+ */
@interface MCPKitTest : SenTestCase
{
MCPConnection *connection;
diff --git a/UnitTests/MCPKitTest.m b/UnitTests/MCPKitTest.m
index e347d9da..4480b0a1 100644
--- a/UnitTests/MCPKitTest.m
+++ b/UnitTests/MCPKitTest.m
@@ -27,59 +27,97 @@
#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 const NSInteger SPTestDatabasePort = 3306;
+
@implementation MCPKitTest
+#pragma mark -
+#pragma mark Setup & tear down
+
+/**
+ * Sets up the connection for use in the test cases.
+ */
- (void)setUp
{
- // For now, we try an find the following database in the local connection.
- // If the connection fails for any reasons, tests are not run.
- // http://downloads.mysql.com/docs/sakila-db.zip
- //
- // Set up a user called 'sakila' with no password that has all privs on the
- // database 'sakila'.
+ connection = [[MCPConnection alloc] initToHost:SPTestDatabaseHost withLogin:SPTestDatabaseUser usingPort:SPTestDatabasePort];
+
+ [connection setPassword:SPTestDatabasePassword];
- connection = [[MCPConnection alloc] initToSocket:@"/var/mysql/mysql.sock" withLogin:@"sakila"];
+ [connection setConnectionTimeout:10];
+ [connection setUseKeepAlive:1];
+ [connection setKeepAliveInterval:60];
- // Set the 'sakila' user's password
- [connection setPassword:@""];
+ [connection connect];
if (![connection isConnected]) {
- [connection dealloc];
- connection = nil;
+ [connection release], connection = nil;
+
STFail(@"Error connecting to database server. No tests were run.");
}
else {
- if (![connection selectDB:@"sakila"]) {
- [connection dealloc];
- connection = nil;
- STFail(@"Error selecting database 'sakila'. No tests were run.");
+ if (![connection selectDB:SPTestDatabaseName]) {
+ [connection release], connection = nil;
+
+ STFail(@"Error selecting database '%@'. No tests were run.", SPTestDatabaseName);
}
}
}
+/**
+ * Disconnects the connection if connected.
+ */
- (void)tearDown
{
- if (connection != nil) {
+ if (connection && [connection isConnected]) {
[connection disconnect];
- [connection dealloc];
}
+
+ [connection release], connection = nil;
}
-- (void)testServerVersion
+#pragma mark -
+#pragma mark Tests
+
+/**
+ * Tests the connection's major version number.
+ */
+- (void)testServerMajorVersion
{
- if (connection == nil) return;
+ if ((!connection) || (![connection isConnected])) return;
- STAssertTrue([connection serverMajorVersion] != 0, @"server version");
- STAssertTrue([connection serverMajorVersion] != 0, @"server version");
+ STAssertTrue(([connection serverMajorVersion] != 0), @"server major version");
}
-- (void)testTableList
+/**
+ * Tests the connection's version string.
+ */
+- (void)testServerVersionString
{
- if (connection == nil) return;
+ if ((!connection) || (![connection isConnected])) return;
+
+ STAssertTrue(([[connection serverVersionString] length] > 0), @"server version string");
+}
+
+/**
+ * Tests the connection query execution.
+ */
+- (void)testQueryExexution
+{
+ if ((!connection) || (![connection isConnected])) return;
- MCPResult *queryResult = [connection queryString:@"SELECT * FROM actor"];
+ MCPResult *result = [connection queryString:@"SELECT * FROM actor"];
- STAssertEquals([queryResult numOfRows], (my_ulonglong)200, @"actors table count");
+ if ([connection queryErrored]) {
+ STFail(@"Query execution failed with error: %@", [connection getLastErrorMessage]);
+ }
+ else {
+ STAssertEquals([result numOfRows], (my_ulonglong)200, @"'actors' table count");
+ }
}
@end
diff --git a/UnitTests/SPStringAdditionsTest.m b/UnitTests/SPStringAdditionsTest.m
index 208381a8..8fce7e07 100644
--- a/UnitTests/SPStringAdditionsTest.m
+++ b/UnitTests/SPStringAdditionsTest.m
@@ -26,32 +26,35 @@
#import "SPStringAdditionsTest.h"
#import "SPStringAdditions.h"
-@implementation SPStringAdditionsTest
-
-- (void)setUp
-{
-
-}
+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";
-- (void)tearDown
-{
-
-}
+@implementation SPStringAdditionsTest
+/**
+ * stringByRemovingCharactersInSet test case.
+ */
- (void)testStringByRemovingCharactersInSet
{
- NSCharacterSet *junk = [NSCharacterSet characterSetWithCharactersInString:@"abc',ü"];
+ NSString *charsToRemove = @"abc',ü";
+
+ NSCharacterSet *junk = [NSCharacterSet characterSetWithCharactersInString:charsToRemove];
- NSString *s = @"this is big, crazy st'ring";
- NSString *expect = @"this is ig rzy string";
+ NSString *actualUTFString = SPUTFTestString;
+ NSString *actualASCIIString = SPASCIITestString;
- STAssertEqualObjects([s stringByRemovingCharactersInSet:junk], expect, @"stringByRemovingCharactersInSet");
+ NSString *expectedUTFString = @"In der Krze liegt die Wrz";
+ NSString *expectedASCIIString = @"this is ig rzy test string with some rndom spes nd quotes";
- // Check UTF
- s = @"In der Kürze liegt die Würz";
- expect = @"In der Krze liegt die Wrz";
+ STAssertEqualObjects([actualASCIIString stringByRemovingCharactersInSet:junk],
+ expectedASCIIString,
+ @"The following characters should have been removed %@",
+ charsToRemove);
- STAssertEqualObjects([s stringByRemovingCharactersInSet:junk], expect, @"stringByRemovingCharactersInSet");
+ STAssertEqualObjects([actualUTFString stringByRemovingCharactersInSet:junk],
+ expectedUTFString,
+ @"The following characters should have been removed %@",
+ charsToRemove);
}
@end
diff --git a/sequel-pro.xcodeproj/project.pbxproj b/sequel-pro.xcodeproj/project.pbxproj
index 0baff5ea..48fe7c2a 100644
--- a/sequel-pro.xcodeproj/project.pbxproj
+++ b/sequel-pro.xcodeproj/project.pbxproj
@@ -39,6 +39,7 @@
11D44DF0118F5887002AA43C /* OCMock.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 11D44DEF118F5887002AA43C /* OCMock.framework */; };
171312CE109D23C700FB465F /* SPTableTextFieldCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 171312CD109D23C700FB465F /* SPTableTextFieldCell.m */; };
17148565125F5FF500321285 /* SPDatabaseCharacterSets.m in Sources */ = {isa = PBXBuildFile; fileRef = 17148564125F5FF500321285 /* SPDatabaseCharacterSets.m */; };
+ 1723F08B12F1F9350008253B /* SPWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 1723F08A12F1F9350008253B /* SPWindow.m */; };
17292443107AC41000B21980 /* SPXMLExporter.m in Sources */ = {isa = PBXBuildFile; fileRef = 17292442107AC41000B21980 /* SPXMLExporter.m */; };
172A65110F7BED7A001E861A /* SPConsoleMessage.m in Sources */ = {isa = PBXBuildFile; fileRef = 172A65100F7BED7A001E861A /* SPConsoleMessage.m */; };
173284EA1088FEDE0062E892 /* SPConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 173284E91088FEDE0062E892 /* SPConstants.m */; };
@@ -572,6 +573,10 @@
171312CD109D23C700FB465F /* SPTableTextFieldCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPTableTextFieldCell.m; sourceTree = "<group>"; };
17148563125F5FF500321285 /* SPDatabaseCharacterSets.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPDatabaseCharacterSets.h; sourceTree = "<group>"; };
17148564125F5FF500321285 /* SPDatabaseCharacterSets.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPDatabaseCharacterSets.m; sourceTree = "<group>"; };
+ 1723F04A12F1F8850008253B /* create-test-stubs.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = "create-test-stubs.pl"; sourceTree = "<group>"; };
+ 1723F04B12F1F8850008253B /* run-tests.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "run-tests.sh"; sourceTree = "<group>"; };
+ 1723F08912F1F9350008253B /* SPWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPWindow.h; sourceTree = "<group>"; };
+ 1723F08A12F1F9350008253B /* SPWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPWindow.m; sourceTree = "<group>"; };
17292441107AC41000B21980 /* SPXMLExporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPXMLExporter.h; sourceTree = "<group>"; };
17292442107AC41000B21980 /* SPXMLExporter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SPXMLExporter.m; sourceTree = "<group>"; };
172A650F0F7BED7A001E861A /* SPConsoleMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SPConsoleMessage.h; sourceTree = "<group>"; };
@@ -1588,7 +1593,9 @@
children = (
1713122F109C7DF600FB465F /* build.sh */,
1798AB0C12676CD9000D946A /* localize.sh */,
+ 1723F04B12F1F8850008253B /* run-tests.sh */,
1761FD9D0EF0488900331368 /* build-version.pl */,
+ 1723F04A12F1F8850008253B /* create-test-stubs.pl */,
178934980F30CDA10097539A /* trim-application.sh */,
17B7B698101611C800F057DE /* build-mysql-client.sh */,
588593F30F7AEC9500ED0E67 /* package-application.sh */,
@@ -2018,6 +2025,8 @@
17E641670EF01F19001BC333 /* Views */ = {
isa = PBXGroup;
children = (
+ 1723F08912F1F9350008253B /* SPWindow.h */,
+ 1723F08A12F1F9350008253B /* SPWindow.m */,
17E6417E0EF01FA8001BC333 /* SPImageView.h */,
17E6417F0EF01FA8001BC333 /* SPImageView.m */,
584094CC1107BD0500260CFD /* SPAlertSheets.h */,
@@ -2964,7 +2973,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
- shellScript = "# Run the unit tests in this test bundle.\n\"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests\"\n";
+ shellScript = "# Run tests\n\"${SRCROOT}/Scripts/run-tests.sh\"\n";
};
/* End PBXShellScriptBuildPhase section */
@@ -3202,6 +3211,7 @@
17AF713612A842B000C54D6A /* SPTreeNode.m in Sources */,
17AF713912A842DE00C54D6A /* SPFlippedView.m in Sources */,
17AF739D12AAABDD00C54D6A /* SPChooseMenuItemDialog.m in Sources */,
+ 1723F08B12F1F9350008253B /* SPWindow.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};