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
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit