diff options
author | Bibiko <bibiko@eva.mpg.de> | 2010-09-20 16:54:12 +0000 |
---|---|---|
committer | Bibiko <bibiko@eva.mpg.de> | 2010-09-20 16:54:12 +0000 |
commit | e0ed4d4743e255c3a381396a46b3e1c6efa93ccb (patch) | |
tree | 998a95e34cd05a07ce236bc02d93e79457e9993c | |
parent | 26eb1e9fb81f28b49ebe4b4e8977af965149b84c (diff) | |
download | sequelpro-e0ed4d4743e255c3a381396a46b3e1c6efa93ccb.tar.gz sequelpro-e0ed4d4743e255c3a381396a46b3e1c6efa93ccb.tar.bz2 sequelpro-e0ed4d4743e255c3a381396a46b3e1c6efa93ccb.zip |
• avoid exceptions etc. if content filter clause is empty
- in addition alert the user that this clause was empty to avoid confusion of filtered result set
-rw-r--r-- | Source/SPTableContent.m | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/Source/SPTableContent.m b/Source/SPTableContent.m index e79b2c36..9a1fc14c 100644 --- a/Source/SPTableContent.m +++ b/Source/SPTableContent.m @@ -828,12 +828,20 @@ } NSDictionary *filter = [[contentFilters objectForKey:compareType] objectAtIndex:[[compareField selectedItem] tag]]; - if(![filter objectForKey:@"Clause"] || ![filter objectForKey:@"NumberOfArguments"]) { + if(![filter objectForKey:@"NumberOfArguments"]) { NSLog(@"Error while retrieving filter clause. No “Clause” or/and “NumberOfArguments” key found."); NSBeep(); return nil; } + if(![filter objectForKey:@"Clause"] || ![[filter objectForKey:@"Clause"] length]) { + + SPBeginAlertSheet(NSLocalizedString(@"Warning", @"warning"), NSLocalizedString(@"OK", @"OK button"), nil, nil, [tableDocumentInstance parentWindow], self, nil, nil, + NSLocalizedString(@"Content Filter clause is empty.", @"content filter clause is empty tooltip.")); + + return nil; + } + NSUInteger numberOfArguments = [[filter objectForKey:@"NumberOfArguments"] integerValue]; BOOL suppressLeadingTablePlaceholder = NO; @@ -2202,16 +2210,20 @@ [item setToolTip:[filter objectForKey:@"Tooltip"]]; else { NSMutableString *tip = [[NSMutableString alloc] init]; - [tip setString:[[filter objectForKey:@"Clause"] stringByReplacingOccurrencesOfRegex:@"(?<!\\\\)(\\$\\{.*?\\})" withString:@"[arg]"]]; - if([tip isMatchedByRegex:@"(?<!\\\\)\\$BINARY"]) { - [tip replaceOccurrencesOfRegex:@"(?<!\\\\)\\$BINARY" withString:@""]; - [tip appendString:NSLocalizedString(@"\n\nPress ⇧ for binary search (case-sensitive).", @"\n\npress shift for binary search tooltip message")]; + if([filter objectForKey:@"Clause"] && [[filter objectForKey:@"Clause"] length]) { + [tip setString:[[filter objectForKey:@"Clause"] stringByReplacingOccurrencesOfRegex:@"(?<!\\\\)(\\$\\{.*?\\})" withString:@"[arg]"]]; + if([tip isMatchedByRegex:@"(?<!\\\\)\\$BINARY"]) { + [tip replaceOccurrencesOfRegex:@"(?<!\\\\)\\$BINARY" withString:@""]; + [tip appendString:NSLocalizedString(@"\n\nPress ⇧ for binary search (case-sensitive).", @"\n\npress shift for binary search tooltip message")]; + } + [tip flushCachedRegexData]; + [tip replaceOccurrencesOfRegex:@"(?<!\\\\)\\$CURRENT_FIELD" withString:[[fieldField titleOfSelectedItem] backtickQuotedString]]; + [tip flushCachedRegexData]; + [item setToolTip:tip]; + [tip release]; + } else { + [item setToolTip:@""]; } - [tip flushCachedRegexData]; - [tip replaceOccurrencesOfRegex:@"(?<!\\\\)\\$CURRENT_FIELD" withString:[[fieldField titleOfSelectedItem] backtickQuotedString]]; - [tip flushCachedRegexData]; - [item setToolTip:tip]; - [tip release]; } [item setTag:i]; [menu addItem:item]; |