Quellcode durchsuchen

【fix】【测量】测量注释右键菜单未做

tangchao vor 6 Monaten
Ursprung
Commit
ad2b35eab3

+ 4 - 0
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListViewExtension/CPDFListView+Event.m

@@ -5017,6 +5017,10 @@ static inline CPDFAreaOfInterest CAreaOfInterestForResizeHandle(CRectEdges mask,
                                 if (self.pdfListViewDelegate && [self.pdfListViewDelegate respondsToSelector:@selector(PDFListViewAnnotationMeasureInfoChange:withAnnotation:)]) {
                                     [self.pdfListViewDelegate PDFListViewAnnotationMeasureInfoChange:self withAnnotation:newActiveAnnotation];
                                 }
+                            } else if (isMeasure) {
+                                if (self.pdfListViewDelegate && [self.pdfListViewDelegate respondsToSelector:@selector(PDFListViewAnnotationMeasureInfoChange:withAnnotation:)]) {
+                                    [self.pdfListViewDelegate PDFListViewAnnotationMeasureInfoChange:self withAnnotation:newActiveAnnotation];
+                                }
                             }
                         }
                         

+ 36 - 0
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift

@@ -1443,6 +1443,42 @@ extension KMMainViewController {
         KMPrintWindowController.printImage(image: image)
     }
     
+    @objc func menuItemActionMeasureProperty(sender: NSMenuItem) {
+        guard let anno = sender.representedObject as? CPDFAnnotation else {
+            return
+        }
+        if distanceMeasureInfoWindowController?.window?.isVisible == true {
+            distanceMeasureInfoWindowController?.hideFloatingWindow()
+        } else if perimeterMeasureInfoWindowController?.window?.isVisible == true {
+            perimeterMeasureInfoWindowController?.hideFloatingWindow()
+        } else if areaMeasureInfoWindowController?.window?.isVisible == true {
+            areaMeasureInfoWindowController?.hideFloatingWindow()
+        }
+        
+        self.listView.updateActiveAnnotations([anno])
+        self.pdfListViewChangeatioActiveAnnotations(self.listView, forActiveAnnotations: [anno], isRightMenu: false)
+        self.listView.setNeedsDisplayForVisiblePages()
+    }
+    
+    @objc func menuItemActionMeasureSetting(sender: NSMenuItem) {
+        guard let anno = sender.representedObject as? CPDFAnnotation else {
+            return
+        }
+        
+        self.listView.updateActiveAnnotations([anno])
+        self.pdfListViewAnnotationMeasureInfoChange(self.listView, with: anno)
+        self.pdfListViewChangeatioActiveAnnotations(self.listView, forActiveAnnotations: [anno], isRightMenu: false)
+        self.listView.setNeedsDisplayForVisiblePages()
+    }
+    
+    @objc func menuItemActionMeasureDelete(sender: NSMenuItem) {
+        guard let anno = sender.representedObject as? CPDFAnnotation else {
+            return
+        }
+        
+        self.listView.remove(anno)
+    }
+    
     func splitView(withTag tag: Int) {
         if tag == 0 {
             self.listView.viewSplitMode = KMPDFViewSplitMode.horizontal

+ 44 - 7
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+UI.swift

@@ -1389,13 +1389,13 @@ extension KMMainViewController: CPDFViewDelegate,CPDFListViewDelegate {
                         self.openRightPane()
                     }
                     
-                    if let lineAnnotation = fristAnnotation as? CPDFLineAnnotation {
-                        handleLineAnnotation(lineAnnotation)
-                    } else if let polylineAnnotation = fristAnnotation as? CPDFPolylineAnnotation {
-                        handlePolylineAnnotation(polylineAnnotation)
-                    } else if let polygonAnnotation = fristAnnotation as? CPDFPolygonAnnotation {
-                        handlePolygonAnnotation(polygonAnnotation)
-                    }
+//                    if let lineAnnotation = fristAnnotation as? CPDFLineAnnotation {
+//                        handleLineAnnotation(lineAnnotation)
+//                    } else if let polylineAnnotation = fristAnnotation as? CPDFPolylineAnnotation {
+//                        handlePolylineAnnotation(polylineAnnotation)
+//                    } else if let polygonAnnotation = fristAnnotation as? CPDFPolygonAnnotation {
+//                        handlePolygonAnnotation(polygonAnnotation)
+//                    }
                 }
             }
             
@@ -1581,6 +1581,43 @@ extension KMMainViewController: CPDFViewDelegate,CPDFListViewDelegate {
             listView.needsDisplay = true
             return
         }
+
+        
+        var pagePoint: NSPoint = .zero
+        if let page = self.listView.pageAndPoint(&pagePoint, for: theEvent, nearest: true) {
+            let anno = page.annotation(at: pagePoint)
+            
+            let item1 = NSMenuItem(title: NSLocalizedString("Properties", comment: ""), action: #selector(menuItemActionMeasureProperty), target: self)
+            item1.representedObject = anno
+            let item2 = NSMenuItem(title: NSLocalizedString("Settings", comment: ""), action: #selector(menuItemActionMeasureSetting), target: self)
+            item2.representedObject = anno
+            let item3 = NSMenuItem(title: NSLocalizedString("Delete", comment: ""), action: #selector(menuItemActionMeasureDelete), target: self)
+            item3.representedObject = anno
+            
+            if let data = anno as? CPDFPolygonAnnotation { // 多变形
+                currentMenu.removeAllItems()
+                
+                currentMenu.insertItem(item1, at: 0)
+                currentMenu.insertItem(item2, at: 1)
+                currentMenu.insertItem(item3, at: 2)
+                return
+            }
+            if let data = anno as? CPDFPolylineAnnotation {
+                currentMenu.removeAllItems()
+                currentMenu.insertItem(item1, at: 0)
+                currentMenu.insertItem(item2, at: 1)
+                currentMenu.insertItem(item3, at: 2)
+                return
+            }
+            if let data = anno as? CPDFLineAnnotation, data.isMeasure {
+                currentMenu.removeAllItems()
+                currentMenu.insertItem(item1, at: 0)
+                currentMenu.insertItem(item2, at: 1)
+                currentMenu.insertItem(item3, at: 2)
+                return
+            }
+        }
+        
         
         if (listView.toolMode == .selectToolMode){
             currentMenu.insertItem(NSMenuItem.separator(), at: 3)