浏览代码

[PDF阅读页] - 右键菜单

jiajie 1 年之前
父节点
当前提交
a2d0966d97

+ 100 - 94
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListViewExtension/CPDFListView+Event.m

@@ -456,6 +456,97 @@ static inline CPDFAreaOfInterest CAreaOfInterestForResizeHandle(CRectEdges mask,
         }
         
         NSMenu *subMenu = [[NSMenu alloc] init];
+        /*else if (!self.activeAnnotation) {*/
+            NSMenuItem * pageDisplayItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Page Display", @"PDFListView") action:nil keyEquivalent:@""];
+            subMenu = [[NSMenu alloc] init];
+            
+            NSMenuItem * twoPagesContinuousItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Two Pages Continuous", @"PDFListView") action:@selector(menuItemClick_TwoPagesContinuous:) keyEquivalent:@""];
+            NSMenuItem * twoPagesItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Two Pages", @"PDFListView") action:@selector(menuItemClick_TwoPages:) keyEquivalent:@""];
+            NSMenuItem * singlePageContinuousItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Single Page Continuous", @"PDFListView") action:@selector(menuItemClick_SinglePagesContinuous:) keyEquivalent:@""];
+            NSMenuItem * singlePageItem =  [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Single Page", @"PDFListView") action:@selector(menuItemClick_SinglePage:) keyEquivalent:@""];
+            NSMenuItem * bookModeItem =  [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Book Mode", @"PDFListView") action:@selector(menuItemClick_BookMode:) keyEquivalent:@""];
+            switch (self.displayViewMode) {
+                case CPDFDisplayViewSinglePageContinuous:
+                    singlePageContinuousItem.state = NSControlStateValueOn;
+                    break;
+                case CPDFDisplayViewTwoUp:
+                    if (self.displaysAsBook)
+                        bookModeItem.state = NSControlStateValueOn;
+                    else
+                        twoPagesItem.state = NSControlStateValueOn;
+                    break;
+                case CPDFDisplayViewTwoUpContinuous:
+                    if (self.displaysAsBook)
+                        bookModeItem.state = NSControlStateValueOn;
+                    else
+                        twoPagesContinuousItem.state = NSControlStateValueOn;
+                    break;
+                default:
+                case CPDFDisplayViewSinglePage:
+                    singlePageItem.state = NSControlStateValueOn;
+                    break;
+            }
+            
+//            [subMenu addItem:singlePageItem];
+//            [subMenu addItem:singlePageContinuousItem];
+//            [subMenu addItem:twoPagesItem];
+//            [subMenu addItem:twoPagesContinuousItem];
+//            [subMenu addItem:bookModeItem];
+//            pageDisplayItem.submenu = subMenu;
+            
+//            [menu insertItem:pageDisplayItem atIndex:0];
+            [menu insertItem:[NSMenuItem separatorItem] atIndex:0];
+            [menu insertItem:twoPagesContinuousItem atIndex:0];
+            [menu insertItem:twoPagesItem atIndex:0];
+            [menu insertItem:singlePageContinuousItem atIndex:0];
+            [menu insertItem:singlePageItem atIndex:0];
+            
+            
+            NSMenuItem *zoomItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Zoom", @"PDFListView") action:nil keyEquivalent:@""];
+            subMenu = [[NSMenu alloc]init];
+            
+            NSMenuItem * fitWidthItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Automatically Resize", @"PDFListView") action:@selector(menuItemClick_FitWidth:) keyEquivalent:@""];
+            NSMenuItem * automaticallyItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Fit Page", @"PDFListView") action:@selector(menuItemClick_FitPage:) keyEquivalent:@""];
+            NSMenuItem * zoomInItem =  [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Zoom In", @"PDFListView") action:@selector(menuItemClick_ZoomIn:) keyEquivalent:@""];
+            NSMenuItem * zoomOutItem =  [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Zoom Out", @"PDFListView") action:@selector(menuItemClick_ZoomOut:) keyEquivalent:@""];
+            NSMenuItem * actualSizeItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Actual Size", @"PDFListView") action:@selector(menuItemClick_ActualSize:) keyEquivalent:@""];
+            
+            NSMenuItem * hidenShowNoteItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Hide Notes", @"PDFListView") action:@selector(menuItemClick_HidenorShowNote:) keyEquivalent:@""];
+            
+            CGFloat pageHeight = self.currentPage.size.height;
+            CGFloat pdfviewHeight = self.bounds.size.height;
+            
+            if (self.autoScales) {
+                fitWidthItem.state = NSControlStateValueOn;
+            } else if (self.scaleFactor == 1.0) {
+                actualSizeItem.state = NSControlStateValueOn;
+            } else if (self.scaleFactor == pdfviewHeight/pageHeight) {
+                automaticallyItem.state = NSControlStateValueOn;
+            }
+            
+            if(self.hideNotes) {
+                [hidenShowNoteItem setTitle:NSLocalizedString(@"Show Notes", @"PDFListView")];
+            } else {
+                [hidenShowNoteItem setTitle:NSLocalizedString(@"Hide Notes", @"PDFListView")];
+            }
+            
+//            [subMenu addItem:fitWidthItem];
+//            [subMenu addItem:automaticallyItem];
+//            [subMenu addItem:actualSizeItem];
+//            [subMenu addItem:zoomInItem];
+//            [subMenu addItem:zoomOutItem];
+//            zoomItem.submenu = subMenu;
+//            [menu insertItem:zoomItem atIndex:0];
+            [menu insertItem:[NSMenuItem separatorItem] atIndex:0];
+            [menu insertItem:actualSizeItem atIndex:0];
+            [menu insertItem:zoomOutItem atIndex:0];
+            [menu insertItem:zoomInItem atIndex:0];
+            [menu insertItem:fitWidthItem atIndex:0];
+            
+            
+//            [menu insertItem:hidenShowNoteItem atIndex:0];
+            [menu insertItem:[NSMenuItem separatorItem] atIndex:0];
+//            [menu insertItem:pasteItem atIndex:0];
         if(self.activeAnnotations.count == 1) {
             NSMenuItem * lineStyleItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Line Style", @"PDFListView") action:@selector(menuItemClick_LineStyle:) keyEquivalent:@""];
             
@@ -603,110 +694,25 @@ static inline CPDFAreaOfInterest CAreaOfInterestForResizeHandle(CRectEdges mask,
                 [menu insertItem:cutItem atIndex:0];
                 [menu insertItem:copyItem atIndex:0];
             }
-        } else if (self.currentSelection) {
+        }
+        if (self.currentSelection) {
+            if ([[NSPasteboard generalPasteboard] canReadObjectForClasses:[NSArray arrayWithObjects:[CPDFAnnotation class], [NSString class],[NSImage class], nil] options:[NSDictionary dictionary]]) {
+                [menu insertItem:pasteItem atIndex:0];
+            }
             if(CPDFSelectionTypeImage == [self.currentSelection selectionType]) {
                 NSMenuItem * exportImageItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Export…", nil) action:@selector(menuItemClick_ExportImage:) keyEquivalent:@""];
 
                 [menu insertItem:exportImageItem atIndex:0];
                 [menu insertItem:[NSMenuItem separatorItem] atIndex:0];
             }
+           
+            [menu insertItem:copyItem atIndex:0];
+        }else{
             if ([[NSPasteboard generalPasteboard] canReadObjectForClasses:[NSArray arrayWithObjects:[CPDFAnnotation class], [NSString class],[NSImage class], nil] options:[NSDictionary dictionary]]) {
                 [menu insertItem:pasteItem atIndex:0];
             }
-            [menu insertItem:copyItem atIndex:0];
-        } else if (!self.activeAnnotation) {
-            NSMenuItem * pageDisplayItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Page Display", @"PDFListView") action:nil keyEquivalent:@""];
-            subMenu = [[NSMenu alloc] init];
-            
-            NSMenuItem * twoPagesContinuousItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Two Pages Continuous", @"PDFListView") action:@selector(menuItemClick_TwoPagesContinuous:) keyEquivalent:@""];
-            NSMenuItem * twoPagesItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Two Pages", @"PDFListView") action:@selector(menuItemClick_TwoPages:) keyEquivalent:@""];
-            NSMenuItem * singlePageContinuousItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Single Page Continuous", @"PDFListView") action:@selector(menuItemClick_SinglePagesContinuous:) keyEquivalent:@""];
-            NSMenuItem * singlePageItem =  [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Single Page", @"PDFListView") action:@selector(menuItemClick_SinglePage:) keyEquivalent:@""];
-            NSMenuItem * bookModeItem =  [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Book Mode", @"PDFListView") action:@selector(menuItemClick_BookMode:) keyEquivalent:@""];
-            switch (self.displayViewMode) {
-                case CPDFDisplayViewSinglePageContinuous:
-                    singlePageContinuousItem.state = NSControlStateValueOn;
-                    break;
-                case CPDFDisplayViewTwoUp:
-                    if (self.displaysAsBook)
-                        bookModeItem.state = NSControlStateValueOn;
-                    else
-                        twoPagesItem.state = NSControlStateValueOn;
-                    break;
-                case CPDFDisplayViewTwoUpContinuous:
-                    if (self.displaysAsBook)
-                        bookModeItem.state = NSControlStateValueOn;
-                    else
-                        twoPagesContinuousItem.state = NSControlStateValueOn;
-                    break;
-                default:
-                case CPDFDisplayViewSinglePage:
-                    singlePageItem.state = NSControlStateValueOn;
-                    break;
-            }
-            
-//            [subMenu addItem:singlePageItem];
-//            [subMenu addItem:singlePageContinuousItem];
-//            [subMenu addItem:twoPagesItem];
-//            [subMenu addItem:twoPagesContinuousItem];
-//            [subMenu addItem:bookModeItem];
-//            pageDisplayItem.submenu = subMenu;
-            
-//            [menu insertItem:pageDisplayItem atIndex:0];
-            [menu insertItem:[NSMenuItem separatorItem] atIndex:0];
-            [menu insertItem:twoPagesContinuousItem atIndex:0];
-            [menu insertItem:twoPagesItem atIndex:0];
-            [menu insertItem:singlePageContinuousItem atIndex:0];
-            [menu insertItem:singlePageItem atIndex:0];
-            
-            
-            NSMenuItem *zoomItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Zoom", @"PDFListView") action:nil keyEquivalent:@""];
-            subMenu = [[NSMenu alloc]init];
-            
-            NSMenuItem * fitWidthItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Automatically Resize", @"PDFListView") action:@selector(menuItemClick_FitWidth:) keyEquivalent:@""];
-            NSMenuItem * automaticallyItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Fit Page", @"PDFListView") action:@selector(menuItemClick_FitPage:) keyEquivalent:@""];
-            NSMenuItem * zoomInItem =  [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Zoom In", @"PDFListView") action:@selector(menuItemClick_ZoomIn:) keyEquivalent:@""];
-            NSMenuItem * zoomOutItem =  [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Zoom Out", @"PDFListView") action:@selector(menuItemClick_ZoomOut:) keyEquivalent:@""];
-            NSMenuItem * actualSizeItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Actual Size", @"PDFListView") action:@selector(menuItemClick_ActualSize:) keyEquivalent:@""];
-            
-            NSMenuItem * hidenShowNoteItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Hide Notes", @"PDFListView") action:@selector(menuItemClick_HidenorShowNote:) keyEquivalent:@""];
-            
-            CGFloat pageHeight = self.currentPage.size.height;
-            CGFloat pdfviewHeight = self.bounds.size.height;
-            
-            if (self.autoScales) {
-                fitWidthItem.state = NSControlStateValueOn;
-            } else if (self.scaleFactor == 1.0) {
-                actualSizeItem.state = NSControlStateValueOn;
-            } else if (self.scaleFactor == pdfviewHeight/pageHeight) {
-                automaticallyItem.state = NSControlStateValueOn;
-            }
-            
-            if(self.hideNotes) {
-                [hidenShowNoteItem setTitle:NSLocalizedString(@"Show Notes", @"PDFListView")];
-            } else {
-                [hidenShowNoteItem setTitle:NSLocalizedString(@"Hide Notes", @"PDFListView")];
-            }
-            
-//            [subMenu addItem:fitWidthItem];
-//            [subMenu addItem:automaticallyItem];
-//            [subMenu addItem:actualSizeItem];
-//            [subMenu addItem:zoomInItem];
-//            [subMenu addItem:zoomOutItem];
-//            zoomItem.submenu = subMenu;
-//            [menu insertItem:zoomItem atIndex:0];
-            [menu insertItem:[NSMenuItem separatorItem] atIndex:0];
-            [menu insertItem:actualSizeItem atIndex:0];
-            [menu insertItem:zoomOutItem atIndex:0];
-            [menu insertItem:zoomInItem atIndex:0];
-            [menu insertItem:fitWidthItem atIndex:0];
-            
-            
-//            [menu insertItem:hidenShowNoteItem atIndex:0];
-            [menu insertItem:[NSMenuItem separatorItem] atIndex:0];
-            [menu insertItem:pasteItem atIndex:0];
-
         }
+       
     }
     
     if ([self.pdfListViewDelegate respondsToSelector:@selector(PDFListViewMenuForEvent:forEvent:clickMenu:)]) {

+ 40 - 3
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift

@@ -268,9 +268,14 @@ extension KMMainViewController {
         
         return stypItem
     }
-    
+    func setShareStype() -> NSMenuItem {
+        let stypItem = NSMenuItem(title: NSLocalizedString("Share", comment: ""), action: #selector(showShareAction), target: self)
+        
+        return stypItem
+    }
     func setLookUpStype() -> NSMenuItem {
-        let stypItem = NSMenuItem(title: NSLocalizedString("Look Up", comment: ""), action: #selector(lookUpAction), target: self)
+        let str = String(format: "Look Up %@", listView.currentSelection.string())
+        let stypItem = NSMenuItem(title: NSLocalizedString(str, comment: ""), action: #selector(lookUpAction), target: self)
         
         return stypItem
     }
@@ -293,7 +298,8 @@ extension KMMainViewController {
     }
     
     func setTranslateStype() -> NSMenuItem {
-        let stypItem = NSMenuItem(title: NSLocalizedString("Translate", comment: ""), action: #selector(TranslateItemAction), target: self)
+        let str = String(format: "Translate %@", listView.currentSelection.string())
+        let stypItem = NSMenuItem(title: NSLocalizedString(str, comment: ""), action: #selector(TranslateItemAction), target: self)
         
         return stypItem
     }
@@ -318,6 +324,24 @@ extension KMMainViewController {
         return stypItem
     }
     
+    func setServicesStype() -> NSMenuItem {
+        let stypItem = NSMenuItem(title: NSLocalizedString("Services", comment: ""), action: nil, target: self)
+        let stypeMenu = NSMenu()
+        stypeMenu.addItem(withTitle: NSLocalizedString("Add to Music as a Spoken Track", comment: ""), action: #selector(AddtoMusicasASpokenTrack), target: self, tag: 0)
+        stypeMenu.addItem(withTitle: NSLocalizedString("Convert Text to Simplified Chinese", comment: ""), action: #selector(ConvertTextToSimplifiedChinese), target: self, tag: 1)
+        stypeMenu.addItem(withTitle: NSLocalizedString("Convert Text to Traditional Chinese", comment: ""), action: #selector(ConvertTextToTraditionalChinese), target: self, tag: 2)
+        stypeMenu.addItem(withTitle: NSLocalizedString("Open", comment: ""), action: #selector(OpenItemAction), target: self, tag: 3)
+        stypeMenu.addItem(withTitle: NSLocalizedString("Search With Baidu", comment: ""), action: #selector(searchBaiduAction), target: self, tag: 4)
+        stypeMenu.addItem(withTitle: NSLocalizedString("Show in Finder", comment: ""), action: #selector(showInFinder), target: self, tag: 4)
+        stypeMenu.addItem(withTitle: NSLocalizedString("Show Info in Finder", comment: ""), action: #selector(showInfoInFinder), target: self, tag: 5)
+        stypItem.submenu = stypeMenu
+//        if self.toolbarController.toolbarType == .Annatiton {
+//            stypeMenu.item(at: 0)?.state = .on
+//        } else if self.toolbarController.toolbarType == .Move {
+//            stypeMenu.item(at: 1)?.state = .on
+//        }
+        return stypItem
+    }
     func setCropStype() -> NSMenuItem {
         let stypItem = NSMenuItem(title: NSLocalizedString("Crop", comment: ""), action: nil, target: self)
         let stypeMenu = NSMenu()
@@ -590,6 +614,19 @@ extension KMMainViewController {
         }
     }
     
+    @objc func AddtoMusicasASpokenTrack(sender: NSMenuItem) {
+        
+    }
+    @objc func ConvertTextToSimplifiedChinese(sender: NSMenuItem) {
+        
+    }
+    @objc func ConvertTextToTraditionalChinese(sender: NSMenuItem) {
+        
+    }
+    @objc func OpenItemAction(sender: NSMenuItem) {
+        
+    }
+    
     @objc func takeSnapshot(sender: NSMenuItem) {
         
     }

+ 6 - 0
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+UI.swift

@@ -542,12 +542,18 @@ extension KMMainViewController {
     
     @objc func showTTSView() {
        
+    }
+    @objc func showShareAction() {
+       
     }
     @objc func lookUpAction() {
         
     }
     @objc func searchBaiduAction() {
         
+    }
+    @objc func showInfoInFinder() {
+        
     }
     @objc func NextPageAction() {
         

+ 208 - 165
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController.swift

@@ -2096,111 +2096,92 @@ import Cocoa
     func pdfListViewMenu(forEvent pdfListView: CPDFListView!, for theEvent: NSEvent!, click menu: AutoreleasingUnsafeMutablePointer<NSMenu?>!) {
         self.mouseRightMenuEvent = theEvent
         let currentMenu : NSMenu = menu.pointee!
-        if (currentMenu.items.count > 2) {
-            currentMenu.insertItem(self.setSnapshotStype(), at: 2)
-        }
-        if (currentMenu.items.count > 2) {
-            currentMenu.insertItem(self.setCropStype(), at: 3)
-        }
-        if (currentMenu.items.count > 3) {
-            currentMenu.insertItem(self.setTTSStype(), at: 4)
-        }
-        if(currentMenu.items.count > 4) {
-            currentMenu.insertItem(NSMenuItem.separator(), at: 5)
-        }
-        if (currentMenu.items.count > 5) {
-            currentMenu.insertItem(self.setLookUpStype(), at: 6)
-        }
-        if(currentMenu.items.count > 6) {
-            currentMenu.insertItem(NSMenuItem.separator(), at: 7)
-        }
-        if (currentMenu.items.count > 7) {
-            currentMenu.insertItem(self.setSearchBaiduStype(), at: 8)
-        }
-        if(currentMenu.items.count > 8) {
-            currentMenu.insertItem(NSMenuItem.separator(), at: 9)
-        }
-        if(currentMenu.items.count > 9) {
-            currentMenu.insertItem(NSMenuItem.separator(), at: currentMenu.items.count-1)
-        }
-        if (currentMenu.items.count > 16) {
-            currentMenu.insertItem(self.addReadModelStype(), at: currentMenu.items.count-1)
-        }
-        
-        if (listView.toolMode == .redactToolMode) {
-            if (listView.activeAnnotation == nil) {
-
-            } else {
-                let currentPoint: NSPoint = pdfListView.convert(theEvent.locationInWindow, from: pdfListView.superview)
-                let currentPage = pdfListView.page(for: currentPoint, nearest: true)
-//                let currentPage = pdfListView.activeAnnotation.page
-                let pagePoint = pdfListView.convert(currentPoint, to: currentPage)
-                
-                currentMenu.removeAllItems()
-                if (pdfListView.activeAnnotation.bounds.contains(pagePoint)) {
-                    currentMenu.insertItem(withTitle: NSLocalizedString("Delete", comment: ""), action: #selector(redact_menuItemClick_delete), target: self, at: currentMenu.items.count)
-                    currentMenu.insertItem(NSMenuItem.separator(), at: currentMenu.items.count)
-                    
-                    currentMenu.insertItem(withTitle: NSLocalizedString("Properties...", comment: ""), action: #selector(redact_menuItemClick_setProperty), target: self, at: currentMenu.items.count)
-                    currentMenu.insertItem(withTitle: NSLocalizedString("Use Current Properties as New Default", comment: ""), action: #selector(redact_menuItemClick_setCurrentPropertyToDefaultValue), target: self, at: currentMenu.items.count)
-                    currentMenu.insertItem(NSMenuItem.separator(), at: currentMenu.items.count)
-                    
-                    currentMenu.insertItem(withTitle: NSLocalizedString("Repeat mark across pages", comment: ""), action: #selector(redact_menuItemClick_MultiPageFlag), target: self, at: currentMenu.items.count)
-                    currentMenu.insertItem(withTitle: NSLocalizedString("Apply Redactions", comment: ""), action: #selector(redact_menuItemClick_apply), target: self, at: currentMenu.items.count)
-                    currentMenu.insertItem(withTitle: NSLocalizedString("Erase Redactions", comment: ""), action: #selector(redact_menuItemClick_clear), target: self, at: currentMenu.items.count)
-                } else {
-                    currentMenu.insertItem(withTitle: NSLocalizedString("Paste", comment: ""), action: #selector(redact_menuItemClick_paste), target: self, at: currentMenu.items.count)
-                    
-                    currentMenu.insertItem(NSMenuItem.separator(), at: currentMenu.items.count)
-                    currentMenu.insertItem(self.findStringMenu(), at: currentMenu.items.count)
-                    currentMenu.insertItem(self.printingMenu(), at: currentMenu.items.count)
+       
+//        if (listView.toolMode == .redactToolMode) {
+//            if (listView.activeAnnotation == nil) {
+//
+//            } else {
+//                let currentPoint: NSPoint = pdfListView.convert(theEvent.locationInWindow, from: pdfListView.superview)
+//                let currentPage = pdfListView.page(for: currentPoint, nearest: true)
+////                let currentPage = pdfListView.activeAnnotation.page
+//                let pagePoint = pdfListView.convert(currentPoint, to: currentPage)
+//                
+//                currentMenu.removeAllItems()
+//                if (pdfListView.activeAnnotation.bounds.contains(pagePoint)) {
+//                    currentMenu.insertItem(withTitle: NSLocalizedString("Delete", comment: ""), action: #selector(redact_menuItemClick_delete), target: self, at: currentMenu.items.count)
+//                    currentMenu.insertItem(NSMenuItem.separator(), at: currentMenu.items.count)
+//                    
+//                    currentMenu.insertItem(withTitle: NSLocalizedString("Properties...", comment: ""), action: #selector(redact_menuItemClick_setProperty), target: self, at: currentMenu.items.count)
+//                    currentMenu.insertItem(withTitle: NSLocalizedString("Use Current Properties as New Default", comment: ""), action: #selector(redact_menuItemClick_setCurrentPropertyToDefaultValue), target: self, at: currentMenu.items.count)
+//                    currentMenu.insertItem(NSMenuItem.separator(), at: currentMenu.items.count)
+//                    
+//                    currentMenu.insertItem(withTitle: NSLocalizedString("Repeat mark across pages", comment: ""), action: #selector(redact_menuItemClick_MultiPageFlag), target: self, at: currentMenu.items.count)
+//                    currentMenu.insertItem(withTitle: NSLocalizedString("Apply Redactions", comment: ""), action: #selector(redact_menuItemClick_apply), target: self, at: currentMenu.items.count)
+//                    currentMenu.insertItem(withTitle: NSLocalizedString("Erase Redactions", comment: ""), action: #selector(redact_menuItemClick_clear), target: self, at: currentMenu.items.count)
+//                } else {
+//                    currentMenu.insertItem(withTitle: NSLocalizedString("Paste", comment: ""), action: #selector(redact_menuItemClick_paste), target: self, at: currentMenu.items.count)
+//                    
+//                    currentMenu.insertItem(NSMenuItem.separator(), at: currentMenu.items.count)
+//                    currentMenu.insertItem(self.findStringMenu(), at: currentMenu.items.count)
+//                    currentMenu.insertItem(self.printingMenu(), at: currentMenu.items.count)
+//                }
+//            }
+//            return
+//        }
+        if listView.currentSelection != nil{
+            currentMenu.insertItem(NSMenuItem.separator(), at: 3)
+            currentMenu.insertItem(self.setSearchBaiduStype(), at: 3)
+            currentMenu.insertItem(NSMenuItem.separator(), at: 3)
+            currentMenu.insertItem(self.setLookUpStype(), at: 3)
+            currentMenu.insertItem(NSMenuItem.separator(), at: 3)
+            currentMenu.insertItem(self.addOutlineStype(), at: 3)
+            currentMenu.insertItem(NSMenuItem.separator(), at: 3)
+            currentMenu.insertItem(self.setAnnotationToolStype(), at: 3)
+            currentMenu.insertItem(self.setTTSStype(), at: 3)
+            currentMenu.insertItem(NSMenuItem.separator(), at: 3)
+            currentMenu.insertItem(self.setShareStype(), at: 3)
+            currentMenu.insertItem(NSMenuItem.separator(), at: 3)
+            currentMenu.insertItem(self.enterAnnotationStype(), at: 3)
+            currentMenu.insertItem(NSMenuItem.separator(), at: 3)
+            currentMenu.insertItem(NSMenuItem.separator(), at: currentMenu.items.count)
+            currentMenu.insertItem(self.addReadModelStype(), at: currentMenu.items.count)
+            currentMenu.insertItem(NSMenuItem.separator(), at: currentMenu.items.count)
+            currentMenu.insertItem(self.setNextPageStype(), at: currentMenu.items.count)
+            currentMenu.insertItem(self.setPreviousPageStype(), at: currentMenu.items.count)
+            currentMenu.insertItem(self.setTranslateStype(), at: currentMenu.items.count)
+            currentMenu.insertItem(NSMenuItem.separator(), at: currentMenu.items.count)
+            currentMenu.insertItem(self.setServicesStype(), at: currentMenu.items.count)
+        }
+        if listView.activeAnnotation == nil && listView.currentSelection == nil{
+            currentMenu.insertItem(NSMenuItem.separator(), at: currentMenu.items.count)
+            currentMenu.insertItem(self.addReadModelStype(), at: currentMenu.items.count)
+            currentMenu.insertItem(NSMenuItem.separator(), at: currentMenu.items.count)
+            currentMenu.insertItem(self.setNextPageStype(), at: currentMenu.items.count)
+            currentMenu.insertItem(self.setPreviousPageStype(), at: currentMenu.items.count)
+            if(listView.toolMode == .selectToolMode) {
+                if NSIsEmptyRect(listView.currentSelectionRect()) {
+                    currentMenu.insertItem(self.zoomSelectionMenuItem(), at: 0)
+                    currentMenu.insertItem(NSMenuItem.separator(), at: 0)
                 }
-            }
-            return
-        }
-        
-        if(listView.toolMode == .selectToolMode) {
-            if currentMenu.items.count > 0 {
+                currentMenu.insertItem(self.printingMenu(), at: 0)
+                currentMenu.insertItem(self.setTTSStype(), at: 0)
+                currentMenu.insertItem(self.setCropStype(), at: 0)
+                currentMenu.insertItem(self.setSnapshotStype(), at: 0)
                 let export = NSMenuItem(title: NSLocalizedString("Export", comment: ""), action: nil, target: self)
                 export.submenu = self.exportMenu()
                 currentMenu.insertItem(export, at: currentMenu.items.count)
-                let corp = NSMenuItem(title: NSLocalizedString("Crop", comment: ""), action:#selector(cropCurrentPage), target: self)
-//                corp?.submenu = self.cropMenu()
-                currentMenu.insertItem(corp, at: currentMenu.items.count)
-                // MARK: 暂时拿掉 2023.04.26
-//                currentMenu.insertItem(self.zoomSelectionMenuItem(), at: currentMenu.items.count)
-                currentMenu.insertItem(self.printingMenu(), at: currentMenu.items.count)
-            }
-        } else {
-            if listView.currentSelection != nil {
-                if (listView.currentSelection.string() != nil || listView.currentSelection.selectionType() == .image) {
-                    if listView.activeAnnotation != nil && ((listView.activeAnnotation is CPDFStampAnnotation) || (listView.activeAnnotation is CPDFSignatureAnnotation)) {
-                        currentMenu.insertItem(self.exportImageStampItem(), at: currentMenu.items.count-2)
-                    } else {
-                        var isMarkup = false
-                        for item in self.listView.activeAnnotations {
-                            if (item is CPDFMarkupAnnotation) {
-                                isMarkup = true
-                                break
-                            }
-
-                        }
-
-                        if(!isMarkup) {
-                            self.addAnnotationForStyleMenu(menu: currentMenu)
-                        }
-                    }
-                }
-            } else if (listView.activeAnnotation == nil) {
-                if(currentMenu.items.count > 2) {
-                    currentMenu.insertItem(self.enterAnnotationStype(), at: 2)
-                }
-                if(currentMenu.items.count > 2) {
-                    currentMenu.insertItem(NSMenuItem.separator(), at: 3)
-                }
-                if(currentMenu.items.count > 3) {
-                    currentMenu.insertItem(self.setAnnotationToolStype(), at: 4)
-                }
+                
+            }else{
+                currentMenu.insertItem(NSMenuItem.separator(), at: 2)
+                currentMenu.insertItem(self.setTTSStype(), at: 2)
+                currentMenu.insertItem(self.setCropStype(), at: 2)
+                currentMenu.insertItem(self.setSnapshotStype(), at: 2)
+                currentMenu.insertItem(NSMenuItem.separator(), at: 2)
+                
+                currentMenu.insertItem(self.addOutlineStype(), at: 2)
+                currentMenu.insertItem(NSMenuItem.separator(), at: 2)
+                currentMenu.insertItem(self.enterAnnotationStype(), at: 2)
+                currentMenu.insertItem(NSMenuItem.separator(), at: 2)
                 
                 if(currentMenu.items.count > 4) {
                     currentMenu.insertItem(NSMenuItem.separator(), at: 5)
@@ -2209,80 +2190,142 @@ import Cocoa
                     currentMenu.insertItem(self.addBookmarkMenu(), at: 6)
                 }
                 
-                if (currentMenu.items.count > 6) {
-                    currentMenu.insertItem(self.addOutlineStype(), at: 7)
-                }
-                
                 if (currentMenu.items.count > 6 && self.isReadMode) {
                     currentMenu.removeItem(currentMenu.item(withTitle: "Zoom")!)
                 }
-                if(currentMenu.items.count > 7) {
-                    currentMenu.insertItem(NSMenuItem.separator(), at: 8)
-                }
-               
+                //                    currentMenu.insertItem(self.findStringMenu(), at: currentMenu.items.count)
+                //                    currentMenu.insertItem(self.printingMenu(), at: currentMenu.items.count)
                
-//                if(currentMenu.items.count > 6) {
-//                    let menuItem = NSMenuItem(title: NSLocalizedString("Automatic rolling", comment: ""), action:nil, target: self)!
-//                    currentMenu.insertItem(menuItem, at: 6)
+//                currentMenu.insertItem(self.setTranslateStype(), at: currentMenu.items.count)
+                currentMenu.insertItem(self.setAutoScrollStype(), at: currentMenu.items.count)
+            }
+            currentMenu.insertItem(self.setAnnotationToolStype(), at: 5)
+        }
+        
+//        if(listView.toolMode == .selectToolMode) {
+//            if currentMenu.items.count > 0 {
+//                let export = NSMenuItem(title: NSLocalizedString("Export", comment: ""), action: nil, target: self)
+//                export.submenu = self.exportMenu()
+//                currentMenu.insertItem(export, at: currentMenu.items.count)
+//                let corp = NSMenuItem(title: NSLocalizedString("Crop", comment: ""), action:#selector(cropCurrentPage), target: self)
+////                corp?.submenu = self.cropMenu()
+//                currentMenu.insertItem(corp, at: currentMenu.items.count)
+//                // MARK: 暂时拿掉 2023.04.26
+////                currentMenu.insertItem(self.zoomSelectionMenuItem(), at: currentMenu.items.count)
+//                currentMenu.insertItem(self.printingMenu(), at: currentMenu.items.count)
+//            }
+//        } else {
+//            if listView.currentSelection != nil {
+//                if (listView.currentSelection.string() != nil || listView.currentSelection.selectionType() == .image) {
+//                    if listView.activeAnnotation != nil && ((listView.activeAnnotation is CPDFStampAnnotation) || (listView.activeAnnotation is CPDFSignatureAnnotation)) {
+//                        currentMenu.insertItem(self.exportImageStampItem(), at: currentMenu.items.count-2)
+//                    } else {
+//                        var isMarkup = false
+//                        for item in self.listView.activeAnnotations {
+//                            if (item is CPDFMarkupAnnotation) {
+//                                isMarkup = true
+//                                break
+//                            }
+//
+//                        }
+//
+//                        if(!isMarkup) {
+//                            self.addAnnotationForStyleMenu(menu: currentMenu)
+//                        }
+//                    }
+//                }
+//            } else if (listView.activeAnnotation == nil) {
+//                if(currentMenu.items.count > 2) {
+//                    currentMenu.insertItem(self.enterAnnotationStype(), at: 2)
+//                }
+//                if(currentMenu.items.count > 2) {
+//                    currentMenu.insertItem(NSMenuItem.separator(), at: 3)
+//                }
+//                if(currentMenu.items.count > 3) {
+//                    currentMenu.insertItem(self.setAnnotationToolStype(), at: 4)
+//                }
+//                
+//                if(currentMenu.items.count > 4) {
+//                    currentMenu.insertItem(NSMenuItem.separator(), at: 5)
+//                }
+//                if(currentMenu.items.count > 5) {
+//                    currentMenu.insertItem(self.addBookmarkMenu(), at: 6)
+//                }
+//                
+//                if (currentMenu.items.count > 6) {
+//                    currentMenu.insertItem(self.addOutlineStype(), at: 7)
+//                }
+//                
+//                if (currentMenu.items.count > 6 && self.isReadMode) {
+//                    currentMenu.removeItem(currentMenu.item(withTitle: "Zoom")!)
 //                }
 //                if(currentMenu.items.count > 7) {
-//                    let menuItem = NSMenuItem(title: NSLocalizedString("TTS", comment: ""), action:nil, target: self)!
-//                    currentMenu.insertItem(menuItem, at: 7)
+//                    currentMenu.insertItem(NSMenuItem.separator(), at: 8)
 //                }
-//                if(currentMenu.items.count > 8) {
-//                    let menuItem = NSMenuItem(title: NSLocalizedString("menuItem", comment: ""), action:nil, target: self)!
-//                    currentMenu.insertItem(menuItem, at: 8)
+//               
+//               
+////                if(currentMenu.items.count > 6) {
+////                    let menuItem = NSMenuItem(title: NSLocalizedString("Automatic rolling", comment: ""), action:nil, target: self)!
+////                    currentMenu.insertItem(menuItem, at: 6)
+////                }
+////                if(currentMenu.items.count > 7) {
+////                    let menuItem = NSMenuItem(title: NSLocalizedString("TTS", comment: ""), action:nil, target: self)!
+////                    currentMenu.insertItem(menuItem, at: 7)
+////                }
+////                if(currentMenu.items.count > 8) {
+////                    let menuItem = NSMenuItem(title: NSLocalizedString("menuItem", comment: ""), action:nil, target: self)!
+////                    currentMenu.insertItem(menuItem, at: 8)
+////                }
+//
+////                if !self.isReadMode {
+////                    if (currentMenu.items.count > 10) {
+////                        currentMenu.insertItem(self.addHighlightLinksStype(), at: 11)
+////                    }
+////                }
+//
+//                if self.isReadMode {
+//                    
+//                } else {
+//                    currentMenu.insertItem(NSMenuItem.separator(), at: currentMenu.items.count)
+////                    currentMenu.insertItem(self.findStringMenu(), at: currentMenu.items.count)
+////                    currentMenu.insertItem(self.printingMenu(), at: currentMenu.items.count)
+//                    currentMenu.insertItem(self.setNextPageStype(), at: currentMenu.items.count)
+//                    currentMenu.insertItem(self.setPreviousPageStype(), at: currentMenu.items.count)
+//                    currentMenu.insertItem(self.setTranslateStype(), at: currentMenu.items.count)
+//                    currentMenu.insertItem(self.setAutoScrollStype(), at: currentMenu.items.count)
 //                }
-
-//                if !self.isReadMode {
-//                    if (currentMenu.items.count > 10) {
-//                        currentMenu.insertItem(self.addHighlightLinksStype(), at: 11)
+//            } else if listView.activeAnnotation != nil {
+//                var type : CAnnotationType = .unkown
+//                if listView.activeAnnotation is CPDFMarkupAnnotation {
+//                    if (listView.activeAnnotation as! CPDFMarkupAnnotation).markupType() == .highlight {
+//                        type = .highlight
+//                    } else if (listView.activeAnnotation as! CPDFMarkupAnnotation).markupType() == .underline {
+//                        type = .underline
+//                    } else {
+//                        type = .strikeOut
 //                    }
+//                } else if listView.activeAnnotation is CPDFInkAnnotation {
+//                    type = .ink
+//                } else if listView.activeAnnotation is CPDFFreeTextAnnotation {
+//                    type = .freeText
+//                } else if listView.activeAnnotation is CPDFTextAnnotation {
+//                    type = .anchored
+//                } else if listView.activeAnnotation is CPDFCircleAnnotation {
+//                    type = .circle
+//                } else if listView.activeAnnotation is CPDFSquareAnnotation {
+//                    type = .square
 //                }
-
-                if self.isReadMode {
-                    
-                } else {
-                    currentMenu.insertItem(NSMenuItem.separator(), at: currentMenu.items.count)
-//                    currentMenu.insertItem(self.findStringMenu(), at: currentMenu.items.count)
-//                    currentMenu.insertItem(self.printingMenu(), at: currentMenu.items.count)
-                    currentMenu.insertItem(self.setNextPageStype(), at: currentMenu.items.count)
-                    currentMenu.insertItem(self.setPreviousPageStype(), at: currentMenu.items.count)
-                    currentMenu.insertItem(self.setTranslateStype(), at: currentMenu.items.count)
-                    currentMenu.insertItem(self.setAutoScrollStype(), at: currentMenu.items.count)
-                }
-            } else if listView.activeAnnotation != nil {
-                var type : CAnnotationType = .unkown
-                if listView.activeAnnotation is CPDFMarkupAnnotation {
-                    if (listView.activeAnnotation as! CPDFMarkupAnnotation).markupType() == .highlight {
-                        type = .highlight
-                    } else if (listView.activeAnnotation as! CPDFMarkupAnnotation).markupType() == .underline {
-                        type = .underline
-                    } else {
-                        type = .strikeOut
-                    }
-                } else if listView.activeAnnotation is CPDFInkAnnotation {
-                    type = .ink
-                } else if listView.activeAnnotation is CPDFFreeTextAnnotation {
-                    type = .freeText
-                } else if listView.activeAnnotation is CPDFTextAnnotation {
-                    type = .anchored
-                } else if listView.activeAnnotation is CPDFCircleAnnotation {
-                    type = .circle
-                } else if listView.activeAnnotation is CPDFSquareAnnotation {
-                    type = .square
-                }
-                if ((listView.activeAnnotation is CPDFStampAnnotation) || (listView.activeAnnotation is CPDFSignatureAnnotation)) {
-                    if listView.activeAnnotations.count == 1 {
-                        currentMenu.insertItem(self.exportImageStampItem(), at: currentMenu.items.count-2)
-                    }
-                }
-                if type != .unkown  && listView.activeAnnotations.count == 1{
-                    currentMenu.insertItem(self.setDefaultAnnotationPorpert(type: type), at: currentMenu.items.count)
-                }
-//                closeRightPane()
-            }
-        }
+//                if ((listView.activeAnnotation is CPDFStampAnnotation) || (listView.activeAnnotation is CPDFSignatureAnnotation)) {
+//                    if listView.activeAnnotations.count == 1 {
+//                        currentMenu.insertItem(self.exportImageStampItem(), at: currentMenu.items.count-2)
+//                    }
+//                }
+//                if type != .unkown  && listView.activeAnnotations.count == 1{
+//                    currentMenu.insertItem(self.setDefaultAnnotationPorpert(type: type), at: currentMenu.items.count)
+//                }
+////                closeRightPane()
+//            }
+//        }
         
         for item in currentMenu.items {
             if (item.action == NSSelectorFromString("menuItemClick_HidenorShowNote:")) {