Revision: 2613 http://skim-app.svn.sourceforge.net/skim-app/?rev=2613&view=rev Author: hofman Date: 2007-08-06 08:01:22 -0700 (Mon, 06 Aug 2007)
Log Message: ----------- Create table contextual menus in controller and some more menu items. Modified Paths: -------------- trunk/Dutch.lproj/Localizable.strings trunk/French.lproj/Localizable.strings trunk/Italian.lproj/Localizable.strings trunk/SKMainWindowController.m trunk/SKNoteOutlineView.h trunk/SKNoteOutlineView.m trunk/SKThumbnailTableView.h trunk/SKThumbnailTableView.m Modified: trunk/Dutch.lproj/Localizable.strings =================================================================== (Binary files differ) Modified: trunk/French.lproj/Localizable.strings =================================================================== (Binary files differ) Modified: trunk/Italian.lproj/Localizable.strings =================================================================== (Binary files differ) Modified: trunk/SKMainWindowController.m =================================================================== --- trunk/SKMainWindowController.m 2007-08-06 13:33:48 UTC (rev 2612) +++ trunk/SKMainWindowController.m 2007-08-06 15:01:22 UTC (rev 2613) @@ -3262,6 +3262,47 @@ [[SKPDFHoverWindow sharedHoverWindow] hide]; } +- (void)deleteNote:(id)sender { + PDFAnnotation *annotation = [sender representedObject]; + [pdfView removeAnnotation:annotation]; + [[[self document] undoManager] setActionName:NSLocalizedString(@"Remove Note", @"Undo action name")]; +} + +- (void)selectNote:(id)sender { + PDFAnnotation *annotation = [sender representedObject]; + [pdfView setActiveAnnotation:annotation]; +} + +- (void)deselectNote:(id)sender { + [pdfView setActiveAnnotation:nil]; +} + +- (NSMenu *)outlineView:(NSOutlineView *)ov menuForTableColumn:(NSTableColumn *)tableColumn item:(id)item { + NSMenu *menu = nil; + if ([ov isEqual:noteOutlineView]) { + if ([item type] == nil) + item = [(SKNoteText *)item annotation]; + menu = [[[NSMenu allocWithZone:[NSMenu menuZone]] init] autorelease]; + NSMenuItem *menuItem = [menu addItemWithTitle:NSLocalizedString(@"Delete", @"Menu item title") action:@selector(deleteNote:) keyEquivalent:@""]; + [menuItem setTarget:self]; + [menuItem setRepresentedObject:item]; + if ([pdfView hideNotes] == NO) { + if ([item isEditable]) { + menuItem = [menu addItemWithTitle:NSLocalizedString(@"Edit", @"Menu item title") action:@selector(editThisAnnotation:) keyEquivalent:@""]; + [menuItem setTarget:pdfView]; + [menuItem setRepresentedObject:item]; + } + if ([pdfView activeAnnotation] == item) + menuItem = [menu addItemWithTitle:NSLocalizedString(@"Deselect", @"Menu item title") action:@selector(deselectNote:) keyEquivalent:@""]; + else + menuItem = [menu addItemWithTitle:NSLocalizedString(@"Select", @"Menu item title") action:@selector(selectNote:) keyEquivalent:@""]; + [menuItem setTarget:self]; + [menuItem setRepresentedObject:item]; + } + } + return menu; +} + #pragma mark NSTableView delegate protocol - (void)tableViewSelectionDidChange:(NSNotification *)aNotification { @@ -3423,6 +3464,61 @@ } } +- (void)copyPage:(id)sender { + PDFPage *page = [sender representedObject]; + NSData *pdfData = [page dataRepresentation]; + NSData *tiffData = [[page imageForBox:[pdfView displayBox]] TIFFRepresentation]; + NSPasteboard *pboard = [NSPasteboard generalPasteboard]; + [pboard declareTypes:[NSArray arrayWithObjects:NSPDFPboardType, NSTIFFPboardType, nil] owner:nil]; + [pboard setData:pdfData forType:NSPDFPboardType]; + [pboard setData:tiffData forType:NSTIFFPboardType]; +} + +- (void)deleteSnapshot:(id)sender { + SKSnapshotWindowController *controller = [sender representedObject]; + [[controller window] orderOut:self]; + [[self mutableArrayValueForKey:@"snapshots"] removeObject:controller]; +} + +- (void)showSnapshot:(id)sender { + SKSnapshotWindowController *controller = [sender representedObject]; + if ([[controller window] isVisible]) + [[controller window] orderFront:self]; + else + [controller deminiaturize]; +} + +- (void)hideSnapshot:(id)sender { + SKSnapshotWindowController *controller = [sender representedObject]; + if ([[controller window] isVisible]) + [controller miniaturize]; +} + +- (NSMenu *)tableView:(NSTableView *)tv menuForTableColumn:(NSTableColumn *)tableColumn row:(int)row { + NSMenu *menu = nil; + if ([tv isEqual:thumbnailTableView]) { + menu = [[[NSMenu allocWithZone:[NSMenu menuZone]] init] autorelease]; + NSMenuItem *menuItem = [menu addItemWithTitle:NSLocalizedString(@"Copy", @"Menu item title") action:@selector(copyPage:) keyEquivalent:@""]; + [menuItem setTarget:self]; + [menuItem setRepresentedObject:[[pdfView document] pageAtIndex:row]]; + } else if ([tv isEqual:snapshotTableView]) { + menu = [[[NSMenu allocWithZone:[NSMenu menuZone]] init] autorelease]; + SKSnapshotWindowController *controller = [[snapshotArrayController arrangedObjects] objectAtIndex:row]; + NSMenuItem *menuItem = [menu addItemWithTitle:NSLocalizedString(@"Delete", @"Menu item title") action:@selector(deleteSnapshot:) keyEquivalent:@""]; + [menuItem setTarget:self]; + [menuItem setRepresentedObject:controller]; + menuItem = [menu addItemWithTitle:NSLocalizedString(@"Show", @"Menu item title") action:@selector(showSnapshot:) keyEquivalent:@""]; + [menuItem setTarget:self]; + [menuItem setRepresentedObject:controller]; + if ([[controller window] isVisible]) { + menuItem = [menu addItemWithTitle:NSLocalizedString(@"Hide", @"Menu item title") action:@selector(hideSnapshot:) keyEquivalent:@""]; + [menuItem setTarget:self]; + [menuItem setRepresentedObject:controller]; + } + } + return menu; +} + #pragma mark Outline - (int)outlineRowForPageIndex:(unsigned int)pageIndex { Modified: trunk/SKNoteOutlineView.h =================================================================== --- trunk/SKNoteOutlineView.h 2007-08-06 13:33:48 UTC (rev 2612) +++ trunk/SKNoteOutlineView.h 2007-08-06 15:01:22 UTC (rev 2613) @@ -61,6 +61,7 @@ - (BOOL)outlineView:(NSOutlineView *)anOutlineView canResizeRowByItem:(id)item; - (void)outlineView:(NSOutlineView *)anOutlineView setHeightOfRow:(int)newHeight byItem:(id)item; - (void)outlineViewNoteTypesDidChange:(NSOutlineView *)anOutlineView; +- (NSMenu *)outlineView:(NSOutlineView *)anOutlineView menuForTableColumn:(NSTableColumn *)tableColumn item:(id)item; @end Modified: trunk/SKNoteOutlineView.m =================================================================== --- trunk/SKNoteOutlineView.m 2007-08-06 13:33:48 UTC (rev 2612) +++ trunk/SKNoteOutlineView.m 2007-08-06 15:01:22 UTC (rev 2613) @@ -72,6 +72,30 @@ [super keyDown:theEvent]; } +- (BOOL)validateMenuItem:(NSMenuItem *)menuItem { + if ([menuItem action] == @selector(delete:)) + return [[self selectedRowIndexes] count] > 0; + else if ([NSOutlineView instancesRespondToSelector:@selector(validateMenuItem:)]) + return [super validateMenuItem:menuItem]; + return YES; +} + +- (NSMenu *)menuForEvent:(NSEvent *)theEvent { + NSMenu *menu = nil; + + if ([[self delegate] respondsToSelector:@selector(outlineView:menuForTableColumn:item:)]) { + NSPoint mouseLoc = [self convertPoint:[theEvent locationInWindow] fromView:nil]; + int row = [self rowAtPoint:mouseLoc]; + int column = [self columnAtPoint:mouseLoc]; + if (row != -1 && column != -1) { + NSTableColumn *tableColumn = [[self tableColumns] objectAtIndex:column]; + menu = [[self delegate] outlineView:self menuForTableColumn:tableColumn item:[self itemAtRow:row]]; + } + } + + return menu; +} + - (BOOL)resizeRow:(int)row withEvent:(NSEvent *)theEvent { id item = [self itemAtRow:row]; NSPoint startPoint = [self convertPoint:[theEvent locationInWindow] fromView:nil]; Modified: trunk/SKThumbnailTableView.h =================================================================== --- trunk/SKThumbnailTableView.h 2007-08-06 13:33:48 UTC (rev 2612) +++ trunk/SKThumbnailTableView.h 2007-08-06 15:01:22 UTC (rev 2613) @@ -70,4 +70,5 @@ - (BOOL)tableView:(NSTableView *)tableView commandSelectRow:(int)rowIndex; - (void)tableView:(NSTableView *)aTableView copyRowsWithIndexes:(NSIndexSet *)rowIndexes; - (BOOL)tableView:(NSTableView *)aTableView canCopyRowsWithIndexes:(NSIndexSet *)rowIndexes; +- (NSMenu *)tableView:(NSTableView *)aTableView menuForTableColumn:(NSTableColumn *)tableColumn row:(int)rowIndex; @end Modified: trunk/SKThumbnailTableView.m =================================================================== --- trunk/SKThumbnailTableView.m 2007-08-06 13:33:48 UTC (rev 2612) +++ trunk/SKThumbnailTableView.m 2007-08-06 15:01:22 UTC (rev 2613) @@ -146,34 +146,25 @@ NSBeep(); } -- (void)copyFromContextualMenu:(id)sender { - [[self delegate] tableView:self copyRowsWithIndexes:[sender representedObject]]; -} - - (NSMenu *)menuForEvent:(NSEvent *)theEvent { - NSMenu *menu = [super menuForEvent:theEvent]; - NSPoint mouseLoc = [self convertPoint:[theEvent locationInWindow] fromView:nil]; - int row = [self rowAtPoint:mouseLoc]; - if (row != -1) { - NSIndexSet *indexes = [NSIndexSet indexSetWithIndex:row]; - if ([[self delegate] respondsToSelector:@selector(tableView:canCopyRowsWithIndexes:)] && - [[self delegate] respondsToSelector:@selector(tableView:copyRowsWithIndexes:)] && - [[self delegate] tableView:self canCopyRowsWithIndexes:indexes]) { - if (menu == nil) - menu = [[[NSMenu allocWithZone:[NSMenu menuZone]] init] autorelease]; - NSMenuItem *item = [menu addItemWithTitle:NSLocalizedString(@"Copy", @"Menu item title") action:@selector(copyFromContextualMenu:) keyEquivalent:@""]; - [item setTarget:self]; - [item setRepresentedObject:indexes]; + NSMenu *menu = nil; + + if ([[self delegate] respondsToSelector:@selector(tableView:menuForTableColumn:row:)]) { + NSPoint mouseLoc = [self convertPoint:[theEvent locationInWindow] fromView:nil]; + int row = [self rowAtPoint:mouseLoc]; + int column = [self columnAtPoint:mouseLoc]; + if (row != -1 && column != -1) { + NSTableColumn *tableColumn = [[self tableColumns] objectAtIndex:column]; + menu = [[self delegate] tableView:self menuForTableColumn:tableColumn row:row]; } } + return menu; } - (BOOL)validateMenuItem:(NSMenuItem *)menuItem { if ([menuItem action] == @selector(copy:)) return [self canCopy]; - else if ([menuItem action] == @selector(copyFromContextualMenu:)) - return YES; else if ([NSTableView instancesRespondToSelector:@selector(validateMenuItem:)]) return [super validateMenuItem:menuItem]; return YES; @@ -211,34 +202,9 @@ [super keyDown:theEvent]; } -- (void)deleteFromContextualMenu:(id)sender { - [[self delegate] tableView:self deleteRowsWithIndexes:[sender representedObject]]; -} - -- (NSMenu *)menuForEvent:(NSEvent *)theEvent { - NSMenu *menu = [super menuForEvent:theEvent]; - NSPoint mouseLoc = [self convertPoint:[theEvent locationInWindow] fromView:nil]; - int row = [self rowAtPoint:mouseLoc]; - if (row != -1) { - NSIndexSet *indexes = [NSIndexSet indexSetWithIndex:row]; - if ([[self delegate] respondsToSelector:@selector(tableView:canDeleteRowsWithIndexes:)] && - [[self delegate] respondsToSelector:@selector(tableView:deleteRowsWithIndexes:)] && - [[self delegate] tableView:self canDeleteRowsWithIndexes:indexes]) { - if (menu == nil) - menu = [[[NSMenu allocWithZone:[NSMenu menuZone]] init] autorelease]; - NSMenuItem *item = [menu addItemWithTitle:NSLocalizedString(@"Delete", @"Menu item title") action:@selector(deleteFromContextualMenu:) keyEquivalent:@""]; - [item setTarget:self]; - [item setRepresentedObject:indexes]; - } - } - return menu; -} - - (BOOL)validateMenuItem:(NSMenuItem *)menuItem { if ([menuItem action] == @selector(delete:)) return [self canDelete]; - else if ([menuItem action] == @selector(deleteFromContextualMenu:)) - return YES; return [super validateMenuItem:menuItem]; } 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 Skim-app-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/skim-app-commit