From 0cd7f29373fa0db65e1f46ef7423c051712c07f1 Mon Sep 17 00:00:00 2001 From: Bibiko Date: Sat, 15 Aug 2009 09:31:03 +0000 Subject: =?UTF-8?q?=E2=80=A2=20added=20SPTooltip=20to=20CustomQuery=20resu?= =?UTF-8?q?lt=20table=20to=20display=20the=20cell's=20content=20as=20text?= =?UTF-8?q?=20with=20line=20breaks=20and=20tabs=20or=20as=20image?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/CustomQuery.m | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/Source/CustomQuery.m b/Source/CustomQuery.m index f37d8613..6bdfe191 100644 --- a/Source/CustomQuery.m +++ b/Source/CustomQuery.m @@ -36,6 +36,7 @@ #import "RegexKitLite.h" #import "SPFieldEditorController.h" #import "SPTextAndLinkCell.h" +#import "SPTooltip.h" #define SP_MYSQL_DEV_SEARCH_URL @"http://search.mysql.com/search?q=%@&site=refman-%@" #define SP_HELP_SEARCH_IN_MYSQL 0 @@ -1685,6 +1686,47 @@ #pragma mark - #pragma mark TableView delegate methods +/** + * Show the table cell content as tooltip + * - for text displays line breaks and tabs as well + * - if blob data can be interpret as image data display the image as transparent thumbnail + * (up to now using base64 encoded HTML data) + */ +- (NSString *)tableView:(NSTableView *)aTableView toolTipForCell:(SPTextAndLinkCell *)aCell rect:(NSRectPointer)rect tableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)row mouseLocation:(NSPoint)mouseLocation +{ + + if([[aCell stringValue] length] < 1) return nil; + + NSPoint pos = [NSEvent mouseLocation]; + pos.y -= 20; + + // Get the original data for trying to display the blob data as an image + id theValue = NSArrayObjectAtIndex(NSArrayObjectAtIndex(fullResult, row), [[aTableColumn identifier] intValue]); + if ([theValue isKindOfClass:[NSData class]]) { + NSImage *image = [[NSImage alloc] initWithData:theValue]; + if(image) { + int imageWidth = [image size].width; + if (imageWidth > 100) imageWidth = 100; + [SPTooltip showWithObject:[NSString stringWithFormat: + @"", + imageWidth, + [[image TIFFRepresentationUsingCompression:NSTIFFCompressionJPEG factor:0.01] base64EncodingWithLineLength:0]] + atLocation:pos + ofType:@"html" + displayOptions:[NSDictionary dictionaryWithObjectsAndKeys:@"transparent", @"transparent", nil]]; + } + [image release]; + return nil; + } + + // Show the cell string value as tooltip (including line breaks and tabs) + if([[aCell stringValue] length] > 1) + [SPTooltip showWithObject:[aCell stringValue] atLocation:pos]; + + return nil; +} + + /* * Double-click action on a field */ -- cgit v1.2.3