diff options
-rw-r--r-- | Source/SPAppController.m | 10 | ||||
-rw-r--r-- | Source/SPDatabaseDocument.m | 46 | ||||
-rw-r--r-- | Source/SPTableContent.h | 3 | ||||
-rw-r--r-- | Source/SPTableContent.m | 12 |
4 files changed, 66 insertions, 5 deletions
diff --git a/Source/SPAppController.m b/Source/SPAppController.m index d5a3cef2..0a59287c 100644 --- a/Source/SPAppController.m +++ b/Source/SPAppController.m @@ -562,6 +562,16 @@ } } + while(1) { + NSEvent* event = [NSApp nextEventMatchingMask:NSAnyEventMask + untilDate:[NSDate distantPast] + inMode:NSDefaultRunLoopMode + dequeue:YES]; + // if(!event) continue; + [NSApp sendEvent:event]; + if(![processDocument isWorking]) break; + usleep(1000); + } if(processDocument && command && [command isEqualToString:@"passToDoc"]) { NSMutableDictionary *cmdDict = [NSMutableDictionary dictionary]; diff --git a/Source/SPDatabaseDocument.m b/Source/SPDatabaseDocument.m index 7c838a0e..4e26a8c4 100644 --- a/Source/SPDatabaseDocument.m +++ b/Source/SPDatabaseDocument.m @@ -4395,6 +4395,29 @@ // Authenticate command if(![docProcessID isEqualToString:[commandDict objectForKey:@"id"]]) return; + if([command isEqualToString:@"SelectDocumentView"]) { + if([params count] == 2) { + NSString *view = [params objectAtIndex:1]; + if([view length]) { + if([[view lowercaseString] hasPrefix:@"str"]) + [self viewStructure:self]; + else if([[view lowercaseString] hasPrefix:@"con"]) + [self viewContent:self]; + else if([[view lowercaseString] hasPrefix:@"que"]) + [self viewQuery:self]; + else if([[view lowercaseString] hasPrefix:@"tab"]) + [self viewStatus:self]; + else if([[view lowercaseString] hasPrefix:@"rel"]) + [self viewRelations:self]; + else if([[view lowercaseString] hasPrefix:@"tri"]) + [self viewTriggers:self]; + + [self updateWindowTitle:self]; + } + } + return; + } + if([command isEqualToString:@"SelectTable"]) { if([params count] == 2) { NSString *tableName = [params objectAtIndex:1]; @@ -4413,16 +4436,16 @@ } if([command isEqualToString:@"ReloadContentTable"]) { - [tablesListInstance updateTables:self]; + [tableContentInstance reloadTable:self]; return; } if([command isEqualToString:@"ReloadTablesList"]) { - [tableContentInstance reloadTable:self]; + [tablesListInstance updateTables:self]; return; } - else if([command isEqualToString:@"SelectDatabase"]) { + if([command isEqualToString:@"SelectDatabase"]) { if (_isWorkingLevel) return; if([params count] > 1) { NSString *dbName = [params objectAtIndex:1]; @@ -4437,7 +4460,22 @@ return; } - else if([command isEqualToString:@"ExecuteQuery"]) { + if([command isEqualToString:@"ReloadContentTableWithWHEREClause"]) { + NSString *queryFileName = [NSString stringWithFormat:@"%@%@", SPURLSchemeQueryInputPathHeader, docProcessID]; + NSFileManager *fm = [NSFileManager defaultManager]; + BOOL isDir; + if([fm fileExistsAtPath:queryFileName isDirectory:&isDir] && !isDir) { + NSError *inError = nil; + NSString *query = [NSString stringWithContentsOfFile:queryFileName encoding:NSUTF8StringEncoding error:inError]; + [fm removeItemAtPath:queryFileName error:nil]; + if(inError == nil && query && [query length]) { + [tableContentInstance filterTable:query]; + } + } + return; + } + + if([command isEqualToString:@"ExecuteQuery"]) { // Bail if document is busy if (_isWorkingLevel) return; diff --git a/Source/SPTableContent.h b/Source/SPTableContent.h index 893d767d..96058a0f 100644 --- a/Source/SPTableContent.h +++ b/Source/SPTableContent.h @@ -107,7 +107,8 @@ BOOL filterTableIsSwapped; NSString *filterTableDefaultOperator; NSString *lastEditedFilterTableValue; - NSInteger activeFilter; // 0 = default filter; 1 = filter table + NSInteger activeFilter; // 0 = default filter; 1 = filter table; 2 = sequelpro url scheme + NSString *schemeFilter; BOOL sortColumnToRestoreIsAsc; BOOL tableRowsSelectable; diff --git a/Source/SPTableContent.m b/Source/SPTableContent.m index 7d694e07..2f0cec21 100644 --- a/Source/SPTableContent.m +++ b/Source/SPTableContent.m @@ -72,6 +72,7 @@ filterTableIsSwapped = NO; lastEditedFilterTableValue = nil; activeFilter = 0; + schemeFilter = nil; selectedTable = nil; sortCol = nil; @@ -866,6 +867,12 @@ - (NSString *)tableFilterString { + // If filter command was passed by sequelpro url scheme + if(activeFilter == 2) { + if(schemeFilter) + return schemeFilter; + } + // Call did come from filter table and is filter table window still open? if(activeFilter == 1 && [filterTableWindow isVisible]) { @@ -1255,6 +1262,11 @@ if(sender == filterTableFilterButton) activeFilter = 1; + else if([sender isKindOfClass:[NSString class]] && [sender length]) { + if(schemeFilter) [schemeFilter release], schemeFilter = nil; + schemeFilter = [sender retain]; + activeFilter = 2; + } else activeFilter = 0; |