Revision: 15573
          http://sourceforge.net/p/skim-app/code/15573
Author:   hofman
Date:     2025-06-29 17:36:22 +0000 (Sun, 29 Jun 2025)
Log Message:
-----------
convenience methods to add and remove annotation with undo acttion name

Modified Paths:
--------------
    trunk/SKPDFView.m

Modified: trunk/SKPDFView.m
===================================================================
--- trunk/SKPDFView.m   2025-06-29 17:22:07 UTC (rev 15572)
+++ trunk/SKPDFView.m   2025-06-29 17:36:22 UTC (rev 15573)
@@ -207,6 +207,9 @@
 
 - (void)beginNewUndoGroupIfNeededWithCommit:(BOOL)commit;
 
+- (void)addAnnotation:(PDFAnnotation *)annotation toPage:(PDFPage *)page;
+- (void)removeAnnotation:(PDFAnnotation *)annotation;
+
 - (void)stopPacer;
 - (void)updatePacer;
 
@@ -1233,8 +1236,6 @@
     
     if ([newAnnotations count] > 0) {
         
-        [self beginNewUndoGroupIfNeededWithCommit:YES];
-        
         for (PDFAnnotation *newAnnotation in newAnnotations) {
             
             NSRect bounds = [newAnnotation bounds];
@@ -1244,10 +1245,9 @@
             [newAnnotation setBounds:bounds];
             
             [newAnnotation registerUserName];
-            [[self document] addAnnotation:newAnnotation toPage:page];
+            [self addAnnotation:newAnnotation toPage:page];
             
         }
-        [[self undoManager] setActionName:NSLocalizedString(@"Add Note", 
@"Undo action name")];
         
         if (toolMode == SKToolModeText || toolMode == SKToolModeNote)
             [self setCurrentAnnotation:[newAnnotations lastObject]];
@@ -1316,9 +1316,7 @@
             }
             
             [newAnnotation registerUserName];
-            [self beginNewUndoGroupIfNeededWithCommit:YES];
-            [[self document] addAnnotation:newAnnotation toPage:page];
-            [[self undoManager] setActionName:NSLocalizedString(@"Add Note", 
@"Undo action name")];
+            [self addAnnotation:newAnnotation toPage:page];
 
             if (toolMode == SKToolModeText || toolMode == SKToolModeNote)
                 [self setCurrentAnnotation:newAnnotation];
@@ -1360,9 +1358,7 @@
                     [newAnnotation setString:text];
                 
                 [newAnnotation registerUserName];
