aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorstuconnolly <stuart02@gmail.com>2009-04-05 20:22:04 +0000
committerstuconnolly <stuart02@gmail.com>2009-04-05 20:22:04 +0000
commitcb406e22d30aaf6dc62ea0917943adb555a8b3e6 (patch)
treeea0dbea2809a952ba529091b643f9dfc619e4a0b
parent5a1f162168e2228be7976842441080b3fc5d00e0 (diff)
downloadsequelpro-cb406e22d30aaf6dc62ea0917943adb555a8b3e6.tar.gz
sequelpro-cb406e22d30aaf6dc62ea0917943adb555a8b3e6.tar.bz2
sequelpro-cb406e22d30aaf6dc62ea0917943adb555a8b3e6.zip
Fix an issue where by the show/hide console menu item was not being updated when the toolbar item was used. Also add more interface validation by only enabling the 'Clear Console' menu and toolbar items when there is at least one message in the console.
-rw-r--r--Source/SPQueryConsole.h8
-rw-r--r--Source/SPQueryConsole.m12
-rw-r--r--Source/TableDocument.m33
3 files changed, 41 insertions, 12 deletions
diff --git a/Source/SPQueryConsole.h b/Source/SPQueryConsole.h
index 65d716d4..155517f7 100644
--- a/Source/SPQueryConsole.h
+++ b/Source/SPQueryConsole.h
@@ -24,14 +24,14 @@
@interface SPQueryConsole : NSWindowController
{
- NSFont *consoleFont;
- NSMutableArray *messages, *messagesActiveSet, *messagesFilterSet, *messagesSubset;
-
IBOutlet NSView *saveLogView;
IBOutlet NSTableView *consoleTableView;
IBOutlet NSSearchField *consoleSearchField;
IBOutlet NSProgressIndicator *progressIndicator;
IBOutlet NSButton *includeTimeStampsButton, *saveConsoleButton, *clearConsoleButton;
+
+ NSFont *consoleFont;
+ NSMutableArray *messages, *messagesActiveSet, *messagesFilterSet, *messagesSubset;
}
@property (readwrite, retain) NSFont *consoleFont;
@@ -47,4 +47,6 @@
- (void)showMessageInConsole:(NSString *)message;
- (void)showErrorInConsole:(NSString *)error;
+- (NSUInteger)consoleMessageCount;
+
@end
diff --git a/Source/SPQueryConsole.m b/Source/SPQueryConsole.m
index 7b7edccb..0ba6c982 100644
--- a/Source/SPQueryConsole.m
+++ b/Source/SPQueryConsole.m
@@ -225,6 +225,14 @@ static SPQueryConsole *sharedQueryConsole = nil;
}
/**
+ * Returns the number of messages currently in the console.
+ */
+- (NSUInteger)consoleMessageCount
+{
+ return [messages count];
+}
+
+/**
* Called when the NSSavePanel sheet ends. Writes the console's current content to the selected file if required.
*/
- (void)savePanelDidEnd:(NSSavePanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo
@@ -310,6 +318,10 @@ static SPQueryConsole *sharedQueryConsole = nil;
if ([menuItem action] == @selector(copy:)) {
return ([consoleTableView numberOfSelectedRows] > 0);
}
+
+ if ([menuItem action] == @selector(clearConsole:)) {
+ return ([self consoleMessageCount] > 0);
+ }
return [[self window] validateMenuItem:menuItem];
}
diff --git a/Source/TableDocument.m b/Source/TableDocument.m
index 9e0853e0..72742cf6 100644
--- a/Source/TableDocument.m
+++ b/Source/TableDocument.m
@@ -609,12 +609,15 @@ NSString *TableDocumentFavoritesControllerFavoritesDidChange = @"TableDocumentFa
{
BOOL isConsoleVisible = [[[SPQueryConsole sharedQueryConsole] window] isVisible];
+ // Show or hide the console
[[[SPQueryConsole sharedQueryConsole] window] setIsVisible:(!isConsoleVisible)];
+ // Get the menu item for showing and hiding the console. This is isn't the best way to get it as any
+ // changes to the menu structure will result in the wrong item being selected.
+ NSMenuItem *menuItem = [[[[NSApp mainMenu] itemAtIndex:3] submenu] itemAtIndex:5];
+
// Only update the menu item title if its the menu item and not the toolbar
- if ([sender isKindOfClass:[NSMenuItem class]]) {
- [(NSMenuItem *)sender setTitle:(!isConsoleVisible) ? NSLocalizedString(@"Hide Console", @"Hide Console") : NSLocalizedString(@"Show Console", @"Show Console")];
- }
+ [menuItem setTitle:(!isConsoleVisible) ? NSLocalizedString(@"Hide Console", @"Hide Console") : NSLocalizedString(@"Show Console", @"Show Console")];
}
/**
@@ -1301,8 +1304,8 @@ NSString *TableDocumentFavoritesControllerFavoritesDidChange = @"TableDocumentFa
mainToolbar = [[[NSToolbar alloc] initWithIdentifier:@"TableWindowToolbar"] autorelease];
// set up toolbar properties
- [mainToolbar setAllowsUserCustomization: YES];
- [mainToolbar setAutosavesConfiguration: YES];
+ [mainToolbar setAllowsUserCustomization:YES];
+ [mainToolbar setAutosavesConfiguration:YES];
[mainToolbar setDisplayMode:NSToolbarDisplayModeIconAndLabel];
// set ourself as the delegate
@@ -1365,7 +1368,7 @@ NSString *TableDocumentFavoritesControllerFavoritesDidChange = @"TableDocumentFa
[toolbarItem setToolTip:NSLocalizedString(@"Clear the console which shows all MySQL commands performed by Sequel Pro", @"tooltip for toolbar item for clear console")];
[toolbarItem setImage:[NSImage imageNamed:@"clearconsole"]];
//set up the target action
- [toolbarItem setTarget:[SPQueryConsole sharedQueryConsole]];
+ [toolbarItem setTarget:self];
[toolbarItem setAction:@selector(clearConsole:)];
} else if ([itemIdentifier isEqualToString:@"SwitchToTableStructureToolbarItemIdentifier"]) {
@@ -1452,6 +1455,9 @@ NSString *TableDocumentFavoritesControllerFavoritesDidChange = @"TableDocumentFa
nil];
}
+/**
+ * toolbar delegate method
+ */
- (NSArray *)toolbarSelectableItemIdentifiers:(NSToolbar *)toolbar
{
return [NSArray arrayWithObjects:
@@ -1464,20 +1470,29 @@ NSString *TableDocumentFavoritesControllerFavoritesDidChange = @"TableDocumentFa
}
/**
- * validates the toolbar items
+ * Validates the toolbar items
*/
- (BOOL)validateToolbarItem:(NSToolbarItem *)toolbarItem;
{
- if ([[toolbarItem itemIdentifier] isEqualToString:@"ToggleConsoleIdentifier"]) {
+ NSString *identifier = [toolbarItem itemIdentifier];
+
+ // Toggle console item
+ if ([identifier isEqualToString:@"ToggleConsoleIdentifier"]) {
if ([[[SPQueryConsole sharedQueryConsole] window] isVisible]) {
[toolbarItem setLabel:@"Hide Console"];
[toolbarItem setImage:[NSImage imageNamed:@"hideconsole"]];
- } else {
+ }
+ else {
[toolbarItem setLabel:@"Show Console"];
[toolbarItem setImage:[NSImage imageNamed:@"showconsole"]];
}
}
+ // Clear console item
+ if ([identifier isEqualToString:@"ClearConsoleIdentifier"]) {
+ return ([[SPQueryConsole sharedQueryConsole] consoleMessageCount] > 0);
+ }
+
return YES;
}