aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsqlprodev <sqlprodev@northofthree.com>2011-05-19 22:47:53 +0000
committersqlprodev <sqlprodev@northofthree.com>2011-05-19 22:47:53 +0000
commitc80db3a0d26b394b9c88fc6ef19a90cda5340440 (patch)
treed79af344b053e24393864382958e490f4b844735
parent838faafed7af37723e8f900a6cba846a29507db2 (diff)
downloadsequelpro-c80db3a0d26b394b9c88fc6ef19a90cda5340440.tar.gz
sequelpro-c80db3a0d26b394b9c88fc6ef19a90cda5340440.tar.bz2
sequelpro-c80db3a0d26b394b9c88fc6ef19a90cda5340440.zip
merging SP_REFACTOR branch with trunk
-rw-r--r--Source/NoodleLineNumberView.m1
-rw-r--r--Source/SPConnectionController.h15
-rw-r--r--Source/SPConnectionController.m54
-rw-r--r--Source/SPConstants.m6
-rw-r--r--Source/SPCustomQuery.h13
-rw-r--r--Source/SPCustomQuery.m14
-rw-r--r--Source/SPDatabaseDocument.h14
-rw-r--r--Source/SPDatabaseDocument.m40
-rw-r--r--Source/SPFieldEditorController.h2
-rw-r--r--Source/SPFieldEditorController.m16
-rw-r--r--Source/SPIndexesController.h23
-rw-r--r--Source/SPIndexesController.m55
-rw-r--r--Source/SPNavigatorController.m3
-rw-r--r--Source/SPNotLoaded.m3
-rw-r--r--Source/SPQueryController.h4
-rw-r--r--Source/SPQueryController.m141
-rw-r--r--Source/SPTableContent.h49
-rw-r--r--Source/SPTableContent.m220
-rw-r--r--Source/SPTableStructure.h26
-rw-r--r--Source/SPTableStructure.m53
-rw-r--r--Source/SPTableStructureDelegate.m2
-rw-r--r--Source/SPTablesList.m4
-rw-r--r--Source/SPTextView.h6
-rw-r--r--Source/SPTextView.m18
24 files changed, 626 insertions, 156 deletions
diff --git a/Source/NoodleLineNumberView.m b/Source/NoodleLineNumberView.m
index 0213c151..2d93fa8c 100644
--- a/Source/NoodleLineNumberView.m
+++ b/Source/NoodleLineNumberView.m
@@ -327,7 +327,6 @@ typedef NSRange (*RangeOfLineIMP)(id object, SEL selector, NSRange range);
CGFloat yinsetMinY = yinset - NSMinY(visibleRect);
CGFloat rectHeight;
-
for (line = (NSUInteger)(*lineNumberForCharacterIndexIMP)(self, lineNumberForCharacterIndexSel, range.location); line < count; line++)
{
lineIndex = [NSArrayObjectAtIndex(lines, line) unsignedIntegerValue];
diff --git a/Source/SPConnectionController.h b/Source/SPConnectionController.h
index bded0b66..3f9cf866 100644
--- a/Source/SPConnectionController.h
+++ b/Source/SPConnectionController.h
@@ -30,9 +30,9 @@
#import "SPFavoritesOutlineView.h"
#endif
-@class SPDatabaseDocument, SPSSHTunnel
+@class SPDatabaseDocument, SPSSHTunnel, SPKeychain
#ifndef SP_REFACTOR /* class decl */
-, SPKeychain, BWAnchoredButtonBar, SPFavoriteNode
+, BWAnchoredButtonBar, SPFavoriteNode
#endif
;
@@ -59,8 +59,10 @@
#ifndef SP_REFACTOR /* ivars */
NSView *databaseConnectionSuperview;
NSSplitView *databaseConnectionView;
+#endif
SPKeychain *keychain;
NSUserDefaults *prefs;
+#ifndef SP_REFACTOR
NSMutableArray *favorites;
#endif
SPSSHTunnel *sshTunnel;
@@ -100,11 +102,11 @@
NSString *connectionKeychainID;
NSString *connectionKeychainItemName;
-#ifndef SP_REFACTOR /* ivars */
NSString *connectionKeychainItemAccount;
NSString *connectionSSHKeychainItemName;
NSString *connectionSSHKeychainItemAccount;
+#ifndef SP_REFACTOR /* ivars */
NSMutableArray *nibObjectsToRelease;
IBOutlet NSView *connectionView;
@@ -181,13 +183,10 @@
@property (readwrite, assign) int sshKeyLocationEnabled;
@property (readwrite, retain) NSString *sshKeyLocation;
@property (readwrite, retain) NSString *sshPort;
-#ifndef SP_REFACTOR /* ivars */
-
@property (readwrite, retain) NSString *connectionKeychainItemName;
@property (readwrite, retain) NSString *connectionKeychainItemAccount;
@property (readwrite, retain) NSString *connectionSSHKeychainItemName;
@property (readwrite, retain) NSString *connectionSSHKeychainItemAccount;
-#endif
@property (readonly, assign) BOOL isConnecting;
#ifndef SP_REFACTOR /* ivars */
@@ -198,7 +197,6 @@
// Connection processes
- (IBAction)initiateConnection:(id)sender;
-#ifndef SP_REFACTOR /* method decls */
- (IBAction)cancelMySQLConnection:(id)sender;
- (void)initiateSSHTunnelConnection;
- (void)sshTunnelCallback:(SPSSHTunnel *)theTunnel;
@@ -209,16 +207,19 @@
// Interface interaction
- (IBAction)chooseKeyLocation:(id)sender;
+#ifndef SP_REFACTOR /* method decls */
- (IBAction)editFavorites:(id)sender;
- (IBAction)showHelp:(id)sender;
- (IBAction)updateSSLInterface:(id)sender;
- (void)resizeTabViewToConnectionType:(NSUInteger)theType animating:(BOOL)animate;
- (IBAction)sortFavorites:(id)sender;
- (IBAction)reverseSortFavorites:(id)sender;
+#endif
// Connection details interaction
- (BOOL)checkHost;
+#ifndef SP_REFACTOR
// Favorites interaction
- (void)updateFavorites;
- (void)updateFavoriteSelection:(id)sender;
diff --git a/Source/SPConnectionController.m b/Source/SPConnectionController.m
index 728c621e..50d42ee1 100644
--- a/Source/SPConnectionController.m
+++ b/Source/SPConnectionController.m
@@ -33,8 +33,8 @@
#import "RegexKitLite.h"
#endif
#import "SPAlertSheets.h"
-#ifndef SP_REFACTOR /* headers */
#import "SPKeychain.h"
+#ifndef SP_REFACTOR /* headers */
#import "SPFavoritesPreferencePane.h"
#endif
#import "SPSSHTunnel.h"
@@ -82,12 +82,10 @@
@synthesize sshKeyLocation;
@synthesize sshPort;
-#ifndef SP_REFACTOR /* ivars */
@synthesize connectionKeychainItemName;
@synthesize connectionKeychainItemAccount;
@synthesize connectionSSHKeychainItemName;
@synthesize connectionSSHKeychainItemAccount;
-#endif
@synthesize isConnecting;
#ifndef SP_REFACTOR /* ivars */
@@ -110,11 +108,9 @@
#endif
connectionKeychainID = nil;
connectionKeychainItemName = nil;
-#ifndef SP_REFACTOR /* ivars */
connectionKeychainItemAccount = nil;
connectionSSHKeychainItemName = nil;
connectionSSHKeychainItemAccount = nil;
-#endif
mySQLConnection = nil;
sshTunnel = nil;
cancellingConnection = NO;
@@ -140,9 +136,10 @@
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(scrollViewFrameChanged:) name:NSViewFrameDidChangeNotification object:nil];
// Set up a keychain instance and preferences reference, and create the initial favorites list
+#endif
keychain = [[SPKeychain alloc] init];
prefs = [[NSUserDefaults standardUserDefaults] retain];
-
+#ifndef SP_REFACTOR
favorites = nil;
// Load favorites
@@ -190,8 +187,8 @@
[prefs removeObserver:self forKeyPath:SPFavorites];
#endif
[[NSNotificationCenter defaultCenter] removeObserver:self];
-#ifndef SP_REFACTOR /* dealloc ivars */
[keychain release];
+#ifndef SP_REFACTOR /* dealloc ivars */
[prefs release];
for (id retainedObject in nibObjectsToRelease) [retainedObject release];
@@ -203,11 +200,9 @@
if (sshTunnel) [sshTunnel setConnectionStateChangeSelector:nil delegate:nil], [sshTunnel disconnect], [sshTunnel release];
if (connectionKeychainID) [connectionKeychainID release];
if (connectionKeychainItemName) [connectionKeychainItemName release];
-#ifndef SP_REFACTOR /* dealloc ivars */
if (connectionKeychainItemAccount) [connectionKeychainItemAccount release];
if (connectionSSHKeychainItemName) [connectionSSHKeychainItemName release];
if (connectionSSHKeychainItemAccount) [connectionSSHKeychainItemAccount release];
-#endif
[super dealloc];
}
@@ -222,7 +217,6 @@
*/
- (IBAction)initiateConnection:(id)sender
{
-#ifndef SP_REFACTOR /* validate connection details */
// Ensure that host is not empty if this is a TCP/IP or SSH connection
if (([self type] == SPTCPIPConnection || [self type] == SPSSHTunnelConnection) && ![[self host] length]) {
SPBeginAlertSheet(NSLocalizedString(@"Insufficient connection details", @"insufficient details message"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [tableDocument parentWindow], self, nil, nil, NSLocalizedString(@"Insufficient details provided to establish a connection. Please enter at least the hostname.", @"insufficient details informative message"));
@@ -279,6 +273,7 @@
isConnecting = YES;
cancellingConnection = NO;
+#ifndef SP_REFACTOR
// Disable the favorites outline view to prevent further connections attempts
[favoritesTable setEnabled:NO];
@@ -287,6 +282,7 @@
[connectButton setEnabled:NO];
[progressIndicator startAnimation:self];
[progressIndicatorText setHidden:NO];
+#endif
// Start the current tab's progress indicator
[tableDocument setIsProcessing:YES];
@@ -297,9 +293,11 @@
if (connectionKeychainItemName) {
if ([[keychain getPasswordForName:connectionKeychainItemName account:connectionKeychainItemAccount] isEqualToString:[self password]]) {
[self setPassword:[[NSString string] stringByPaddingToLength:[[self password] length] withString:@"sp" startingAtIndex:0]];
+#ifndef SP_REFACTOR
[[standardPasswordField undoManager] removeAllActionsWithTarget:standardPasswordField];
[[socketPasswordField undoManager] removeAllActionsWithTarget:socketPasswordField];
[[sshPasswordField undoManager] removeAllActionsWithTarget:sshPasswordField];
+#endif
} else {
[connectionKeychainItemName release], connectionKeychainItemName = nil;
[connectionKeychainItemAccount release], connectionKeychainItemAccount = nil;
@@ -308,7 +306,9 @@
if (connectionSSHKeychainItemName) {
if ([[keychain getPasswordForName:connectionSSHKeychainItemName account:connectionSSHKeychainItemAccount] isEqualToString:[self sshPassword]]) {
[self setSshPassword:[[NSString string] stringByPaddingToLength:[[self sshPassword] length] withString:@"sp" startingAtIndex:0]];
+#ifndef SP_REFACTOR
[[sshSSHPasswordField undoManager] removeAllActionsWithTarget:sshSSHPasswordField];
+#endif
} else {
[connectionSSHKeychainItemName release], connectionSSHKeychainItemName = nil;
[connectionSSHKeychainItemAccount release], connectionSSHKeychainItemAccount = nil;
@@ -328,12 +328,11 @@
[self performSelector:@selector(initiateSSHTunnelConnection) withObject:nil afterDelay:0.0];
return;
}
-#endif
+
// ...or start the MySQL connection process directly
[self performSelector:@selector(initiateMySQLConnection) withObject:nil afterDelay:0.0];
}
-#ifndef SP_REFACTOR /* cancelMySQLConnection: */
/**
* Cancels (or rather marks) the current connection is to be cancelled once established.
*
@@ -343,16 +342,16 @@
*/
- (IBAction)cancelMySQLConnection:(id)sender
{
+#ifndef SP_REFACTOR
[connectButton setEnabled:NO];
[progressIndicatorText setStringValue:NSLocalizedString(@"Cancelling...", @"cancelling task status message")];
[progressIndicatorText display];
+#endif
mySQLConnectionCancelled = YES;
}
-#endif
-#ifndef SP_REFACTOR /* initiateSSHTunnelConnection */
/*
* Initiate the SSH connection process.
* This should only be called as part of initiateConnection:, and will indirectly
@@ -360,8 +359,10 @@
*/
- (void)initiateSSHTunnelConnection
{
+#ifndef SP_REFACTOR
[progressIndicatorText setStringValue:NSLocalizedString(@"SSH connecting...", @"SSH connecting very short status message")];
[progressIndicatorText display];
+#endif
// Trim whitespace and newlines from the SSH host field before attempting to connect
[self setSshHost:[[self sshHost] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
@@ -389,7 +390,6 @@
// itself as an argument - retain count should be one at this point.
[sshTunnel connect];
}
-#endif
/*
* Cancel connection.
@@ -407,7 +407,6 @@
sshTunnel = nil;
}
-#ifndef SP_REFACTOR /* sshTunnelCallback: */
/*
* A callback function for the SSH Tunnel setup process - will be called on a connection
* state change, allowing connection to fail or proceed as appropriate. If successful,
@@ -427,22 +426,27 @@
}
if (newState == PROXY_STATE_IDLE) {
+#ifndef SP_REFACTOR
[tableDocument setTitlebarStatus:NSLocalizedString(@"SSH Disconnected", @"SSH disconnected titlebar marker")];
+#endif
[self failConnectionWithTitle:NSLocalizedString(@"SSH connection failed!", @"SSH connection failed title") errorMessage:[theTunnel lastError] detail:[sshTunnel debugMessages]];
[self _restoreConnectionInterface];
}
else if (newState == PROXY_STATE_CONNECTED) {
+#ifndef SP_REFACTOR
[tableDocument setTitlebarStatus:NSLocalizedString(@"SSH Connected", @"SSH connected titlebar marker")];
+#endif
[self initiateMySQLConnection];
}
else {
+#ifndef SP_REFACTOR
[tableDocument setTitlebarStatus:NSLocalizedString(@"SSH Connecting…", @"SSH connecting titlebar marker")];
+#endif
}
}
-#endif
/*
* Set up the MySQL connection, either through a successful tunnel or directly in the background.
@@ -578,8 +582,6 @@
[tableDocument setConnection:mySQLConnection];
}
-#ifndef SP_REFACTOR /* connection favorites and ssh key handling */
-
#pragma mark -
#pragma mark Interface interaction
@@ -588,12 +590,15 @@
*/
- (IBAction)chooseKeyLocation:(id)sender
{
+#ifndef SP_REFACTOR /* favorites */
[favoritesTable deselectAll:self];
+#endif
NSString *directoryPath = nil;
NSString *filePath = nil;
NSArray *permittedFileTypes = nil;
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
+#ifndef SP_REFACTOR /* !!! ssh keys */
// Switch details by sender.
// First, SSH keys:
if (sender == sshSSHKeyButton) {
@@ -640,6 +645,7 @@
permittedFileTypes = [NSArray arrayWithObjects:@"pem", @"cert", @"crt", @"", nil];
[openPanel setAccessoryView:sslCACertLocationHelp];
}
+#endif
[openPanel beginSheetForDirectory:directoryPath
file:filePath
@@ -655,6 +661,7 @@
*/
- (void)chooseKeyLocationSheetDidEnd:(NSOpenPanel *)openPanel returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo
{
+#ifndef SP_REFACTOR /* !!! ssh key location */
NSString *abbreviatedFileName = [[openPanel filename] stringByAbbreviatingWithTildeInPath];
// SSH key file selection
@@ -692,8 +699,11 @@
}
[self setSslCACertFileLocation:abbreviatedFileName];
}
+#endif
}
+
+#ifndef SP_REFACTOR /* connection favorites and ssh key handling */
/**
* Opens the preferences window, or brings it to the front, and switch to the favorites tab.
* If a favorite is selected in the connection sheet, it is also select in the prefs window.
@@ -837,6 +847,7 @@
[connectionResizeContainer setFrame:frameRect];
}
}
+#endif
/**
* Check the host field and ensure it isn't set to "localhost" for
@@ -873,6 +884,7 @@
}
}
+#ifndef SP_REFACTOR
#pragma mark -
#pragma mark Favorites interaction
@@ -1393,12 +1405,12 @@
#ifndef SP_REFACTOR /* set mysql connection settings from prefs */
// Set whether or not we should enable delegate logging according to the prefs
[mySQLConnection setDelegateQueryLogging:[prefs boolForKey:SPConsoleEnableLogging]];
+#endif
// Set options from preferences
[mySQLConnection setConnectionTimeout:[[prefs objectForKey:SPConnectionTimeoutValue] integerValue]];
[mySQLConnection setUseKeepAlive:[[prefs objectForKey:SPUseKeepAlive] boolValue]];
[mySQLConnection setKeepAliveInterval:[[prefs objectForKey:SPKeepAliveInterval] doubleValue]];
-#endif
// Connect
[mySQLConnection connect];
@@ -1436,10 +1448,8 @@
errorMessage = [NSString stringWithFormat:NSLocalizedString(@"Unable to connect via the socket, or the request timed out.\n\nDouble-check that the socket path is correct and that you have the necessary privileges, and that the server is running.\n\nMySQL said: %@", @"message of panel when connection to host failed"), [mySQLConnection getLastErrorMessage]];
[[self onMainThread] failConnectionWithTitle:NSLocalizedString(@"Socket connection failed!", @"socket connection failed title") errorMessage:errorMessage detail:nil];
} else {
-#ifndef SP_REFACTOR /* error message requiring prefs access */
errorMessage = [NSString stringWithFormat:NSLocalizedString(@"Unable to connect to host %@, or the request timed out.\n\nBe sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently %ld seconds).\n\nMySQL said: %@", @"message of panel when connection to host failed"), [self host], (long)[[prefs objectForKey:SPConnectionTimeoutValue] integerValue], [mySQLConnection getLastErrorMessage]];
[[self onMainThread] failConnectionWithTitle:NSLocalizedString(@"Connection failed!", @"connection failed title") errorMessage:errorMessage detail:nil];
-#endif
}
// Tidy up
diff --git a/Source/SPConstants.m b/Source/SPConstants.m
index ef263d98..372987ed 100644
--- a/Source/SPConstants.m
+++ b/Source/SPConstants.m
@@ -111,9 +111,15 @@ NSString *SPConsoleEnableImportExportLogging = @"ConsoleEnableImportExportLo
NSString *SPConsoleEnableErrorLogging = @"ConsoleEnableErrorLogging";
// Network Prefpane
+#ifndef SP_REFACTOR
NSString *SPConnectionTimeoutValue = @"ConnectionTimeoutValue";
NSString *SPUseKeepAlive = @"UseKeepAlive";
NSString *SPKeepAliveInterval = @"KeepAliveInterval";
+#else
+NSString *SPConnectionTimeoutValue = @"SPConnectionTimeoutValue";
+NSString *SPUseKeepAlive = @"SPUseKeepAlive";
+NSString *SPKeepAliveInterval = @"SPKeepAliveInterval";
+#endif
// Editor Prefpane
NSString *SPCustomQueryEditorFont = @"CustomQueryEditorFont";
diff --git a/Source/SPCustomQuery.h b/Source/SPCustomQuery.h
index f001d364..16aaca14 100644
--- a/Source/SPCustomQuery.h
+++ b/Source/SPCustomQuery.h
@@ -52,9 +52,10 @@
@class SPCopyTable, SPQueryFavoriteManager, SPDataStorage, NSSplitView, SPFieldEditorController;
#endif
+#ifndef SP_REFACTOR
@interface SPCustomQuery : NSObject
-#ifdef SP_REFACTOR
-<NSTableViewDataSource, NSWindowDelegate, NSTableViewDelegate>
+#else
+@interface SPCustomQuery : NSObject <NSTableViewDataSource, NSWindowDelegate, NSTableViewDelegate>
#endif
{
IBOutlet id tableDocumentInstance;
@@ -186,6 +187,14 @@
NSString *kCellEditorErrorTooManyMatches;
}
+#ifdef SP_REFACTOR
+@property (assign) SPDatabaseDocument* tableDocumentInstance;
+@property (assign) SPTablesList* tablesListInstance;
+@property (assign) SPTextView *textView;
+@property (assign) SPCopyTable *customQueryView;
+@property (assign) NSButton* runAllButton;
+#endif
+
@property(assign) BOOL textViewWasChanged;
// IBAction methods
diff --git a/Source/SPCustomQuery.m b/Source/SPCustomQuery.m
index 26810323..507de79f 100644
--- a/Source/SPCustomQuery.m
+++ b/Source/SPCustomQuery.m
@@ -35,7 +35,9 @@
#import "SPFieldEditorController.h"
#import "SPTextAndLinkCell.h"
#import "SPTooltip.h"
+#ifndef SP_REFACTOR /* headers */
#import "SPQueryFavoriteManager.h"
+#endif
#import "SPQueryController.h"
#import "SPEncodingPopupAccessory.h"
#import "SPDataStorage.h"
@@ -51,6 +53,15 @@
@implementation SPCustomQuery
+#ifdef SP_REFACTOR
+@synthesize textView;
+@synthesize customQueryView;
+@synthesize runAllButton;
+@synthesize tableDocumentInstance;
+@synthesize tablesListInstance;
+#endif
+
+
@synthesize textViewWasChanged;
#pragma mark IBAction methods
@@ -250,7 +261,7 @@
// init query favorites controller
#ifndef SP_REFACTOR
[prefs synchronize];
-#endif
+
if(favoritesManager) [favoritesManager release];
favoritesManager = [[SPQueryFavoriteManager alloc] initWithDelegate:self];
@@ -260,6 +271,7 @@
modalDelegate:favoritesManager
didEndSelector:nil
contextInfo:nil];
+#endif
}
else if ([queryFavoritesButton indexOfSelectedItem] > 5) {
// Choose favorite
diff --git a/Source/SPDatabaseDocument.h b/Source/SPDatabaseDocument.h
index ebdac213..8f67ccc4 100644
--- a/Source/SPDatabaseDocument.h
+++ b/Source/SPDatabaseDocument.h
@@ -34,7 +34,7 @@
#ifndef SP_REFACTOR /* class forward decls */
SPProcessListController, SPServerVariablesController, SPUserManager, SPWindowController,
#endif
-SPTablesList, SPTableStructure, SPTableContent, SPTableData, SPServerSupport;
+SPTablesList, SPTableStructure, SPTableContent, SPTableData, SPServerSupport, SPCustomQuery;
#import "SPConnectionControllerDelegateProtocol.h"
@@ -85,7 +85,7 @@ SPTablesList, SPTableStructure, SPTableContent, SPTableData, SPServerSupport;
IBOutlet id databaseCopySheet;
IBOutlet id databaseRenameSheet;
- IBOutlet id queryProgressBar;
+ IBOutlet NSProgressIndicator* queryProgressBar;
IBOutlet NSBox *taskProgressLayer;
IBOutlet id taskProgressIndicator;
IBOutlet id taskDescriptionText;
@@ -234,8 +234,9 @@ SPTablesList, SPTableStructure, SPTableContent, SPTableData, SPServerSupport;
}
#ifdef SP_REFACTOR /* ivars */
-@property (readwrite, assign) id delegate;
+@property (assign) id delegate;
@property (readonly) NSMutableArray* allDatabases;
+@property (assign) NSProgressIndicator* queryProgressBar;
#endif
#ifndef SP_REFACTOR /* ivars */
@@ -397,7 +398,9 @@ SPTablesList, SPTableStructure, SPTableContent, SPTableData, SPServerSupport;
// Tab methods
- (void)makeKeyDocument;
- (BOOL)parentTabShouldClose;
+#endif
- (void)parentTabDidClose;
+#ifndef SP_REFACTOR
- (void)willResignActiveTabInWindow;
- (void)didBecomeActiveTabInWindow;
- (void)tabDidBecomeKey;
@@ -430,10 +433,11 @@ SPTablesList, SPTableStructure, SPTableContent, SPTableData, SPServerSupport;
- (void)connect;
- (NSArray*)allTableNames;
- (SPTablesList*)tablesListInstance;
-- (SPTableData*)tableDataInstance;
- (void)setTableSourceInstance:(SPTableStructure*)source;
- (void)setTableContentInstance:(SPTableContent*)content;
-- (void)setTableDataInstance:(SPTableData*)data;
+
+@property (assign) SPTableData* tableDataInstance;
+@property (assign) SPCustomQuery* customQueryInstance;
#endif
@end
diff --git a/Source/SPDatabaseDocument.m b/Source/SPDatabaseDocument.m
index 8f63f163..4d6e4bda 100644
--- a/Source/SPDatabaseDocument.m
+++ b/Source/SPDatabaseDocument.m
@@ -39,7 +39,9 @@
#import "ImageAndTextCell.h"
#import "SPGrowlController.h"
#import "SPExportController.h"
+#endif
#import "SPQueryController.h"
+#ifndef SP_REFACTOR /* headers */
#import "SPWindowController.h"
#endif
#import "SPNavigatorController.h"
@@ -75,10 +77,13 @@
#ifdef SP_REFACTOR /* headers */
#import "SPAlertSheets.h"
#import "NSNotificationAdditions.h"
+#import "SPCustomQuery.h"
#endif
// Constants
+#ifndef SP_REFACTOR
static NSString *SPCreateSyntx = @"SPCreateSyntax";
+#endif
@interface SPDatabaseDocument ()
@@ -107,6 +112,9 @@ static NSString *SPCreateSyntx = @"SPCreateSyntax";
#ifdef SP_REFACTOR /* ivars */
@synthesize allDatabases;
@synthesize delegate;
+@synthesize tableDataInstance;
+@synthesize customQueryInstance;
+@synthesize queryProgressBar;
#endif
- (id)init
@@ -211,22 +219,12 @@ static NSString *SPCreateSyntx = @"SPCreateSyntax";
tableContentInstance = content;
}
-- (void)setTableDataInstance:(SPTableData*)data
-{
- tableDataInstance = data;
-}
-
-- (SPTableData*)tableDataInstance
-{
- return tableDataInstance;
-}
-
#endif
-#ifndef SP_REFACTOR /* awakeFromNib */
- (void)awakeFromNib
{
+#ifndef SP_REFACTOR
if (_mainNibLoaded) return;
_mainNibLoaded = YES;
@@ -258,7 +256,7 @@ static NSString *SPCreateSyntx = @"SPCreateSyntax";
// Register a second observer for when the logging preference changes so we can tell the current connection about it
[prefs addObserver:self forKeyPath:SPConsoleEnableLogging options:NSKeyValueObservingOptionNew context:NULL];
-
+#endif
// Register for notifications
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willPerformQuery:)
name:@"SMySQLQueryWillBePerformed" object:self];
@@ -267,6 +265,7 @@ static NSString *SPCreateSyntx = @"SPCreateSyntax";
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationWillTerminate:)
name:@"NSApplicationWillTerminateNotification" object:nil];
+#ifndef SP_REFACTOR
// Find the Database -> Database Encoding menu (it's not in our nib, so we can't use interface builder)
selectEncodingMenu = [[[[[NSApp mainMenu] itemWithTag:SPMainMenuDatabase] submenu] itemWithTag:1] submenu];
@@ -325,8 +324,8 @@ static NSString *SPCreateSyntx = @"SPCreateSyntax";
[taskProgressWindow setContentView:taskProgressLayer];
[contentViewSplitter setDelegate:self];
-}
#endif
+}
#ifndef SP_REFACTOR /* password sheet and history navigation */
/**
@@ -443,10 +442,10 @@ static NSString *SPCreateSyntx = @"SPCreateSyntax";
[tableDataInstance setConnection:mySQLConnection];
[extendedTableInfoInstance setConnection:mySQLConnection];
-#ifndef SP_REFACTOR /* update custom query editor */
// Set the custom query editor's MySQL version
[customQueryInstance setMySQLversion:mySQLVersion];
+#ifndef SP_REFACTOR
[self updateWindowTitle:self];
// Connected Growl notification
@@ -2553,12 +2552,12 @@ static NSString *SPCreateSyntx = @"SPCreateSyntax";
[queryProgressBar stopAnimation:self];
}
-#ifndef SP_REFACTOR /* applicationWillTerminate: */
/**
* Invoked when the application will terminate
*/
- (void)applicationWillTerminate:(NSNotification *)notification
{
+#ifndef SP_REFACTOR /* applicationWillTerminate: */
// Auto-save preferences to spf file based connection
if([self fileURL] && [[[self fileURL] path] length] && ![self isUntitled])
@@ -2572,11 +2571,13 @@ static NSString *SPCreateSyntx = @"SPCreateSyntax";
// Note that this call does not need to be removed in release builds as leaks analysis output is only
// dumped if [[SPLogger logger] setDumpLeaksOnTermination]; has been called first.
[[SPLogger logger] dumpLeaks];
+#endif
}
#pragma mark -
#pragma mark Menu methods
+#ifndef SP_REFACTOR
/**
* Saves SP session or if Custom Query tab is active the editor's content as SQL file
* If sender == nil then the call came from [self writeSafelyToURL:ofType:forSaveOperation:error]
@@ -3862,19 +3863,23 @@ static NSString *SPCreateSyntx = @"SPCreateSyntax";
// Return YES by default
return YES;
}
+#endif
/**
* Invoked when the parent tab is about to close
*/
- (void)parentTabDidClose
{
-
+#ifndef SP_REFACTOR
// Cancel autocompletion trigger
if([prefs boolForKey:SPCustomQueryAutoComplete])
+#endif
[NSObject cancelPreviousPerformRequestsWithTarget:[customQueryInstance valueForKeyPath:@"textView"]
selector:@selector(doAutoCompletion)
object:nil];
+#ifndef SP_REFACTOR
if([prefs boolForKey:SPCustomQueryUpdateAutoHelp])
+#endif
[NSObject cancelPreviousPerformRequestsWithTarget:[customQueryInstance valueForKeyPath:@"textView"]
selector:@selector(autoHelp)
object:nil];
@@ -3883,13 +3888,16 @@ static NSString *SPCreateSyntx = @"SPCreateSyntax";
[mySQLConnection setDelegate:nil];
if (_isConnected) [self closeConnection];
else [connectionController cancelConnection];
+#ifndef SP_REFACTOR
if ([[[SPQueryController sharedQueryController] window] isVisible]) [self toggleConsole:self];
+#endif
[createTableSyntaxWindow orderOut:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self];
[self setParentWindow:nil];
}
+#ifndef SP_REFACTOR
/**
* Invoked when the parent tab is currently the active tab in the
* window, but is being switched away from, to allow cleaning up
diff --git a/Source/SPFieldEditorController.h b/Source/SPFieldEditorController.h
index b629acbf..e2cc3195 100644
--- a/Source/SPFieldEditorController.h
+++ b/Source/SPFieldEditorController.h
@@ -161,7 +161,9 @@
NSUserDefaults *prefs;
+#ifndef SP_REFACTOR
NSDictionary *qlTypes;
+#endif
NSInteger editSheetReturnCode;
BOOL _isGeometry;
diff --git a/Source/SPFieldEditorController.m b/Source/SPFieldEditorController.m
index 7bdd2eb9..1cb925e2 100644
--- a/Source/SPFieldEditorController.m
+++ b/Source/SPFieldEditorController.m
@@ -51,7 +51,11 @@
*/
- (id)init
{
+#ifndef SP_REFACTOR
if ((self = [super initWithWindowNibName:@"FieldEditorSheet"])) {
+#else
+ if ((self = [super initWithWindowNibName:@"SQLFieldEditorSheet"])) {
+#endif
// force the nib to be loaded
(void) [self window];
counter = 0;
@@ -86,6 +90,7 @@
[menuItem setEnabled:NO];
[menu addItem:menuItem];
[menuItem release];
+#ifndef SP_REFACTOR
NSUInteger tag = 2;
// Load default QL types
@@ -112,7 +117,6 @@
[qlTypesItems addObject:type];
}
}
-#ifndef SP_REFACTOR
// Load user-defined QL types
if([prefs objectForKey:SPQuickLookTypes]) {
for(id type in [prefs objectForKey:SPQuickLookTypes]) {
@@ -125,10 +129,10 @@
[qlTypesItems addObject:type];
}
}
-#endif
qlTypes = [[NSDictionary dictionaryWithObject:qlTypesItems forKey:SPQuickLookTypes] retain];
[qlTypesItems release];
+#endif
fieldType = @"";
fieldEncoding = @"";
@@ -150,7 +154,9 @@
[[NSClassFromString(@"QLPreviewPanel") sharedPreviewPanel] orderOut:nil];
if ( sheetEditData ) [sheetEditData release];
+#ifndef SP_REFACTOR
if ( qlTypes ) [qlTypes release];
+#endif
if ( tmpDirPath ) [tmpDirPath release];
if ( esUndoManager ) [esUndoManager release];
if ( contextInfo ) [contextInfo release];
@@ -420,8 +426,10 @@
// After ordering out this sheet SPCopyTable remains the first responder thus set it hard.
// This only works in conjunction with [NSTextView becomeFirstResponder] and [NSTextView resignFirstResponder]
// which has to return YES.
+#ifndef SP_REFACTOR
if([[self window] firstResponder] == editTextView)
[[NSApp mainWindow] makeFirstResponder:[[self window] firstResponder]];
+#endif
}
@@ -480,7 +488,9 @@
[hexTextView setHidden:YES];
[hexTextScrollView setHidden:YES];
[usedSheet makeFirstResponder:editTextView];
+#ifndef SP_REFACTOR
[[NSApp mainWindow] makeFirstResponder:editTextView];
+#endif
break;
case 1: // image
[editTextView setHidden:YES];
@@ -750,10 +760,12 @@
*/
- (IBAction)quickLookFormatButton:(id)sender
{
+#ifndef SP_REFACTOR
if(qlTypes != nil && [[qlTypes objectForKey:@"QuickLookTypes"] count] > (NSUInteger)[sender tag] - 2) {
NSDictionary *type = [[qlTypes objectForKey:@"QuickLookTypes"] objectAtIndex:[sender tag] - 2];
[self invokeQuickLookOfType:[type objectForKey:@"Extension"] treatAsText:([[type objectForKey:@"treatAsText"] integerValue])];
}
+#endif
}
/**
diff --git a/Source/SPIndexesController.h b/Source/SPIndexesController.h
index 65cbb207..6b755bcc 100644
--- a/Source/SPIndexesController.h
+++ b/Source/SPIndexesController.h
@@ -23,9 +23,17 @@
//
// More info at <http://code.google.com/p/sequel-pro/>
-@class SPDatabaseDocument, SPTablesList, SPTableData, SPTableStructure, SPTableView, MCPConnection, BWAnchoredButtonBar;
+#ifndef SP_REFACTOR
+@class SPDatabaseDocument, SPTablesList, SPTableData, SPTableStructure, MCPConnection, BWAnchoredButtonBar, SPTableView;
+#else
+@class SPDatabaseDocument, SPTablesList, SPTableData, SPTableStructure, MCPConnection, SPTableView;
+#endif
+#ifndef SP_REFACTOR
@interface SPIndexesController : NSWindowController
+#else
+@interface SPIndexesController : NSWindowController <NSTableViewDelegate, NSTableViewDataSource>
+#endif
{
// Controllers
IBOutlet SPDatabaseDocument *dbDocument;
@@ -49,6 +57,7 @@
IBOutlet NSButton *addIndexedColumnButton;
IBOutlet NSButton *removeIndexedColumnButton;
IBOutlet NSButton *confirmAddIndexButton;
+#ifndef SP_REFACTOR
IBOutlet BWAnchoredButtonBar *anchoredButtonBar;
// Advanced options view
@@ -57,6 +66,7 @@
IBOutlet NSButton *indexAdvancedOptionsViewLabelButton;
IBOutlet NSPopUpButton *indexStorageTypePopUpButton;
IBOutlet NSTextField *indexKeyBlockSizeTextField;
+#endif
NSString *table;
@@ -68,13 +78,24 @@
MCPConnection *connection;
+#ifndef SP_REFACTOR /* ivars */
BOOL showAdvancedView;
NSInteger heightOffset;
NSUInteger windowMinWidth;
NSUInteger windowMinHeigth;
+#endif
}
+#ifdef SP_REFACTOR
+@property (assign) SPTableView* indexesTableView;
+@property (assign) SPTableStructure* tableStructure;
+@property (assign) NSButton* addIndexButton;
+@property (assign) NSButton* removeIndexButton;
+
+- (void)setDatabaseDocument:(SPDatabaseDocument*)db;
+#endif
+
/**
* @property table The table currently being viewed
*/
diff --git a/Source/SPIndexesController.m b/Source/SPIndexesController.m
index 989ec02c..f045c9b3 100644
--- a/Source/SPIndexesController.m
+++ b/Source/SPIndexesController.m
@@ -58,6 +58,13 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
@synthesize table;
@synthesize connection;
+#ifdef SP_REFACTOR
+@synthesize indexesTableView;
+@synthesize tableStructure;
+@synthesize addIndexButton;
+@synthesize removeIndexButton;
+#endif
+
#pragma mark -
/**
@@ -65,8 +72,13 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
*/
- (id)init
{
- if ((self = [super initWithWindowNibName:@"IndexesView"])) {
+#ifndef SP_REFACTOR
+ NSString* nibName = @"IndexesView";
+#else
+ NSString* nibName = @"SQLIndexes";
+#endif
+ if ((self = [super initWithWindowNibName:nibName])) {
table = @"";
fields = [[NSMutableArray alloc] init];
@@ -75,13 +87,13 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
#ifndef SP_REFACTOR /* init ivars */
prefs = [NSUserDefaults standardUserDefaults];
-#endif
showAdvancedView = NO;
heightOffset = 0;
windowMinWidth = [[self window] minSize].width;
windowMinHeigth = [[self window] minSize].height;
+#endif
// Create an array of field types that supporting specifying an index length prefix
supportsLength = [[NSArray alloc] initWithObjects:
@@ -233,6 +245,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
[addIndexedColumnButton setEnabled:([indexedFields count] < [fields count])];
+#ifndef SP_REFACTOR
// MyISAM and InnoDB tables only support BTREE storage types so disable the storage type popup button
// as it's the default anyway.
[indexStorageTypePopUpButton setEnabled:(!([engine isEqualToString:@"MyISAM"] || [engine isEqualToString:@"InnoDB"]))];
@@ -240,6 +253,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
// The ability to specify an index's key block size was added in MySQL 5.1.10 so disable the textfield
// if it's not supported.
[indexKeyBlockSizeTextField setEnabled:[[dbDocument serverSupport] supportsIndexKeyBlockSize]];
+#endif
// Begin the sheet
[NSApp beginSheet:[self window]
@@ -314,7 +328,9 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
if (indexType == SPPrimaryKeyMenuTag) {
[indexNameTextField setEnabled:NO];
[indexNameTextField setStringValue:@"PRIMARY"];
+#ifndef SP_REFACTOR
[indexStorageTypePopUpButton setEnabled:NO];
+#endif
}
else {
[indexNameTextField setEnabled:YES];
@@ -323,8 +339,10 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
[indexNameTextField setStringValue:@""];
}
+#ifndef SP_REFACTOR
// Specifiying an index storage type (i.e. HASH or BTREE) is not permitted with SPATIAL indexes
[indexStorageTypePopUpButton setEnabled:(indexType != SPSpatialMenuTag)];
+#endif
}
}
@@ -333,10 +351,12 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
*/
- (IBAction)closeSheet:(id)sender
{
+#ifndef SP_REFACTOR
// Close the advanced options view if it's open
[indexAdvancedOptionsView setHidden:YES];
[indexAdvancedOptionsViewButton setState:NSOffState];
showAdvancedView = NO;
+#endif
// Hide the size column
[indexSizeTableColumn setHidden:YES];
@@ -346,8 +366,10 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
[NSApp endSheet:[sender window] returnCode:[sender tag]];
[[sender window] orderOut:self];
+#ifndef SP_REFACTOR
// Clear the index key block size field
[indexKeyBlockSizeTextField setStringValue:@""];
+#endif
}
/**
@@ -396,6 +418,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
*/
- (IBAction)toggleAdvancedIndexOptionsView:(id)sender
{
+#ifndef SP_REFACTOR
showAdvancedView = (!showAdvancedView);
[indexAdvancedOptionsViewButton setState:showAdvancedView];
@@ -404,6 +427,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
[indexSizeTableColumn setHidden:(!showAdvancedView)];
[self _resizeWindowForAdvancedOptionsViewByHeightDelta:(showAdvancedView) ? ([indexAdvancedOptionsView frame].size.height + 10) : 0];
+#endif
}
#pragma mark -
@@ -586,6 +610,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
break;
}
+#ifndef SP_REFACTOR
// 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];
@@ -594,6 +619,7 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
if (([indexStorageTypePopUpButton indexOfSelectedItem] > 0) && ([[indexTypePopUpButton selectedItem] tag] != SPSpatialMenuTag)) {
[indexDetails setObject:[indexStorageTypePopUpButton titleOfSelectedItem] forKey:SPNewIndexStorageType];
}
+#endif
if ([NSThread isMainThread]) {
[NSThread detachNewThreadSelector:@selector(_addIndexUsingDetails:) toTarget:self withObject:indexDetails];
@@ -708,8 +734,10 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
}
}
+#ifndef SP_REFACTOR
// Only toggle the sizes column if the advanced view is hidden and at least one field requires a size
if (!showAdvancedView) [indexSizeTableColumn setHidden:(!sizeRequired)];
+#endif
// Validate Add Button
[confirmAddIndexButton setEnabled:(!sizeRequiredFieldAndNotYetSet)];
@@ -908,11 +936,14 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
NSUInteger popUpMask = [indexTypePopUpButton autoresizingMask];
NSUInteger nameFieldMask = [indexNameTextField autoresizingMask];
NSUInteger scrollMask = [indexedColumnsScrollView autoresizingMask];
+#ifndef SP_REFACTOR
NSUInteger buttonMask = [indexAdvancedOptionsViewButton autoresizingMask];
NSUInteger textFieldMask = [indexAdvancedOptionsViewLabelButton autoresizingMask];
NSUInteger advancedViewMask = [indexAdvancedOptionsView autoresizingMask];
+#endif
NSUInteger typeLabelMask = [indexTypeLabel autoresizingMask];
NSUInteger nameLabelMask = [indexNameLabel autoresizingMask];
+#ifndef SP_REFACTOR
NSUInteger buttonBarMask = [(NSView*)anchoredButtonBar autoresizingMask];
NSRect frame = [[self window] frame];
@@ -923,21 +954,27 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
[[self window] setFrame:frame display:YES animate:YES];
}
+#endif
[indexTypePopUpButton setAutoresizingMask:NSViewNotSizable | NSViewMinYMargin];
[indexNameTextField setAutoresizingMask:NSViewNotSizable | NSViewMinYMargin];
[indexedColumnsScrollView setAutoresizingMask:NSViewNotSizable | NSViewMinYMargin];
+#ifndef SP_REFACTOR
[indexAdvancedOptionsViewButton setAutoresizingMask:NSViewNotSizable | NSViewMinYMargin];
[indexAdvancedOptionsViewLabelButton setAutoresizingMask:NSViewNotSizable | NSViewMinYMargin];
[indexAdvancedOptionsView setAutoresizingMask:NSViewNotSizable | NSViewMinYMargin];
+#endif
[indexTypeLabel setAutoresizingMask:NSViewNotSizable | NSViewMinYMargin];
[indexNameLabel setAutoresizingMask:NSViewNotSizable | NSViewMinYMargin];
+#ifndef SP_REFACTOR
[(NSView*)anchoredButtonBar setAutoresizingMask:NSViewNotSizable | NSViewMinYMargin];
NSInteger newMinHeight = (windowMinHeigth - heightOffset + delta < windowMinHeigth) ? windowMinHeigth : windowMinHeigth - heightOffset + delta;
[[self window] setMinSize:NSMakeSize(windowMinWidth, newMinHeight)];
+#endif
+#ifndef SP_REFACTOR
frame.origin.y += heightOffset;
frame.size.height -= heightOffset;
@@ -947,16 +984,21 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
frame.size.height += heightOffset;
[[self window] setFrame:frame display:YES animate:YES];
+#endif
[indexTypePopUpButton setAutoresizingMask:popUpMask];
[indexNameTextField setAutoresizingMask:nameFieldMask];
[indexedColumnsScrollView setAutoresizingMask:scrollMask];
+#ifndef SP_REFACTOR
[indexAdvancedOptionsViewButton setAutoresizingMask:buttonMask];
[indexAdvancedOptionsViewLabelButton setAutoresizingMask:textFieldMask];
[indexAdvancedOptionsView setAutoresizingMask:advancedViewMask];
+#endif
[indexTypeLabel setAutoresizingMask:typeLabelMask];
[indexNameLabel setAutoresizingMask:nameLabelMask];
+#ifndef SP_REFACTOR
[(NSView*)anchoredButtonBar setAutoresizingMask:buttonBarMask];
+#endif
}
#pragma mark -
@@ -978,4 +1020,13 @@ static const NSString *SPNewIndexKeyBlockSize = @"IndexKeyBlockSize";
[super dealloc];
}
+
+#ifdef SP_REFACTOR
+- (void)setDatabaseDocument:(SPDatabaseDocument*)db
+{
+ dbDocument = db;
+}
+#endif
+
+
@end
diff --git a/Source/SPNavigatorController.m b/Source/SPNavigatorController.m
index 1c17dd25..ca0a0c69 100644
--- a/Source/SPNavigatorController.m
+++ b/Source/SPNavigatorController.m
@@ -68,6 +68,9 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte
@synchronized(self) {
return [[self sharedNavigatorController] retain];
}
+#ifdef SP_REFACTOR
+ return nil; // only here to stop clang's "can reach end of non-void function"
+#endif
}
- (id)init
diff --git a/Source/SPNotLoaded.m b/Source/SPNotLoaded.m
index 4e2925a7..66d6f209 100644
--- a/Source/SPNotLoaded.m
+++ b/Source/SPNotLoaded.m
@@ -45,6 +45,9 @@ static SPNotLoaded *notLoaded = nil;
@synchronized(self) {
return [[self notLoaded] retain];
}
+#ifdef SP_REFACTOR
+ return nil; // only here to stop clang's "can reach end of non-void function"
+#endif
}
- (id) init
diff --git a/Source/SPQueryController.h b/Source/SPQueryController.h
index c80da762..27756708 100644
--- a/Source/SPQueryController.h
+++ b/Source/SPQueryController.h
@@ -25,6 +25,7 @@
@interface SPQueryController : NSWindowController
{
+#ifndef SP_REFACTOR /* ivars */
// QueryConsoleController
IBOutlet NSView *saveLogView;
IBOutlet NSTableView *consoleTableView;
@@ -48,6 +49,7 @@
NSMutableDictionary *historyContainer;
NSMutableDictionary *contentFilterContainer;
NSUInteger numberOfMaxAllowedHistory;
+#endif
NSArray *completionKeywordList;
NSArray *completionFunctionList;
@@ -55,10 +57,10 @@
#ifndef SP_REFACTOR /* ivars */
NSUserDefaults *prefs;
-#endif
NSDateFormatter *dateFormatter;
pthread_mutex_t consoleLock;
+#endif
}
@property (readwrite, retain) NSFont *consoleFont;
diff --git a/Source/SPQueryController.m b/Source/SPQueryController.m
index 3a003f82..6ff942f1 100644
--- a/Source/SPQueryController.m
+++ b/Source/SPQueryController.m
@@ -31,9 +31,11 @@
#define MESSAGE_TRUNCATE_CHARACTER_LENGTH 256
+#ifndef SP_REFACTOR
// Table view column identifier constants
static NSString *SPTableViewDateColumnID = @"messageDate";
static NSString *SPTableViewConnectionColumnID = @"messageConnection";
+#endif
@interface SPQueryController (PrivateAPI)
@@ -69,11 +71,15 @@ static SPQueryController *sharedQueryController = nil;
@synchronized(self) {
return [[self sharedQueryController] retain];
}
+#ifdef SP_REFACTOR
+ return nil; // only here to stop clang's "can reach end of non-void function"
+#endif
}
- (id)init
{
if ((self = [super initWithWindowNibName:@"Console"])) {
+#ifndef SP_REFACTOR
messagesFullSet = [[NSMutableArray alloc] init];
messagesFilteredSet = [[NSMutableArray alloc] init];
@@ -92,11 +98,14 @@ static SPQueryController *sharedQueryController = nil;
favoritesContainer = [[NSMutableDictionary alloc] init];
historyContainer = [[NSMutableDictionary alloc] init];
contentFilterContainer = [[NSMutableDictionary alloc] init];
+#endif
completionKeywordList = nil;
completionFunctionList = nil;
functionArgumentSnippets = nil;
+#ifndef SP_REFACTOR
pthread_mutex_init(&consoleLock, NULL);
+#endif
NSError *readError = nil;
NSString *convError = nil;
@@ -159,39 +168,19 @@ static SPQueryController *sharedQueryController = nil;
{
#ifndef SP_REFACTOR /* init ivars */
prefs = [NSUserDefaults standardUserDefaults];
-#endif
[self setWindowFrameAutosaveName:@"QueryConsole"];
// Show/hide table columns
- [[consoleTableView tableColumnWithIdentifier:SPTableViewDateColumnID] setHidden:
-#ifndef SP_REFACTOR
- ![prefs boolForKey:SPConsoleShowTimestamps]
-#else
- YES
-#endif
- ];
- [[consoleTableView tableColumnWithIdentifier:SPTableViewConnectionColumnID] setHidden:
-#ifndef SP_REFACTOR
- ![prefs boolForKey:SPConsoleShowConnections]
-#else
- YES
-#endif
- ];
+ [[consoleTableView tableColumnWithIdentifier:SPTableViewDateColumnID] setHidden:![prefs boolForKey:SPConsoleShowTimestamps]];
+ [[consoleTableView tableColumnWithIdentifier:SPTableViewConnectionColumnID] setHidden:![prefs boolForKey:SPConsoleShowConnections]];
-#ifndef SP_REFACTOR
showSelectStatementsAreDisabled = ![prefs boolForKey:SPConsoleShowSelectsAndShows];
showHelpStatementsAreDisabled = ![prefs boolForKey:SPConsoleShowHelps];
-#else
- showSelectStatementsAreDisabled = YES;
- showHelpStatementsAreDisabled = YES;
-#endif
[self _updateFilterState];
-#ifndef SP_REFACTOR
[loggingDisabledTextField setStringValue:([prefs boolForKey:SPConsoleEnableLogging]) ? @"" : NSLocalizedString(@"Query logging is currently disabled", @"query logging disabled label")];
-#endif
// Setup data formatter
dateFormatter = [[NSDateFormatter alloc] init];
@@ -201,22 +190,17 @@ static SPQueryController *sharedQueryController = nil;
[dateFormatter setDateStyle:NSDateFormatterNoStyle];
[dateFormatter setTimeStyle:NSDateFormatterMediumStyle];
-#ifndef SP_REFACTOR
// Set the process table view's vertical gridlines if required
[consoleTableView setGridStyleMask:([prefs boolForKey:SPDisplayTableViewVerticalGridlines]) ? NSTableViewSolidVerticalGridLineMask : NSTableViewGridNone];
-#endif
// Set the strutcture and index view's font
-#ifndef SP_REFACTOR
BOOL useMonospacedFont = [prefs boolForKey:SPUseMonospacedFonts];
-#else
- BOOL useMonospacedFont = YES;
-#endif
for (NSTableColumn *column in [consoleTableView tableColumns])
{
[[column dataCell] setFont:(useMonospacedFont) ? [NSFont fontWithName:SPDefaultMonospacedFontName size:[NSFont smallSystemFontSize]] : [NSFont systemFontOfSize:[NSFont smallSystemFontSize]]];
}
+#endif
}
#pragma mark -
@@ -227,6 +211,7 @@ static SPQueryController *sharedQueryController = nil;
*/
- (void)copy:(id)sender
{
+#ifndef SP_REFACTOR
NSResponder *firstResponder = [[self window] firstResponder];
if ((firstResponder == consoleTableView) && ([consoleTableView numberOfSelectedRows] > 0)) {
@@ -267,6 +252,7 @@ static SPQueryController *sharedQueryController = nil;
[pasteBoard declareTypes:[NSArray arrayWithObjects:NSStringPboardType, nil] owner:nil];
[pasteBoard setString:string forType:NSStringPboardType];
}
+#endif
}
/**
@@ -274,10 +260,12 @@ static SPQueryController *sharedQueryController = nil;
*/
- (IBAction)clearConsole:(id)sender
{
+#ifndef SP_REFACTOR
[messagesFullSet removeAllObjects];
[messagesFilteredSet removeAllObjects];
[consoleTableView reloadData];
+#endif
}
/**
@@ -285,6 +273,7 @@ static SPQueryController *sharedQueryController = nil;
*/
- (IBAction)saveConsoleAs:(id)sender
{
+#ifndef SP_REFACTOR
NSSavePanel *panel = [NSSavePanel savePanel];
[panel setRequiredFileType:SPFileExtensionSQL];
@@ -295,7 +284,8 @@ static SPQueryController *sharedQueryController = nil;
[panel setAccessoryView:saveLogView];
- [panel beginSheetForDirectory:nil file:NSLocalizedString(@"ConsoleLog",@"Console : Save as : Initial filename") modalForWindow:[self window] modalDelegate:self didEndSelector:@selector(savePanelDidEnd:returnCode:contextInfo:) contextInfo:NULL];
+ [panel beginSheetForDirectory:nil file:@"untitled" modalForWindow:[self window] modalDelegate:self didEndSelector:@selector(savePanelDidEnd:returnCode:contextInfo:) contextInfo:NULL];
+#endif
}
/**
@@ -303,7 +293,9 @@ static SPQueryController *sharedQueryController = nil;
*/
- (IBAction)toggleShowTimeStamps:(id)sender
{
+#ifndef SP_REFACTOR
[[consoleTableView tableColumnWithIdentifier:SPTableViewDateColumnID] setHidden:([sender state])];
+#endif
}
/**
@@ -311,7 +303,9 @@ static SPQueryController *sharedQueryController = nil;
*/
- (IBAction)toggleShowConnections:(id)sender
{
+#ifndef SP_REFACTOR
[[consoleTableView tableColumnWithIdentifier:SPTableViewConnectionColumnID] setHidden:([sender state])];
+#endif
}
/**
@@ -319,10 +313,12 @@ static SPQueryController *sharedQueryController = nil;
*/
- (IBAction)toggleShowSelectShowStatements:(id)sender
{
+#ifndef SP_REFACTOR
// Store the state of the toggle for later quick reference
showSelectStatementsAreDisabled = [sender state];
[self _updateFilterState];
+#endif
}
/**
@@ -330,10 +326,12 @@ static SPQueryController *sharedQueryController = nil;
*/
- (IBAction)toggleShowHelpStatements:(id)sender
{
+#ifndef SP_REFACTOR
// Store the state of the toggle for later quick reference
showHelpStatementsAreDisabled = [sender state];
[self _updateFilterState];
+#endif
}
/**
@@ -341,7 +339,9 @@ static SPQueryController *sharedQueryController = nil;
*/
- (void)showMessageInConsole:(NSString *)message connection:(NSString *)connection
{
+#ifndef SP_REFACTOR
[self _addMessageToConsole:message connection:connection isError:NO];
+#endif
}
/**
@@ -349,7 +349,9 @@ static SPQueryController *sharedQueryController = nil;
*/
- (void)showErrorInConsole:(NSString *)error connection:(NSString *)connection
{
+#ifndef SP_REFACTOR
[self _addMessageToConsole:error connection:connection isError:YES];
+#endif
}
/**
@@ -357,7 +359,11 @@ static SPQueryController *sharedQueryController = nil;
*/
- (NSUInteger)consoleMessageCount
{
+#ifndef SP_REFACTOR
return [messagesFullSet count];
+#else
+ return 0;
+#endif
}
/**
@@ -365,9 +371,11 @@ static SPQueryController *sharedQueryController = nil;
*/
- (void)savePanelDidEnd:(NSSavePanel *)sheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo
{
+#ifndef SP_REFACTOR
if (returnCode == NSOKButton) {
[[self _getConsoleStringWithTimeStamps:[includeTimeStampsButton integerValue] connections:[includeConnectionButton integerValue]] writeToFile:[sheet filename] atomically:YES encoding:NSUTF8StringEncoding error:NULL];
}
+#endif
}
#pragma mark -
@@ -378,7 +386,11 @@ static SPQueryController *sharedQueryController = nil;
*/
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
{
+#ifndef SP_REFACTOR
return [messagesVisibleSet count];
+#else
+ return 0;
+#endif
}
/**
@@ -386,6 +398,7 @@ static SPQueryController *sharedQueryController = nil;
*/
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
+#ifndef SP_REFACTOR
NSString *returnValue = nil;
id object = [[messagesVisibleSet objectAtIndex:row] valueForKey:[tableColumn identifier]];
@@ -419,6 +432,9 @@ static SPQueryController *sharedQueryController = nil;
}
return [[[NSAttributedString alloc] initWithString:returnValue attributes:stringAtributes] autorelease];
+#else
+ return nil;
+#endif
}
#pragma mark -
@@ -429,6 +445,7 @@ static SPQueryController *sharedQueryController = nil;
*/
- (void)controlTextDidChange:(NSNotification *)notification
{
+#ifndef SP_REFACTOR
id object = [notification object];
if ([object isEqualTo:consoleSearchField]) {
@@ -439,6 +456,7 @@ static SPQueryController *sharedQueryController = nil;
[self _updateFilterState];
}
+#endif
}
/**
@@ -446,6 +464,7 @@ static SPQueryController *sharedQueryController = nil;
*/
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
+#ifndef SP_REFACTOR
// Show/hide logging disabled label
if ([keyPath isEqualToString:SPConsoleEnableLogging]) {
[loggingDisabledTextField setStringValue:([[change objectForKey:NSKeyValueChangeNewKey] boolValue]) ? @"" : @"Query logging is currently disabled"];
@@ -466,6 +485,7 @@ static SPQueryController *sharedQueryController = nil;
[consoleTableView reloadData];
}
+#endif
}
/**
@@ -473,6 +493,7 @@ static SPQueryController *sharedQueryController = nil;
*/
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem
{
+#ifndef SP_REFACTOR
if ([menuItem action] == @selector(copy:)) {
return ([consoleTableView numberOfSelectedRows] > 0);
}
@@ -481,19 +502,26 @@ static SPQueryController *sharedQueryController = nil;
if ([menuItem action] == @selector(clearConsole:)) {
return ([self consoleMessageCount] > 0);
}
+#endif
return [[self window] validateMenuItem:menuItem];
}
- (BOOL) allowConsoleUpdate
{
+#ifndef SP_REFACTOR
return allowConsoleUpdate;
+#else
+ return NO;
+#endif
}
- (void) setAllowConsoleUpdate:(BOOL)allowUpdate
{
+#ifndef SP_REFACTOR
allowConsoleUpdate = allowUpdate;
if (allowUpdate && [[self window] isVisible]) [self updateEntries];
+#endif
}
/**
@@ -501,8 +529,10 @@ static SPQueryController *sharedQueryController = nil;
*/
- (void)updateEntries
{
+#ifndef SP_REFACTOR
[consoleTableView reloadData];
[consoleTableView scrollRowToVisible:([messagesVisibleSet count] - 1)];
+#endif
}
/**
@@ -553,6 +583,7 @@ static SPQueryController *sharedQueryController = nil;
- (NSURL *)registerDocumentWithFileURL:(NSURL *)fileURL andContextInfo:(NSMutableDictionary *)contextInfo
{
+#ifndef SP_REFACTOR
// Register a new untiled document and return its URL
if(fileURL == nil) {
NSURL *new = [NSURL URLWithString:[[NSString stringWithFormat:NSLocalizedString(@"Untitled %ld",@"Title of a new Sequel Pro Document"), (unsigned long)untitledDocumentCounter] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
@@ -566,20 +597,16 @@ static SPQueryController *sharedQueryController = nil;
// Set the global history coming from the Prefs as default if available
if(![historyContainer objectForKey:[new absoluteString]]) {
-#ifndef SP_REFACTOR
if([prefs objectForKey:SPQueryHistory]) {
NSMutableArray *arr = [[NSMutableArray alloc] init];
[arr addObjectsFromArray:[prefs objectForKey:SPQueryHistory]];
[historyContainer setObject:arr forKey:[new absoluteString]];
[arr release];
} else {
-#endif
NSMutableArray *arr = [[NSMutableArray alloc] init];
[historyContainer setObject:[NSMutableArray array] forKey:[new absoluteString]];
[arr release];
-#ifndef SP_REFACTOR
}
-#endif
}
// Set the doc-based content filters
@@ -630,10 +657,14 @@ static SPQueryController *sharedQueryController = nil;
}
return fileURL;
+#else
+ return nil;
+#endif
}
- (void)removeRegisteredDocumentWithFileURL:(NSURL *)fileURL
{
+#ifndef SP_REFACTOR
// Check for multiple instance of the same document.
// Remove it if only one instance was registerd.
NSArray *allDocs = [[NSApp delegate] orderedDocuments];
@@ -652,10 +683,12 @@ static SPQueryController *sharedQueryController = nil;
[historyContainer removeObjectForKey:[fileURL absoluteString]];
if([contentFilterContainer objectForKey:[fileURL absoluteString]])
[contentFilterContainer removeObjectForKey:[fileURL absoluteString]];
+#endif
}
- (void)replaceContentFilterByArray:(NSArray *)contentFilterArray ofType:(NSString *)filterType forFileURL:(NSURL *)fileURL
{
+#ifndef SP_REFACTOR
if([contentFilterContainer objectForKey:[fileURL absoluteString]]) {
NSMutableDictionary *c = [[NSMutableDictionary alloc] init];
[c setDictionary:[contentFilterContainer objectForKey:[fileURL absoluteString]]];
@@ -663,16 +696,20 @@ static SPQueryController *sharedQueryController = nil;
[contentFilterContainer setObject:c forKey:[fileURL absoluteString]];
[c release];
}
+#endif
}
- (void)replaceFavoritesByArray:(NSArray *)favoritesArray forFileURL:(NSURL *)fileURL
{
+#ifndef SP_REFACTOR
if([favoritesContainer objectForKey:[fileURL absoluteString]])
[favoritesContainer setObject:favoritesArray forKey:[fileURL absoluteString]];
+#endif
}
- (void)replaceHistoryByArray:(NSArray *)historyArray forFileURL:(NSURL *)fileURL
{
+#ifndef SP_REFACTOR
if([historyContainer objectForKey:[fileURL absoluteString]])
[historyContainer setObject:historyArray forKey:[fileURL absoluteString]];
@@ -681,8 +718,6 @@ static SPQueryController *sharedQueryController = nil;
if([[doc valueForKeyPath:@"customQueryInstance"] respondsToSelector:@selector(historyItemsHaveBeenUpdated:)])
[[doc valueForKeyPath:@"customQueryInstance"] performSelectorOnMainThread:@selector(historyItemsHaveBeenUpdated:) withObject:self waitUntilDone:NO];
-
-#ifndef SP_REFACTOR
// User did choose to clear the global history list
if(![fileURL isFileURL] && ![historyArray count])
[prefs setObject:historyArray forKey:SPQueryHistory];
@@ -691,17 +726,16 @@ static SPQueryController *sharedQueryController = nil;
- (void)addFavorite:(NSDictionary *)favorite forFileURL:(NSURL *)fileURL
{
+#ifndef SP_REFACTOR
if([favoritesContainer objectForKey:[fileURL absoluteString]])
[[favoritesContainer objectForKey:[fileURL absoluteString]] addObject:favorite];
+#endif
}
- (void)addHistory:(NSString *)history forFileURL:(NSURL *)fileURL
{
#ifndef SP_REFACTOR
NSUInteger maxHistoryItems = [[prefs objectForKey:SPCustomQueryMaxHistoryItems] integerValue];
-#else
- NSUInteger maxHistoryItems = 20;
-#endif
// Save each history item due to its document source
if([historyContainer objectForKey:[fileURL absoluteString]]) {
@@ -721,7 +755,6 @@ static SPQueryController *sharedQueryController = nil;
// Save history items coming from each Untitled document in the global Preferences successively
// regardingless of the source document.
if(![fileURL isFileURL]) {
-#ifndef SP_REFACTOR
// Remove all duplicates by using a NSPopUpButton
NSPopUpButton *uniquifier = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(0,0,0,0) pullsDown:YES];
@@ -733,28 +766,33 @@ static SPQueryController *sharedQueryController = nil;
[prefs setObject:[uniquifier itemTitles] forKey:SPQueryHistory];
[uniquifier release];
-#endif
}
+#endif
}
- (NSMutableArray *)favoritesForFileURL:(NSURL *)fileURL
{
+#ifndef SP_REFACTOR
if([favoritesContainer objectForKey:[fileURL absoluteString]])
return [favoritesContainer objectForKey:[fileURL absoluteString]];
+#endif
return [NSMutableArray array];
}
- (NSMutableArray *)historyForFileURL:(NSURL *)fileURL
{
+#ifndef SP_REFACTOR
if([historyContainer objectForKey:[fileURL absoluteString]])
return [historyContainer objectForKey:[fileURL absoluteString]];
+#endif
return [NSMutableArray array];
}
- (NSArray *)historyMenuItemsForFileURL:(NSURL *)fileURL
{
+#ifndef SP_REFACTOR
if([historyContainer objectForKey:[fileURL absoluteString]]) {
NSMutableArray *returnArray = [NSMutableArray arrayWithCapacity:[[historyContainer objectForKey:[fileURL absoluteString]] count]];
NSMenuItem *historyMenuItem;
@@ -768,6 +806,7 @@ static SPQueryController *sharedQueryController = nil;
return returnArray;
}
+#endif
return [NSArray array];
}
@@ -780,9 +819,11 @@ static SPQueryController *sharedQueryController = nil;
*/
- (NSUInteger)numberOfHistoryItemsForFileURL:(NSURL *)fileURL
{
+#ifndef SP_REFACTOR
if([historyContainer objectForKey:[fileURL absoluteString]])
return [[historyContainer objectForKey:[fileURL absoluteString]] count];
else
+#endif
return 0;
}
@@ -795,8 +836,10 @@ static SPQueryController *sharedQueryController = nil;
*/
- (NSMutableDictionary *)contentFilterForFileURL:(NSURL *)fileURL
{
+#ifndef SP_REFACTOR
if([contentFilterContainer objectForKey:[fileURL absoluteString]])
return [contentFilterContainer objectForKey:[fileURL absoluteString]];
+#endif
return [NSMutableDictionary dictionary];
}
@@ -835,12 +878,16 @@ static SPQueryController *sharedQueryController = nil;
*/
- (void)removeFavoriteAtIndex:(NSUInteger)index forFileURL:(NSURL *)fileURL
{
+#ifndef SP_REFACTOR
[[favoritesContainer objectForKey:[fileURL absoluteString]] removeObjectAtIndex:index];
+#endif
}
- (void)insertFavorite:(NSDictionary *)favorite atIndex:(NSUInteger)index forFileURL:(NSURL *)fileURL
{
+#ifndef SP_REFACTOR
[[favoritesContainer objectForKey:[fileURL absoluteString]] insertObject:favorite atIndex:index];
+#endif
}
#pragma mark -
@@ -850,9 +897,12 @@ static SPQueryController *sharedQueryController = nil;
*/
- (void)dealloc
{
+#ifndef SP_REFACTOR
messagesVisibleSet = nil;
+#endif
[NSObject cancelPreviousPerformRequestsWithTarget:self];
+#ifndef SP_REFACTOR
[dateFormatter release], dateFormatter = nil;
[messagesFullSet release], messagesFullSet = nil;
@@ -862,12 +912,15 @@ static SPQueryController *sharedQueryController = nil;
[favoritesContainer release], favoritesContainer = nil;
[historyContainer release], historyContainer = nil;
[contentFilterContainer release], contentFilterContainer = nil;
+#endif
if(completionKeywordList) [completionKeywordList release];
if(completionFunctionList) [completionFunctionList release];
if(functionArgumentSnippets) [functionArgumentSnippets release];
+#ifndef SP_REFACTOR
pthread_mutex_destroy(&consoleLock);
+#endif
[super dealloc];
}
@@ -882,6 +935,7 @@ static SPQueryController *sharedQueryController = nil;
*/
- (void)_updateFilterState
{
+#ifndef SP_REFACTOR
// Display start progress spinner
[progressIndicator setHidden:NO];
@@ -942,6 +996,7 @@ static SPQueryController *sharedQueryController = nil;
// Hide progress spinner
[progressIndicator setHidden:YES];
[progressIndicator stopAnimation:self];
+#endif
}
/**
@@ -952,6 +1007,7 @@ static SPQueryController *sharedQueryController = nil;
{
BOOL messageMatchesCurrentFilters = YES;
+#ifndef SP_REFACTOR
// Check whether to hide the message based on the current filter text, if any
if (filterIsActive
&& [message rangeOfString:activeFilterString options:NSCaseInsensitiveSearch].location == NSNotFound)
@@ -974,6 +1030,7 @@ static SPQueryController *sharedQueryController = nil;
{
messageMatchesCurrentFilters = NO;
}
+#endif
return messageMatchesCurrentFilters;
}
@@ -986,6 +1043,7 @@ static SPQueryController *sharedQueryController = nil;
{
NSMutableString *consoleString = [NSMutableString string];
+#ifndef SP_REFACTOR
for (SPConsoleMessage *message in messagesVisibleSet)
{
// As we are going to save the messages as an SQL file we need to comment
@@ -1006,6 +1064,7 @@ static SPQueryController *sharedQueryController = nil;
[consoleString appendFormat:@"%@\n", [message message]];
}
+#endif
return consoleString;
}
@@ -1015,6 +1074,7 @@ static SPQueryController *sharedQueryController = nil;
*/
- (void)_addMessageToConsole:(NSString *)message connection:(NSString *)connection isError:(BOOL)error
{
+#ifndef SP_REFACTOR
NSString *messageTemp = [[message stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] stringByReplacingOccurrencesOfString:@"\n" withString:@" "];
// Only append a semi-colon (;) if the supplied message is not an error
@@ -1047,6 +1107,7 @@ static SPQueryController *sharedQueryController = nil;
}
pthread_mutex_unlock(&consoleLock);
+#endif
}
@end
diff --git a/Source/SPTableContent.h b/Source/SPTableContent.h
index 9045772e..9220b21d 100644
--- a/Source/SPTableContent.h
+++ b/Source/SPTableContent.h
@@ -29,11 +29,12 @@
@class SPDatabaseDocument, SPCopyTable, SPTextAndLinkCell, SPHistoryController, SPTableInfo, SPDataStorage, SPTextView, SPFieldEditorController;
-@class SPTableData, SPDatabaseDocument, SPTablesList;
+@class SPTableData, SPDatabaseDocument, SPTablesList, SPTableStructure, SPTableList;
+#ifndef SP_REFACTOR
@interface SPTableContent : NSObject
-#ifdef SP_REFACTOR
-<NSTableViewDelegate, NSTableViewDataSource>
+#else
+@interface SPTableContent : NSObject <NSTableViewDelegate, NSTableViewDataSource, NSComboBoxDataSource, NSComboBoxDelegate>
#endif
{
IBOutlet SPDatabaseDocument *tableDocumentInstance;
@@ -41,8 +42,10 @@
IBOutlet SPTableData* tableDataInstance;
IBOutlet id tableSourceInstance;
+#ifndef SP_REFACTOR
IBOutlet SPTableInfo *tableInfoInstance;
IBOutlet SPHistoryController *spHistoryControllerInstance;
+#endif
IBOutlet SPCopyTable *tableContentView;
IBOutlet NSPopUpButton *fieldField;
@@ -53,21 +56,28 @@
IBOutlet id copyButton;
IBOutlet id removeButton;
IBOutlet id reloadButton;
+#ifndef SP_REFACTOR
IBOutlet id multipleLineEditingButton;
IBOutlet id countText;
IBOutlet id limitRowsField;
IBOutlet id limitRowsButton;
IBOutlet id limitRowsStepper;
+#endif
IBOutlet id firstBetweenField;
IBOutlet id secondBetweenField;
IBOutlet id betweenTextField;
IBOutlet NSButton *paginationPreviousButton;
+#ifndef SP_REFACTOR
IBOutlet NSButton *paginationButton;
+#endif
IBOutlet NSButton *paginationNextButton;
+#ifndef SP_REFACTOR
IBOutlet NSView *contentViewPane;
IBOutlet NSView *paginationView;
+#endif
IBOutlet NSTextField *paginationPageField;
+#ifndef SP_REFACTOR
IBOutlet NSStepper *paginationPageStepper;
IBOutlet SPCopyTable *filterTableView;
@@ -81,13 +91,15 @@
IBOutlet NSMenuItem *filterTableGearLookAllFields;
IBOutlet NSPanel *filterTableSetDefaultOperatorSheet;
IBOutlet NSComboBox* filterTableSetDefaultOperatorValue;
-
+#endif
MCPConnection *mySQLConnection;
BOOL _mainNibLoaded;
BOOL isWorking;
pthread_mutex_t tableValuesLock;
+#ifndef SP_REFACTOR
NSMutableArray *nibObjectsToRelease;
+#endif
NSString *selectedTable, *usedQuery;
SPDataStorage *tableValues;
@@ -106,6 +118,7 @@
id contentFilterManager;
NSUInteger contentPage;
+#ifndef SP_REFACTOR
NSMutableDictionary *filterTableData;
BOOL filterTableNegate;
BOOL filterTableDistinct;
@@ -114,6 +127,7 @@
NSString *lastEditedFilterTableValue;
NSInteger activeFilter; // 0 = default filter; 1 = filter table; 2 = sequelpro url scheme
NSString *schemeFilter;
+#endif
BOOL sortColumnToRestoreIsAsc;
BOOL tableRowsSelectable;
@@ -123,7 +137,9 @@
NSRect selectionViewportToRestore;
NSString *filterFieldToRestore, *filterComparisonToRestore, *filterValueToRestore, *firstBetweenValueToRestore, *secondBetweenValueToRestore;
+#ifndef SP_REFACTOR
NSInteger paginationViewHeight;
+#endif
NSTimer *tableLoadTimer;
NSUInteger tableLoadInterfaceUpdateInterval, tableLoadTimerTicksSinceLastUpdate, tableLoadLastRowCount, tableLoadTargetRowCount;
@@ -144,7 +160,6 @@
}
-
- (void)setFieldEditorSelectedRange:(NSRange)aRange;
- (NSRange)fieldEditorSelectedRange;
@@ -169,7 +184,9 @@
// Pagination
- (IBAction) navigatePaginationFromButton:(id)sender;
+#ifndef SP_REFACTOR
- (IBAction) togglePagination:(id)sender;
+#endif
- (void) setPaginationViewVisibility:(BOOL)makeVisible;
- (void) updatePaginationState;
@@ -247,9 +264,25 @@
- (NSString*)escapeFilterTableDefaultOperator:(NSString*)anOperator;
#ifdef SP_REFACTOR /* glue */
-- (void)setDatabaseDocument:(SPDatabaseDocument*)doc;
-- (void)setTableListInstance:(SPTablesList*)list;
-- (void)setConnection:(MCPConnection *)theConnection;
+@property (assign) id filterButton;
+@property (assign) id fieldField;
+@property (assign) id compareField;
+@property (assign) id betweenTextField;
+@property (assign) id firstBetweenField;
+@property (assign) id secondBetweenField;
+@property (assign) id argumentField;
+@property (assign) NSButton* addButton;
+@property (assign) NSButton* copyButton;
+@property (assign) NSButton* removeButton;
+@property (assign) NSButton* reloadButton;
+@property (assign) NSButton* paginationNextButton;
+@property (assign) NSButton* paginationPreviousButton;
+@property (assign) NSTextField* paginationPageField;
+@property (assign) SPDatabaseDocument* tableDocumentInstance;
+@property (assign) SPTablesList* tablesListInstance;
+@property (assign) SPCopyTable* tableContentView;
+@property (assign) SPTableData* tableDataInstance;
+@property (assign) SPTableStructure* tableSourceInstance;
#endif
@end
diff --git a/Source/SPTableContent.m b/Source/SPTableContent.m
index df4eccf7..ac3b1fc6 100644
--- a/Source/SPTableContent.m
+++ b/Source/SPTableContent.m
@@ -59,6 +59,28 @@
@implementation SPTableContent
+#ifdef SP_REFACTOR
+@synthesize addButton;
+@synthesize argumentField;
+@synthesize betweenTextField;
+@synthesize compareField;
+@synthesize copyButton;
+@synthesize fieldField;
+@synthesize filterButton;
+@synthesize firstBetweenField;
+@synthesize paginationNextButton;
+@synthesize paginationPageField;
+@synthesize paginationPreviousButton;
+@synthesize reloadButton;
+@synthesize removeButton;
+@synthesize secondBetweenField;
+@synthesize tableContentView;
+@synthesize tableDataInstance;
+@synthesize tableDocumentInstance;
+@synthesize tableSourceInstance;
+@synthesize tablesListInstance;
+#endif
+
/**
* Standard init method. Initialize various ivars.
*/
@@ -68,22 +90,28 @@
_mainNibLoaded = NO;
isWorking = NO;
pthread_mutex_init(&tableValuesLock, NULL);
+#ifndef SP_REFACTOR
nibObjectsToRelease = [[NSMutableArray alloc] init];
+#endif
tableValues = [[SPDataStorage alloc] init];
dataColumns = [[NSMutableArray alloc] init];
oldRow = [[NSMutableArray alloc] init];
+#ifndef SP_REFACTOR
filterTableData = [[NSMutableDictionary alloc] initWithCapacity:1];
+#endif
tableRowsCount = 0;
previousTableRowsCount = 0;
+#ifndef SP_REFACTOR
filterTableNegate = NO;
filterTableDistinct = NO;
filterTableIsSwapped = NO;
lastEditedFilterTableValue = nil;
activeFilter = 0;
schemeFilter = nil;
+#endif
selectedTable = nil;
sortCol = nil;
@@ -163,7 +191,6 @@
#ifndef SP_REFACTOR /* ui manipulation */
// Set the table content view's vertical gridlines if required
[tableContentView setGridStyleMask:([prefs boolForKey:SPDisplayTableViewVerticalGridlines]) ? NSTableViewSolidVerticalGridLineMask : NSTableViewGridNone];
-#endif
// Set the double-click action in blank areas of the table to create new rows
[tableContentView setEmptyDoubleClickAction:@selector(addRow:)];
@@ -187,17 +214,20 @@
paginationViewFrame.size.height = 0;
[paginationView setFrame:paginationViewFrame];
[contentViewPane addSubview:paginationView];
+#endif
[tableContentView setFieldEditorSelectedRange:NSMakeRange(0,0)];
+#ifndef SP_REFACTOR
// Init Filter Table GUI
[filterTableDistinctMenuItem setState:(filterTableDistinct) ? NSOnState : NSOffState];
[filterTableNegateCheckbox setState:(filterTableNegate) ? NSOnState : NSOffState];
[filterTableLiveSearchCheckbox setState:NSOffState];
+#endif
#ifndef SP_REFACTOR /* patch */
filterTableDefaultOperator = [[self escapeFilterTableDefaultOperator:[prefs objectForKey:SPFilterTableDefaultOperator]] retain];
#else
- filterTableDefaultOperator = [[self escapeFilterTableDefaultOperator:nil] retain];
+// filterTableDefaultOperator = [[self escapeFilterTableDefaultOperator:nil] retain];
#endif
// Add observers for document task activity
@@ -223,6 +253,7 @@
*/
- (void)loadTable:(NSString *)aTable
{
+
// Abort the reload if the user is still editing a row
if ( isEditingRow )
return;
@@ -314,7 +345,10 @@
*sortColumnNumberToRestore = nil;
NSArray *columnNames;
NSDictionary *columnDefinition;
- NSTableColumn *theCol, *filterCol;
+ NSTableColumn *theCol;
+#ifndef SP_REFACTOR
+ NSTableColumn *filterCol;
+#endif
BOOL enableInteraction =
#ifndef SP_REFACTOR /* checking toolbar state */
![[tableDocumentInstance selectedToolbarItemIdentifier] isEqualToString:SPMainToolbarTableContent] ||
@@ -331,8 +365,10 @@
newTableName = [tableDetails objectForKey:@"name"];
}
+#ifndef SP_REFACTOR
// Ensure the pagination view hides itself if visible, after a tiny delay for smoothness
[self performSelector:@selector(setPaginationViewVisibility:) withObject:nil afterDelay:0.1];
+#endif
// Reset table key store for use in argumentForRow:
if (keys) [keys release], keys = nil;
@@ -379,7 +415,9 @@
[tableContentView reloadData];
isFiltered = NO;
isLimited = NO;
+#ifndef SP_REFACTOR
[countText setStringValue:@""];
+#endif
// Reset sort column
if (sortCol) [sortCol release]; sortCol = nil;
@@ -408,8 +446,10 @@
// Disable pagination
[paginationPreviousButton setEnabled:NO];
+#ifndef SP_REFACTOR
[paginationButton setEnabled:NO];
[paginationButton setTitle:@""];
+#endif
[paginationNextButton setEnabled:NO];
// Disable table action buttons
@@ -420,6 +460,7 @@
// Clear restoration settings
[self clearDetailsToRestore];
+#ifndef SP_REFACTOR
// Clear filter table
while ([[filterTableView tableColumns] count]) {
[filterTableView removeTableColumn:NSArrayObjectAtIndex([filterTableView tableColumns], 0)];
@@ -428,6 +469,7 @@
[filterTableData removeAllObjects];
[filterTableWhereClause setString:@""];
activeFilter = 0;
+#endif
return;
}
@@ -437,6 +479,7 @@
while ([[tableContentView tableColumns] count]) {
[tableContentView removeTableColumn:NSArrayObjectAtIndex([tableContentView tableColumns], 0)];
}
+#ifndef SP_REFACTOR
// Remove existing columns from the filter table
[filterTableView abortEditing];
while ([[filterTableView tableColumns] count]) {
@@ -446,6 +489,7 @@
[filterTableData removeAllObjects];
[filterTableWhereClause setString:@""];
activeFilter = 0;
+#endif
// Retrieve the field names and types for this table from the data cache. This is used when requesting all data as part
// of the fieldListForQuery method, and also to decide whether or not to preserve the current filter/sort settings.
@@ -496,6 +540,7 @@
]];
[theCol setEditable:YES];
+#ifndef SP_REFACTOR
// Set up column for filterTable
filterCol = [[NSTableColumn alloc] initWithIdentifier:[columnDefinition objectForKey:@"datacolumnindex"]];
[[filterCol headerCell] setStringValue:[columnDefinition objectForKey:@"name"]];
@@ -511,6 +556,7 @@
[columnDefinition objectForKey:@"typegrouping"], @"typegrouping",
[NSMutableArray arrayWithObjects:@"", @"", @"", @"", @"", @"", @"", @"", @"", @"", nil], @"filter",
nil] forKey:[columnDefinition objectForKey:@"datacolumnindex"]];
+#endif
// Set up the data cell depending on the column type
id dataCell;
@@ -581,9 +627,11 @@
[theCol release];
}
+#ifndef SP_REFACTOR
[filterTableView setDelegate:self];
[filterTableView setDataSource:self];
[filterTableView reloadData];
+#endif
// If the table has been reloaded and the previously selected sort column is still present, reselect it.
if (sortColumnNumberToRestore) {
@@ -660,7 +708,9 @@
if (!previousTableRowsCount) {
[self clearTableValues];
}
+#ifndef SP_REFACTOR
[filterTableView reloadData];
+#endif
}
@@ -699,7 +749,9 @@
MCPStreamingResult *streamingResult;
NSInteger rowsToLoad = [[tableDataInstance statusValueForKey:@"Rows"] integerValue];
+#ifndef SP_REFACTOR
[countText setStringValue:NSLocalizedString(@"Loading table data...", @"Loading table data string")];
+#endif
// Notify any listeners that a query has started
#ifndef SP_REFACTOR
@@ -709,7 +761,12 @@
#endif
// Start construction of the query string
- queryString = [NSMutableString stringWithFormat:@"SELECT %@%@ FROM %@", (activeFilter == 1 && [self tableFilterString] && filterTableDistinct) ? @"DISTINCT " : @"", [self fieldListForQuery], [selectedTable backtickQuotedString]];
+ queryString = [NSMutableString stringWithFormat:@"SELECT %@%@ FROM %@",
+#ifndef SP_REFACTOR
+ (activeFilter == 1 && [self tableFilterString] && filterTableDistinct) ? @"DISTINCT " :
+#endif
+ @"",
+ [self fieldListForQuery], [selectedTable backtickQuotedString]];
// Add a filter string if appropriate
filterString = [self tableFilterString];
@@ -824,7 +881,9 @@
#endif
if ([mySQLConnection queryErrored] && ![mySQLConnection queryCancelled]) {
+#ifndef SP_REFACTOR
if(activeFilter == 0) {
+#endif
if(filterString)
SPBeginAlertSheet(NSLocalizedString(@"Error", @"error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [tableDocumentInstance parentWindow], self, nil, nil,
[NSString stringWithFormat:NSLocalizedString(@"The table data couldn't be loaded presumably due to used filter clause. \n\nMySQL said: %@", @"message of panel when loading of table failed and presumably due to used filter argument"), [mySQLConnection getLastErrorMessage]]);
@@ -832,14 +891,20 @@
SPBeginAlertSheet(NSLocalizedString(@"Error", @"error"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [tableDocumentInstance parentWindow], self, nil, nil,
[NSString stringWithFormat:NSLocalizedString(@"The table data couldn't be loaded.\n\nMySQL said: %@", @"message of panel when loading of table failed"), [mySQLConnection getLastErrorMessage]]);
}
+#ifndef SP_REFACTOR
// Filter task came from filter table
else if(activeFilter == 1){
[filterTableWindow setTitle:[NSString stringWithFormat:@"%@ – %@", NSLocalizedString(@"Filter", @"filter label"), NSLocalizedString(@"WHERE clause not valid", @"WHERE clause not valid")]];
}
- } else {
+ }
+#endif
+ else
+ {
+#ifndef SP_REFACTOR
// Trigger a full reload if required
if (fullTableReloadRequired) [self reloadTable:self];
[[filterTableWindow onMainThread] setTitle:NSLocalizedString(@"Filter", @"filter label")];
+#endif
}
}
@@ -862,7 +927,11 @@
[[self onMainThread] initTableLoadTimer];
NSAutoreleasePool *dataLoadingPool;
+#ifndef SP_REFACTOR
NSProgressIndicator *dataLoadingIndicator = [tableDocumentInstance valueForKey:@"queryProgressBar"];
+#else
+ NSProgressIndicator *dataLoadingIndicator = [tableDocumentInstance queryProgressBar];
+#endif
BOOL prefsLoadBlobsAsNeeded =
#ifndef SP_REFACTOR
[prefs boolForKey:SPLoadBlobsAsNeeded]
@@ -945,6 +1014,7 @@
- (NSString *)tableFilterString
{
+#ifndef SP_REFACTOR
// If filter command was passed by sequelpro url scheme
if(activeFilter == 2) {
if(schemeFilter)
@@ -963,6 +1033,7 @@
return nil;
}
+#endif
// If the clause has the placeholder $BINARY that placeholder will be replaced
// by BINARY if the user pressed ⇧ while invoking 'Filter' otherwise it will
@@ -1202,7 +1273,9 @@
[countString appendFormat:NSLocalizedString(@"%@ %@ selected", @"text showing how many rows are selected"), [numberFormatter stringFromNumber:[NSNumber numberWithInteger:[tableContentView numberOfSelectedRows]]], rowString];
}
+#ifndef SP_REFACTOR
[[countText onMainThread] setStringValue:countString];
+#endif
}
/**
@@ -1337,6 +1410,8 @@
*/
- (IBAction)filterTable:(id)sender
{
+#ifndef SP_REFACTOR
+
if(sender == filterTableFilterButton)
activeFilter = 1;
else if([sender isKindOfClass:[NSString class]] && [(NSString *)sender length]) {
@@ -1346,12 +1421,15 @@
}
else
activeFilter = 0;
+#endif
NSString *taskString;
if ([tableDocumentInstance isWorking]) return;
if (![self saveRowOnDeselect]) return;
+#ifndef SP_REFACTOR
[self setPaginationViewVisibility:FALSE];
+#endif
// Select the correct pagination value
if (![prefs boolForKey:SPLimitResults] || [paginationPageField integerValue] <= 0)
@@ -1384,8 +1462,10 @@
// Check whether a save of the current row is required.
if (![[self onMainThread] saveRowOnDeselect]) return;
+#ifndef SP_REFACTOR
// Update history
[spHistoryControllerInstance updateHistoryEntries];
+#endif
// Reset and reload data using the new filter settings
previousTableRowsCount = 0;
@@ -1489,17 +1569,20 @@
* When the Pagination button is pressed, show or hide the pagination
* layer depending on the current state.
*/
+#ifndef SP_REFACTOR
- (IBAction) togglePagination:(id)sender
{
if ([sender state] == NSOnState) [self setPaginationViewVisibility:YES];
else [self setPaginationViewVisibility:NO];
}
+#endif
/**
* Show or hide the pagination layer, also changing the first responder as appropriate.
*/
- (void) setPaginationViewVisibility:(BOOL)makeVisible
{
+#ifndef SP_REFACTOR
NSRect paginationViewFrame = [paginationView frame];
if (makeVisible) {
@@ -1524,6 +1607,7 @@
}
[[paginationView animator] setFrame:paginationViewFrame];
+#endif
}
/**
@@ -1553,14 +1637,18 @@
else
[paginationNextButton setEnabled:NO];
+#ifndef SP_REFACTOR
// As long as a table is selected (which it will be if this is called), enable pagination detail button
[paginationButton setEnabled:enabledMode];
+#endif
// Set the values and maximums for the text field and associated pager
[paginationPageField setStringValue:[numberFormatter stringFromNumber:[NSNumber numberWithUnsignedInteger:contentPage]]];
[[paginationPageField formatter] setMaximum:[NSNumber numberWithUnsignedInteger:maxPage]];
+#ifndef SP_REFACTOR
[paginationPageStepper setIntegerValue:contentPage];
[paginationPageStepper setMaxValue:maxPage];
+#endif
}
#pragma mark -
@@ -1692,7 +1780,9 @@
isEditingRow = YES;
isEditingNewRow = YES;
currentlyEditingRow = [tableContentView selectedRow];
+#ifndef SP_REFACTOR
if ( [multipleLineEditingButton state] == NSOffState )
+#endif
[tableContentView editColumn:0 row:[tableContentView numberOfRows]-1 withEvent:nil select:YES];
}
@@ -1762,7 +1852,9 @@
isEditingRow = YES;
isEditingNewRow = YES;
currentlyEditingRow = [tableContentView selectedRow];
+#ifndef SP_REFACTOR
if ( [multipleLineEditingButton state] == NSOffState )
+#endif
[tableContentView editColumn:0 row:[tableContentView selectedRow] withEvent:nil select:YES];
}
@@ -2281,9 +2373,11 @@
return;
}
+#ifndef SP_REFACTOR
// Save existing scroll position and details and mark that state is being modified
[spHistoryControllerInstance updateHistoryEntries];
[spHistoryControllerInstance setModifyingState:YES];
+#endif
NSString *targetFilterValue = [tableValues cellDataAtRow:[theArrowCell getClickedRow] column:dataColumnIndex];
@@ -2314,16 +2408,20 @@
}
}
+#ifndef SP_REFACTOR
// End state and ensure a new history entry
[spHistoryControllerInstance setModifyingState:NO];
[spHistoryControllerInstance updateHistoryEntries];
+#endif
// End the task
[tableDocumentInstance endTask];
+#ifndef SP_REFACTOR
// If the same table is the target, trigger a filter task on the main thread
if (tableFilterRequired)
[self performSelectorOnMainThread:@selector(filterTable:) withObject:self waitUntilDone:NO];
+#endif
// Empty the loading pool and exit the thread
[linkPool drain];
@@ -2463,12 +2561,14 @@
i++;
}
+#ifndef SP_REFACTOR
[menu addItem:[NSMenuItem separatorItem]];
NSMenuItem *item = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Edit Filters…", @"edit filter") action:NULL keyEquivalent:@""];
[item setToolTip:NSLocalizedString(@"Edit user-defined Filters…", @"edit user-defined filter")];
[item setTag:i];
[menu addItem:item];
[item release];
+#endif
// Attempt to reselect the previously selected title, falling back to the first
// item on failure, as long as there is no filter selection to be restored.
@@ -3037,6 +3137,7 @@
*/
- (void)sheetDidEnd:(id)sheet returnCode:(NSInteger)returnCode contextInfo:(NSString *)contextInfo
{
+#ifndef SP_REFACTOR
[sheet orderOut:self];
if([contextInfo isEqualToString:@"setdefaultoperator"]) {
@@ -3044,18 +3145,15 @@
if(filterTableDefaultOperator) [filterTableDefaultOperator release];
NSString *newOperator = [filterTableSetDefaultOperatorValue stringValue];
filterTableDefaultOperator = [[self escapeFilterTableDefaultOperator:newOperator] retain];
-#ifndef SP_REFACTOR
[prefs setObject:newOperator forKey:SPFilterTableDefaultOperator];
-#endif
+
if(![newOperator isMatchedByRegex:@"(?i)like\\s+['\"]%@%['\"]\\s*"]) {
-#ifndef SP_REFACTOR
if(![prefs objectForKey:SPFilterTableDefaultOperatorLastItems])
[prefs setObject:[NSMutableArray array] forKey:SPFilterTableDefaultOperatorLastItems];
-#endif
+
NSMutableArray *lastItems = [NSMutableArray array];
-#ifndef SP_REFACTOR
[lastItems setArray:[prefs objectForKey:SPFilterTableDefaultOperatorLastItems]];
-#endif
+
if([lastItems containsObject:newOperator])
[lastItems removeObject:newOperator];
if([lastItems count] > 0)
@@ -3066,13 +3164,13 @@
if([lastItems count] > 15)
while([lastItems count] > 15)
[filterTableSetDefaultOperatorValue removeItemAtIndex:[lastItems count]-1];
-#ifndef SP_REFACTOR
+
[prefs setObject:lastItems forKey:SPFilterTableDefaultOperatorLastItems];
-#endif
}
[self updateFilterTableClause:nil];
}
}
+#endif
}
/**
@@ -3144,6 +3242,7 @@
*/
- (IBAction)tableFilterClear:(id)sender
{
+#ifndef SP_REFACTOR
[filterTableView abortEditing];
@@ -3162,6 +3261,7 @@
}
+#endif
}
/**
@@ -3169,19 +3269,19 @@
*/
- (IBAction)showFilterTable:(id)sender
{
+#ifndef SP_REFACTOR
[filterTableWindow makeKeyAndOrderFront:nil];
[filterTableWhereClause setContinuousSpellCheckingEnabled:NO];
[filterTableWhereClause setAutoindent:NO];
[filterTableWhereClause setAutoindentIgnoresEnter:NO];
-#ifndef SP_REFACTOR
[filterTableWhereClause setAutopair:[prefs boolForKey:SPCustomQueryAutoPairCharacters]];
[filterTableWhereClause setAutohelp:NO];
[filterTableWhereClause setAutouppercaseKeywords:[prefs boolForKey:SPCustomQueryAutoUppercaseKeywords]];
-#endif
[filterTableWhereClause setCompletionWasReinvokedAutomatically:NO];
[filterTableWhereClause insertText:@""];
[filterTableWhereClause didChangeText];
[[filterTableView window] makeFirstResponder:filterTableView];
+#endif
}
/**
@@ -3189,11 +3289,13 @@
*/
- (IBAction)toggleNegateClause:(id)sender
{
+#ifndef SP_REFACTOR
filterTableNegate = !filterTableNegate;
// If live search is set perform filtering
if([filterTableLiveSearchCheckbox state] == NSOnState)
[self filterTable:filterTableFilterButton];
+#endif
}
@@ -3202,6 +3304,7 @@
*/
- (IBAction)toggleDistinctSelect:(id)sender
{
+#ifndef SP_REFACTOR
filterTableDistinct = !filterTableDistinct;
[filterTableDistinctMenuItem setState:(filterTableDistinct) ? NSOnState : NSOffState];
@@ -3209,6 +3312,7 @@
// If live search is set perform filtering
if([filterTableLiveSearchCheckbox state] == NSOnState)
[self filterTable:filterTableFilterButton];
+#endif
}
@@ -3217,11 +3321,11 @@
*/
- (IBAction)setDefaultOperator:(id)sender
{
+#ifndef SP_REFACTOR
[filterTableWindow makeFirstResponder:filterTableView];
// Load history
-#ifndef SP_REFACTOR
if([prefs objectForKey:SPFilterTableDefaultOperatorLastItems]) {
NSMutableArray *lastItems = [NSMutableArray array];
NSString *defaultItem = @"LIKE '%@%'";
@@ -3234,13 +3338,13 @@
}
[filterTableSetDefaultOperatorValue setStringValue:[prefs objectForKey:SPFilterTableDefaultOperator]];
-#endif
[NSApp beginSheet:filterTableSetDefaultOperatorSheet
modalForWindow:filterTableWindow
modalDelegate:self
didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:)
contextInfo:@"setdefaultoperator"];
+#endif
}
@@ -3256,9 +3360,11 @@
{
[self updateFilterTableClause:sender];
+#ifndef SP_REFACTOR
// If live search is set perform filtering
if([filterTableLiveSearchCheckbox state] == NSOnState)
[self filterTable:filterTableFilterButton];
+#endif
}
@@ -3458,21 +3564,27 @@
- (void) setFilterTableData:(NSData*)arcData
{
+#ifndef SP_REFACTOR
if(!arcData) return;
NSDictionary *filterData = [NSUnarchiver unarchiveObjectWithData:arcData];
[filterTableData removeAllObjects];
[filterTableData addEntriesFromDictionary:filterData];
[filterTableWindow makeKeyAndOrderFront:nil];
// [filterTableView reloadData];
+#endif
}
- (NSData*) filterTableData
{
+#ifndef SP_REFACTOR
if(![filterTableWindow isVisible]) return nil;
[filterTableView deselectAll:nil];
return [NSArchiver archivedDataWithRootObject:filterTableData];
+#else
+ return nil;
+#endif
}
#pragma mark -
@@ -3496,8 +3608,8 @@
maxNumRowsIsEstimate = NO;
[tableDataInstance setStatusValue:[NSString stringWithFormat:@"%ld", (long)maxNumRows] forKey:@"Rows"];
[tableDataInstance setStatusValue:@"y" forKey:@"RowsCountAccurate"];
- [[tableInfoInstance onMainThread] tableChanged:nil];
#ifndef SP_REFACTOR
+ [[tableInfoInstance onMainThread] tableChanged:nil];
[[[tableDocumentInstance valueForKey:@"extendedTableInfoInstance"] onMainThread] loadTable:selectedTable];
#endif
@@ -3530,7 +3642,9 @@
maxNumRowsIsEstimate = NO;
[tableDataInstance setStatusValue:[NSString stringWithFormat:@"%ld", (long)maxNumRows] forKey:@"Rows"];
[tableDataInstance setStatusValue:@"y" forKey:@"RowsCountAccurate"];
+#ifndef SP_REFACTOR
[[tableInfoInstance onMainThread] tableChanged:nil];
+#endif
[[[tableDocumentInstance valueForKey:@"extendedTableInfoInstance"] onMainThread] loadTable:selectedTable];
// Use the estimate count
@@ -3565,7 +3679,9 @@
}
[tableDataInstance setStatusValue:[NSString stringWithFormat:@"%ld", (long)maxNumRows] forKey:@"Rows"];
[tableDataInstance setStatusValue:maxNumRowsIsEstimate?@"n":@"y" forKey:@"RowsCountAccurate"];
+#ifndef SP_REFACTOR
[[tableInfoInstance onMainThread] tableChanged:nil];
+#endif
}
}
@@ -3691,13 +3807,16 @@
- (NSInteger)numberOfRowsInTableView:(SPCopyTable *)aTableView
{
+#ifndef SP_REFACTOR
if (aTableView == filterTableView) {
if (filterTableIsSwapped)
return [filterTableData count];
else
return [[[filterTableData objectForKey:[NSNumber numberWithInteger:0]] objectForKey:@"filter"] count];
}
- else if (aTableView == tableContentView) {
+ else
+#endif
+ if (aTableView == tableContentView) {
return tableRowsCount;
}
@@ -3706,6 +3825,7 @@
- (id)tableView:(SPCopyTable *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
+#ifndef SP_REFACTOR
if (aTableView == filterTableView) {
if (filterTableIsSwapped)
// First column shows the field names
@@ -3718,7 +3838,9 @@
return NSArrayObjectAtIndex([[filterTableData objectForKey:[aTableColumn identifier]] objectForKey:@"filter"], rowIndex);
}
}
- else if (aTableView == tableContentView) {
+ else
+#endif
+ if (aTableView == tableContentView) {
NSUInteger columnIndex = [[aTableColumn identifier] integerValue];
id theValue = nil;
@@ -3763,6 +3885,7 @@
- (void)tableView:(SPCopyTable *)aTableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn*)aTableColumn row:(NSInteger)rowIndex
{
+#ifndef SP_REFACTOR
if(aTableView == filterTableView) {
if(filterTableIsSwapped && [[aTableColumn identifier] integerValue] == 0) {
[cell setDrawsBackground:YES];
@@ -3772,7 +3895,9 @@
}
return;
}
- else if(aTableView == tableContentView) {
+ else
+#endif
+ if(aTableView == tableContentView) {
if (![cell respondsToSelector:@selector(setTextColor:)]) return;
@@ -3819,6 +3944,7 @@
- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
+#ifndef SP_REFACTOR
if(aTableView == filterTableView) {
if(filterTableIsSwapped)
[[[filterTableData objectForKey:[NSNumber numberWithInteger:rowIndex]] objectForKey:@"filter"] replaceObjectAtIndex:([[aTableColumn identifier] integerValue]-1) withObject:(NSString*)anObject];
@@ -3827,7 +3953,9 @@
[self updateFilterTableClause:nil];
return;
}
- else if(aTableView == tableContentView) {
+ else
+#endif
+ if(aTableView == tableContentView) {
// If table data come from a view
if([tablesListInstance tableType] == SPTableTypeView) {
@@ -4078,7 +4206,6 @@
isFirstChangeInView = YES;
-
[addButton setEnabled:([tablesListInstance tableType] == SPTableTypeTable)];
// If we are editing a row, attempt to save that row - if saving failed, reselect the edit row.
@@ -4200,13 +4327,16 @@
{
if ([tableDocumentInstance isWorking]) return NO;
+#ifndef SP_REFACTOR
if(aTableView == filterTableView) {
if(filterTableIsSwapped && [[aTableColumn identifier] integerValue] == 0)
return NO;
else
return YES;
}
- else if ( aTableView == tableContentView ) {
+ else
+#endif
+ if ( aTableView == tableContentView ) {
// Ensure that row is editable since it could contain "(not loaded)" columns together with
// issue that the table has no primary key
@@ -4244,7 +4374,11 @@
}
// Open the sheet if the multipleLineEditingButton is enabled or the column was a blob or a text.
- if (([multipleLineEditingButton state] == NSOnState || isBlob) && ![[columnDefinition objectForKey:@"typegrouping"] isEqualToString:@"enum"]) {
+ if ((
+#ifndef SP_REFACTOR
+ [multipleLineEditingButton state] == NSOnState ||
+#endif
+ isBlob) && ![[columnDefinition objectForKey:@"typegrouping"] isEqualToString:@"enum"]) {
// A table is per definitionem editable
isFieldEditable = YES;
@@ -4348,10 +4482,13 @@
*/
- (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(NSInteger)rowIndex
{
+#ifndef SP_REFACTOR
if(aTableView == filterTableView)
return YES;
- else if(aTableView == tableContentView)
+ else
+#endif
+ if(aTableView == tableContentView)
return tableRowsSelectable;
else
return YES;
@@ -4472,7 +4609,9 @@
tableRowsSelectable = NO;
[paginationPreviousButton setEnabled:NO];
[paginationNextButton setEnabled:NO];
+#ifndef SP_REFACTOR
[paginationButton setEnabled:NO];
+#endif
}
/**
@@ -4493,12 +4632,14 @@
[self updatePaginationState];
[reloadButton setEnabled:YES];
}
+
if ([tableContentView numberOfSelectedRows] > 0) {
if([tablesListInstance tableType] == SPTableTypeTable) {
[removeButton setEnabled:YES];
[copyButton setEnabled:YES];
}
}
+
[filterButton setEnabled:[fieldField isEnabled]];
tableRowsSelectable = YES;
}
@@ -4508,6 +4649,7 @@
- (void)controlTextDidChange:(NSNotification *)notification
{
+#ifndef SP_REFACTOR
if ([notification object] == filterTableView) {
NSString *str = [[[[notification userInfo] objectForKey:@"NSFieldEditor"] textStorage] string];
@@ -4518,6 +4660,7 @@
[self updateFilterTableClause:str];
}
+#endif
}
/**
* If user selected a table cell which is a blob field and tried to edit it
@@ -4574,7 +4717,11 @@
// Check if current edited field is a blob
if ((fieldType = [[tableDataInstance columnWithName:[[NSArrayObjectAtIndex([tableContentView tableColumns], column) headerCell] stringValue]] objectForKey:@"typegrouping"])
- && ![fieldType isEqualToString:@"enum"] && ([fieldType isEqualToString:@"textdata"] || [fieldType isEqualToString:@"blobdata"] || [multipleLineEditingButton state] == NSOnState))
+ && ![fieldType isEqualToString:@"enum"] && ([fieldType isEqualToString:@"textdata"] || [fieldType isEqualToString:@"blobdata"]
+#ifndef SP_REFACTOR
+ || [multipleLineEditingButton state] == NSOnState
+#endif
+ ))
{
[tableContentView setFieldEditorSelectedRange:[aFieldEditor selectedRange]];
@@ -4584,10 +4731,6 @@
// Call the field editor sheet
[self tableView:tableContentView shouldEditTableColumn:NSArrayObjectAtIndex([tableContentView tableColumns], column) row:row];
- // send current event to field editor sheet
- if([NSApp currentEvent])
- [NSApp sendEvent:[NSApp currentEvent]];
-
return NO;
}
@@ -4696,6 +4839,7 @@
*/
- (void)updateFilterTableClause:(id)currentValue
{
+#ifndef SP_REFACTOR
NSMutableString *clause = [NSMutableString string];
NSInteger numberOfRows = [self numberOfRowsInTableView:filterTableView];
NSInteger numberOfCols = [[filterTableView tableColumns] count];
@@ -4833,6 +4977,7 @@
// If live search is set perform filtering
if([filterTableLiveSearchCheckbox state] == NSOnState)
[self filterTable:filterTableFilterButton];
+#endif
}
/**
@@ -4868,17 +5013,6 @@
return [tableContentView fieldEditorSelectedRange];
}
-#ifdef SP_REFACTOR /* glue */
-- (void)setDatabaseDocument:(SPDatabaseDocument*)doc
-{
- tableDocumentInstance = doc;
-}
-
-- (void)setTableListInstance:(SPTablesList*)list
-{
- tablesListInstance = list;
-}
-#endif
#pragma mark -
@@ -4901,9 +5035,11 @@
pthread_mutex_destroy(&tableValuesLock);
[dataColumns release];
[oldRow release];
+#ifndef SP_REFACTOR
[filterTableData release];
if (lastEditedFilterTableValue) [lastEditedFilterTableValue release];
if (filterTableDefaultOperator) [filterTableDefaultOperator release];
+#endif
if (selectedTable) [selectedTable release];
if (contentFilters) [contentFilters release];
if (numberOfDefaultFilters) [numberOfDefaultFilters release];
diff --git a/Source/SPTableStructure.h b/Source/SPTableStructure.h
index 40b665b2..b8657273 100644
--- a/Source/SPTableStructure.h
+++ b/Source/SPTableStructure.h
@@ -27,7 +27,11 @@
@class SPDatabaseDocument, SPTableFieldValidation, SPTableData, SPDatabaseData, SPTablesList, SPIndexesController, SPTableView;
+#ifndef SP_REFACTOR
@interface SPTableStructure : NSObject
+#else
+@interface SPTableStructure : NSObject <NSTableViewDelegate, NSTableViewDataSource>
+#endif
{
IBOutlet SPTablesList* tablesListInstance;
IBOutlet SPTableData* tableDataInstance;
@@ -39,26 +43,32 @@
IBOutlet SPIndexesController* indexesController;
IBOutlet SPDatabaseData* databaseDataInstance;
+#ifndef SP_REFACTOR /* ivars */
IBOutlet id keySheet;
IBOutlet id resetAutoIncrementSheet;
IBOutlet id resetAutoIncrementValue;
IBOutlet id resetAutoIncrementLine;
- IBOutlet SPTableView *tableSourceView;
+#endif
+ IBOutlet SPTableView* tableSourceView;
IBOutlet id addFieldButton;
IBOutlet id copyFieldButton;
IBOutlet id removeFieldButton;
IBOutlet id reloadFieldsButton;
+#ifndef SP_REFACTOR /* ivars */
IBOutlet id chooseKeyButton;
IBOutlet id structureGrabber;
IBOutlet id editTableButton;
IBOutlet id addIndexButton;
IBOutlet id removeIndexButton;
IBOutlet id refreshIndexesButton;
- IBOutlet SPTableView *indexesTableView;
+#endif
+ IBOutlet SPTableView* indexesTableView;
+#ifndef SP_REFACTOR /* ivars */
IBOutlet NSSplitView *tablesIndexesSplitView;
IBOutlet NSButton *indexesShowButton;
IBOutlet id viewColumnsMenu;
+#endif
IBOutlet NSPopUpButtonCell *encodingPopupCell;
MCPConnection *mySQLConnection;
@@ -82,6 +92,15 @@
BOOL isEditingRow, isEditingNewRow, isSavingRow, alertSheetOpened;
}
+#ifdef SP_REFACTOR
+@property (assign) SPIndexesController* indexesController;
+@property (assign) id indexesTableView;
+@property (assign) id addFieldButton;
+@property (assign) id copyFieldButton;
+@property (assign) id removeFieldButton;
+@property (assign) id reloadFieldsButton;
+#endif
+
// Table loading
- (void)loadTable:(NSString *)aTable;
- (IBAction)reloadTable:(id)sender;
@@ -91,6 +110,9 @@
- (void)setDatabaseDocument:(SPDatabaseDocument*)doc;
- (void)setTableListInstance:(SPTablesList*)list;
- (void)setTableDataInstance:(SPTableData*)data;
+- (void)setDatabaseDataInstance:(SPDatabaseData*)data;
+- (void)setTableSourceView:(SPTableView*)tv;
+- (void)setEncodingPopupCell:(NSPopUpButtonCell*)cell;
#endif
- (void)showErrorSheetWith:(NSDictionary *)errorDictionary;
diff --git a/Source/SPTableStructure.m b/Source/SPTableStructure.m
index ebbb9f7e..618b37b4 100644
--- a/Source/SPTableStructure.m
+++ b/Source/SPTableStructure.m
@@ -45,6 +45,15 @@
@implementation SPTableStructure
+#ifdef SP_REFACTOR
+@synthesize indexesController;
+@synthesize indexesTableView;
+@synthesize addFieldButton;
+@synthesize copyFieldButton;
+@synthesize removeFieldButton;
+@synthesize reloadFieldsButton;
+#endif
+
#pragma mark -
#pragma mark Initialization
@@ -171,9 +180,11 @@
[prefs addObserver:indexesController forKeyPath:SPUseMonospacedFonts options:NSKeyValueObservingOptionNew context:NULL];
#endif
+#ifndef SP_REFACTOR
// Init the view column submenu according to saved hidden status;
// menu items are identified by their tag number which represents the initial column index
for (NSMenuItem *item in [viewColumnsMenu itemArray]) [item setState:NSOnState]; // Set all items to NSOnState
+#endif
#ifndef SP_REFACTOR /* patch */
for (NSTableColumn *col in [tableSourceView tableColumns])
@@ -190,6 +201,7 @@
}
}
#else
+/*
for (NSTableColumn *col in [tableSourceView tableColumns])
{
if ([col isHidden]) {
@@ -203,6 +215,7 @@
[[viewColumnsMenu itemAtIndex:[viewColumnsMenu indexOfItemWithTag:12]] setState:NSOffState];
}
}
+*/
#endif
[tableSourceView reloadData];
@@ -428,9 +441,11 @@
[addFieldButton setEnabled:NO];
[copyFieldButton setEnabled:NO];
[removeFieldButton setEnabled:NO];
+#ifndef SP_REFACTOR
[addIndexButton setEnabled:NO];
[removeIndexButton setEnabled:NO];
[editTableButton setEnabled:NO];
+#endif
// If no table is selected, refresh the table/index display to blank and return
if (!selectedTable) {
@@ -457,14 +472,18 @@
defaultValues = [[NSDictionary dictionaryWithDictionary:newDefaultValues] retain];
+#ifndef SP_REFACTOR
// Enable the edit table button
[editTableButton setEnabled:enableInteraction];
+#endif
// If a view is selected, disable the buttons; otherwise enable.
BOOL editingEnabled = ([tablesListInstance tableType] == SPTableTypeTable) && enableInteraction;
[addFieldButton setEnabled:editingEnabled];
+#ifndef SP_REFACTOR
[addIndexButton setEnabled:editingEnabled];
+#endif
// Reload the views
[indexesTableView reloadData];
@@ -699,6 +718,7 @@
*/
- (IBAction)resetAutoIncrement:(id)sender
{
+#ifndef SP_REFACTOR
if ([sender tag] == 1) {
[resetAutoIncrementLine setHidden:YES];
@@ -718,6 +738,7 @@
else if ([sender tag] == 2) {
[self setAutoIncrementTo:@"1"];
}
+#endif
}
/**
@@ -725,12 +746,14 @@
*/
- (void)resetAutoincrementSheetDidEnd:(NSWindow *)theSheet returnCode:(NSInteger)returnCode contextInfo:(void *)contextInfo
{
+#ifndef SP_REFACTOR
// Order out current sheet to suppress overlapping of sheets
[theSheet orderOut:nil];
if (returnCode == NSAlertDefaultReturn) {
[self setAutoIncrementTo:[[resetAutoIncrementValue stringValue] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]];
}
+#endif
}
/**
@@ -786,7 +809,9 @@
- (IBAction)unhideIndexesView:(id)sender
{
+#ifndef SP_REFACTOR
[tablesIndexesSplitView setPosition:[tablesIndexesSplitView frame].size.height-130 ofDividerAtIndex:0];
+#endif
}
@@ -1197,9 +1222,11 @@
[addFieldButton setEnabled:NO];
[copyFieldButton setEnabled:NO];
[removeFieldButton setEnabled:NO];
+#ifndef SP_REFACTOR
[addIndexButton setEnabled:NO];
[removeIndexButton setEnabled:NO];
[editTableButton setEnabled:NO];
+#endif
[tablesListInstance updateTables:self];
return NO;
}
@@ -1224,6 +1251,7 @@
}
#ifdef SP_REFACTOR /* glue */
+
- (void)setDatabaseDocument:(SPDatabaseDocument*)doc
{
tableDocumentInstance = doc;
@@ -1239,6 +1267,21 @@
tableDataInstance = data;
}
+- (void)setDatabaseDataInstance:(SPDatabaseData*)data
+{
+ databaseDataInstance = data;
+}
+
+- (void)setTableSourceView:(SPTableView*)tv
+{
+ tableSourceView = tv;
+}
+
+- (void)setEncodingPopupCell:(NSPopUpButtonCell*)cell
+{
+ encodingPopupCell = cell;
+}
+
#endif
/**
@@ -1294,6 +1337,7 @@
*/
- (void)sheetDidEnd:(id)sheet returnCode:(NSInteger)returnCode contextInfo:(NSString *)contextInfo
{
+#ifndef SP_REFACTOR
// Order out current sheet to suppress overlapping of sheets
if ([sheet respondsToSelector:@selector(orderOut:)])
@@ -1324,6 +1368,7 @@
isCurrentExtraAutoIncrement = NO;
}
}
+#endif
}
/**
@@ -1533,12 +1578,16 @@
[removeFieldButton setEnabled:NO];
[copyFieldButton setEnabled:NO];
[reloadFieldsButton setEnabled:NO];
+#ifndef SP_REFACTOR
[editTableButton setEnabled:NO];
+#endif
[indexesTableView setEnabled:NO];
+#ifndef SP_REFACTOR
[addIndexButton setEnabled:NO];
[removeIndexButton setEnabled:NO];
[refreshIndexesButton setEnabled:NO];
+#endif
}
/**
@@ -1563,14 +1612,18 @@
}
[reloadFieldsButton setEnabled:YES];
+#ifndef SP_REFACTOR
[editTableButton setEnabled:YES];
+#endif
[indexesTableView setEnabled:YES];
[indexesTableView displayIfNeeded];
+#ifndef SP_REFACTOR
[addIndexButton setEnabled:editingEnabled];
[removeIndexButton setEnabled:(editingEnabled && ([indexesTableView numberOfSelectedRows] > 0))];
[refreshIndexesButton setEnabled:YES];
+#endif
}
#pragma mark -
diff --git a/Source/SPTableStructureDelegate.m b/Source/SPTableStructureDelegate.m
index 4e04ca05..912be276 100644
--- a/Source/SPTableStructureDelegate.m
+++ b/Source/SPTableStructureDelegate.m
@@ -127,12 +127,14 @@
// 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:@""])) {
+#ifndef SP_REFACTOR
[chooseKeyButton selectItemWithTag:SPPrimaryKeyMenuTag];
[NSApp beginSheet:keySheet
modalForWindow:[tableDocumentInstance parentWindow] modalDelegate:self
didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:)
contextInfo:@"autoincrementindex" ];
+#endif
}
} else {
autoIncrementIndex = nil;
diff --git a/Source/SPTablesList.m b/Source/SPTablesList.m
index 5054798c..db470d31 100644
--- a/Source/SPTablesList.m
+++ b/Source/SPTablesList.m
@@ -872,9 +872,9 @@ static NSString *SPDuplicateTable = @"SPDuplicateTable";
[[tableSubMenu itemAtIndex:8] setHidden:NO];
[[tableSubMenu itemAtIndex:9] setHidden:NO];
[[tableSubMenu itemAtIndex:10] setHidden:NO];
+#endif
return;
-#endif
}
// If a new selection has been provided, store variables and update the interface to match
@@ -1333,6 +1333,7 @@ static NSString *SPDuplicateTable = @"SPDuplicateTable";
return YES;
}
+#endif
#pragma mark -
#pragma mark Data validation
@@ -1398,6 +1399,7 @@ static NSString *SPDuplicateTable = @"SPDuplicateTable";
return isValid;
}
+#ifndef SP_REFACTOR
#pragma mark -
#pragma mark Datasource methods
diff --git a/Source/SPTextView.h b/Source/SPTextView.h
index 3309ed1d..dc0557f2 100644
--- a/Source/SPTextView.h
+++ b/Source/SPTextView.h
@@ -111,6 +111,12 @@
@property(assign) BOOL completionIsOpen;
@property(assign) BOOL completionWasReinvokedAutomatically;
+#ifdef SP_REFACTOR
+@property (assign) SPDatabaseDocument *tableDocumentInstance;
+@property (assign) SPTablesList *tablesListInstance;
+@property (assign) SPCustomQuery *customQueryInstance;
+#endif
+
#ifndef SP_REFACTOR
- (IBAction)showMySQLHelpForCurrentWord:(id)sender;
#endif
diff --git a/Source/SPTextView.m b/Source/SPTextView.m
index cb0e4d9e..b08db401 100644
--- a/Source/SPTextView.m
+++ b/Source/SPTextView.m
@@ -102,6 +102,12 @@ static inline NSPoint SPPointOnLine(NSPoint a, NSPoint b, CGFloat t) { return NS
@synthesize completionIsOpen;
@synthesize completionWasReinvokedAutomatically;
+#ifdef SP_REFACTOR
+@synthesize tableDocumentInstance;
+@synthesize tablesListInstance;
+@synthesize customQueryInstance;
+#endif
+
/**
* Sort function (mainly used to sort the words in the textView)
*/
@@ -1953,10 +1959,10 @@ NSInteger _alphabeticSort(id string1, id string2, void *reverse)
[self insertText:snip];
// If autopair is enabled check whether snip begins with ( and ends with ), if so mark ) as pair-linked
+ if (
#ifndef SP_REFACTOR
- if ([prefs boolForKey:SPCustomQueryAutoPairCharacters] &&
+ [prefs boolForKey:SPCustomQueryAutoPairCharacters] &&
#else
- if (
#endif
(([snip hasPrefix:@"("] && [snip hasSuffix:@")"])
|| ([snip hasPrefix:@"`"] && [snip hasSuffix:@"`"])
@@ -2170,8 +2176,10 @@ 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]]){
+#ifndef SP_REFACTOR
NSRange targetRange = [self getRangeForCurrentWord];
NSString *tabTrigger = [[self string] substringWithRange:targetRange];
+#endif
// Is TAB trigger active change selection according to {SHIFT}TAB
if(snippetControlCounter > -1){
@@ -2214,6 +2222,7 @@ NSInteger _alphabeticSort(id string1, id string2, void *reverse)
}
+#ifndef SP_REFACTOR
// Check if tab trigger is defined; if so insert it, otherwise pass through event
if(snippetControlCounter < 0 && [tabTrigger length] && [tableDocumentInstance fileURL]) {
NSArray *snippets = [[SPQueryController sharedQueryController] queryFavoritesForFileURL:[tableDocumentInstance fileURL] andTabTrigger:tabTrigger includeGlobals:YES];
@@ -2225,7 +2234,6 @@ NSInteger _alphabeticSort(id string1, id string2, void *reverse)
// 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
-#ifndef SP_REFACTOR
if([prefs boolForKey:SPCustomQuerySoftIndent] && [self isCaretAtIndentPositionIgnoreLineStart:YES]) {
if([self shiftSelectionRight]) return;
}
@@ -3412,7 +3420,11 @@ NSInteger _alphabeticSort(id string1, id string2, void *reverse)
}
// Check size and NSFileType
+#ifndef SP_REFACTOR
NSDictionary *attr = [[NSFileManager defaultManager] fileAttributesAtPath:filepath traverseLink:YES];
+#else
+ NSDictionary *attr = [[NSFileManager defaultManager] attributesOfItemAtPath:filepath error:nil];
+#endif
if(attr)
{
NSNumber *filesize = [attr objectForKey:NSFileSize];