Revision: 13654
http://sourceforge.net/p/skim-app/code/13654
Author: hofman
Date: 2023-09-10 17:00:25 +0000 (Sun, 10 Sep 2023)
Log Message:
-----------
convenience method to check whether notes can be added to a pdfview, disable
some menu items when notyes can not be selected
Modified Paths:
--------------
trunk/SKMainToolbarController.m
trunk/SKMainTouchBarController.m
trunk/SKMainWindowController_Actions.m
trunk/SKMainWindowController_UI.m
trunk/SKPDFView.h
trunk/SKPDFView.m
Modified: trunk/SKMainToolbarController.m
===================================================================
--- trunk/SKMainToolbarController.m 2023-09-10 08:32:12 UTC (rev 13653)
+++ trunk/SKMainToolbarController.m 2023-09-10 17:00:25 UTC (rev 13654)
@@ -1044,13 +1044,13 @@
} else if ([identifier
isEqualToString:SKDocumentToolbarToolModeItemIdentifier]) {
return [mainController hasOverview] == NO;
} else if ([identifier
isEqualToString:SKDocumentToolbarNewTextNoteItemIdentifier] || [identifier
isEqualToString:SKDocumentToolbarNewCircleNoteItemIdentifier] || [identifier
isEqualToString:SKDocumentToolbarNewLineItemIdentifier]) {
- return ([mainController.pdfView toolMode] == SKTextToolMode ||
[mainController.pdfView toolMode] == SKNoteToolMode) && [mainController
hasOverview] == NO && [mainController.pdfView hideNotes] == NO &&
[mainController.pdfView.document allowsNotes];
+ return [mainController hasOverview] == NO && [mainController.pdfView
canAddNotes];
} else if ([identifier
isEqualToString:SKDocumentToolbarNewMarkupItemIdentifier]) {
- return ([mainController.pdfView toolMode] == SKTextToolMode ||
[mainController.pdfView toolMode] == SKNoteToolMode) && [mainController
hasOverview] == NO && [mainController.pdfView hideNotes] == NO &&
[mainController.pdfView.document allowsNotes];
+ return [mainController hasOverview] == NO && [mainController.pdfView
canAddNotes];
} else if ([identifier
isEqualToString:SKDocumentToolbarNewLineItemIdentifier]) {
- return ([mainController.pdfView toolMode] == SKTextToolMode ||
[mainController.pdfView toolMode] == SKNoteToolMode) && [mainController
hasOverview] == NO && [mainController.pdfView hideNotes] == NO &&
[mainController.pdfView.document allowsNotes];
+ return [mainController hasOverview] == NO && [mainController.pdfView
canAddNotes];
} else if ([identifier
isEqualToString:SKDocumentToolbarNewNoteItemIdentifier]) {
- return ([mainController.pdfView toolMode] == SKTextToolMode ||
[mainController.pdfView toolMode] == SKNoteToolMode) && [mainController
hasOverview] == NO && [mainController.pdfView hideNotes] == NO &&
[mainController.pdfView.document allowsNotes];
+ return [mainController hasOverview] == NO && [mainController.pdfView
canAddNotes];
} else if ([identifier
isEqualToString:SKDocumentToolbarFullScreenItemIdentifier]) {
return [mainController canEnterFullscreen] || [mainController
canExitFullscreen];
} else if ([identifier
isEqualToString:SKDocumentToolbarPresentationItemIdentifier]) {
@@ -1074,10 +1074,10 @@
return [mainController interactionMode] != SKPresentationMode &&
[mainController hasOverview] == NO && [mainController.pdfView.document
allowsNotes] && ([mainController.pdfView toolMode] == SKTextToolMode ||
[mainController.pdfView toolMode] == SKNoteToolMode) && [mainController.pdfView
hideNotes] == NO;
} else if (action == @selector(createNewCircleNote:)) {
[menuItem setState:[[circleNoteButton cell] tagForSegment:0] ==
[menuItem tag] ? NSOnState : NSOffState];
- return [mainController interactionMode] != SKPresentationMode &&
[mainController hasOverview] == NO && [mainController.pdfView.document
allowsNotes] && ([mainController.pdfView toolMode] == SKTextToolMode ||
[mainController.pdfView toolMode] == SKNoteToolMode) && [mainController.pdfView
hideNotes] == NO;
+ return [mainController hasOverview] == NO && [mainController.pdfView
canAddNotes];
} else if (action == @selector(createNewMarkupNote:)) {
[menuItem setState:[[markupNoteButton cell] tagForSegment:0] ==
[menuItem tag] ? NSOnState : NSOffState];
- return [mainController interactionMode] != SKPresentationMode &&
[mainController hasOverview] == NO && [mainController.pdfView.document
allowsNotes] && ([mainController.pdfView toolMode] == SKTextToolMode ||
[mainController.pdfView toolMode] == SKNoteToolMode) && [mainController.pdfView
hideNotes] == NO;
+ return [mainController hasOverview] == NO && [mainController.pdfView
canAddNotes];
} else if (action == @selector(toggleFullScreen:)) {
return [mainController canEnterFullscreen] || [mainController
canExitFullscreen];
} else if (action == @selector(togglePresentation:)) {
@@ -1253,7 +1253,7 @@
}
- (void)createNewNoteWithType:(NSInteger)type forButton:(NSSegmentedControl
*)button {
- if ([mainController.pdfView hideNotes] == NO &&
[mainController.pdfView.document allowsNotes]) {
+ if ([mainController.pdfView canAddNotes]) {
[mainController.pdfView addAnnotationWithType:type];
if (type != [[button cell] tagForSegment:0]) {
[[button cell] setTag:type forSegment:0];
@@ -1279,7 +1279,7 @@
}
- (IBAction)createNewNote:(id)sender {
- if ([mainController.pdfView hideNotes] == NO &&
[mainController.pdfView.document allowsNotes]) {
+ if ([mainController.pdfView canAddNotes]) {
NSInteger type = [sender selectedTag];
[mainController.pdfView addAnnotationWithType:type];
} else NSBeep();
Modified: trunk/SKMainTouchBarController.m
===================================================================
--- trunk/SKMainTouchBarController.m 2023-09-10 08:32:12 UTC (rev 13653)
+++ trunk/SKMainTouchBarController.m 2023-09-10 17:00:25 UTC (rev 13654)
@@ -380,7 +380,7 @@
}
- (void)createNewNote:(id)sender {
- if ([mainController.pdfView hideNotes] == NO &&
[mainController.pdfView.document allowsNotes]) {
+ if ([mainController.pdfView canAddNotes]) {
NSInteger type = [sender selectedSegment];
[mainController.pdfView addAnnotationWithType:type];
} else NSBeep();
@@ -413,8 +413,7 @@
- (void)handleToolModeChangedNotification:(NSNotification *)notification {
[toolModeButton selectSegmentWithTag:[mainController.pdfView toolMode]];
- BOOL enabled = ([mainController.pdfView toolMode] == SKTextToolMode ||
[mainController.pdfView toolMode] == SKNoteToolMode) && [mainController.pdfView
hideNotes] == NO;
- [noteButton setEnabled:enabled];
+ [noteButton setEnabled:[mainController.pdfView canAddNotes]];
if ([mainController.pdfView toolMode] == SKNoteToolMode) {
[annotationModeButton selectSegmentWithTag:[mainController.pdfView
annotationMode]];
} else {
Modified: trunk/SKMainWindowController_Actions.m
===================================================================
--- trunk/SKMainWindowController_Actions.m 2023-09-10 08:32:12 UTC (rev
13653)
+++ trunk/SKMainWindowController_Actions.m 2023-09-10 17:00:25 UTC (rev
13654)
@@ -185,7 +185,7 @@
}
- (IBAction)createNewNote:(id)sender{
- if ([pdfView hideNotes] == NO && [[self pdfDocument] allowsNotes])
+ if ([pdfView canAddNotes])
[pdfView addAnnotationWithType:[sender tag]];
else NSBeep();
}
Modified: trunk/SKMainWindowController_UI.m
===================================================================
--- trunk/SKMainWindowController_UI.m 2023-09-10 08:32:12 UTC (rev 13653)
+++ trunk/SKMainWindowController_UI.m 2023-09-10 17:00:25 UTC (rev 13654)
@@ -1203,7 +1203,7 @@
NSArray *selections = [[leftSideController.findArrayController
arrangedObjects] objectsAtIndexes:rowIndexes];
item = [menu addItemWithTitle:NSLocalizedString(@"Select", @"Menu
item title") action:@selector(selectSelections:) target:self];
[item setRepresentedObject:selections];
- if ([pdfView hideNotes] == NO && [[self pdfDocument] allowsNotes])
{
+ if ([pdfView canAddNotes]) {
item = [menu addItemWithTitle:NSLocalizedString(@"New Circle",
@"Menu item title") action:@selector(addAnnotationForContext:) target:pdfView
tag:SKCircleNote];
[item setRepresentedObject:selections];
item = [menu addItemWithTitle:NSLocalizedString(@"New Box",
@"Menu item title") action:@selector(addAnnotationForContext:) target:pdfView
tag:SKSquareNote];
@@ -1225,7 +1225,7 @@
NSArray *selections =
[[[leftSideController.groupedFindArrayController arrangedObjects]
objectsAtIndexes:rowIndexes] valueForKeyPath:@"@unionOfArrays.matches"];
item = [menu addItemWithTitle:NSLocalizedString(@"Select", @"Menu
item title") action:@selector(selectSelections:) target:self];
[item setRepresentedObject:selections];
- if ([pdfView hideNotes] == NO && [[self pdfDocument] allowsNotes])
{
+ if ([pdfView canAddNotes]) {
item = [menu addItemWithTitle:NSLocalizedString(@"New Circle",
@"Menu item title") action:@selector(addAnnotationForContext:) target:pdfView
tag:SKCircleNote];
[item setRepresentedObject:selections];
item = [menu addItemWithTitle:NSLocalizedString(@"New Box",
@"Menu item title") action:@selector(addAnnotationForContext:) target:pdfView
tag:SKSquareNote];
@@ -1278,16 +1278,18 @@
item = [menu
addItemWithTitle:[NSLocalizedString(@"Edit", @"Menu item title")
stringByAppendingEllipsis] action:@selector(editNoteTextFromTable:)
target:self];
[item setRepresentedObject:annotation];
}
- } else if ([[rightSideController.noteOutlineView
tableColumnWithIdentifier:NOTE_COLUMNID] isHidden]) {
+ } else if ([[rightSideController.noteOutlineView
tableColumnWithIdentifier:NOTE_COLUMNID] isHidden] && [pdfView canAddNotes]) {
item = [menu
addItemWithTitle:[NSLocalizedString(@"Edit", @"Menu item title")
stringByAppendingEllipsis] action:@selector(editThisAnnotation:)
target:pdfView];
[item setRepresentedObject:annotation];
} else {
item = [menu
addItemWithTitle:NSLocalizedString(@"Edit", @"Menu item title")
action:@selector(editNoteFromTable:) target:self];
[item setRepresentedObject:annotation];
- item = [menu
addItemWithTitle:[NSLocalizedString(@"Edit", @"Menu item title")
stringByAppendingEllipsis] action:@selector(editThisAnnotation:)
target:pdfView];
- [item setRepresentedObject:annotation];
- [item
setKeyEquivalentModifierMask:NSEventModifierFlagOption];
- [item setAlternate:YES];
+ if ([pdfView canAddNotes]) {
+ item = [menu
addItemWithTitle:[NSLocalizedString(@"Edit", @"Menu item title")
stringByAppendingEllipsis] action:@selector(editThisAnnotation:)
target:pdfView];
+ [item setRepresentedObject:annotation];
+ [item
setKeyEquivalentModifierMask:NSEventModifierFlagOption];
+ [item setAlternate:YES];
+ }
}
}
if ([pdfView hideNotes] == NO && [[self pdfDocument]
allowsNotes]) {
@@ -1294,7 +1296,7 @@
if ([pdfView currentAnnotation] == annotation) {
item = [menu
addItemWithTitle:NSLocalizedString(@"Deselect", @"Menu item title")
action:@selector(deselectNote:) target:self];
[item setRepresentedObject:annotation];
- } else {
+ } else if ([pdfView canAddNotes]) {
item = [menu
addItemWithTitle:NSLocalizedString(@"Select", @"Menu item title")
action:@selector(selectNote:) target:self];
[item setRepresentedObject:annotation];
}
@@ -1678,7 +1680,7 @@
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
SEL action = [menuItem action];
if (action == @selector(createNewNote:)) {
- return [self interactionMode] != SKPresentationMode && [self
hasOverview] == NO && [[self pdfDocument] allowsNotes] && ([pdfView toolMode]
== SKTextToolMode || [pdfView toolMode] == SKNoteToolMode) && [pdfView
hideNotes] == NO;
+ return [pdfView canAddNotes];
} else if (action == @selector(editNote:)) {
PDFAnnotation *annotation = [pdfView currentAnnotation];
return [self interactionMode] != SKPresentationMode && [self
hasOverview] == NO && [annotation isSkimNote] && [annotation isEditable];
Modified: trunk/SKPDFView.h
===================================================================
--- trunk/SKPDFView.h 2023-09-10 08:32:12 UTC (rev 13653)
+++ trunk/SKPDFView.h 2023-09-10 17:00:25 UTC (rev 13654)
@@ -187,6 +187,7 @@
@property (nonatomic, retain) PDFPage *currentSelectionPage;
@property (nonatomic, readonly) CGFloat currentMagnification;
@property (nonatomic) BOOL hideNotes;
+@property (nonatomic, readonly) BOOL canAddNotes;
@property (nonatomic, readonly) BOOL hasReadingBar;
@property (readonly) SKReadingBar *readingBar;
@property (nonatomic) CGFloat pacerSpeed;
Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m 2023-09-10 08:32:12 UTC (rev 13653)
+++ trunk/SKPDFView.m 2023-09-10 17:00:25 UTC (rev 13654)
@@ -270,7 +270,7 @@
@implementation SKPDFView
@synthesize toolMode, annotationMode, temporaryToolMode, interactionMode,
currentAnnotation, readingBar, pacerSpeed, transitionController,
typeSelectHelper, syncDot, zooming;
-@dynamic extendedDisplayMode, displaysHorizontally, displaysRightToLeft,
hideNotes, hasReadingBar, hasPacer, currentSelectionPage, currentSelectionRect,
currentMagnification, needsRewind, editing;
+@dynamic extendedDisplayMode, displaysHorizontally, displaysRightToLeft,
hideNotes, canAddNotes, hasReadingBar, hasPacer, currentSelectionPage,
currentSelectionRect, currentMagnification, needsRewind, editing;
+ (void)initialize {
SKINITIALIZE;
@@ -1062,6 +1062,10 @@
[[self undoManager] setActionName:actionName];
}
+- (BOOL)canAddNotes {
+ return pdfvFlags.hideNotes == NO && interactionMode != SKPresentationMode
&& (toolMode == SKTextToolMode || toolMode == SKNoteToolMode) && [[self
document] allowsNotes];
+}
+
#pragma mark Reading bar
- (BOOL)hasReadingBar {
@@ -3476,11 +3480,11 @@
return YES;
return NO;
} else if (action == @selector(paste:)) {
- return interactionMode != SKPresentationMode && (toolMode ==
SKTextToolMode || toolMode == SKNoteToolMode) && [[NSPasteboard
generalPasteboard] canReadObjectForClasses:@[[PDFAnnotation class], [NSString
class]] options:@{}];
+ return [self canAddNotes] && [[NSPasteboard generalPasteboard]
canReadObjectForClasses:@[[PDFAnnotation class], [NSString class]] options:@{}];
} else if (action == @selector(alternatePaste:)) {
- return interactionMode != SKPresentationMode && (toolMode ==
SKTextToolMode || toolMode == SKNoteToolMode) && [[NSPasteboard
generalPasteboard] canReadObjectForClasses:@[[PDFAnnotation class],
[NSAttributedString class], [NSString class]] options:@{}];
+ return [self canAddNotes] && [[NSPasteboard generalPasteboard]
canReadObjectForClasses:@[[PDFAnnotation class], [NSAttributedString class],
[NSString class]] options:@{}];
} else if (action == @selector(pasteAsPlainText:)) {
- return interactionMode != SKPresentationMode && (toolMode ==
SKTextToolMode || toolMode == SKNoteToolMode) && [[NSPasteboard
generalPasteboard] canReadObjectForClasses:@[[NSAttributedString class],
[NSString class]] options:@{}];
+ return [self canAddNotes] && [[NSPasteboard generalPasteboard]
canReadObjectForClasses:@[[NSAttributedString class], [NSString class]]
options:@{}];
} else if (action == @selector(delete:)) {
return [currentAnnotation isSkimNote];
} else if (action == @selector(selectAll:)) {
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit