diff options
author | mtvee <emptyvee@gmail.com> | 2009-05-18 06:51:08 +0000 |
---|---|---|
committer | mtvee <emptyvee@gmail.com> | 2009-05-18 06:51:08 +0000 |
commit | 570bd13276ebca100befb65b273e7ba51e578b1a (patch) | |
tree | e695930a6895da3801b32dfb70f7becafe556586 /Source | |
parent | 61da30eb923d774336ad10d252d4d0790999f33f (diff) | |
download | sequelpro-570bd13276ebca100befb65b273e7ba51e578b1a.tar.gz sequelpro-570bd13276ebca100befb65b273e7ba51e578b1a.tar.bz2 sequelpro-570bd13276ebca100befb65b273e7ba51e578b1a.zip |
- hide 'rename' context menu if selection is not a table
- added methods to CMMCPConnection to determine server major,minor,release version
Diffstat (limited to 'Source')
-rw-r--r-- | Source/CMMCPConnection.h | 9 | ||||
-rw-r--r-- | Source/CMMCPConnection.m | 75 | ||||
-rw-r--r-- | Source/TablesList.m | 10 |
3 files changed, 91 insertions, 3 deletions
diff --git a/Source/CMMCPConnection.h b/Source/CMMCPConnection.h index 8473c962..1ca4a953 100644 --- a/Source/CMMCPConnection.h +++ b/Source/CMMCPConnection.h @@ -50,6 +50,8 @@ BOOL useKeepAlive; float keepAliveInterval; + NSString *serverVersionString; + NSTimer *keepAliveTimer; NSDate *lastKeepAliveSuccess; } @@ -79,4 +81,11 @@ - (void) threadedKeepAlive; - (const char *) cStringFromString:(NSString *) theString usingEncoding:(NSStringEncoding) encoding; +/* return server major version number or -1 on fail */ +- (int)serverMajorVersion; +/* return server minor version number or -1 on fail */ +- (int)serverMinorVersion; +/* return server release version number or -1 on fail */ +- (int)serverReleaseVersion; + @end diff --git a/Source/CMMCPConnection.m b/Source/CMMCPConnection.m index 99b72e42..bfd30062 100644 --- a/Source/CMMCPConnection.m +++ b/Source/CMMCPConnection.m @@ -29,9 +29,26 @@ static jmp_buf pingTimeoutJumpLocation; static void forcePingTimeout(int signalNumber); -@implementation CMMCPConnection +@interface CMMCPConnection(hidden) +- (void)getServerVersionString; +@end + +@implementation CMMCPConnection(hidden) +- (void)getServerVersionString +{ + if( mConnected ) { + CMMCPResult *theResult; + theResult = [self queryString:@"SHOW VARIABLES WHERE Variable_name = 'version'"]; + if ([theResult numOfRows]) + [theResult dataSeek:0]; + serverVersionString = [NSString stringWithString:[[theResult fetchRowAsDictionary] objectForKey:@"Value"]]; + } +} +@end +@implementation CMMCPConnection + /* * Override the normal init methods, extending them to also init additional details. */ @@ -39,6 +56,7 @@ static void forcePingTimeout(int signalNumber); { [self initSPExtensions]; self = [super init]; + serverVersionString = nil; return self; } - (id) initToHost:(NSString *) host withLogin:(NSString *) login password:(NSString *) pass usingPort:(int) port @@ -123,9 +141,64 @@ static void forcePingTimeout(int signalNumber); if (connectionSocket) [connectionSocket release]; connectionSocket = nil; + if( serverVersionString != nil ) { + serverVersionString = nil; + } + [self stopKeepAliveTimer]; } +/* + * return the server major version or -1 on fail + */ +- (int)serverMajorVersion +{ + + if( mConnected ) { + if( serverVersionString == nil ) { + [self getServerVersionString]; + } + if( serverVersionString != nil ) { + return [[[serverVersionString componentsSeparatedByString:@"."] objectAtIndex:0] intValue]; + } + } + return -1; +} + +/* + * return the server minor version or -1 on fail + */ +- (int)serverMinorVersion +{ + + if( mConnected ) { + if( serverVersionString == nil ) { + [self getServerVersionString]; + } + if( serverVersionString != nil ) { + return [[[serverVersionString componentsSeparatedByString:@"."] objectAtIndex:1] intValue]; + } + } + return -1; +} + +/* + * return the server release version or -1 on fail + */ +- (int)serverReleaseVersion +{ + if( mConnected ) { + if( serverVersionString == nil ) { + [self getServerVersionString]; + } + if( serverVersionString != nil ) { + NSString *s = [[serverVersionString componentsSeparatedByString:@"."] objectAtIndex:2]; + return [[[s componentsSeparatedByString:@"-"] objectAtIndex:0] intValue]; + } + } + return -1; +} + /* * Reconnect to the currently "active" - but possibly disconnected - connection, using the diff --git a/Source/TablesList.m b/Source/TablesList.m index aae6136b..8d4769ac 100644 --- a/Source/TablesList.m +++ b/Source/TablesList.m @@ -49,11 +49,13 @@ NSString *selectedTable = nil; NSInteger selectedRowIndex; + NSLog( @"%d %d %d", [mySQLConnection serverMajorVersion], [mySQLConnection serverMinorVersion], [mySQLConnection serverReleaseVersion] ); + selectedRowIndex = [tablesListView selectedRow]; if(selectedRowIndex > 0 && [tables count]){ selectedTable = [NSString stringWithString:[tables objectAtIndex:selectedRowIndex]]; } - + [tablesListView deselectAll:self]; [tables removeAllObjects]; [tableTypes removeAllObjects]; @@ -961,7 +963,8 @@ [[tableSubMenu itemAtIndex:8] setHidden:NO]; [[tableSubMenu itemAtIndex:8] setTitle:NSLocalizedString(@"Flush View", @"flush view menu item")]; [[tableSubMenu itemAtIndex:9] setHidden:YES]; // checksum - + + [renameTableMenuItem setHidden:YES]; [removeTableMenuItem setTitle:NSLocalizedString(@"Remove view", @"remove view menu title")]; [duplicateTableMenuItem setTitle:NSLocalizedString(@"Duplicate view", @"duplicate view menu title")]; } @@ -979,6 +982,7 @@ [[tableSubMenu itemAtIndex:8] setTitle:NSLocalizedString(@"Flush Table", @"flush table menu item")]; [[tableSubMenu itemAtIndex:9] setHidden:NO]; + [renameTableMenuItem setHidden:NO]; [removeTableMenuItem setTitle:NSLocalizedString(@"Remove table", @"remove table menu title")]; [duplicateTableMenuItem setTitle:NSLocalizedString(@"Duplicate table", @"duplicate table menu title")]; } @@ -994,6 +998,7 @@ [[tableSubMenu itemAtIndex:8] setHidden:YES]; [[tableSubMenu itemAtIndex:9] setHidden:YES]; + [renameTableMenuItem setHidden:YES]; [removeTableMenuItem setTitle:NSLocalizedString(@"Remove procedure", @"remove proc menu title")]; [duplicateTableMenuItem setTitle:NSLocalizedString(@"Duplicate procedure", @"duplicate proc menu title")]; } @@ -1009,6 +1014,7 @@ [[tableSubMenu itemAtIndex:8] setHidden:YES]; [[tableSubMenu itemAtIndex:9] setHidden:YES]; + [renameTableMenuItem setHidden:YES]; [removeTableMenuItem setTitle:NSLocalizedString(@"Remove function", @"remove func menu title")]; [duplicateTableMenuItem setTitle:NSLocalizedString(@"Duplicate function", @"duplicate func menu title")]; } |