diff options
-rw-r--r-- | Source/SPAppController.m | 45 | ||||
-rw-r--r-- | Source/TableDump.h | 5 | ||||
-rw-r--r-- | Source/TableDump.m | 5 |
3 files changed, 52 insertions, 3 deletions
diff --git a/Source/SPAppController.m b/Source/SPAppController.m index b9e32dd1..94a732b9 100644 --- a/Source/SPAppController.m +++ b/Source/SPAppController.m @@ -27,6 +27,7 @@ #import "SPAppController.h" #import "TableDocument.h" #import "SPPreferenceController.h" +#import "TableDump.h" #import "SPEncodingPopupAccessory.h" #import <Sparkle/Sparkle.h> @@ -161,8 +162,10 @@ } - (void)openConnectionPanelDidEnd:(NSOpenPanel *)panel returnCode:(int)returnCode contextInfo:(void *)contextInfo { - if ( returnCode ) + if ( returnCode ) { + [panel orderOut:self]; [self application:nil openFiles:[panel filenames]]; + } encodingPopUp = nil; } @@ -179,6 +182,46 @@ // Opens a sql file and insert its content into the Custom Query editor if([[[filename pathExtension] lowercaseString] isEqualToString:@"sql"]) { + // Check size and NSFileType + NSDictionary *attr = [[NSFileManager defaultManager] fileAttributesAtPath:filename traverseLink:YES]; + if(attr) + { + NSNumber *filesize = [attr objectForKey:NSFileSize]; + NSString *filetype = [attr objectForKey:NSFileType]; + if(filetype == NSFileTypeRegular && filesize) + { + // Ask for confirmation if file content is larger than 1MB + if([filesize unsignedLongValue] > 1000000) + { + NSAlert *alert = [[NSAlert alloc] init]; + [alert addButtonWithTitle:NSLocalizedString(@"OK", @"OK button")]; + [alert addButtonWithTitle:NSLocalizedString(@"Cancel", @"cancel button")]; + + // Show 'Import' button only if there's a connection available + if ([[[NSDocumentController sharedDocumentController] documents] count]) + [alert addButtonWithTitle:NSLocalizedString(@"Import", @"import button")]; + + + [alert setInformativeText:[NSString stringWithFormat:NSLocalizedString(@"Do you really want to load a SQL file with %.1f MB of data into the Query Editor?", @"message of panel asking for confirmation for loading large text into the query editor"), + [filesize unsignedLongValue]/1048576.0]]; + [alert setHelpAnchor:filename]; + [alert setMessageText:NSLocalizedString(@"Warning",@"warning")]; + [alert setAlertStyle:NSWarningAlertStyle]; + + NSUInteger returnCode = [alert runModal]; + + [alert release]; + + if(returnCode == NSAlertSecondButtonReturn) return; // Cancel + else if(returnCode == NSAlertThirdButtonReturn) { // Import + // begin import process + [[[[NSDocumentController sharedDocumentController] currentDocument] valueForKeyPath:@"tableDumpInstance"] startSQLImportProcessWithFile:filename]; + return; + } + } + } + } + // if encodingPopUp is defined the filename comes from an openPanel and // the encodingPopUp contains the chosen encoding; otherwise autodetect encoding if(encodingPopUp) diff --git a/Source/TableDump.h b/Source/TableDump.h index de659fa2..dd9ffd6c 100644 --- a/Source/TableDump.h +++ b/Source/TableDump.h @@ -119,8 +119,9 @@ // Import methods - (void)importFile; -- (void) importSQLFile:(NSString *)filename; -- (void) importCSVFile:(NSString *)filename; +- (void)importSQLFile:(NSString *)filename; +- (void)startSQLImportProcessWithFile:(NSString *)filename; +- (void)importCSVFile:(NSString *)filename; - (IBAction)changeFormat:(id)sender; - (IBAction)changeTable:(id)sender; - (void)openPanelDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(NSString *)contextInfo; diff --git a/Source/TableDump.m b/Source/TableDump.m index 994b45bc..6a55610d 100644 --- a/Source/TableDump.m +++ b/Source/TableDump.m @@ -948,6 +948,11 @@ [NSThread detachNewThreadSelector:@selector(importBackgroundProcess:) toTarget:self withObject:[sheet filename]]; } +- (void)startSQLImportProcessWithFile:(NSString *)filename +{ + [importFormatPopup selectItemWithTitle:@"SQL"]; + [NSThread detachNewThreadSelector:@selector(importBackgroundProcess:) toTarget:self withObject:filename]; +} /* * Sets up the fieldMapping array to be shown in the tableView */ |