Revision: 2605
http://skim-app.svn.sourceforge.net/skim-app/?rev=2605&view=rev
Author: hofman
Date: 2007-08-05 09:45:53 -0700 (Sun, 05 Aug 2007)
Log Message:
-----------
Add new toolbar item to add new notes in a single segmentedControl.
Add contextual menus for thumbnail table views. Validate custom menu items for
those tables.
Hard code the superclass for checking wether super responds to a selector, as
the class of super is implicitly also hard coded. Otherwise it may check the
wrong (sub)class.
Modified Paths:
--------------
trunk/BDSKZoomablePDFView.m
trunk/Dutch.lproj/Localizable.strings
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/Dutch.lproj/NoteWindow.nib/info.nib
trunk/Dutch.lproj/NoteWindow.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/Localizable.strings
trunk/French.lproj/MainWindow.nib/classes.nib
trunk/French.lproj/MainWindow.nib/info.nib
trunk/French.lproj/MainWindow.nib/keyedobjects.nib
trunk/Italian.lproj/Localizable.strings
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/SKApplication.m
trunk/SKMainWindowController.h
trunk/SKMainWindowController.m
trunk/SKPDFView.m
trunk/SKThumbnailTableView.h
trunk/SKThumbnailTableView.m
Modified: trunk/BDSKZoomablePDFView.m
===================================================================
--- trunk/BDSKZoomablePDFView.m 2007-08-05 12:58:57 UTC (rev 2604)
+++ trunk/BDSKZoomablePDFView.m 2007-08-05 16:45:53 UTC (rev 2605)
@@ -88,7 +88,7 @@
id document = [[[self window] windowController] document];
if ([document respondsToSelector:_cmd])
[document printDocument:sender];
- else if ([[self superclass] instancesRespondToSelector:_cmd])
+ else if ([PDFView instancesRespondToSelector:_cmd])
[(id)super printDocument:sender];
}
Modified: trunk/Dutch.lproj/Localizable.strings
===================================================================
(Binary files differ)
Modified: trunk/Dutch.lproj/MainWindow.nib/classes.nib
===================================================================
--- trunk/Dutch.lproj/MainWindow.nib/classes.nib 2007-08-05 12:58:57 UTC
(rev 2604)
+++ trunk/Dutch.lproj/MainWindow.nib/classes.nib 2007-08-05 16:45:53 UTC
(rev 2605)
@@ -134,6 +134,7 @@
leftSideGradientView = BDSKGradientView;
markupPopUpButton = BDSKImagePopUpButton;
noteArrayController = NSArrayController;
+ noteButton = NSSegmentedControl;
noteOutlineView = SKNoteOutlineView;
notePopUpButton = BDSKImagePopUpButton;
noteSearchField = NSSearchField;
Modified: trunk/Dutch.lproj/MainWindow.nib/data.dependency
===================================================================
--- trunk/Dutch.lproj/MainWindow.nib/data.dependency 2007-08-05 12:58:57 UTC
(rev 2604)
+++ trunk/Dutch.lproj/MainWindow.nib/data.dependency 2007-08-05 16:45:53 UTC
(rev 2605)
@@ -4,6 +4,7 @@
<dict>
<key>IBPaletteDependency</key>
<array>
+ <string>Controllers</string>
<string>PDFKit</string>
</array>
</dict>
Modified: trunk/Dutch.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/Dutch.lproj/MainWindow.nib/info.nib 2007-08-05 12:58:57 UTC (rev
2604)
+++ trunk/Dutch.lproj/MainWindow.nib/info.nib 2007-08-05 16:45:53 UTC (rev
2605)
@@ -7,7 +7,7 @@
<key>IBEditorPositions</key>
<dict>
<key>168</key>
- <string>601 521 237 239 0 0 1440 938 </string>
+ <string>601 495 237 265 0 0 1440 938 </string>
<key>224</key>
<string>610 420 220 442 0 0 1440 938 </string>
<key>256</key>
@@ -29,11 +29,6 @@
<array>
<integer>208</integer>
</array>
- <key>IBOpenObjects</key>
- <array>
- <integer>687</integer>
- <integer>694</integer>
- </array>
<key>IBSystem Version</key>
<string>8R218</string>
</dict>
Modified: trunk/Dutch.lproj/MainWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)
Modified: trunk/Dutch.lproj/NoteWindow.nib/info.nib
===================================================================
--- trunk/Dutch.lproj/NoteWindow.nib/info.nib 2007-08-05 12:58:57 UTC (rev
2604)
+++ trunk/Dutch.lproj/NoteWindow.nib/info.nib 2007-08-05 16:45:53 UTC (rev
2605)
@@ -6,10 +6,6 @@
<string>69 58 356 240 0 0 1440 938 </string>
<key>IBFramework Version</key>
<string>446.1</string>
- <key>IBOpenObjects</key>
- <array>
- <integer>7</integer>
- </array>
<key>IBSystem Version</key>
<string>8R218</string>
</dict>
Modified: trunk/Dutch.lproj/NoteWindow.nib/keyedobjects.nib
===================================================================
(Binary files differ)
Modified: trunk/English.lproj/MainWindow.nib/classes.nib
===================================================================
--- trunk/English.lproj/MainWindow.nib/classes.nib 2007-08-05 12:58:57 UTC
(rev 2604)
+++ trunk/English.lproj/MainWindow.nib/classes.nib 2007-08-05 16:45:53 UTC
(rev 2605)
@@ -134,6 +134,7 @@
leftSideGradientView = BDSKGradientView;
markupPopUpButton = BDSKImagePopUpButton;
noteArrayController = NSArrayController;
+ noteButton = NSSegmentedControl;
noteOutlineView = SKNoteOutlineView;
notePopUpButton = BDSKImagePopUpButton;
noteSearchField = NSSearchField;
Modified: trunk/English.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/English.lproj/MainWindow.nib/info.nib 2007-08-05 12:58:57 UTC (rev
2604)
+++ trunk/English.lproj/MainWindow.nib/info.nib 2007-08-05 16:45:53 UTC (rev
2605)
@@ -7,7 +7,7 @@
<key>IBEditorPositions</key>
<dict>
<key>168</key>
- <string>601 521 237 239 0 0 1440 938 </string>
+ <string>601 495 237 265 0 0 1440 938 </string>
<key>224</key>
<string>610 420 220 442 0 0 1440 938 </string>
<key>256</key>
@@ -31,20 +31,20 @@
</array>
<key>IBOpenObjects</key>
<array>
- <integer>553</integer>
- <integer>208</integer>
- <integer>687</integer>
+ <integer>314</integer>
+ <integer>633</integer>
<integer>511</integer>
- <integer>585</integer>
- <integer>633</integer>
+ <integer>539</integer>
+ <integer>168</integer>
<integer>256</integer>
<integer>5</integer>
- <integer>314</integer>
<integer>502</integer>
+ <integer>687</integer>
+ <integer>224</integer>
+ <integer>585</integer>
<integer>694</integer>
- <integer>168</integer>
- <integer>224</integer>
- <integer>539</integer>
+ <integer>208</integer>
+ <integer>553</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/classes.nib
===================================================================
--- trunk/French.lproj/MainWindow.nib/classes.nib 2007-08-05 12:58:57 UTC
(rev 2604)
+++ trunk/French.lproj/MainWindow.nib/classes.nib 2007-08-05 16:45:53 UTC
(rev 2605)
@@ -134,6 +134,7 @@
leftSideGradientView = BDSKGradientView;
markupPopUpButton = BDSKImagePopUpButton;
noteArrayController = NSArrayController;
+ noteButton = NSSegmentedControl;
noteOutlineView = SKNoteOutlineView;
notePopUpButton = BDSKImagePopUpButton;
noteSearchField = NSSearchField;
Modified: trunk/French.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/French.lproj/MainWindow.nib/info.nib 2007-08-05 12:58:57 UTC (rev
2604)
+++ trunk/French.lproj/MainWindow.nib/info.nib 2007-08-05 16:45:53 UTC (rev
2605)
@@ -7,7 +7,7 @@
<key>IBEditorPositions</key>
<dict>
<key>168</key>
- <string>601 521 237 239 0 0 1440 938 </string>
+ <string>601 493 237 267 0 0 1440 938 </string>
<key>224</key>
<string>610 420 220 442 0 0 1440 938 </string>
<key>256</key>
@@ -31,16 +31,16 @@
</array>
<key>IBOpenObjects</key>
<array>
- <integer>256</integer>
+ <integer>511</integer>
+ <integer>168</integer>
<integer>314</integer>
+ <integer>5</integer>
<integer>661</integer>
+ <integer>256</integer>
<integer>660</integer>
+ <integer>633</integer>
+ <integer>502</integer>
<integer>224</integer>
- <integer>5</integer>
- <integer>511</integer>
- <integer>168</integer>
- <integer>502</integer>
- <integer>633</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/classes.nib
===================================================================
--- trunk/Italian.lproj/MainWindow.nib/classes.nib 2007-08-05 12:58:57 UTC
(rev 2604)
+++ trunk/Italian.lproj/MainWindow.nib/classes.nib 2007-08-05 16:45:53 UTC
(rev 2605)
@@ -134,6 +134,7 @@
leftSideGradientView = BDSKGradientView;
markupPopUpButton = BDSKImagePopUpButton;
noteArrayController = NSArrayController;
+ noteButton = NSSegmentedControl;
noteOutlineView = SKNoteOutlineView;
notePopUpButton = BDSKImagePopUpButton;
noteSearchField = NSSearchField;
Modified: trunk/Italian.lproj/MainWindow.nib/info.nib
===================================================================
--- trunk/Italian.lproj/MainWindow.nib/info.nib 2007-08-05 12:58:57 UTC (rev
2604)
+++ trunk/Italian.lproj/MainWindow.nib/info.nib 2007-08-05 16:45:53 UTC (rev
2605)
@@ -7,7 +7,7 @@
<key>IBEditorPositions</key>
<dict>
<key>168</key>
- <string>601 521 237 239 0 0 1440 938 </string>
+ <string>601 493 237 267 0 0 1440 938 </string>
<key>224</key>
<string>610 420 220 442 0 0 1440 938 </string>
<key>256</key>
@@ -31,19 +31,19 @@
</array>
<key>IBOpenObjects</key>
<array>
+ <integer>511</integer>
+ <integer>314</integer>
+ <integer>208</integer>
<integer>224</integer>
+ <integer>502</integer>
+ <integer>256</integer>
<integer>628</integer>
- <integer>314</integer>
- <integer>502</integer>
+ <integer>676</integer>
<integer>677</integer>
- <integer>676</integer>
+ <integer>553</integer>
<integer>168</integer>
- <integer>511</integer>
+ <integer>539</integer>
<integer>5</integer>
- <integer>539</integer>
- <integer>553</integer>
- <integer>208</integer>
- <integer>256</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-08-05 12:58:57 UTC (rev 2604)
+++ trunk/NSImage_SKExtensions.m 2007-08-05 16:45:53 UTC (rev 2605)
@@ -41,6 +41,32 @@
@implementation NSImage (SKExtensions)
+- (NSImage *)createMenuAdornImage {
+ NSBezierPath *arrowPath = [NSBezierPath bezierPath];
+ [arrowPath moveToPoint:NSMakePoint(20.5,4.0)];
+ [arrowPath lineToPoint:NSMakePoint(18.0,7.0)];
+ [arrowPath lineToPoint:NSMakePoint(23.0,7.0)];
+ [arrowPath closePath];
+
+ NSImage *image = [[NSImage alloc] initWithSize:NSMakeSize(25.0, 13.0)];
+ [image lockFocus];
+ [self compositeToPoint:NSMakePoint(2.0, 1.0) operation:NSCompositeCopy];
+ [[NSColor colorWithCalibratedWhite:0.0 alpha:0.85] setFill];
+ [arrowPath fill];
+ [image unlockFocus];
+
+ return image;
+}
+
+- (NSImage *)createLargeNoteAdornImage {
+ NSImage *image = [[NSImage alloc] initWithSize:NSMakeSize(19.0, 11.0)];
+ [image lockFocus];
+ [self compositeToPoint:NSMakePoint(2.0, 0.0) operation:NSCompositeCopy];
+ [image unlockFocus];
+
+ return image;
+}
+
+ (void)makeAdornImages {
static NSImage *backAdornImage = nil;
static NSImage *forwardAdornImage = nil;
@@ -68,6 +94,14 @@
static NSImage *underlineNoteAdornImage = nil;
static NSImage *strikeOutNoteAdornImage = nil;
static NSImage *lineNoteAdornImage = nil;
+ static NSImage *textNoteAdorn2Image = nil;
+ static NSImage *anchoredNoteAdorn2Image = nil;
+ static NSImage *circleNoteAdorn2Image = nil;
+ static NSImage *squareNoteAdorn2Image = nil;
+ static NSImage *highlightNoteAdorn2Image = nil;
+ static NSImage *underlineNoteAdorn2Image = nil;
+ static NSImage *strikeOutNoteAdorn2Image = nil;
+ static NSImage *lineNoteAdorn2Image = nil;
NSShadow *shadow = [[NSShadow alloc] init];
[shadow setShadowBlurRadius:0.0];
@@ -78,13 +112,7 @@
NSSize size = NSMakeSize(25.0, 13.0);
NSSize noteSize = NSMakeSize(15.0, 11.0);
- NSPoint point = NSMakePoint(2.0, 1.0);
NSBezierPath *path;
- NSBezierPath *arrowPath = [NSBezierPath bezierPath];
- [arrowPath moveToPoint:NSMakePoint(20.5,4.0)];
- [arrowPath lineToPoint:NSMakePoint(18.0,7.0)];
- [arrowPath lineToPoint:NSMakePoint(23.0,7.0)];
- [arrowPath closePath];
backAdornImage = [[NSImage alloc] initWithSize:size];
[backAdornImage lockFocus];
@@ -347,13 +375,10 @@
[textNoteAdornImage unlockFocus];
[textNoteAdornImage setName:@"TextNoteAdorn"];
- textNoteToolAdornImage = [[NSImage alloc] initWithSize:size];
- [textNoteToolAdornImage lockFocus];
- [[NSGraphicsContext currentContext] saveGraphicsState];
- [textNoteAdornImage compositeToPoint:point operation:NSCompositeCopy];
- [color setFill];
- [arrowPath fill];
- [textNoteToolAdornImage unlockFocus];
+ textNoteAdorn2Image = [textNoteAdornImage createLargeNoteAdornImage];
+ [textNoteAdorn2Image setName:@"TextNoteAdorn2"];
+
+ textNoteToolAdornImage = [textNoteAdornImage createMenuAdornImage];
[textNoteToolAdornImage setName:@"TextNoteToolAdorn"];
anchoredNoteAdornImage = [[NSImage alloc] initWithSize:noteSize];
@@ -380,12 +405,10 @@
[anchoredNoteAdornImage unlockFocus];
[anchoredNoteAdornImage setName:@"AnchoredNoteAdorn"];
- anchoredNoteToolAdornImage = [[NSImage alloc] initWithSize:size];
- [anchoredNoteToolAdornImage lockFocus];
- [anchoredNoteAdornImage compositeToPoint:point operation:NSCompositeCopy];
- [shadow set];
- [arrowPath fill];
- [anchoredNoteToolAdornImage unlockFocus];
+ anchoredNoteAdorn2Image = [anchoredNoteAdornImage
createLargeNoteAdornImage];
+ [anchoredNoteAdorn2Image setName:@"AnchoredNoteAdorn2"];
+
+ anchoredNoteToolAdornImage = [anchoredNoteAdornImage createMenuAdornImage];
[anchoredNoteToolAdornImage setName:@"AnchoredNoteToolAdorn"];
circleNoteAdornImage = [[NSImage alloc] initWithSize:noteSize];
@@ -410,12 +433,10 @@
[circleNoteAdornImage unlockFocus];
[circleNoteAdornImage setName:@"CircleNoteAdorn"];
- circleNoteToolAdornImage = [[NSImage alloc] initWithSize:size];
- [circleNoteToolAdornImage lockFocus];
- [circleNoteAdornImage compositeToPoint:point operation:NSCompositeCopy];
- [color setFill];
- [arrowPath fill];
- [circleNoteToolAdornImage unlockFocus];
+ circleNoteAdorn2Image = [circleNoteAdornImage createLargeNoteAdornImage];
+ [circleNoteAdorn2Image setName:@"CircleNoteAdorn2"];
+
+ circleNoteToolAdornImage = [circleNoteAdornImage createMenuAdornImage];
[circleNoteToolAdornImage setName:@"CircleNoteToolAdorn"];
squareNoteAdornImage = [[NSImage alloc] initWithSize:noteSize];
@@ -432,12 +453,10 @@
[squareNoteAdornImage unlockFocus];
[squareNoteAdornImage setName:@"SquareNoteAdorn"];
- squareNoteToolAdornImage = [[NSImage alloc] initWithSize:size];
- [squareNoteToolAdornImage lockFocus];
- [squareNoteAdornImage compositeToPoint:point operation:NSCompositeCopy];
- [color setFill];
- [arrowPath fill];
- [squareNoteToolAdornImage unlockFocus];
+ squareNoteAdorn2Image = [squareNoteAdornImage createLargeNoteAdornImage];
+ [squareNoteAdorn2Image setName:@"SquareNoteAdorn2"];
+
+ squareNoteToolAdornImage = [squareNoteAdornImage createMenuAdornImage];
[squareNoteToolAdornImage setName:@"SquareNoteToolAdorn"];
highlightNoteAdornImage = [[NSImage alloc] initWithSize:noteSize];
@@ -458,12 +477,10 @@
[highlightNoteAdornImage unlockFocus];
[highlightNoteAdornImage setName:@"HighlightNoteAdorn"];
- highlightNoteToolAdornImage = [[NSImage alloc] initWithSize:size];
- [highlightNoteToolAdornImage lockFocus];
- [highlightNoteAdornImage compositeToPoint:point operation:NSCompositeCopy];
- [color setFill];
- [arrowPath fill];
- [highlightNoteToolAdornImage unlockFocus];
+ highlightNoteAdorn2Image = [highlightNoteAdornImage
createLargeNoteAdornImage];
+ [highlightNoteAdorn2Image setName:@"HighlightNoteAdorn2"];
+
+ highlightNoteToolAdornImage = [highlightNoteAdornImage
createMenuAdornImage];
[highlightNoteToolAdornImage setName:@"HighlightNoteToolAdorn"];
underlineNoteAdornImage = [[NSImage alloc] initWithSize:noteSize];
@@ -479,12 +496,10 @@
[underlineNoteAdornImage unlockFocus];
[underlineNoteAdornImage setName:@"UnderlineNoteAdorn"];
- underlineNoteToolAdornImage = [[NSImage alloc] initWithSize:size];
- [underlineNoteToolAdornImage lockFocus];
- [underlineNoteAdornImage compositeToPoint:point operation:NSCompositeCopy];
- [color setFill];
- [arrowPath fill];
- [underlineNoteToolAdornImage unlockFocus];
+ underlineNoteAdorn2Image = [underlineNoteAdornImage
createLargeNoteAdornImage];
+ [underlineNoteAdorn2Image setName:@"UnderlineNoteAdorn2"];
+
+ underlineNoteToolAdornImage = [underlineNoteAdornImage
createMenuAdornImage];
[underlineNoteToolAdornImage setName:@"UnderlineNoteToolAdorn"];
strikeOutNoteAdornImage = [[NSImage alloc] initWithSize:noteSize];
@@ -500,12 +515,10 @@
[strikeOutNoteAdornImage unlockFocus];
[strikeOutNoteAdornImage setName:@"StrikeOutNoteAdorn"];
- strikeOutNoteToolAdornImage = [[NSImage alloc] initWithSize:size];
- [strikeOutNoteToolAdornImage lockFocus];
- [strikeOutNoteAdornImage compositeToPoint:point operation:NSCompositeCopy];
- [color setFill];
- [arrowPath fill];
- [strikeOutNoteToolAdornImage unlockFocus];
+ strikeOutNoteAdorn2Image = [strikeOutNoteAdornImage
createLargeNoteAdornImage];
+ [strikeOutNoteAdorn2Image setName:@"StrikeOutNoteAdorn2"];
+
+ strikeOutNoteToolAdornImage = [strikeOutNoteAdornImage
createMenuAdornImage];
[strikeOutNoteToolAdornImage setName:@"StrikeOutNoteToolAdorn"];
lineNoteAdornImage = [[NSImage alloc] initWithSize:noteSize];
@@ -523,12 +536,10 @@
[lineNoteAdornImage unlockFocus];
[lineNoteAdornImage setName:@"LineNoteAdorn"];
- lineNoteToolAdornImage = [[NSImage alloc] initWithSize:size];
- [lineNoteToolAdornImage lockFocus];
- [lineNoteAdornImage compositeToPoint:point operation:NSCompositeCopy];
- [color setFill];
- [arrowPath fill];
- [lineNoteToolAdornImage unlockFocus];
+ lineNoteAdorn2Image = [lineNoteAdornImage createLargeNoteAdornImage];
+ [lineNoteAdorn2Image setName:@"LineNoteAdorn2"];
+
+ lineNoteToolAdornImage = [lineNoteAdornImage createMenuAdornImage];
[lineNoteToolAdornImage setName:@"LineNoteToolAdorn"];
[shadow release];
Modified: trunk/SKApplication.m
===================================================================
--- trunk/SKApplication.m 2007-08-05 12:58:57 UTC (rev 2604)
+++ trunk/SKApplication.m 2007-08-05 16:45:53 UTC (rev 2605)
@@ -103,7 +103,7 @@
id source = [args objectForKey:@"source"];
if (lineNumber == nil || ([file isKindOfClass:[NSArray class]] && [file
count] != 1)) {
- if ([[self superclass] instancesRespondToSelector:_cmd])
+ if ([NSApplication instancesRespondToSelector:_cmd])
[super handleOpenScriptCommand:command];
return;
}
Modified: trunk/SKMainWindowController.h
===================================================================
--- trunk/SKMainWindowController.h 2007-08-05 12:58:57 UTC (rev 2604)
+++ trunk/SKMainWindowController.h 2007-08-05 16:45:53 UTC (rev 2605)
@@ -150,6 +150,7 @@
IBOutlet BDSKImagePopUpButton *notePopUpButton;
IBOutlet BDSKImagePopUpButton *circlePopUpButton;
IBOutlet BDSKImagePopUpButton *markupPopUpButton;
+ IBOutlet NSSegmentedControl *noteButton;
IBOutlet SKColorSwatch *colorSwatch;
NSMutableDictionary *toolbarItems;
NSToolbarItem *colorSwatchToolbarItem;
Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m 2007-08-05 12:58:57 UTC (rev 2604)
+++ trunk/SKMainWindowController.m 2007-08-05 16:45:53 UTC (rev 2605)
@@ -105,6 +105,7 @@
static NSString *SKDocumentToolbarNewCircleNoteItemIdentifier =
@"SKDocumentToolbarNewCircleNoteItemIdentifier";
static NSString *SKDocumentToolbarNewMarkupItemIdentifier =
@"SKDocumentToolbarNewMarkupItemIdentifier";
static NSString *SKDocumentToolbarNewLineItemIdentifier =
@"SKDocumentToolbarNewLineItemIdentifier";
+static NSString *SKDocumentToolbarNewNotesItemIdentifier =
@"SKDocumentToolbarNewNotesItemIdentifier";
static NSString *SKDocumentToolbarInfoItemIdentifier =
@"SKDocumentToolbarInfoItemIdentifier";
static NSString *SKDocumentToolbarToolModeItemIdentifier =
@"SKDocumentToolbarToolModeItemIdentifier";
static NSString *SKDocumentToolbarDisplayBoxItemIdentifier =
@"SKDocumentToolbarDisplayBoxItemIdentifier";
@@ -1118,7 +1119,8 @@
- (IBAction)createNewNote:(id)sender{
if ([pdfView hideNotes] == NO) {
- [pdfView addAnnotationFromSelectionWithType:[sender tag]];
+ int type = [sender respondsToSelector:@selector(selectedSegment)] ?
[sender selectedSegment] : [sender tag];
+ [pdfView addAnnotationFromSelectionWithType:type];
} else NSBeep();
}
@@ -3339,6 +3341,13 @@
}
}
+- (BOOL)tableView:(NSTableView *)tv canDeleteRowsWithIndexes:(NSIndexSet
*)rowIndexes {
+ if ([tv isEqual:snapshotTableView]) {
+ return [rowIndexes count] > 0;
+ }
+ return NO;
+}
+
- (void)tableView:(NSTableView *)tv copyRowsWithIndexes:(NSIndexSet
*)rowIndexes {
if ([tv isEqual:thumbnailTableView]) {
unsigned int index = [rowIndexes firstIndex];
@@ -3354,6 +3363,13 @@
}
}
+- (BOOL)tableView:(NSTableView *)tv canCopyRowsWithIndexes:(NSIndexSet
*)rowIndexes {
+ if ([tv isEqual:thumbnailTableView]) {
+ return [rowIndexes count] > 0;
+ }
+ return NO;
+}
+
- (NSArray *)tableViewHighlightedRows:(NSTableView *)tv {
if ([tv isEqual:thumbnailTableView]) {
return lastViewedPages;
@@ -3882,6 +3898,13 @@
[toolbarItems setObject:item
forKey:SKDocumentToolbarNewMarkupItemIdentifier];
[item release];
+ [markupPopUpButton setShowsMenuWhenIconClicked:NO];
+ [[markupPopUpButton cell] setAltersStateOfSelectedItem:YES];
+ [[markupPopUpButton cell] setAlwaysUsesFirstItemAsSelected:NO];
+ [[markupPopUpButton cell] setUsesItemFromMenu:YES];
+ [markupPopUpButton setRefreshesMenu:NO];
+ [markupPopUpButton setMenu:menu];
+
item = [[SKToolbarItem alloc]
initWithItemIdentifier:SKDocumentToolbarNewLineItemIdentifier];
[item setLabels:NSLocalizedString(@"Add Line", @"Toolbar item label")];
[item setToolTip:NSLocalizedString(@"Add New Line", @"Tool tip message")];
@@ -3892,12 +3915,59 @@
[toolbarItems setObject:item
forKey:SKDocumentToolbarNewLineItemIdentifier];
[item release];
- [markupPopUpButton setShowsMenuWhenIconClicked:NO];
- [[markupPopUpButton cell] setAltersStateOfSelectedItem:YES];
- [[markupPopUpButton cell] setAlwaysUsesFirstItemAsSelected:NO];
- [[markupPopUpButton cell] setUsesItemFromMenu:YES];
- [markupPopUpButton setRefreshesMenu:NO];
- [markupPopUpButton setMenu:menu];
+ menu = [[[NSMenu allocWithZone:[NSMenu menuZone]] initWithTitle:@""]
autorelease];
+ menuItem = [menu addItemWithTitle:NSLocalizedString(@"Text Note", @"Menu
item title") action:@selector(createNewNote:) keyEquivalent:@""];
+ [menuItem setTarget:self];
+ [menuItem setTag:SKFreeTextNote];
+ [menuItem setImage:[NSImage imageNamed:@"TextNoteAdorn"]];
+ menuItem = [menu addItemWithTitle:NSLocalizedString(@"Anchored Note",
@"Menu item title") action:@selector(createNewNote:) keyEquivalent:@""];
+ [menuItem setTarget:self];
+ [menuItem setTag:SKAnchoredNote];
+ [menuItem setImage:[NSImage imageNamed:@"AnchoredNoteAdorn"]];
+ menuItem = [menu addItemWithTitle:NSLocalizedString(@"Circle", @"Menu item
title") action:@selector(createNewNote:) keyEquivalent:@""];
+ [menuItem setTarget:self];
+ [menuItem setTag:SKCircleNote];
+ [menuItem setImage:[NSImage imageNamed:@"CircleNoteAdorn"]];
+ menuItem = [menu addItemWithTitle:NSLocalizedString(@"Box", @"Menu item
title") action:@selector(createNewNote:) keyEquivalent:@""];
+ [menuItem setTarget:self];
+ [menuItem setTag:SKSquareNote];
+ [menuItem setImage:[NSImage imageNamed:@"SquareNoteAdorn"]];
+ menuItem = [menu addItemWithTitle:NSLocalizedString(@"Highlight", @"Menu
item title") action:@selector(createNewNote:) keyEquivalent:@""];
+ [menuItem setTarget:self];
+ [menuItem setTag:SKHighlightNote];
+ [menuItem setImage:[NSImage imageNamed:@"HighlightNoteAdorn"]];
+ menuItem = [menu addItemWithTitle:NSLocalizedString(@"Underline", @"Menu
item title") action:@selector(createNewNote:) keyEquivalent:@""];
+ [menuItem setTarget:self];
+ [menuItem setTag:SKUnderlineNote];
+ [menuItem setImage:[NSImage imageNamed:@"UnderlineNoteAdorn"]];
+ menuItem = [menu addItemWithTitle:NSLocalizedString(@"Strike Out", @"Menu
item title") action:@selector(createNewNote:) keyEquivalent:@""];
+ [menuItem setTarget:self];
+ [menuItem setTag:SKStrikeOutNote];
+ [menuItem setImage:[NSImage imageNamed:@"StrikeOutNoteAdorn"]];
+ menuItem = [menu addItemWithTitle:NSLocalizedString(@"Line", @"Menu item
title") action:@selector(createNewNote:) keyEquivalent:@""];
+ [menuItem setTarget:self];
+ [menuItem setTag:SKLineNote];
+ [menuItem setImage:[NSImage imageNamed:@"LineNoteAdorn"]];
+ menuItem = [[[NSMenuItem allocWithZone:[NSMenu menuZone]]
initWithTitle:NSLocalizedString(@"Add Note", @"Toolbar item label") action:NULL
keyEquivalent:@""] autorelease];
+ [menuItem setSubmenu:menu];
+ item = [[SKToolbarItem alloc]
initWithItemIdentifier:SKDocumentToolbarNewNotesItemIdentifier];
+ [item setLabels:NSLocalizedString(@"Add Note", @"Toolbar item label")];
+ [item setToolTip:NSLocalizedString(@"Add New Note", @"Tool tip message")];
+ [[noteButton cell] setToolTip:NSLocalizedString(@"Add New Text Note",
@"Tool tip message") forSegment:SKFreeTextNote];
+ [[noteButton cell] setToolTip:NSLocalizedString(@"Add New Anchored Note",
@"Tool tip message") forSegment:SKAnchoredNote];
+ [[noteButton cell] setToolTip:NSLocalizedString(@"Add New Circle", @"Tool
tip message") forSegment:SKCircleNote];
+ [[noteButton cell] setToolTip:NSLocalizedString(@"Add New Box", @"Tool tip
message") forSegment:SKSquareNote];
+ [[noteButton cell] setToolTip:NSLocalizedString(@"Add New Highlight",
@"Tool tip message") forSegment:SKHighlightNote];
+ [[noteButton cell] setToolTip:NSLocalizedString(@"Add New Underline",
@"Tool tip message") forSegment:SKUnderlineNote];
+ [[noteButton cell] setToolTip:NSLocalizedString(@"Add New Strike Out",
@"Tool tip message") forSegment:SKStrikeOutNote];
+ [[noteButton cell] setToolTip:NSLocalizedString(@"Add New Line", @"Tool
tip message") forSegment:SKLineNote];
+ frame = [noteButton frame];
+ frame.size.height = SEGMENTED_CONTROL_HEIGHT;
+ [noteButton setFrame:frame];
+ [item setViewWithSizes:noteButton];
+ [item setMenuFormRepresentation:menuItem];
+ [toolbarItems setObject:item
forKey:SKDocumentToolbarNewNotesItemIdentifier];
+ [item release];
menu = [[[NSMenu allocWithZone:[NSMenu menuZone]] initWithTitle:@""]
autorelease];
menuItem = [menu addItemWithTitle:NSLocalizedString(@"Text Tool", @"Menu
item title") action:@selector(changeToolMode:) keyEquivalent:@""];
@@ -4143,6 +4213,7 @@
SKDocumentToolbarNewCircleNoteItemIdentifier,
SKDocumentToolbarNewMarkupItemIdentifier,
SKDocumentToolbarNewLineItemIdentifier,
+ SKDocumentToolbarNewNotesItemIdentifier,
SKDocumentToolbarContentsPaneItemIdentifier,
SKDocumentToolbarNotesPaneItemIdentifier,
SKDocumentToolbarInfoItemIdentifier,
@@ -4185,6 +4256,14 @@
return ([pdfView toolMode] == SKTextToolMode || [pdfView toolMode] ==
SKNoteToolMode) && [pdfView hideNotes] == NO;
} else if ([identifier
isEqualToString:SKDocumentToolbarNewMarkupItemIdentifier]) {
return ([pdfView toolMode] == SKTextToolMode || [pdfView toolMode] ==
SKNoteToolMode) && [[[pdfView currentSelection] pages] count] && [pdfView
hideNotes] == NO;
+ } else if ([identifier
isEqualToString:SKDocumentToolbarNewNotesItemIdentifier]) {
+ if (([pdfView toolMode] != SKTextToolMode && [pdfView toolMode] !=
SKNoteToolMode) || [pdfView hideNotes])
+ return NO;
+ BOOL enabled = [[[pdfView currentSelection] pages] count] > 0;
+ [noteButton setEnabled:enabled forSegment:SKHighlightNote];
+ [noteButton setEnabled:enabled forSegment:SKUnderlineNote];
+ [noteButton setEnabled:enabled forSegment:SKStrikeOutNote];
+ return YES;
} else if ([identifier
isEqualToString:SKDocumentToolbarInfoItemIdentifier]) {
return YES;
} else {
Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m 2007-08-05 12:58:57 UTC (rev 2604)
+++ trunk/SKPDFView.m 2007-08-05 16:45:53 UTC (rev 2605)
@@ -618,7 +618,7 @@
id document = [[[self window] windowController] document];
if ([document respondsToSelector:_cmd])
[document printDocument:sender];
- else if ([[self superclass] instancesRespondToSelector:_cmd])
+ else if ([PDFView instancesRespondToSelector:_cmd])
[(id)super printDocument:sender];
}
@@ -1404,7 +1404,7 @@
NSString *pboardType = [pboard availableTypeFromArray:[NSArray
arrayWithObjects:NSColorPboardType, SKLineStylePboardType, nil]];
if (pboardType) {
return [self draggingUpdated:sender];
- } else if ([[self superclass] instancesRespondToSelector:_cmd]) {
+ } else if ([PDFView instancesRespondToSelector:_cmd]) {
dragOp = [super draggingEntered:sender];
}
return dragOp;
@@ -1442,7 +1442,7 @@
[self setNeedsDisplayForAnnotation:highlightAnnotation];
highlightAnnotation = nil;
}
- } else if ([[self superclass] instancesRespondToSelector:_cmd]) {
+ } else if ([PDFView instancesRespondToSelector:_cmd]) {
dragOp = [super draggingUpdated:sender];
}
return dragOp;
@@ -1456,7 +1456,7 @@
[self setNeedsDisplayForAnnotation:highlightAnnotation];
highlightAnnotation = nil;
}
- } else if ([[self superclass] instancesRespondToSelector:_cmd]) {
+ } else if ([PDFView instancesRespondToSelector:_cmd]) {
[super draggingExited:sender];
}
}
@@ -1490,7 +1490,7 @@
[self setNeedsDisplayForAnnotation:highlightAnnotation];
highlightAnnotation = nil;
}
- } else if ([[self superclass] instancesRespondToSelector:_cmd]) {
+ } else if ([PDFView instancesRespondToSelector:_cmd]) {
performedDrag = [super performDragOperation:sender];
}
return performedDrag;
@@ -1792,7 +1792,7 @@
if (editAnnotation && (command == @selector(insertNewline:) || command ==
@selector(insertTab:) || command == @selector(insertBacktab:))) {
[self endAnnotationEdit:self];
[[self window] makeFirstResponder:self];
- } else if ([[self superclass] instancesRespondToSelector:_cmd]) {
+ } else if ([PDFView instancesRespondToSelector:_cmd]) {
rv = [super control:control textView:textView
doCommandBySelector:command];
}
return rv;
Modified: trunk/SKThumbnailTableView.h
===================================================================
--- trunk/SKThumbnailTableView.h 2007-08-05 12:58:57 UTC (rev 2604)
+++ trunk/SKThumbnailTableView.h 2007-08-05 16:45:53 UTC (rev 2605)
@@ -44,10 +44,12 @@
BOOL isScrolling;
}
- (BOOL)isScrolling;
+- (BOOL)canCopy;
@end
@interface SKSnapshotTableView : SKThumbnailTableView
+- (BOOL)canDelete;
@end
@@ -59,6 +61,7 @@
@interface NSObject (SKSnapshotTableViewDelegate)
- (void)tableView:(NSTableView *)aTableView deleteRowsWithIndexes:(NSIndexSet
*)rowIndexes;
+- (BOOL)tableView:(NSTableView *)aTableView
canDeleteRowsWithIndexes:(NSIndexSet *)rowIndexes;
@end
@@ -66,4 +69,5 @@
- (NSArray *)tableViewHighlightedRows:(NSTableView *)tableView;
- (BOOL)tableView:(NSTableView *)tableView commandSelectRow:(int)rowIndex;
- (void)tableView:(NSTableView *)aTableView copyRowsWithIndexes:(NSIndexSet
*)rowIndexes;
+- (BOOL)tableView:(NSTableView *)aTableView canCopyRowsWithIndexes:(NSIndexSet
*)rowIndexes;
@end
Modified: trunk/SKThumbnailTableView.m
===================================================================
--- trunk/SKThumbnailTableView.m 2007-08-05 12:58:57 UTC (rev 2604)
+++ trunk/SKThumbnailTableView.m 2007-08-05 16:45:53 UTC (rev 2605)
@@ -131,24 +131,73 @@
[super mouseDown:theEvent];
}
+- (BOOL)canCopy {
+ NSIndexSet *indexes = [self selectedRowIndexes];
+ return [indexes count] &&
+ [[self delegate]
respondsToSelector:@selector(tableView:canCopyRowsWithIndexes:)] &&
+ [[self delegate]
respondsToSelector:@selector(tableView:copyRowsWithIndexes:)] &&
+ [[self delegate] tableView:self canCopyRowsWithIndexes:indexes];
+}
+
- (void)copy:(id)sender {
- if ([[self delegate]
respondsToSelector:@selector(tableView:copyRowsWithIndexes:)])
+ if ([self canCopy])
[[self delegate] tableView:self copyRowsWithIndexes:[self
selectedRowIndexes]];
+ else
+ 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];
+ }
+ }
+ 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;
+}
+
@end
#pragma mark -
@implementation SKSnapshotTableView
+- (BOOL)canDelete {
+ NSIndexSet *indexes = [self selectedRowIndexes];
+ return [indexes count] &&
+ [[self delegate]
respondsToSelector:@selector(tableView:canDeleteRowsWithIndexes:)] &&
+ [[self delegate]
respondsToSelector:@selector(tableView:deleteRowsWithIndexes:)] &&
+ [[self delegate] tableView:self canDeleteRowsWithIndexes:indexes];
+}
+
- (void)delete:(id)sender {
- if ([[self delegate]
respondsToSelector:@selector(tableView:deleteRowsWithIndexes:)]) {
- if ([self selectedRow] == -1)
- NSBeep();
- else
- [[self delegate] tableView:self
deleteRowsWithIndexes:[self selectedRowIndexes]];
- }
+ if ([self canDelete])
+ [[self delegate] tableView:self deleteRowsWithIndexes:[self
selectedRowIndexes]];
+ else
+ NSBeep();
}
- (void)keyDown:(NSEvent *)theEvent {
@@ -156,12 +205,43 @@
unichar eventChar = [characters length] > 0 ? [characters
characterAtIndex:0] : 0;
unsigned int modifiers = [theEvent modifierFlags] &
NSDeviceIndependentModifierFlagsMask;
- if ((eventChar == NSDeleteCharacter || eventChar ==
NSDeleteFunctionKey) && modifiers == 0)
+ if ((eventChar == NSDeleteCharacter || eventChar ==
NSDeleteFunctionKey) && modifiers == 0 && [self canDelete])
[self delete:self];
else
[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];
+}
+
@end
#pragma mark -
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