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

Reply via email to