aboutsummaryrefslogtreecommitdiffstats
path: root/Source
diff options
context:
space:
mode:
authormtvee <emptyvee@gmail.com>2009-05-18 06:51:08 +0000
committermtvee <emptyvee@gmail.com>2009-05-18 06:51:08 +0000
commit570bd13276ebca100befb65b273e7ba51e578b1a (patch)
treee695930a6895da3801b32dfb70f7becafe556586 /Source
parent61da30eb923d774336ad10d252d4d0790999f33f (diff)
downloadsequelpro-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.h9
-rw-r--r--Source/CMMCPConnection.m75
-rw-r--r--Source/TablesList.m10
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")];
}