From ed4617c7fc292ac15a3cb340b2247d58793d3ca4 Mon Sep 17 00:00:00 2001 From: Bibiko Date: Wed, 5 Aug 2009 21:14:15 +0000 Subject: =?UTF-8?q?=E2=80=A2=20open=20a=20SQL=20file=20via=20Finder=20or?= =?UTF-8?q?=20Terminal=20(open=20*.sql=20if=20SP=20is=20the=20default=20ap?= =?UTF-8?q?p=20for=20sql=20files)=20will=20insert=20the=20file=20content?= =?UTF-8?q?=20into=20the=20Custom=20Query=20editor=20of=20the=20current=20?= =?UTF-8?q?active=20doc=20-=20this=20action=20starts=20SP=20and=20asks=20f?= =?UTF-8?q?or=20a=20connection=20if=20it=20is=20not=20running=20-=20same?= =?UTF-8?q?=20for=20drag&drop=20a=20SQL=20file=20onto=20SP's=20dock=20icon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/CustomQuery.h | 1 + Source/CustomQuery.m | 5 +++++ Source/MainController.m | 20 +++++++++++++++----- Source/TableDocument.h | 5 +++++ Source/TableDocument.m | 28 ++++++++++++++++++++++++++++ 5 files changed, 54 insertions(+), 5 deletions(-) (limited to 'Source') diff --git a/Source/CustomQuery.h b/Source/CustomQuery.h index c88cc879..c5cb2a30 100644 --- a/Source/CustomQuery.h +++ b/Source/CustomQuery.h @@ -151,6 +151,7 @@ - (void)setConnection:(MCPConnection *)theConnection; - (void)setFavorites; - (void)doPerformQueryService:(NSString *)query; +- (void)doPerformLoadQueryService:(NSString *)query; - (void)selectCurrentQuery; - (void)commentOut; - (void)commentOutCurrentQueryTakingSelection:(BOOL)takeSelection; diff --git a/Source/CustomQuery.m b/Source/CustomQuery.m index d6194484..5f8c368a 100644 --- a/Source/CustomQuery.m +++ b/Source/CustomQuery.m @@ -1201,6 +1201,11 @@ [textView setString:query]; [self runAllQueries:self]; } +- (void)doPerformLoadQueryService:(NSString *)query +{ + [textView setString:query]; + [textView insertText:@""]; +} - (NSString *)usedQuery { diff --git a/Source/MainController.m b/Source/MainController.m index 4e1119a6..17aa2652 100644 --- a/Source/MainController.m +++ b/Source/MainController.m @@ -56,17 +56,27 @@ for( NSString* filename in filenames ) { - // Opens a sql file and insert its content to the Custom Query editor + // Opens a sql file and insert its content into the Custom Query editor if([[[filename pathExtension] lowercaseString] isEqualToString:@"sql"]) { // Check if at least one document exists if (![[[NSDocumentController sharedDocumentController] documents] count]) { // TODO : maybe open a connection first - return; - } + // return; + TableDocument *firstTableDocument; + + // Manually open a new document, setting MainController as sender to trigger autoconnection + if (firstTableDocument = [[NSDocumentController sharedDocumentController] makeUntitledDocumentOfType:@"DocumentType" error:nil]) { + [firstTableDocument setShouldAutomaticallyConnect:NO]; + [firstTableDocument initQueryEditorWithString:[self contentOfFile:filename]]; + [[NSDocumentController sharedDocumentController] addDocument:firstTableDocument]; + [firstTableDocument makeWindowControllers]; + [firstTableDocument showWindows]; + } + } else - // Pass query to last created document - [[[[NSDocumentController sharedDocumentController] documents] objectAtIndex:([[[NSDocumentController sharedDocumentController] documents] count] - 1)] doPerformQueryService:[self contentOfFile:filename]]; + // Pass query to the Query editor of the current document + [[[NSDocumentController sharedDocumentController] currentDocument] doPerformLoadQueryService:[self contentOfFile:filename]]; } else if([[[filename pathExtension] lowercaseString] isEqualToString:@"spf"]) { diff --git a/Source/TableDocument.h b/Source/TableDocument.h index c9510a33..4cf4e369 100644 --- a/Source/TableDocument.h +++ b/Source/TableDocument.h @@ -111,10 +111,14 @@ WebView *printWebView; NSMutableArray *allDatabases; + + NSString *queryEditorInitString; } - (NSString *)getHTMLforPrint; +- (void)initQueryEditorWithString:(NSString *)query; + // Connection callback and methods - (void) setConnection:(MCPConnection *)theConnection; - (void)setShouldAutomaticallyConnect:(BOOL)shouldAutomaticallyConnect; @@ -157,6 +161,7 @@ - (IBAction)closeSheet:(id)sender; - (IBAction)closeErrorConnectionSheet:(id)sender; - (void)doPerformQueryService:(NSString *)query; +- (void)doPerformLoadQueryService:(NSString *)query; - (void)flushPrivileges:(id)sender; - (void)showVariables:(id)sender; - (void)closeConnection; diff --git a/Source/TableDocument.m b/Source/TableDocument.m index 68b79a1a..668f6b46 100644 --- a/Source/TableDocument.m +++ b/Source/TableDocument.m @@ -79,6 +79,7 @@ [printWebView setFrameLoadDelegate:self]; prefs = [NSUserDefaults standardUserDefaults]; + queryEditorInitString = nil; } @@ -203,6 +204,14 @@ [[SPGrowlController sharedGrowlController] notifyWithTitle:@"Connected" description:[NSString stringWithFormat:NSLocalizedString(@"Connected to %@",@"description for connected growl notification"), [tableWindow title]] notificationName:@"Connected"]; + + // Insert queryEditorInitString into the Query Editor if defined + if(queryEditorInitString && [queryEditorInitString length]) { + [self viewQuery:self]; + [customQueryInstance doPerformLoadQueryService:queryEditorInitString]; + [queryEditorInitString release]; + queryEditorInitString = nil; + } } @@ -1275,6 +1284,16 @@ #pragma mark - #pragma mark Other Methods +/** + * Set that query which will be inserted into the Query Editor + * after establishing the connection + */ + +- (void)initQueryEditorWithString:(NSString *)query +{ + queryEditorInitString = [query retain]; +} + /** * Invoked when user hits the cancel button or close button in * dialogs such as the variableSheet or the createTableSyntaxSheet @@ -1301,6 +1320,15 @@ [tablesListInstance doPerformQueryService:query]; } +/** + * Inserts query into the Custom Query editor + */ +- (void)doPerformLoadQueryService:(NSString *)query +{ + [self viewQuery:nil]; + [customQueryInstance doPerformLoadQueryService:query]; +} + /** * Flushes the mysql privileges */ -- cgit v1.2.3