From b6630d67c87f48126d42d8f10e016220dc39a7a2 Mon Sep 17 00:00:00 2001 From: stuconnolly Date: Sun, 15 Nov 2009 01:20:36 +0000 Subject: When viewing the information_schema database, disable all controls on the table information view as all table in this database are not modifiable by anyone. --- Source/SPExtendedTableInfo.m | 21 +++++++++++++-------- Source/SPQueryController.m | 1 - 2 files changed, 13 insertions(+), 9 deletions(-) (limited to 'Source') diff --git a/Source/SPExtendedTableInfo.m b/Source/SPExtendedTableInfo.m index aee45569..7140320e 100644 --- a/Source/SPExtendedTableInfo.m +++ b/Source/SPExtendedTableInfo.m @@ -351,7 +351,6 @@ */ - (void)startDocumentTaskForTab:(NSNotification *)aNotification { - // Only proceed if this view is selected. if (![[tableDocumentInstance selectedToolbarItemIdentifier] isEqualToString:MAIN_TOOLBAR_TABLE_INFO]) return; @@ -367,28 +366,34 @@ */ - (void)endDocumentTaskForTab:(NSNotification *)aNotification { - // Only proceed if this view is selected. if (![[tableDocumentInstance selectedToolbarItemIdentifier] isEqualToString:MAIN_TOOLBAR_TABLE_INFO]) return; NSDictionary *statusFields = [tableDataInstance statusValues]; + if (!selectedTable || ![selectedTable length] || [[statusFields objectForKey:@"Engine"] isEqualToString:@"View"]) return; - if ([[databaseDataInstance getDatabaseStorageEngines] count] && [statusFields objectForKey:@"Engine"]) - [tableTypePopUpButton setEnabled:YES]; + // If we are viewing tables in the information_schema database, then disable all controls that cause table + // changes as these tables are not modifiable by anyone. + BOOL isInformationSchemaDb = [[tableDocumentInstance database] isEqualToString:@"information_schema"]; + + if ([[databaseDataInstance getDatabaseStorageEngines] count] && [statusFields objectForKey:@"Engine"]) { + [tableTypePopUpButton setEnabled:(!isInformationSchemaDb)]; + } - if ([[databaseDataInstance getDatabaseCharacterSetEncodings] count] && [tableDataInstance tableEncoding]) - [tableEncodingPopUpButton setEnabled:YES]; + if ([[databaseDataInstance getDatabaseCharacterSetEncodings] count] && [tableDataInstance tableEncoding]) { + [tableEncodingPopUpButton setEnabled:(!isInformationSchemaDb)]; + } if ([[databaseDataInstance getDatabaseCollationsForEncoding:[tableDataInstance tableEncoding]] count] && [statusFields objectForKey:@"Collation"]) { - [tableCollationPopUpButton setEnabled:YES]; + [tableCollationPopUpButton setEnabled:(!isInformationSchemaDb)]; } - [tableCommentsTextView setEditable:YES]; + [tableCommentsTextView setEditable:(!isInformationSchemaDb)]; } #pragma mark - diff --git a/Source/SPQueryController.m b/Source/SPQueryController.m index 891f4fb5..6e9e561e 100644 --- a/Source/SPQueryController.m +++ b/Source/SPQueryController.m @@ -372,7 +372,6 @@ static SPQueryController *sharedQueryController = nil; return [[[NSAttributedString alloc] initWithString:returnValue attributes:stringAtributes] autorelease]; } - #pragma mark - #pragma mark Other -- cgit v1.2.3