From 769f2adb4e72667e855b2a63d298d711d16e0185 Mon Sep 17 00:00:00 2001 From: stuconnolly Date: Sun, 17 May 2009 20:04:00 +0000 Subject: Minor enhancements to the server variables sheet, including: - Allow saving the variables to a file in MySQLs config format. - Truncate variable names and values instead of clipping them. Expect live filtering as future enhancements. --- Source/TableDocument.h | 4 +--- Source/TableDocument.m | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) (limited to 'Source') diff --git a/Source/TableDocument.h b/Source/TableDocument.h index b24977f5..7f7c2297 100644 --- a/Source/TableDocument.h +++ b/Source/TableDocument.h @@ -123,9 +123,6 @@ - (NSString *)getHTMLforPrint; -//alert sheets method -- (void)sheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(NSString *)contextInfo; - //connection getter - (CMMCPConnection *)sharedConnection; @@ -136,6 +133,7 @@ - (IBAction)closeDatabaseSheet:(id)sender; - (IBAction)removeDatabase:(id)sender; - (IBAction)showMySQLHelp:(id)sender; +- (IBAction)saveServerVariables:(id)sender; //encoding methods - (void)setConnectionEncoding:(NSString *)mysqlEncoding reloadingViews:(BOOL)reloadViews; diff --git a/Source/TableDocument.m b/Source/TableDocument.m index 80aac913..1af4043b 100644 --- a/Source/TableDocument.m +++ b/Source/TableDocument.m @@ -1512,6 +1512,21 @@ NSString *TableDocumentFavoritesControllerSelectionIndexDidChange = @"TableDocum [[customQueryInstance helpWebViewWindow] makeKeyWindow]; } +/** + * Saves the server variables to the selected file. + */ +- (IBAction)saveServerVariables:(id)sender +{ + NSSavePanel *panel = [NSSavePanel savePanel]; + + [panel setRequiredFileType:@"cnf"]; + + [panel setExtensionHidden:NO]; + [panel setAllowsOtherFileTypes:YES]; + [panel setCanSelectHiddenExtension:YES]; + + [panel beginSheetForDirectory:nil file:@"Variables" modalForWindow:variablesSheet modalDelegate:self didEndSelector:@selector(savePanelDidEnd:returnCode:contextInfo:) contextInfo:NULL]; +} /** * Menu validation @@ -1661,6 +1676,25 @@ NSString *TableDocumentFavoritesControllerSelectionIndexDidChange = @"TableDocum [self connectSheetAddToFavorites:self]; } +/** + * Called when the NSSavePanel sheet ends. Writes the server variables to the selected file if required. + */ +- (void)savePanelDidEnd:(NSSavePanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo +{ + if (returnCode == NSOKButton) { + if (variables) { + NSMutableString *variablesString = [NSMutableString stringWithFormat:@"# MySQL server variables for %@\n\n", [self host]]; + + for (NSDictionary *variable in variables) + { + [variablesString appendString:[NSString stringWithFormat:@"%@ = %@\n", [variable objectForKey:@"Variable_name"], [variable objectForKey:@"Value"]]]; + } + + [variablesString writeToFile:[sheet filename] atomically:YES encoding:NSUTF8StringEncoding error:NULL]; + } + } +} + #pragma mark Toolbar Methods /** -- cgit v1.2.3