-                [self beginNewUndoGroupIfNeededWithCommit:YES];
-                [[self document] addAnnotation:newAnnotation toPage:page];
-                [[self undoManager] setActionName:NSLocalizedString(@"Add 
Note", @"Undo action name")];
+                [self addAnnotation:newAnnotation toPage:page];
 
                 if (toolMode == SKToolModeText || toolMode == SKToolModeNote)
                     [self setCurrentAnnotation:newAnnotation];
@@ -2307,9 +2303,7 @@
                 [(SKNPDFAnnotationNote *)newAnnotation 
setExtendedIconType:kSKNPDFTextAnnotationIconImage];
                 
                 [newAnnotation registerUserName];
-                [self beginNewUndoGroupIfNeededWithCommit:YES];
-                [[self document] addAnnotation:newAnnotation toPage:page];
-                [[self undoManager] setActionName:NSLocalizedString(@"Add 
Note", @"Undo action name")];
+                [self addAnnotation:newAnnotation toPage:page];
 
                 if (toolMode == SKToolModeText || toolMode == SKToolModeNote)
                     [self setCurrentAnnotation:newAnnotation];
@@ -2387,6 +2381,17 @@
 
 #pragma mark Annotation management
 
+- (void)addAnnotation:(PDFAnnotation *)annotation toPage:(PDFPage *)page {
+    [self beginNewUndoGroupIfNeededWithCommit:YES];
+    [[self document] addAnnotation:annotation toPage:page];
+    [[self undoManager] setActionName:NSLocalizedString(@"Add Note", @"Undo 
action name")];
+}
+
+- (void)removeAnnotation:(PDFAnnotation *)annotation {
+    [[self document] removeAnnotation:annotation];
+    [[self undoManager] setActionName:NSLocalizedString(@"Remove Note", @"Undo 
action name")];
+}
+
 - (BOOL)addAnnotationWithType:(SKNoteType)annotationType 
selection:(PDFSelection *)selection page:(PDFPage *)page bounds:(NSRect)bounds {
     PDFAnnotation *newAnnotation = nil;
     NSArray *newAnnotations = nil;
@@ -2446,7 +2451,6 @@
     }
     
     if ([newAnnotations count] > 0) {
-        [self beginNewUndoGroupIfNeededWithCommit:YES];
         
         for (NSArray *annotationAndPage in newAnnotations) {
             newAnnotation = [annotationAndPage firstObject];
@@ -2454,9 +2458,8 @@
             if ([text length] > 0 || [newAnnotation string] == nil)
                 [newAnnotation setString:text ?: @""];
             [newAnnotation registerUserName];
-            [[self document] addAnnotation:newAnnotation toPage:page];
+            [self addAnnotation:newAnnotation toPage:page];
         }
-        [[self undoManager] setActionName:NSLocalizedString(@"Add Note", 
@"Undo action name")];
 
         if (toolMode == SKToolModeText || toolMode == SKToolModeNote)
             [self setCurrentAnnotation:newAnnotation];
@@ -2463,7 +2466,6 @@
         
         return YES;
     } else if (newAnnotation) {
-        [self beginNewUndoGroupIfNeededWithCommit:YES];
         
         if (annotationType != SKNoteTypeLine && annotationType != 
SKNoteTypeInk) {
             if ([text length] > 0)
@@ -2474,8 +2476,7 @@
         if ([newAnnotation string] == nil)
             [newAnnotation setString:@""];
         [newAnnotation registerUserName];
-        [[self document] addAnnotation:newAnnotation toPage:page];
-        [[self undoManager] setActionName:NSLocalizedString(@"Add Note", 
@"Undo action name")];
+        [self addAnnotation:newAnnotation toPage:page];
 
         if (toolMode == SKToolModeText || toolMode == SKToolModeNote)
             [self setCurrentAnnotation:newAnnotation];
@@ -2669,19 +2670,14 @@
 }
 
 - (void)removeCurrentAnnotation:(id)sender{
-    if ([currentAnnotation isSkimNote]) {
-        [[self document] removeAnnotation:currentAnnotation];
-        [[self undoManager] setActionName:NSLocalizedString(@"Remove Note", 
@"Undo action name")];
-    }
+    if ([currentAnnotation isSkimNote])
+        [self removeAnnotation:currentAnnotation];
 }
 
 - (void)removeThisAnnotation:(id)sender{
     PDFAnnotation *annotation = [sender representedObject];
-    
-    if (annotation) {
-        [[self document] removeAnnotation:annotation];
-        [[self undoManager] setActionName:NSLocalizedString(@"Remove Note", 
@"Undo action name")];
-    }
+    if (annotation)
+        [self removeAnnotation:annotation];
 }
 
 - (void)editThisAnnotation:(id)sender {
@@ -4176,9 +4172,7 @@
             // select a new copy of the annotation
             PDFAnnotation *newAnnotation = [PDFAnnotation 
newSkimNoteWithProperties:[newCurrentAnnotation SkimNoteProperties]];
             [newAnnotation registerUserName];
-            [self beginNewUndoGroupIfNeededWithCommit:YES];
-            [[self document] addAnnotation:newAnnotation toPage:page];
-            [[self undoManager] setActionName:NSLocalizedString(@"Add Note", 
@"Undo action name")];
+            [self addAnnotation:newAnnotation toPage:page];
             newCurrentAnnotation = newAnnotation;
         } else if (([newCurrentAnnotation isMarkup] ||
                     (isInk && (newCurrentAnnotation != currentAnnotation || 
(modifiers & (NSEventModifierFlagShift | NSEventModifierFlagCapsLock))))) &&
@@ -4229,7 +4223,7 @@
                 [self beginNewUndoGroupIfNeededWithCommit:YES];
                 [newAnnotation setColor:[currentAnnotation color]];
                 [newAnnotation registerUserName];
-                [[self document] removeAnnotation:newCurrentAnnotation];
+                [self removeAnnotation:newCurrentAnnotation];
                 [self removeCurrentAnnotation:nil];
                 [[self document] addAnnotation:newAnnotation toPage:page];
                 [[self undoManager] setActionName:NSLocalizedString(@"Join 
Notes", @"Undo action name")];
@@ -4375,9 +4369,7 @@
             [annotation setString:[currentAnnotation string]];
         }
         [annotation registerUserName];
-        [self beginNewUndoGroupIfNeededWithCommit:NO];
-        [[self document] addAnnotation:annotation toPage:page];
-        [[self undoManager] setActionName:NSLocalizedString(@"Add Note", 
@"Undo action name")];
+        [self addAnnotation:annotation toPage:page];
 
         if (currentAnnotation) {
             [self removeCurrentAnnotation:nil];

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Skim-app-commit mailing list
Skim-app-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to