Revision: 3177
http://skim-app.svn.sourceforge.net/skim-app/?rev=3177&view=rev
Author: hofman
Date: 2007-11-07 10:37:45 -0800 (Wed, 07 Nov 2007)
Log Message:
-----------
Allow selecting multiple notes in table.
Modified Paths:
--------------
trunk/Dutch.lproj/Localizable.strings
trunk/Dutch.lproj/MainWindow.nib/info.nib
trunk/Dutch.lproj/MainWindow.nib/keyedobjects.nib
trunk/English.lproj/MainWindow.nib/info.nib
trunk/English.lproj/MainWindow.nib/keyedobjects.nib
trunk/French.lproj/Localizable.strings
trunk/French.lproj/MainWindow.nib/info.nib
trunk/French.lproj/MainWindow.nib/keyedobjects.nib
trunk/Italian.lproj/Localizable.strings
trunk/Italian.lproj/MainWindow.nib/info.nib
trunk/Italian.lproj/MainWindow.nib/keyedobjects.nib
trunk/SKMainWindowController.h
trunk/SKMainWindowController.m
trunk/Spanish.lproj/Localizable.strings
trunk/Spanish.lproj/MainWindow.nib/info.nib
trunk/Spanish.lproj/MainWindow.nib/keyedobjects.nib
Modified: trunk/Dutch.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/Dutch.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/Dutch.lproj/MainWindow.nib/info.nib 2007-11-07 15:59:17 UTC (rev
3176)
+++ trunk/Dutch.lproj/MainWindow.nib/info.nib 2007-11-07 18:37:45 UTC (rev
3177)
@@ -33,9 +33,10 @@
<array/>
<key>IBOpenObjects</key>
<array>
+ <integer>813</integer>
+ <integer>796</integer>
+ <integer>511</integer>
<integer>224</integer>
- <integer>796</integer>
- <integer>813</integer>
</array>
<key>IBSystem Version</key>
<string>8R218</string>
Modified: trunk/Dutch.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)
Modified: trunk/English.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/English.lproj/MainWindow.nib/info.nib 2007-11-07 15:59:17 UTC (rev
3176)
+++ trunk/English.lproj/MainWindow.nib/info.nib 2007-11-07 18:37:45 UTC (rev
3177)
@@ -33,17 +33,17 @@
<array/>
<key>IBOpenObjects</key>
<array>
+ <integer>168</integer>
+ <integer>796</integer>
<integer>502</integer>
<integer>224</integer>
<integer>314</integer>
+ <integer>687</integer>
+ <integer>511</integer>
+ <integer>694</integer>
<integer>830</integer>
+ <integer>256</integer>
<integer>5</integer>
- <integer>694</integer>
- <integer>687</integer>
- <integer>256</integer>
- <integer>511</integer>
- <integer>796</integer>
- <integer>168</integer>
</array>
<key>IBSystem Version</key>
<string>8R218</string>
Modified: trunk/English.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)
Modified: trunk/French.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/French.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/French.lproj/MainWindow.nib/info.nib 2007-11-07 15:59:17 UTC (rev
3176)
+++ trunk/French.lproj/MainWindow.nib/info.nib 2007-11-07 18:37:45 UTC (rev
3177)
@@ -17,7 +17,7 @@
<key>502</key>
<string>610 420 220 442 0 0 1440 938 </string>
<key>511</key>
- <string>690 581 220 442 0 0 1600 1178 </string>
+ <string>610 420 220 442 0 0 1440 938 </string>
<key>687</key>
<string>690 581 220 442 0 0 1600 1178 </string>
<key>694</key>
@@ -33,13 +33,14 @@
<array/>
<key>IBOpenObjects</key>
<array>
- <integer>168</integer>
+ <integer>256</integer>
<integer>502</integer>
- <integer>791</integer>
- <integer>5</integer>
- <integer>256</integer>
<integer>789</integer>
<integer>314</integer>
+ <integer>5</integer>
+ <integer>168</integer>
+ <integer>791</integer>
+ <integer>511</integer>
</array>
<key>IBSystem Version</key>
<string>8R218</string>
Modified: trunk/French.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)
Modified: trunk/Italian.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/Italian.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/Italian.lproj/MainWindow.nib/info.nib 2007-11-07 15:59:17 UTC (rev
3176)
+++ trunk/Italian.lproj/MainWindow.nib/info.nib 2007-11-07 18:37:45 UTC (rev
3177)
@@ -33,17 +33,17 @@
<array/>
<key>IBOpenObjects</key>
<array>
- <integer>168</integer>
+ <integer>5</integer>
+ <integer>677</integer>
+ <integer>676</integer>
+ <integer>502</integer>
+ <integer>314</integer>
+ <integer>224</integer>
<integer>791</integer>
- <integer>502</integer>
<integer>511</integer>
- <integer>224</integer>
<integer>773</integer>
- <integer>5</integer>
<integer>256</integer>
- <integer>677</integer>
- <integer>314</integer>
- <integer>676</integer>
+ <integer>168</integer>
</array>
<key>IBSystem Version</key>
<string>8R218</string>
Modified: trunk/Italian.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)
Modified: trunk/SKMainWindowController.h
===================================================================
--- trunk/SKMainWindowController.h 2007-11-07 15:59:17 UTC (rev 3176)
+++ trunk/SKMainWindowController.h 2007-11-07 18:37:45 UTC (rev 3177)
@@ -308,7 +308,7 @@
- (void)insertObject:(id)obj inSnapshotsAtIndex:(unsigned)theIndex;
- (void)removeObjectFromSnapshotsAtIndex:(unsigned)theIndex;
-- (PDFAnnotation *)selectedNote;
+- (NSArray *)selectedNotes;
- (unsigned int)pageNumber;
- (void)setPageNumber:(unsigned int)pageNumber;
Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m 2007-11-07 15:59:17 UTC (rev 3176)
+++ trunk/SKMainWindowController.m 2007-11-07 18:37:45 UTC (rev 3177)
@@ -1249,15 +1249,20 @@
[snapshots removeObjectAtIndex:theIndex];
}
-- (PDFAnnotation *)selectedNote {
- int row = [noteOutlineView selectedRow];
+- (NSArray *)selectedNotes {
+ NSMutableArray *selectedNotes = [NSMutableArray array];
+ NSIndexSet *rowIndexes = [noteOutlineView selectedRowIndexes];
+ unsigned int row = [rowIndexes firstIndex];
id item = nil;
- if (row != -1) {
+ while (row != NSNotFound) {
item = [noteOutlineView itemAtRow:row];
if ([item type] == nil)
item = [(SKNoteText *)item annotation];
+ if ([selectedNotes containsObject:item] == NO)
+ [selectedNotes addObject:item];
+ row = [rowIndexes indexGreaterThanIndex:row];
}
- return item;
+ return selectedNotes;
}
#pragma mark Actions
@@ -1363,8 +1368,9 @@
- (void)selectSelectedNote{
if ([pdfView hideNotes] == NO) {
- id annotation = [self selectedNote];
- if (annotation) {
+ NSArray *selectedNotes = [self selectedNotes];
+ if ([selectedNotes count] == 1) {
+ PDFAnnotation *annotation = [selectedNotes lastObject];
[pdfView scrollAnnotationToVisible:annotation];
[pdfView setActiveAnnotation:annotation];
}
@@ -3102,7 +3108,7 @@
[self updateLineInspector];
}
if ([annotation isNoteAnnotation]) {
- if ([self selectedNote] != annotation) {
+ if ([[self selectedNotes] containsObject:annotation]) {
[noteOutlineView selectRowIndexes:[NSIndexSet
indexSetWithIndex:[noteOutlineView rowForItem:annotation]]
byExtendingSelection:NO];
}
} else {
@@ -3138,7 +3144,7 @@
PDFAnnotation *annotation = [[notification userInfo]
objectForKey:@"annotation"];
PDFPage *page = [[notification userInfo] objectForKey:@"page"];
- if ([self selectedNote] == annotation)
+ if ([[self selectedNotes] containsObject:annotation])
[noteOutlineView deselectAll:self];
if (annotation) {
@@ -3708,14 +3714,12 @@
}
}
-- (void)deleteNote:(id)sender {
- PDFAnnotation *annotation = [sender representedObject];
- [self outlineView:noteOutlineView deleteItems:[NSArray
arrayWithObjects:annotation, nil]];
+- (void)deleteNotes:(id)sender {
+ [self outlineView:noteOutlineView deleteItems:[sender representedObject]];
}
-- (void)copyNote:(id)sender {
- PDFAnnotation *annotation = [sender representedObject];
- [self outlineView:noteOutlineView copyItems:[NSArray
arrayWithObjects:annotation, nil]];
+- (void)copyNotes:(id)sender {
+ [self outlineView:noteOutlineView copyItems:[sender representedObject]];
}
- (void)selectNote:(id)sender {
@@ -3736,19 +3740,18 @@
NSSize size = NSMakeSize(width, FLT_MAX);
NSSize smallSize = NSMakeSize(width - indentation, FLT_MAX);
- NSMutableArray *items = [NSMutableArray array];
- id item = [sender representedObject];
+ NSArray *items = [sender representedObject];
- if (item) {
- [items addObject:item];
- } else {
- [items addObjectsFromArray:[self notes]];
- [items addObjectsFromArray:[[self notes]
valueForKeyPath:@"@unionOfArrays.texts"]];
+ if (items == nil) {
+ items = [NSMutableArray array];
+ [(NSMutableArray *)items addObjectsFromArray:[self notes]];
+ [(NSMutableArray *)items addObjectsFromArray:[[self notes]
valueForKeyPath:@"@unionOfArrays.texts"]];
}
int i, count = [items count];
NSMutableIndexSet *rowIndexes = [NSMutableIndexSet indexSet];
int row;
+ id item;
for (i = 0; i < count; i++) {
item = [items objectAtIndex:i];
@@ -3769,21 +3772,32 @@
NSMenuItem *menuItem;
if ([ov isEqual:noteOutlineView]) {
- [noteOutlineView selectRowIndexes:[NSIndexSet
indexSetWithIndex:[noteOutlineView rowForItem:item]] byExtendingSelection:NO];
+ if ([noteOutlineView isRowSelected:[noteOutlineView rowForItem:item]]
== NO)
+ [noteOutlineView selectRowIndexes:[NSIndexSet
indexSetWithIndex:[noteOutlineView rowForItem:item]] byExtendingSelection:NO];
- PDFAnnotation *annotation = [item type] ? item : [(SKNoteText *)item
annotation];
+ NSMutableArray *items = [NSMutableArray array];
+ NSIndexSet *rowIndexes = [noteOutlineView selectedRowIndexes];
+ unsigned int row = [rowIndexes firstIndex];
+ while (row != NSNotFound) {
+ [items addObject:[noteOutlineView itemAtRow:row]];
+ row = [rowIndexes indexGreaterThanIndex:row];
+ }
+
menu = [[[NSMenu allocWithZone:[NSMenu menuZone]] init] autorelease];
- if ([self outlineView:ov canDeleteItems:[NSArray
arrayWithObjects:item, nil]]) {
- menuItem = [menu addItemWithTitle:NSLocalizedString(@"Delete",
@"Menu item title") action:@selector(deleteNote:) keyEquivalent:@""];
+ if ([self outlineView:ov canDeleteItems:items]) {
+ menuItem = [menu addItemWithTitle:NSLocalizedString(@"Delete",
@"Menu item title") action:@selector(deleteNotes:) keyEquivalent:@""];
[menuItem setTarget:self];
- [menuItem setRepresentedObject:item];
+ [menuItem setRepresentedObject:items];
}
if ([self outlineView:ov canCopyItems:[NSArray arrayWithObjects:item,
nil]]) {
- menuItem = [menu addItemWithTitle:NSLocalizedString(@"Copy",
@"Menu item title") action:@selector(copyNote:) keyEquivalent:@""];
+ menuItem = [menu addItemWithTitle:NSLocalizedString(@"Copy",
@"Menu item title") action:@selector(copyNotes:) keyEquivalent:@""];
[menuItem setTarget:self];
[menuItem setRepresentedObject:item];
}
- if ([pdfView hideNotes] == NO) {
+ if ([pdfView hideNotes] == NO && [items count] == 1) {
+ PDFAnnotation *annotation = [items lastObject];
+ if ([annotation type] == nil)
+ annotation = [(SKNoteText *)annotation annotation];
if ([annotation isEditable]) {
menuItem = [menu addItemWithTitle:NSLocalizedString(@"Edit",
@"Menu item title") action:@selector(editThisAnnotation:) keyEquivalent:@""];
[menuItem setTarget:pdfView];
@@ -3798,9 +3812,9 @@
}
if ([menu numberOfItems] > 0)
[menu addItem:[NSMenuItem separatorItem]];
- menuItem = [menu addItemWithTitle:NSLocalizedString(@"Auto Size Row",
@"Menu item title") action:@selector(autoSizeNoteRows:) keyEquivalent:@""];
+ menuItem = [menu addItemWithTitle:[items count] == 1 ?
NSLocalizedString(@"Auto Size Row", @"Menu item title") :
NSLocalizedString(@"Auto Size Rows", @"Menu item title")
action:@selector(autoSizeNoteRows:) keyEquivalent:@""];
[menuItem setTarget:self];
- [menuItem setRepresentedObject:item];
+ [menuItem setRepresentedObject:items];
menuItem = [menu addItemWithTitle:NSLocalizedString(@"Auto Size All",
@"Menu item title") action:@selector(autoSizeNoteRows:) keyEquivalent:@""];
[menuItem setTarget:self];
}
@@ -4205,9 +4219,13 @@
PDFAnnotation *annotation, *selAnnotation = nil;
unsigned int pageIndex = [[pdfView currentPage] pageIndex];
int i, count = [orderedNotes count];
- unsigned int selPageIndex = [noteOutlineView selectedRow] != -1 ? [[self
selectedNote] pageIndex] : NSNotFound;
+ NSMutableIndexSet *selPageIndexes = [NSMutableIndexSet indexSet];
+ NSEnumerator *selEnum = [[self selectedNotes] objectEnumerator];
- if (count == 0 || selPageIndex == pageIndex)
+ while (selAnnotation = [selEnum nextObject])
+ [selPageIndexes addIndex:[selAnnotation pageIndex]];
+
+ if (count == 0 || [selPageIndexes containsIndex:pageIndex])
return;
// Walk outline view looking for best firstpage number match.
@@ -4221,7 +4239,7 @@
} else if ([annotation pageIndex] > pageIndex) {
if (i == 0)
selAnnotation = [orderedNotes objectAtIndex:0];
- else if ([[orderedNotes objectAtIndex:i - 1] pageIndex]
!= selPageIndex)
+ else if ([selPageIndexes containsIndex:[[orderedNotes
objectAtIndex:i - 1] pageIndex]])
selAnnotation = [orderedNotes objectAtIndex:i - 1];
break;
}
Modified: trunk/Spanish.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/Spanish.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/Spanish.lproj/MainWindow.nib/info.nib 2007-11-07 15:59:17 UTC (rev
3176)
+++ trunk/Spanish.lproj/MainWindow.nib/info.nib 2007-11-07 18:37:45 UTC (rev
3177)
@@ -34,13 +34,13 @@
<key>IBOpenObjects</key>
<array>
<integer>224</integer>
- <integer>811</integer>
+ <integer>168</integer>
+ <integer>687</integer>
<integer>502</integer>
- <integer>687</integer>
<integer>794</integer>
- <integer>168</integer>
+ <integer>511</integer>
<integer>5</integer>
- <integer>511</integer>
+ <integer>811</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