Revision: 3158
http://skim-app.svn.sourceforge.net/skim-app/?rev=3158&view=rev
Author: hofman
Date: 2007-11-05 15:34:09 -0800 (Mon, 05 Nov 2007)
Log Message:
-----------
Add a table for find results grouped by page displaying relevance as number of
results.
Modified Paths:
--------------
trunk/Dutch.lproj/MainWindow.nib/classes.nib
trunk/Dutch.lproj/MainWindow.nib/data.dependency
trunk/Dutch.lproj/MainWindow.nib/info.nib
trunk/Dutch.lproj/MainWindow.nib/keyedobjects.nib
trunk/English.lproj/MainWindow.nib/classes.nib
trunk/English.lproj/MainWindow.nib/info.nib
trunk/English.lproj/MainWindow.nib/keyedobjects.nib
trunk/French.lproj/MainWindow.nib/classes.nib
trunk/French.lproj/MainWindow.nib/info.nib
trunk/French.lproj/MainWindow.nib/keyedobjects.nib
trunk/Italian.lproj/MainWindow.nib/classes.nib
trunk/Italian.lproj/MainWindow.nib/info.nib
trunk/Italian.lproj/MainWindow.nib/keyedobjects.nib
trunk/NSImage_SKExtensions.m
trunk/SKMainWindowController.h
trunk/SKMainWindowController.m
trunk/Spanish.lproj/MainWindow.nib/classes.nib
trunk/Spanish.lproj/MainWindow.nib/info.nib
trunk/Spanish.lproj/MainWindow.nib/keyedobjects.nib
Modified: trunk/Dutch.lproj/MainWindow.nib/classes.nib
===================================================================
--- trunk/Dutch.lproj/MainWindow.nib/classes.nib 2007-11-05 16:30:20 UTC
(rev 3157)
+++ trunk/Dutch.lproj/MainWindow.nib/classes.nib 2007-11-05 23:34:09 UTC
(rev 3158)
@@ -49,6 +49,7 @@
changeColor = id;
changeColorFill = id;
changeDisplayBox = id;
+ changeFindPaneState = id;
changeFont = id;
changeLeftSidePaneState = id;
changeRightSidePaneState = id;
@@ -119,8 +120,12 @@
currentRightSideView = NSView;
displayBoxPopUpButton = NSPopUpButton;
findArrayController = NSArrayController;
+ findButton = NSSegmentedControl;
findTableView = NSTableView;
findView = NSView;
+ groupedFindArrayController = NSArrayController;
+ groupedFindTableView = NSTableView;
+ groupedFindView = NSView;
leftSideButton = NSSegmentedControl;
leftSideCollapsibleView = BDSKCollapsibleView;
leftSideContentView = NSView;
Modified: trunk/Dutch.lproj/MainWindow.nib/data.dependency
===================================================================
--- trunk/Dutch.lproj/MainWindow.nib/data.dependency 2007-11-05 16:30:20 UTC
(rev 3157)
+++ trunk/Dutch.lproj/MainWindow.nib/data.dependency 2007-11-05 23:34:09 UTC
(rev 3158)
@@ -5,7 +5,6 @@
<key>IBPaletteDependency</key>
<array>
<string>PDFKit</string>
- <string>Controllers</string>
</array>
</dict>
</plist>
Modified: trunk/Dutch.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/Dutch.lproj/MainWindow.nib/info.nib 2007-11-05 16:30:20 UTC (rev
3157)
+++ trunk/Dutch.lproj/MainWindow.nib/info.nib 2007-11-05 23:34:09 UTC (rev
3158)
@@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>IBDocumentLocation</key>
- <string>68 81 564 369 0 0 1440 938 </string>
+ <string>92 75 564 369 0 0 1440 938 </string>
<key>IBEditorPositions</key>
<dict>
<key>168</key>
@@ -22,11 +22,20 @@
<string>610 420 220 442 0 0 1440 938 </string>
<key>694</key>
<string>610 420 220 442 0 0 1440 938 </string>
+ <key>796</key>
+ <string>642 252 220 442 0 0 1440 938 </string>
+ <key>813</key>
+ <string>642 592 115 102 0 0 1440 938 </string>
</dict>
<key>IBFramework Version</key>
<string>446.1</string>
<key>IBLockedObjects</key>
<array/>
+ <key>IBOpenObjects</key>
+ <array>
+ <integer>796</integer>
+ <integer>813</integer>
+ </array>
<key>IBSystem Version</key>
<string>8R218</string>
</dict>
Modified: trunk/Dutch.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)
Modified: trunk/English.lproj/MainWindow.nib/classes.nib
===================================================================
--- trunk/English.lproj/MainWindow.nib/classes.nib 2007-11-05 16:30:20 UTC
(rev 3157)
+++ trunk/English.lproj/MainWindow.nib/classes.nib 2007-11-05 23:34:09 UTC
(rev 3158)
@@ -49,6 +49,7 @@
changeColor = id;
changeColorFill = id;
changeDisplayBox = id;
+ changeFindPaneState = id;
changeFont = id;
changeLeftSidePaneState = id;
changeRightSidePaneState = id;
@@ -119,8 +120,12 @@
currentRightSideView = NSView;
displayBoxPopUpButton = NSPopUpButton;
findArrayController = NSArrayController;
+ findButton = NSSegmentedControl;
findTableView = NSTableView;
findView = NSView;
+ groupedFindArrayController = NSArrayController;
+ groupedFindTableView = NSTableView;
+ groupedFindView = NSView;
leftSideButton = NSSegmentedControl;
leftSideCollapsibleView = BDSKCollapsibleView;
leftSideContentView = NSView;
Modified: trunk/English.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/English.lproj/MainWindow.nib/info.nib 2007-11-05 16:30:20 UTC (rev
3157)
+++ trunk/English.lproj/MainWindow.nib/info.nib 2007-11-05 23:34:09 UTC (rev
3158)
@@ -7,7 +7,7 @@
<key>IBEditorPositions</key>
<dict>
<key>168</key>
- <string>592 461 255 329 0 0 1440 938 </string>
+ <string>592 476 255 329 0 0 1440 938 </string>
<key>224</key>
<string>610 420 220 442 0 0 1440 938 </string>
<key>256</key>
@@ -22,6 +22,10 @@
<string>610 420 220 442 0 0 1440 938 </string>
<key>694</key>
<string>610 420 220 442 0 0 1440 938 </string>
+ <key>796</key>
+ <string>610 420 220 442 0 0 1440 938 </string>
+ <key>830</key>
+ <string>662 590 115 102 0 0 1440 938 </string>
</dict>
<key>IBFramework Version</key>
<string>446.1</string>
@@ -29,15 +33,17 @@
<array/>
<key>IBOpenObjects</key>
<array>
+ <integer>694</integer>
+ <integer>796</integer>
+ <integer>314</integer>
+ <integer>256</integer>
<integer>511</integer>
- <integer>694</integer>
+ <integer>830</integer>
<integer>502</integer>
<integer>224</integer>
+ <integer>5</integer>
<integer>168</integer>
- <integer>5</integer>
- <integer>256</integer>
<integer>687</integer>
- <integer>314</integer>
</array>
<key>IBSystem Version</key>
<string>8R218</string>
Modified: trunk/English.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)
Modified: trunk/French.lproj/MainWindow.nib/classes.nib
===================================================================
--- trunk/French.lproj/MainWindow.nib/classes.nib 2007-11-05 16:30:20 UTC
(rev 3157)
+++ trunk/French.lproj/MainWindow.nib/classes.nib 2007-11-05 23:34:09 UTC
(rev 3158)
@@ -49,6 +49,7 @@
changeColor = id;
changeColorFill = id;
changeDisplayBox = id;
+ changeFindPaneState = id;
changeFont = id;
changeLeftSidePaneState = id;
changeRightSidePaneState = id;
@@ -119,8 +120,12 @@
currentRightSideView = NSView;
displayBoxPopUpButton = NSPopUpButton;
findArrayController = NSArrayController;
+ findButton = NSSegmentedControl;
findTableView = NSTableView;
findView = NSView;
+ groupedFindArrayController = NSArrayController;
+ groupedFindTableView = NSTableView;
+ groupedFindView = NSView;
leftSideButton = NSSegmentedControl;
leftSideCollapsibleView = BDSKCollapsibleView;
leftSideContentView = NSView;
Modified: trunk/French.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/French.lproj/MainWindow.nib/info.nib 2007-11-05 16:30:20 UTC (rev
3157)
+++ trunk/French.lproj/MainWindow.nib/info.nib 2007-11-05 23:34:09 UTC (rev
3158)
@@ -7,7 +7,7 @@
<key>IBEditorPositions</key>
<dict>
<key>168</key>
- <string>592 462 255 329 0 0 1440 938 </string>
+ <string>592 476 255 329 0 0 1440 938 </string>
<key>224</key>
<string>690 581 220 442 0 0 1600 1178 </string>
<key>256</key>
@@ -22,6 +22,10 @@
<string>690 581 220 442 0 0 1600 1178 </string>
<key>694</key>
<string>690 581 220 442 0 0 1600 1178 </string>
+ <key>789</key>
+ <string>642 252 220 442 0 0 1440 938 </string>
+ <key>791</key>
+ <string>642 592 115 102 0 0 1440 938 </string>
</dict>
<key>IBFramework Version</key>
<string>446.1</string>
@@ -29,11 +33,13 @@
<array/>
<key>IBOpenObjects</key>
<array>
- <integer>256</integer>
+ <integer>168</integer>
+ <integer>789</integer>
+ <integer>791</integer>
<integer>314</integer>
- <integer>168</integer>
+ <integer>502</integer>
<integer>5</integer>
- <integer>502</integer>
+ <integer>256</integer>
</array>
<key>IBSystem Version</key>
<string>8R218</string>
Modified: trunk/French.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)
Modified: trunk/Italian.lproj/MainWindow.nib/classes.nib
===================================================================
--- trunk/Italian.lproj/MainWindow.nib/classes.nib 2007-11-05 16:30:20 UTC
(rev 3157)
+++ trunk/Italian.lproj/MainWindow.nib/classes.nib 2007-11-05 23:34:09 UTC
(rev 3158)
@@ -49,6 +49,7 @@
changeColor = id;
changeColorFill = id;
changeDisplayBox = id;
+ changeFindPaneState = id;
changeFont = id;
changeLeftSidePaneState = id;
changeRightSidePaneState = id;
@@ -119,8 +120,12 @@
currentRightSideView = NSView;
displayBoxPopUpButton = NSPopUpButton;
findArrayController = NSArrayController;
+ findButton = NSSegmentedControl;
findTableView = NSTableView;
findView = NSView;
+ groupedFindArrayController = NSArrayController;
+ groupedFindTableView = NSTableView;
+ groupedFindView = NSView;
leftSideButton = NSSegmentedControl;
leftSideCollapsibleView = BDSKCollapsibleView;
leftSideContentView = NSView;
Modified: trunk/Italian.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/Italian.lproj/MainWindow.nib/info.nib 2007-11-05 16:30:20 UTC (rev
3157)
+++ trunk/Italian.lproj/MainWindow.nib/info.nib 2007-11-05 23:34:09 UTC (rev
3158)
@@ -7,7 +7,7 @@
<key>IBEditorPositions</key>
<dict>
<key>168</key>
- <string>592 461 255 331 0 0 1440 938 </string>
+ <string>592 475 255 331 0 0 1440 938 </string>
<key>224</key>
<string>610 420 220 442 0 0 1440 938 </string>
<key>256</key>
@@ -22,6 +22,10 @@
<string>610 420 220 442 0 0 1440 938 </string>
<key>677</key>
<string>610 420 220 442 0 0 1440 938 </string>
+ <key>773</key>
+ <string>642 252 220 442 0 0 1440 938 </string>
+ <key>791</key>
+ <string>642 592 115 102 0 0 1440 938 </string>
</dict>
<key>IBFramework Version</key>
<string>446.1</string>
@@ -29,15 +33,17 @@
<array/>
<key>IBOpenObjects</key>
<array>
- <integer>511</integer>
- <integer>168</integer>
+ <integer>791</integer>
<integer>224</integer>
+ <integer>5</integer>
<integer>314</integer>
- <integer>502</integer>
- <integer>5</integer>
+ <integer>168</integer>
+ <integer>256</integer>
<integer>677</integer>
- <integer>256</integer>
+ <integer>773</integer>
<integer>676</integer>
+ <integer>502</integer>
+ <integer>511</integer>
</array>
<key>IBSystem Version</key>
<string>8R218</string>
Modified: trunk/Italian.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)
Modified: trunk/NSImage_SKExtensions.m
===================================================================
--- trunk/NSImage_SKExtensions.m 2007-11-05 16:30:20 UTC (rev 3157)
+++ trunk/NSImage_SKExtensions.m 2007-11-05 23:34:09 UTC (rev 3158)
@@ -79,6 +79,8 @@
static NSImage *thumbnailViewAdornImage = nil;
static NSImage *noteViewAdornImage = nil;
static NSImage *snapshotViewAdornImage = nil;
+ static NSImage *findViewAdornImage = nil;
+ static NSImage *groupedFindViewAdornImage = nil;
static NSImage *textToolAdornImage = nil;
static NSImage *moveToolAdornImage = nil;
static NSImage *magnifyToolAdornImage = nil;
@@ -279,6 +281,40 @@
[snapshotViewAdornImage unlockFocus];
[snapshotViewAdornImage setName:@"SnapshotViewAdorn"];
+ findViewAdornImage = [[NSImage alloc] initWithSize:size];
+ [findViewAdornImage lockFocus];
+ [shadow set];
+ [color setStroke];
+ path = [NSBezierPath bezierPath];
+ [path moveToPoint:NSMakePoint(8.0, 2.5)];
+ [path lineToPoint:NSMakePoint(19.0, 2.5)];
+ [path moveToPoint:NSMakePoint(8.0, 5.5)];
+ [path lineToPoint:NSMakePoint(19.0, 5.5)];
+ [path moveToPoint:NSMakePoint(8.0, 8.5)];
+ [path lineToPoint:NSMakePoint(19.0, 8.5)];
+ [path moveToPoint:NSMakePoint(8.0, 11.5)];
+ [path lineToPoint:NSMakePoint(19.0, 11.5)];
+ [path stroke];
+ [findViewAdornImage unlockFocus];
+ [findViewAdornImage setName:@"FindViewAdorn"];
+
+ groupedFindViewAdornImage = [[NSImage alloc] initWithSize:size];
+ [groupedFindViewAdornImage lockFocus];
+ [shadow set];
+ [color setStroke];
+ path = [NSBezierPath bezierPath];
+ [path moveToPoint:NSMakePoint(8.0, 2.5)];
+ [path lineToPoint:NSMakePoint(12.0, 2.5)];
+ [path moveToPoint:NSMakePoint(8.0, 5.5)];
+ [path lineToPoint:NSMakePoint(15.0, 5.5)];
+ [path moveToPoint:NSMakePoint(8.0, 8.5)];
+ [path lineToPoint:NSMakePoint(17.0, 8.5)];
+ [path moveToPoint:NSMakePoint(8.0, 11.5)];
+ [path lineToPoint:NSMakePoint(19.0, 11.5)];
+ [path stroke];
+ [groupedFindViewAdornImage unlockFocus];
+ [groupedFindViewAdornImage setName:@"GroupedFindViewAdorn"];
+
textToolAdornImage = [[NSImage alloc] initWithSize:size];
[textToolAdornImage lockFocus];
[shadow set];
Modified: trunk/SKMainWindowController.h
===================================================================
--- trunk/SKMainWindowController.h 2007-11-05 16:30:20 UTC (rev 3157)
+++ trunk/SKMainWindowController.h 2007-11-05 23:34:09 UTC (rev 3158)
@@ -48,6 +48,11 @@
SKSnapshotSidePaneState
} SKRightSidePaneState;
+typedef enum _SKFindPaneState {
+ SKSingularFindPaneState,
+ SKGroupedFindPaneState
+} SKFindPaneState;
+
enum {
SKDefaultWindowOption,
SKMaximizeWindowOption,
@@ -124,6 +129,13 @@
CFMutableSetRef temporaryAnnotations;
NSTimer *temporaryAnnotationTimer;
+ IBOutlet NSArrayController *groupedFindArrayController;
+ IBOutlet NSTableView *groupedFindTableView;
+ IBOutlet NSView *groupedFindView;
+ NSMutableArray *groupedSearchResults;
+ IBOutlet NSSegmentedControl *findButton;
+ SKFindPaneState findPaneState;
+
IBOutlet NSArrayController *noteArrayController;
IBOutlet SKNoteOutlineView *noteOutlineView;
IBOutlet NSView *noteView;
@@ -254,6 +266,7 @@
- (IBAction)toggleRightSidePane:(id)sender;
- (IBAction)changeLeftSidePaneState:(id)sender;
- (IBAction)changeRightSidePaneState:(id)sender;
+- (IBAction)changeFindPaneState:(id)sender;
- (IBAction)toggleStatusBar:(id)sender;
- (IBAction)searchPDF:(id)sender;
- (IBAction)enterFullScreen:(id)sender;
@@ -311,6 +324,8 @@
- (void)setLeftSidePaneState:(SKLeftSidePaneState)newLeftSidePaneState;
- (SKRightSidePaneState)rightSidePaneState;
- (void)setRightSidePaneState:(SKRightSidePaneState)newRightSidePaneState;
+- (SKFindPaneState)findPaneState;
+- (void)setFindPaneState:(SKFindPaneState)newFindPaneState;
- (BOOL)leftSidePaneIsOpen;
- (BOOL)rightSidePaneIsOpen;
@@ -321,6 +336,8 @@
- (void)fadeInThumbnailView;
- (void)displaySearchView;
- (void)fadeInSearchView;
+- (void)displayGroupedSearchView;
+- (void)fadeInGroupedSearchView;
- (void)displayNoteView;
- (void)displaySnapshotView;
Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m 2007-11-05 16:30:20 UTC (rev 3157)
+++ trunk/SKMainWindowController.m 2007-11-05 23:34:09 UTC (rev 3158)
@@ -176,7 +176,7 @@
- (void)goToSelectedOutlineItem;
-- (void)goToFindResults:(NSArray *)findResults;
+- (void)updateFindResultHighlights:(BOOL)scroll;
- (void)showHoverWindowForDestination:(PDFDestination *)dest;
@@ -223,6 +223,7 @@
[self setShouldCloseDocument:YES];
isPresentation = NO;
searchResults = [[NSMutableArray alloc] init];
+ groupedSearchResults = [[NSMutableArray alloc] init];
thumbnails = [[NSMutableArray alloc] init];
notes = [[NSMutableArray alloc] init];
snapshots = [[NSMutableArray alloc] init];
@@ -252,6 +253,7 @@
[(id)temporaryAnnotations release];
[dirtySnapshots release];
[searchResults release];
+ [groupedSearchResults release];
[pdfOutline release];
[thumbnails release];
[notes release];
@@ -417,6 +419,10 @@
[snapshotArrayController setSortDescriptors:[NSArray
arrayWithObjects:pageIndexSortDescriptor, nil]];
[ownerController setContent:self];
+ NSSortDescriptor *scoreSortDescriptor = [[[NSSortDescriptor alloc]
initWithKey:@"score" ascending:NO] autorelease];
+ [groupedFindArrayController setSortDescriptors:[NSArray
arrayWithObjects:scoreSortDescriptor, nil]];
+ [[[groupedFindTableView tableColumnWithIdentifier:@"relevance"] dataCell]
setEnabled:NO];
+
// NB: the next line will load the PDF document and annotations, so
necessary setup must be finished first!
// windowControllerDidLoadNib: is not called automatically because the
document overrides makeWindowControllers
[[self document] windowControllerDidLoadNib:self];
@@ -918,6 +924,7 @@
// these will be invalid. If needed, the document will restore them
[[self mutableArrayValueForKey:@"searchResults"] removeAllObjects];
+ [[self mutableArrayValueForKey:@"groupedSearchResults"]
removeAllObjects];
[[self mutableArrayValueForKey:@"notes"] removeAllObjects];
[[self mutableArrayValueForKey:@"thumbnails"] removeAllObjects];
@@ -1100,6 +1107,25 @@
}
}
+- (SKFindPaneState)findPaneState {
+ return findPaneState;
+}
+
+- (void)setFindPaneState:(SKFindPaneState)newFindPaneState {
+ if (findPaneState != newFindPaneState) {
+ findPaneState = newFindPaneState;
+
+ if (findPaneState == SKSingularFindPaneState) {
+ if ([groupedFindView window])
+ [self displaySearchView];
+ } else if (findPaneState == SKGroupedFindPaneState) {
+ if ([findView window])
+ [self displayGroupedSearchView];
+ }
+ [self updateFindResultHighlights:YES];
+ }
+}
+
- (BOOL)leftSidePaneIsOpen {
int state;
if ([self isFullScreen])
@@ -2015,6 +2041,10 @@
[self setRightSidePaneState:[sender tag]];
}
+- (IBAction)changeFindPaneState:(id)sender {
+ [self setFindPaneState:[sender tag]];
+}
+
- (void)scrollSecondaryPdfView {
NSPoint point = [pdfView bounds].origin;
PDFPage *page = [pdfView pageForPoint:point nearest:YES];
@@ -2445,11 +2475,25 @@
- (void)replaceSideView:(NSView *)oldView withView:(NSView *)newView
animate:(BOOL)animate {
if ([newView window] == nil) {
- BOOL wasFirstResponder = [[[oldView window] firstResponder]
isDescendantOf:oldView];
+ BOOL wasFirstResponder;
- if ([oldView isEqual:tocView] || [oldView isEqual:findView])
+ if ([oldView isEqual:tocView] || [oldView isEqual:findView] ||
[oldView isEqual:groupedFindView])
[[SKPDFHoverWindow sharedHoverWindow] orderOut:self];
+ if ((oldView == findView || oldView == groupedFindView) && (newView !=
findView && newView != groupedFindView)) {
+ NSView *view = [leftSideButton superview];
+ wasFirstResponder = [[[findButton window] firstResponder]
isEqual:findButton];
+ [leftSideButton setFrame:[findButton frame]];
+ [findButton retain];
+ [[findButton superview] replaceSubview:findButton
with:leftSideButton];
+ [view addSubview:findButton];
+ [findButton release];
+ if (wasFirstResponder)
+ [[leftSideButton window] makeFirstResponder:leftSideButton];
+ }
+
+ wasFirstResponder = [[[oldView window] firstResponder]
isDescendantOf:oldView];
+
[newView setFrame:[oldView frame]];
[newView setHidden:animate];
[[oldView superview] addSubview:newView];
@@ -2476,6 +2520,18 @@
[oldView removeFromSuperview];
[oldView setHidden:NO];
[[newView window] recalculateKeyViewLoop];
+
+ if ((oldView != findView && oldView != groupedFindView) && (newView ==
findView || newView == groupedFindView)) {
+ NSView *view = [findButton superview];
+ wasFirstResponder = [[[leftSideButton window] firstResponder]
isEqual:leftSideButton];
+ [findButton setFrame:[leftSideButton frame]];
+ [leftSideButton retain];
+ [[leftSideButton superview] replaceSubview:leftSideButton
with:findButton];
+ [view addSubview:leftSideButton];
+ [leftSideButton release];
+ if (wasFirstResponder)
+ [[findButton window] makeFirstResponder:findButton];
+ }
}
}
@@ -2513,6 +2569,16 @@
currentLeftSideView = findView;
}
+- (void)displayGroupedSearchView {
+ [self replaceSideView:currentLeftSideView withView:groupedFindView
animate:NO];
+ currentLeftSideView = groupedFindView;
+}
+
+- (void)fadeInGroupedSearchView {
+ [self replaceSideView:currentLeftSideView withView:groupedFindView
animate:YES];
+ currentLeftSideView = groupedFindView;
+}
+
- (void)displayNoteView {
[self replaceSideView:currentRightSideView withView:noteView animate:NO];
currentRightSideView = noteView;
@@ -2528,9 +2594,13 @@
- (void)documentDidBeginDocumentFind:(NSNotification *)note {
if (findPanelFind == NO) {
+ NSString *message = [NSLocalizedString(@"Searching", @"Message in
search table header") stringByAppendingEllipsis];
[findArrayController removeObjects:searchResults];
- [[[findTableView tableColumnWithIdentifier:@"results"] headerCell]
setStringValue:[NSLocalizedString(@"Searching", @"Message in search table
header") stringByAppendingEllipsis]];
+ [[[findTableView tableColumnWithIdentifier:@"results"] headerCell]
setStringValue:message];
[[findTableView headerView] setNeedsDisplay:YES];
+ [[[groupedFindTableView tableColumnWithIdentifier:@"relevance"]
headerCell] setStringValue:message];
+ [[groupedFindTableView headerView] setNeedsDisplay:YES];
+ [groupedFindArrayController removeObjects:groupedSearchResults];
[statusBar setProgressIndicatorStyle:SKProgressIndicatorBarStyle];
[[statusBar progressIndicator] setMaxValue:[[note object] pageCount]];
[[statusBar progressIndicator] setDoubleValue:0.0];
@@ -2540,10 +2610,15 @@
- (void)documentDidEndDocumentFind:(NSNotification *)note {
if (findPanelFind == NO) {
+ NSString *message = [NSString stringWithFormat:NSLocalizedString(@"%i
Results", @"Message in search table header"), [searchResults count]];
[self willChangeValueForKey:@"searchResults"];
[self didChangeValueForKey:@"searchResults"];
- [[[findTableView tableColumnWithIdentifier:@"results"] headerCell]
setStringValue:[NSString stringWithFormat:NSLocalizedString(@"%i Results",
@"Message in search table header"), [searchResults count]]];
+ [self willChangeValueForKey:@"groupedSearchResults"];
+ [self didChangeValueForKey:@"groupedSearchResults"];
+ [[[findTableView tableColumnWithIdentifier:@"results"] headerCell]
setStringValue:message];
[[findTableView headerView] setNeedsDisplay:YES];
+ [[[groupedFindTableView tableColumnWithIdentifier:@"relevance"]
headerCell] setStringValue:message];
+ [[groupedFindTableView headerView] setNeedsDisplay:YES];
[statusBar stopAnimation:self];
[statusBar setProgressIndicatorStyle:SKProgressIndicatorNone];
}
@@ -2556,9 +2631,32 @@
- (void)didMatchString:(PDFSelection *)instance {
if (findPanelFind == NO) {
[searchResults addObject:instance];
+
+ PDFPage *page = [[instance pages] objectAtIndex:0];
+ NSMutableDictionary *dict = [groupedSearchResults lastObject];
+ if ([[dict valueForKey:@"pageIndex"] unsignedIntValue] != [page
pageIndex]) {
+ dict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
+ [NSNumber numberWithUnsignedInt:[page pageIndex]],
@"pageIndex",
+ [page label], @"pageLabel",
+ [NSMutableArray array], @"results", nil];
+ [groupedSearchResults addObject:dict];
+ }
+ [[dict valueForKey:@"results"] addObject:instance];
+
+ unsigned int max = 0;
+ NSEnumerator *dictEnum = [groupedSearchResults objectEnumerator];
+ while (dict = [dictEnum nextObject])
+ max = MAX(max, [[dict valueForKey:@"results"] count]);
+
+ dictEnum = [groupedSearchResults objectEnumerator];
+ while (dict = [dictEnum nextObject])
+ [dict setValue:[NSNumber numberWithFloat:(float)[[dict
valueForKey:@"results"] count] / max] forKey:@"score"];
+
if ([searchResults count] % 50 == 0) {
[self willChangeValueForKey:@"searchResults"];
[self didChangeValueForKey:@"searchResults"];
+ [self willChangeValueForKey:@"groupedSearchResults"];
+ [self didChangeValueForKey:@"groupedSearchResults"];
}
}
}
@@ -2650,7 +2748,10 @@
[self fadeInOutlineView];
} else {
[[pdfView document] beginFindString:[sender stringValue]
withOptions:NSCaseInsensitiveSearch];
- [self fadeInSearchView];
+ if (findPaneState == SKSingularFindPaneState)
+ [self fadeInSearchView];
+ else
+ [self fadeInGroupedSearchView];
NSPasteboard *findPboard = [NSPasteboard
pasteboardWithName:NSFindPboard];
[findPboard declareTypes:[NSArray arrayWithObject:NSStringPboardType]
owner:nil];
@@ -2679,6 +2780,7 @@
[pdfView setCurrentSelection:selection];
[pdfView scrollSelectionToVisible:self];
[findTableView deselectAll:self];
+ [groupedFindTableView deselectAll:self];
if ([[NSUserDefaults standardUserDefaults]
boolForKey:SKShouldHighlightSearchResultsKey]) {
[self removeTemporaryAnnotations];
[self addAnnotationsForSelection:selection];
@@ -2689,9 +2791,15 @@
}
}
-- (void)goToFindResults:(NSArray *)findResults {
+- (void)updateFindResultHighlights:(BOOL)scroll {
BOOL highlight = [[NSUserDefaults standardUserDefaults]
boolForKey:SKShouldHighlightSearchResultsKey];
+ NSArray *findResults = nil;
+ if (findPaneState == SKSingularFindPaneState && [findView window])
+ findResults = [findArrayController selectedObjects];
+ else if (findPaneState == SKGroupedFindPaneState && [groupedFindView
window])
+ findResults = [[groupedFindArrayController selectedObjects]
valueForKeyPath:@"@unionOfArrays.results"];
+
// union all selected objects
NSEnumerator *selE = [findResults objectEnumerator];
PDFSelection *sel;
@@ -2700,8 +2808,10 @@
PDFSelection *currentSel = [[[selE nextObject] copy] autorelease];
[pdfView setCurrentSelection:currentSel];
- [pdfView scrollSelectionToVisible:self];
+ if (scroll && [findResults count])
+ [pdfView scrollSelectionToVisible:self];
+
[self removeTemporaryAnnotations];
// add an annotation so it's easier to see the search result
@@ -2713,6 +2823,8 @@
if (highlight)
[self addAnnotationsForSelection:sel];
}
+
+ [pdfView setCurrentSelection:currentSel];
}
- (IBAction)searchNotes:(id)sender {
@@ -3240,28 +3352,15 @@
}
} else if ([key isEqualToString:SKSearchHighlightColorKey]) {
if ([[NSUserDefaults standardUserDefaults]
boolForKey:SKShouldHighlightSearchResultsKey] &&
- [[searchField stringValue] length] && [findTableView
numberOfSelectedRows]) {
+ [[searchField stringValue] length] &&
+ (([findView window] && [findTableView numberOfSelectedRows])
|| ([groupedFindView window] && [groupedFindTableView numberOfSelectedRows]))) {
// clear the selection
- [self removeTemporaryAnnotations];
-
- NSEnumerator *selE = [[findArrayController selectedObjects]
objectEnumerator];
- PDFSelection *sel;
-
- while (sel = [selE nextObject])
- [self addAnnotationsForSelection:sel];
+ [self updateFindResultHighlights:NO];
}
} else if ([key isEqualToString:SKShouldHighlightSearchResultsKey]) {
- if ([[searchField stringValue] length] && [findTableView
numberOfSelectedRows]) {
+ if ([[searchField stringValue] length] && ([findTableView
numberOfSelectedRows] || [groupedFindTableView numberOfSelectedRows])) {
// clear the selection
- [self removeTemporaryAnnotations];
-
- if ([[NSUserDefaults standardUserDefaults]
boolForKey:SKShouldHighlightSearchResultsKey]) {
- NSEnumerator *selE = [[findArrayController
selectedObjects] objectEnumerator];
- PDFSelection *sel;
-
- while (sel = [selE nextObject])
- [self addAnnotationsForSelection:sel];
- }
+ [self updateFindResultHighlights:NO];
}
} else if ([key isEqualToString:SKThumbnailSizeKey]) {
[self resetThumbnailSizeIfNeeded];
@@ -3278,9 +3377,8 @@
[outlineView setFont:font];
[noteOutlineView setFont:font];
[findTableView setFont:font];
+ [groupedFindTableView setFont:font];
[self updatePageColumnWidthForTableView:outlineView];
- [self updatePageColumnWidthForTableView:noteOutlineView];
- [self updatePageColumnWidthForTableView:findTableView];
}
} else {
[super observeValueForKeyPath:keyPath ofObject:object change:change
context:context];
@@ -3709,10 +3807,15 @@
- (void)tableViewSelectionDidChange:(NSNotification *)aNotification {
if ([[aNotification object] isEqual:findTableView]) {
- [self goToFindResults:[findArrayController selectedObjects]];
+ [self updateFindResultHighlights:YES];
if ([self isPresentation] && [[NSUserDefaults standardUserDefaults]
boolForKey:SKAutoHidePresentationContentsKey])
[self hideLeftSideWindow];
+ } else if ([[aNotification object] isEqual:groupedFindTableView]) {
+ [self updateFindResultHighlights:YES];
+
+ if ([self isPresentation] && [[NSUserDefaults standardUserDefaults]
boolForKey:SKAutoHidePresentationContentsKey])
+ [self hideLeftSideWindow];
} else if ([[aNotification object] isEqual:thumbnailTableView]) {
if (updatingThumbnailSelection == NO) {
int row = [thumbnailTableView selectedRow];
@@ -3821,6 +3924,8 @@
- (BOOL)tableView:(NSTableView *)tv shouldTrackTableColumn:(NSTableColumn
*)aTableColumn row:(int)row {
if ([tv isEqual:findTableView]) {
return YES;
+ } else if ([tv isEqual:groupedFindTableView]) {
+ return YES;
}
return NO;
}
@@ -3829,12 +3934,17 @@
if ([tv isEqual:findTableView]) {
PDFDestination *dest = [[[findArrayController arrangedObjects]
objectAtIndex:row] destination];
[self showHoverWindowForDestination:dest];
+ } else if ([tv isEqual:groupedFindTableView]) {
+ PDFDestination *dest = [[[[[groupedFindArrayController
arrangedObjects] objectAtIndex:row] valueForKey:@"results"] objectAtIndex:0]
destination];
+ [self showHoverWindowForDestination:dest];
}
}
- (void)tableView:(NSTableView *)tv mouseExitedTableColumn:(NSTableColumn
*)aTableColumn row:(int)row {
if ([tv isEqual:findTableView]) {
[[SKPDFHoverWindow sharedHoverWindow] hide];
+ } else if ([tv isEqual:groupedFindTableView]) {
+ [[SKPDFHoverWindow sharedHoverWindow] hide];
}
}
@@ -5007,7 +5117,7 @@
[menuItem setTitle:NSLocalizedString(@"Show Notes Pane", @"Menu
item title")];
return [self isPresentation] == NO;
} else if (action == @selector(changeLeftSidePaneState:)) {
- [menuItem setState:(int)leftSidePaneState == [menuItem tag] ?
([findTableView window] ? NSMixedState : NSOnState) : NSOffState];
+ [menuItem setState:(int)leftSidePaneState == [menuItem tag] ?
(([findTableView window] || [groupedFindTableView window]) ? NSMixedState :
NSOnState) : NSOffState];
return [menuItem tag] == SKThumbnailSidePaneState || pdfOutline;
} else if (action == @selector(changeRightSidePaneState:)) {
[menuItem setState:(int)rightSidePaneState == [menuItem tag] ?
NSOnState : NSOffState];
Modified: trunk/Spanish.lproj/MainWindow.nib/classes.nib
===================================================================
--- trunk/Spanish.lproj/MainWindow.nib/classes.nib 2007-11-05 16:30:20 UTC
(rev 3157)
+++ trunk/Spanish.lproj/MainWindow.nib/classes.nib 2007-11-05 23:34:09 UTC
(rev 3158)
@@ -49,6 +49,7 @@
changeColor = id;
changeColorFill = id;
changeDisplayBox = id;
+ changeFindPaneState = id;
changeFont = id;
changeLeftSidePaneState = id;
changeRightSidePaneState = id;
@@ -119,8 +120,12 @@
currentRightSideView = NSView;
displayBoxPopUpButton = NSPopUpButton;
findArrayController = NSArrayController;
+ findButton = NSSegmentedControl;
findTableView = NSTableView;
findView = NSView;
+ groupedFindArrayController = NSArrayController;
+ groupedFindTableView = NSTableView;
+ groupedFindView = NSView;
leftSideButton = NSSegmentedControl;
leftSideCollapsibleView = BDSKCollapsibleView;
leftSideContentView = NSView;
Modified: trunk/Spanish.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/Spanish.lproj/MainWindow.nib/info.nib 2007-11-05 16:30:20 UTC (rev
3157)
+++ trunk/Spanish.lproj/MainWindow.nib/info.nib 2007-11-05 23:34:09 UTC (rev
3158)
@@ -3,11 +3,11 @@
<plist version="1.0">
<dict>
<key>IBDocumentLocation</key>
- <string>68 81 564 369 0 0 1440 938 </string>
+ <string>102 81 564 369 0 0 1440 938 </string>
<key>IBEditorPositions</key>
<dict>
<key>168</key>
- <string>592 462 255 329 0 0 1440 938 </string>
+ <string>592 476 255 329 0 0 1440 938 </string>
<key>224</key>
<string>610 420 220 442 0 0 1440 938 </string>
<key>256</key>
@@ -22,6 +22,10 @@
<string>610 420 220 442 0 0 1440 938 </string>
<key>694</key>
<string>610 420 220 442 0 0 1440 938 </string>
+ <key>794</key>
+ <string>642 252 220 442 0 0 1440 938 </string>
+ <key>811</key>
+ <string>642 592 115 102 0 0 1440 938 </string>
</dict>
<key>IBFramework Version</key>
<string>446.1</string>
@@ -29,12 +33,14 @@
<array/>
<key>IBOpenObjects</key>
<array>
+ <integer>511</integer>
+ <integer>224</integer>
+ <integer>5</integer>
+ <integer>502</integer>
+ <integer>794</integer>
+ <integer>811</integer>
<integer>687</integer>
- <integer>502</integer>
- <integer>224</integer>
- <integer>511</integer>
<integer>168</integer>
- <integer>5</integer>
</array>
<key>IBSystem Version</key>
<string>8R218</string>
Modified: trunk/Spanish.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit