diff options
Diffstat (limited to 'Source/SPNarrowDownCompletion.m')
-rw-r--r-- | Source/SPNarrowDownCompletion.m | 132 |
1 files changed, 80 insertions, 52 deletions
diff --git a/Source/SPNarrowDownCompletion.m b/Source/SPNarrowDownCompletion.m index 090319dc..0724d722 100644 --- a/Source/SPNarrowDownCompletion.m +++ b/Source/SPNarrowDownCompletion.m @@ -98,7 +98,7 @@ // ============================= - (id)init { - if(self = [super initWithContentRect:NSZeroRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO]) + if(self = [super initWithContentRect:NSMakeRect(0,0,450,0) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO]) { mutablePrefix = [NSMutableString new]; textualInputCharacters = [[NSMutableCharacterSet alphanumericCharacterSet] retain]; @@ -193,24 +193,44 @@ [self setLevel:NSStatusWindowLevel]; [self setHidesOnDeactivate:YES]; [self setHasShadow:YES]; + [self setAlphaValue:0.9]; NSScrollView* scrollView = [[[NSScrollView alloc] initWithFrame:NSZeroRect] autorelease]; - [scrollView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; + // [scrollView setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable]; [scrollView setAutohidesScrollers:YES]; [scrollView setHasVerticalScroller:YES]; + [scrollView setHasHorizontalScroller:NO]; [[scrollView verticalScroller] setControlSize:NSSmallControlSize]; + [[scrollView horizontalScroller] setControlSize:NSSmallControlSize]; theTableView = [[[NSTableView alloc] initWithFrame:NSZeroRect] autorelease]; [theTableView setFocusRingType:NSFocusRingTypeNone]; [theTableView setAllowsEmptySelection:NO]; [theTableView setHeaderView:nil]; - - NSTableColumn *column = [[[NSTableColumn alloc] initWithIdentifier:@"foo"] autorelease]; - // - [column setDataCell:[[ImageAndTextCell new] autorelease]]; - [column setEditable:NO]; - [theTableView addTableColumn:column]; - [column setWidth:[theTableView bounds].size.width]; + // [theTableView setSelectionHighlightStyle:NSTableViewSelectionHighlightStyleSourceList]; + + NSTableColumn *column0 = [[[NSTableColumn alloc] initWithIdentifier:@"image"] autorelease]; + [column0 setDataCell:[[ImageAndTextCell new] autorelease]]; + [column0 setEditable:NO]; + [theTableView addTableColumn:column0]; + [column0 setWidth:20]; + NSTableColumn *column1 = [[[NSTableColumn alloc] initWithIdentifier:@"name"] autorelease]; + [column1 setEditable:NO]; + // [[column1 dataCell] setFont:[NSFont systemFontOfSize:12]]; + [theTableView addTableColumn:column1]; + [column1 setWidth:180]; + NSTableColumn *column2 = [[[NSTableColumn alloc] initWithIdentifier:@"type"] autorelease]; + [column2 setEditable:NO]; + // [[column2 dataCell] setFont:[NSFont systemFontOfSize:11]]; + [[column2 dataCell] setTextColor:[NSColor grayColor]]; + [theTableView addTableColumn:column2]; + [column2 setWidth:120]; + NSTableColumn *column3 = [[[NSTableColumn alloc] initWithIdentifier:@"path"] autorelease]; + [column3 setEditable:NO]; + // [[column3 dataCell] setFont:[NSFont systemFontOfSize:11]]; + [[column3 dataCell] setTextColor:[NSColor grayColor]]; + [theTableView addTableColumn:column3]; + [column3 setWidth:130]; [theTableView setDataSource:self]; [scrollView setDocumentView:theTableView]; @@ -230,15 +250,22 @@ { NSImage* image = nil; NSString* imageName = nil; - if(!dictMode) { - imageName = [[filtered objectAtIndex:rowIndex] objectForKey:@"image"]; - if(imageName) - image = [NSImage imageNamed:imageName]; - [[aTableColumn dataCell] setImage:image]; + if([[aTableColumn identifier] isEqualToString:@"image"]) { + if(!dictMode) { + imageName = [[filtered objectAtIndex:rowIndex] objectForKey:@"image"]; + if(imageName) + image = [NSImage imageNamed:imageName]; + [[aTableColumn dataCell] setImage:image]; + return @""; + } + } else if([[aTableColumn identifier] isEqualToString:@"name"]) { return [[filtered objectAtIndex:rowIndex] objectForKey:@"display"]; + } else if([[aTableColumn identifier] isEqualToString:@"type"]) { + return ([[filtered objectAtIndex:rowIndex] objectForKey:@"type"])?[[filtered objectAtIndex:rowIndex] objectForKey:@"type"]:@""; + } else if ([[aTableColumn identifier] isEqualToString:@"path"]) { + return ([[filtered objectAtIndex:rowIndex] objectForKey:@"path"])?[[filtered objectAtIndex:rowIndex] objectForKey:@"path"]:@""; } return [filtered objectAtIndex:rowIndex]; - } // ==================== @@ -246,7 +273,7 @@ // ==================== - (void)filter { - NSRect mainScreen = [self rectOfMainScreen]; + // NSRect mainScreen = [self rectOfMainScreen]; NSArray* newFiltered; if([mutablePrefix length] > 0) @@ -274,46 +301,47 @@ NSInteger displayedRows = [newFiltered count] < SP_NARROWDOWNLIST_MAX_ROWS ? [newFiltered count] : SP_NARROWDOWNLIST_MAX_ROWS; CGFloat newHeight = ([theTableView rowHeight] + [theTableView intercellSpacing].height) * displayedRows; - CGFloat maxLen = 1; - NSString* item; - NSInteger i; - BOOL spaceInSuggestion = NO; - [textualInputCharacters removeCharactersInString:@" "]; - CGFloat maxWidth = [self frame].size.width; - if([newFiltered count]>0) - { - for(i=0; i<[newFiltered count]; i++) - { - if(dictMode) - item = NSArrayObjectAtIndex(newFiltered, i); - else - item = [NSArrayObjectAtIndex(newFiltered, i) objectForKey:@"display"]; - // If space in suggestion add space to allowed input chars - if(!spaceInSuggestion && [item rangeOfString:@" "].length) { - [textualInputCharacters addCharactersInString:@" "]; - spaceInSuggestion = YES; - } - - if([item length]>maxLen) - maxLen = [item length]; - } - maxWidth = maxLen*16; - maxWidth = (maxWidth>340) ? 340 : maxWidth; - } - if(caretPos.y>=0 && (isAbove || caretPos.y<newHeight)) - { - isAbove = YES; - old.y = caretPos.y + (newHeight + [tableFont pointSize]*1.5); - } - if(caretPos.y<0 && (isAbove || (mainScreen.size.height-newHeight)<(caretPos.y*-1))) - { - old.y = caretPos.y + (newHeight + [tableFont pointSize]*1.5); - } + // CGFloat maxLen = 1; + // NSString* item; + // NSInteger i; + // BOOL spaceInSuggestion = NO; + // [textualInputCharacters removeCharactersInString:@" "]; + // CGFloat maxWidth = [self frame].size.width; + // if([newFiltered count]>0) + // { + // for(i=0; i<[newFiltered count]; i++) + // { + // if(dictMode) + // item = NSArrayObjectAtIndex(newFiltered, i); + // else + // item = [NSArrayObjectAtIndex(newFiltered, i) objectForKey:@"display"]; + // // If space in suggestion add space to allowed input chars + // if(!spaceInSuggestion && [item rangeOfString:@" "].length) { + // [textualInputCharacters addCharactersInString:@" "]; + // spaceInSuggestion = YES; + // } + // + // if([item length]>maxLen) + // maxLen = [item length]; + // } + // maxWidth = maxLen*16; + // maxWidth = (maxWidth>340) ? 340 : maxWidth; + // maxWidth = (maxWidth<20) ? 20 : maxWidth; + // } + // if(caretPos.y>=0 && (isAbove || caretPos.y<newHeight)) + // { + // isAbove = YES; + // old.y = caretPos.y + (newHeight + [tableFont pointSize]*1.5); + // } + // if(caretPos.y<0 && (isAbove || (mainScreen.size.height-newHeight)<(caretPos.y*-1))) + // { + // old.y = caretPos.y + (newHeight + [tableFont pointSize]*1.5); + // } // newHeight is currently the new height for theTableView, but we need to resize the whole window // so here we use the difference in height to find the new height for the window // newHeight = [[self contentView] frame].size.height + (newHeight - [theTableView frame].size.height); - [self setFrame:NSMakeRect(old.x, old.y-newHeight, maxWidth, newHeight) display:YES]; + [self setFrame:NSMakeRect(old.x, old.y-newHeight, 450, newHeight) display:YES]; if (filtered) [filtered release]; filtered = [newFiltered retain]; [theTableView reloadData]; |