Browse Source

【2025】【菜单栏】菜单栏完善

niehaoyu 2 months ago
parent
commit
eee2fb1fd6

+ 164 - 29
PDF Office/PDF Master/AppDelegate+MenuAction.swift

@@ -604,7 +604,7 @@ extension AppDelegate {
                          NSSelectorFromString("menuItemAction_FullScreen:"),
                          NSSelectorFromString("menuItemAction_Presentation:"),
                          NSSelectorFromString("menuItemAction_SplitView:"),
-                         NSSelectorFromString("menuItemAction_Thumbnail:"),
+                         NSSelectorFromString("menuItemAction_BOTAMode:"),
                          NSSelectorFromString("menuItemAction_Outline:"),
                          NSSelectorFromString("menuItemAction_Notes:"),
                          NSSelectorFromString("menuItemAction_Annotate:"),
@@ -622,73 +622,208 @@ extension AppDelegate {
     }
     
     func validateViewMenuItem(_ menuItem: NSMenuItem) -> Bool {
-    
-        return true
+        let action = menuItem.action
+        if let mainVC = self.mainViewController() {
+            if action == NSSelectorFromString("menuItemAction_ChangeDisplayMode:") {
+                 
+            } else if action == NSSelectorFromString("menuItemAction_ReadMode:") {
+                 
+            } else if action == NSSelectorFromString("menuItemAction_FullScreen:") {
+            
+            } else if action == NSSelectorFromString("menuItemAction_Presentation:") {
+                
+            } else if action == NSSelectorFromString("menuItemAction_SplitView:") {
+            
+            } else if action == NSSelectorFromString("menuItemAction_BOTAMode:") {
+                
+            } else if action == NSSelectorFromString("menuItemAction_Themes:") {
+                
+            } else if action == NSSelectorFromString("menuItemAction_Zoom:") {
+                
+            } else if action == NSSelectorFromString("menuItemAction_Rotate:") {
+                
+            } else if action == NSSelectorFromString("menuItemAction_HighlightFormsField:") {
+                
+            } else if action == NSSelectorFromString("menuItemAction_HighlightLinks:") {
+                
+            } else if action == NSSelectorFromString("menuItemAction_ResetForm:") {
+                
+            } else if action == NSSelectorFromString("menuItemAction_AutoScroll:") {
+ 
+            }
+            return true
+        }
+        return false
     }
      
     //MARK: -IBAction
     @IBAction func menuItemAction_ChangeDisplayMode(_ sender: NSMenuItem) {
-        
+        if let mainVC = self.mainViewController() {
+             if sender.tag == 1 {
+                 mainVC.updatePDFViewDisplayMode(viewMode: .singlePage)
+            } else if sender.tag == 2 {
+                mainVC.updatePDFViewDisplayMode(viewMode: .singlePageContinuous)
+            } else if sender.tag == 3 {
+                mainVC.updatePDFViewDisplayMode(viewMode: .twoUp)
+            } else if sender.tag == 4 {
+                mainVC.updatePDFViewDisplayMode(viewMode: .twoUpContinuous)
+            } else if sender.tag == 5 {
+                mainVC.updatePDFViewDisplayMode(isbookMode: true)
+            }
+        }
     }
     
     @IBAction func menuItemAction_ReadMode(_ sender: NSMenuItem) {
-        
+        if let mainVC = self.mainViewController() {
+            mainVC.viewManager.isPDFReadMode = !mainVC.viewManager.isPDFReadMode
+            if mainVC.viewManager.isPDFReadMode {
+                mainVC.openPDFReadMode()
+            } else {
+                mainVC.exitPDFReadMode()
+            }
+        }
     }
     
     @IBAction func menuItemAction_FullScreen(_ sender: NSMenuItem) {
-        
+        if let mainVC = self.mainViewController() {
+            mainVC.view.window?.toggleFullScreen(nil)
+        }
     }
     
     @IBAction func menuItemAction_Presentation(_ sender: NSMenuItem) {
-        
+        if let mainVC = self.mainViewController() {
+            mainVC.togglePresentation(nil)
+        }
     }
     
     @IBAction func menuItemAction_SplitView(_ sender: NSMenuItem) {
-        
-    }
-    
-    @IBAction func menuItemAction_Thumbnail(_ sender: NSMenuItem) {
-        
-    }
-    
-    @IBAction func menuItemAction_Outline(_ sender: NSMenuItem) {
-        
-    }
-    
-    @IBAction func menuItemAction_Notes(_ sender: NSMenuItem) {
-        
+        if let mainVC = self.mainViewController() {
+            if sender.tag == 0 {
+                mainVC.listView.viewSplitMode = .vertical
+            } else if sender.tag == 1 {
+                mainVC.listView.viewSplitMode = .horizontal
+            } else if sender.tag == 2 {
+                mainVC.listView.viewSplitMode = .disable
+            }
+            mainVC.reloadPDFSplitInfo()
+        }
     }
     
-    @IBAction func menuItemAction_Annotate(_ sender: NSMenuItem) {
-        
+    @IBAction func menuItemAction_BOTAMode(_ sender: NSMenuItem) {
+        if let mainVC = self.mainViewController() {
+            if sender.tag == 0 {
+                if mainVC.viewManager.pdfSideBarType == .thumbnail {
+                    mainVC.viewManager.pdfSideBarType = .none
+                } else {
+                    mainVC.viewManager.pdfSideBarType = .thumbnail
+                }
+            } else if sender.tag == 1 {
+                if mainVC.viewManager.pdfSideBarType == .outline {
+                    mainVC.viewManager.pdfSideBarType = .none
+                } else {
+                    mainVC.viewManager.pdfSideBarType = .outline
+                }
+            } else if sender.tag == 2 {
+                if mainVC.viewManager.pdfSideBarType == .bookmark {
+                    mainVC.viewManager.pdfSideBarType = .none
+                } else {
+                    mainVC.viewManager.pdfSideBarType = .bookmark
+                }
+            } else if sender.tag == 3 {
+                if mainVC.viewManager.pdfSideBarType == .annotation {
+                    mainVC.viewManager.pdfSideBarType = .none
+                } else {
+                    mainVC.viewManager.pdfSideBarType = .annotation
+                }
+            }
+            if mainVC.viewManager.pdfSideBarType == .none {
+                mainVC.toggleCloseLeftSide()
+            } else {
+                mainVC.toggleOpenLeftSide(pdfSideBarType: mainVC.viewManager.pdfSideBarType)
+            }
+            mainVC.reloadSideBar()
+        }
     }
+     
     
     @IBAction func menuItemAction_Themes(_ sender: NSMenuItem) {
-        
+        if let mainVC = self.mainViewController() {
+            var model: KMPDFViewMode = .normal
+            var color = NSColor.clear
+            
+            if sender.tag == 0 {
+                model = .normal
+            } else if sender.tag == 1 {
+                model = .soft
+            } else if sender.tag == 2 {
+                model = .green
+            } else if sender.tag == 3 {
+                model = .night
+            } else {
+                model = .other
+                
+            }
+            mainVC.listView.setPageBackgroundColorWith(color, viewMode: model)
+            
+        }
     }
     
     @IBAction func menuItemAction_Zoom(_ sender: NSMenuItem) {
-        
+        if let mainVC = self.mainViewController() {
+            var type: KMPDFZoomType = .width
+            if sender.tag == 0 {
+                type = .width
+            } else if sender.tag == 1 {
+                type = .fit
+            } else if sender.tag == 2 {
+                type = .actualSize
+            } else if sender.tag == 3 {
+                type = .zoom_In
+            } else if sender.tag == 4 {
+                type = .zoom_Out
+            }
+            mainVC.selectZoom(type)
+        }
     }
     
     @IBAction func menuItemAction_Rotate(_ sender: NSMenuItem) {
-        
+        if let mainVC = self.mainViewController() {
+             if sender.tag == 0 {
+                 mainVC.rotateLeft(page: mainVC.listView.currentPage(), listView: mainVC.listView)
+            } else if sender.tag == 1 {
+                mainVC.rotateRight(page: mainVC.listView.currentPage(), listView: mainVC.listView)
+            }
+        }
     }
     
     @IBAction func menuItemAction_HighlightFormsField(_ sender: NSMenuItem) {
-        
+        if let mainVC = self.mainViewController() {
+            let enabled = CPDFKitConfig.sharedInstance().enableFormFieldHighlight()
+            CPDFKitConfig.sharedInstance().setEnableFormFieldHighlight(!enabled)
+            
+            mainVC.listView.setNeedsDisplayForVisiblePages()
+        }
     }
     
     @IBAction func menuItemAction_HighlightLinks(_ sender: NSMenuItem) {
-        
+        if let mainVC = self.mainViewController() {
+            let enabled = CPDFKitConfig.sharedInstance().enableLinkFieldHighlight()
+            CPDFKitConfig.sharedInstance().setEnableLinkFieldHighlight(!enabled)
+            
+            mainVC.listView.setNeedsDisplayForVisiblePages()
+        }
     }
     
     @IBAction func menuItemAction_ResetForm(_ sender: NSMenuItem) {
-        
+        if let mainVC = self.mainViewController() {
+            mainVC.listView.resetFormAnnotation()
+        }
     }
     
     @IBAction func menuItemAction_AutoScroll(_ sender: NSMenuItem) {
-        
+        if let mainVC = self.mainViewController() {
+            mainVC.toggleAutoFlow(nil)
+        }
     }
 }
 

+ 25 - 25
PDF Office/PDF Master/Base.lproj/Main.storyboard

@@ -608,22 +608,22 @@ CA
                                         <menuItem title="PDF Display" id="lGh-mW-7Pc">
                                             <menu key="submenu" title="PDF Display" id="ezi-ly-46p">
                                                 <items>
-                                                    <menuItem title="Single Page" id="hxE-iU-6WH">
+                                                    <menuItem title="Single Page" tag="1" id="hxE-iU-6WH">
                                                         <connections>
                                                             <action selector="menuItemAction_ChangeDisplayMode:" target="Voe-Tx-rLC" id="avx-PB-72a"/>
                                                         </connections>
                                                     </menuItem>
-                                                    <menuItem title="Single Page Continuous" tag="1" id="Wb8-eg-Ml9">
+                                                    <menuItem title="Single Page Continuous" tag="2" id="Wb8-eg-Ml9">
                                                         <connections>
                                                             <action selector="menuItemAction_ChangeDisplayMode:" target="Voe-Tx-rLC" id="Mld-S2-EgG"/>
                                                         </connections>
                                                     </menuItem>
-                                                    <menuItem title="Two Pages" tag="2" id="hga-cQ-kSj">
+                                                    <menuItem title="Two Pages" tag="3" id="hga-cQ-kSj">
                                                         <connections>
                                                             <action selector="menuItemAction_ChangeDisplayMode:" target="Voe-Tx-rLC" id="gjz-2P-Cyt"/>
                                                         </connections>
                                                     </menuItem>
-                                                    <menuItem title="Two Pages Continuous" tag="3" id="b6w-rv-YVl">
+                                                    <menuItem title="Two Pages Continuous" tag="4" id="b6w-rv-YVl">
                                                         <connections>
                                                             <action selector="menuItemAction_ChangeDisplayMode:" target="Voe-Tx-rLC" id="wRC-wN-Tcn"/>
                                                         </connections>
@@ -631,7 +631,7 @@ CA
                                                     <menuItem isSeparatorItem="YES" id="gbo-tM-TRC">
                                                         <modifierMask key="keyEquivalentModifierMask" command="YES"/>
                                                     </menuItem>
-                                                    <menuItem title="Book Mode" id="QU6-7x-U2M">
+                                                    <menuItem title="Book Mode" tag="5" id="QU6-7x-U2M">
                                                         <connections>
                                                             <action selector="menuItemAction_ChangeDisplayMode:" target="Voe-Tx-rLC" id="nij-BR-IJX"/>
                                                         </connections>
@@ -661,16 +661,16 @@ CA
                                             <modifierMask key="keyEquivalentModifierMask"/>
                                             <menu key="submenu" title="Split View" id="Z39-K7-Ton">
                                                 <items>
-                                                    <menuItem title="Horizontal" id="js4-Js-fdJ">
+                                                    <menuItem title="Vertical" id="cmp-60-Qet">
                                                         <modifierMask key="keyEquivalentModifierMask"/>
                                                         <connections>
-                                                            <action selector="menuItemAction_SplitView:" target="Voe-Tx-rLC" id="TOf-cu-jg0"/>
+                                                            <action selector="menuItemAction_SplitView:" target="Voe-Tx-rLC" id="68m-w4-1NC"/>
                                                         </connections>
                                                     </menuItem>
-                                                    <menuItem title="Vertical" tag="1" id="cmp-60-Qet">
+                                                    <menuItem title="Horizontal" tag="1" id="js4-Js-fdJ">
                                                         <modifierMask key="keyEquivalentModifierMask"/>
                                                         <connections>
-                                                            <action selector="menuItemAction_SplitView:" target="Voe-Tx-rLC" id="68m-w4-1NC"/>
+                                                            <action selector="menuItemAction_SplitView:" target="Voe-Tx-rLC" id="TOf-cu-jg0"/>
                                                         </connections>
                                                     </menuItem>
                                                     <menuItem title="Disable Split View" tag="2" id="fMf-xQ-fzz">
@@ -685,25 +685,25 @@ CA
                                         <menuItem title="Thumbnails" id="pfC-b1-Lf2">
                                             <modifierMask key="keyEquivalentModifierMask"/>
                                             <connections>
-                                                <action selector="menuItemAction_Thumbnail:" target="Voe-Tx-rLC" id="Ttg-GX-mON"/>
+                                                <action selector="menuItemAction_BOTAMode:" target="Voe-Tx-rLC" id="dPA-VN-4DE"/>
                                             </connections>
                                         </menuItem>
-                                        <menuItem title="Outline" id="T4N-oM-heb">
+                                        <menuItem title="Outline" tag="1" id="T4N-oM-heb">
                                             <modifierMask key="keyEquivalentModifierMask"/>
                                             <connections>
-                                                <action selector="menuItemAction_Outline:" target="Voe-Tx-rLC" id="PHi-pd-KRk"/>
+                                                <action selector="menuItemAction_BOTAMode:" target="Voe-Tx-rLC" id="ROS-SR-cyS"/>
                                             </connections>
                                         </menuItem>
-                                        <menuItem title="Notes" id="cEK-0C-WTt" userLabel="Notes">
+                                        <menuItem title="BookMark" tag="2" id="cEK-0C-WTt" userLabel="Notes">
                                             <modifierMask key="keyEquivalentModifierMask"/>
                                             <connections>
-                                                <action selector="menuItemAction_Notes:" target="Voe-Tx-rLC" id="TUz-qj-2NL"/>
+                                                <action selector="menuItemAction_BOTAMode:" target="Voe-Tx-rLC" id="PaI-iZ-ZEm"/>
                                             </connections>
                                         </menuItem>
-                                        <menuItem title="Annotate" id="ta9-Yg-PIB">
+                                        <menuItem title="注释列表" tag="3" id="ta9-Yg-PIB">
                                             <modifierMask key="keyEquivalentModifierMask"/>
                                             <connections>
-                                                <action selector="menuItemAction_Annotate:" target="Voe-Tx-rLC" id="vOO-yM-vbY"/>
+                                                <action selector="menuItemAction_BOTAMode:" target="Voe-Tx-rLC" id="Ega-km-5jJ"/>
                                             </connections>
                                         </menuItem>
                                         <menuItem isSeparatorItem="YES" id="1ai-sZ-AYo">
@@ -725,16 +725,16 @@ CA
                                                             <action selector="menuItemAction_Themes:" target="Voe-Tx-rLC" id="lTQ-5N-6gz"/>
                                                         </connections>
                                                     </menuItem>
-                                                    <menuItem title="Dark" tag="2" id="F5M-jy-hry">
+                                                    <menuItem title="Reseda" tag="2" id="gje-jl-v1q">
                                                         <modifierMask key="keyEquivalentModifierMask"/>
                                                         <connections>
-                                                            <action selector="menuItemAction_Themes:" target="Voe-Tx-rLC" id="wwu-XK-nIW"/>
+                                                            <action selector="menuItemAction_Themes:" target="Voe-Tx-rLC" id="LDI-ug-COQ"/>
                                                         </connections>
                                                     </menuItem>
-                                                    <menuItem title="Reseda" tag="3" id="gje-jl-v1q">
+                                                    <menuItem title="Dark" tag="3" id="F5M-jy-hry">
                                                         <modifierMask key="keyEquivalentModifierMask"/>
                                                         <connections>
-                                                            <action selector="menuItemAction_Themes:" target="Voe-Tx-rLC" id="LDI-ug-COQ"/>
+                                                            <action selector="menuItemAction_Themes:" target="Voe-Tx-rLC" id="wwu-XK-nIW"/>
                                                         </connections>
                                                     </menuItem>
                                                 </items>
@@ -749,22 +749,22 @@ CA
                                                 <action selector="menuItemAction_Zoom:" target="Voe-Tx-rLC" id="dZT-wl-uy0"/>
                                             </connections>
                                         </menuItem>
-                                        <menuItem title="Zoom To Fit" keyEquivalent="_" id="tu0-DY-mzp">
+                                        <menuItem title="Zoom To Fit" tag="1" keyEquivalent="_" id="tu0-DY-mzp">
                                             <connections>
                                                 <action selector="menuItemAction_Zoom:" target="Voe-Tx-rLC" id="3W9-6e-VF0"/>
                                             </connections>
                                         </menuItem>
-                                        <menuItem title="Actual Size" keyEquivalent="0" id="jee-iz-feR">
+                                        <menuItem title="Actual Size" tag="2" keyEquivalent="0" id="jee-iz-feR">
                                             <connections>
                                                 <action selector="menuItemAction_Zoom:" target="Voe-Tx-rLC" id="mQf-Sv-Wbt"/>
                                             </connections>
                                         </menuItem>
-                                        <menuItem title="Zoom In" keyEquivalent="+" id="ts8-Sf-Zdq">
+                                        <menuItem title="Zoom In" tag="3" keyEquivalent="+" id="ts8-Sf-Zdq">
                                             <connections>
                                                 <action selector="menuItemAction_Zoom:" target="Voe-Tx-rLC" id="t6A-qm-l9H"/>
                                             </connections>
                                         </menuItem>
-                                        <menuItem title="Zoom Out" keyEquivalent="-" id="tu1-Te-j5A">
+                                        <menuItem title="Zoom Out" tag="4" keyEquivalent="-" id="tu1-Te-j5A">
                                             <connections>
                                                 <action selector="menuItemAction_Zoom:" target="Voe-Tx-rLC" id="hxc-EQ-aSm"/>
                                             </connections>
@@ -775,7 +775,7 @@ CA
                                                 <action selector="menuItemAction_Rotate:" target="Voe-Tx-rLC" id="GBo-5w-qW3"/>
                                             </connections>
                                         </menuItem>
-                                        <menuItem title="Rotate Right" keyEquivalent="r" id="5A8-e1-kJN">
+                                        <menuItem title="Rotate Right" tag="1" keyEquivalent="r" id="5A8-e1-kJN">
                                             <connections>
                                                 <action selector="menuItemAction_Rotate:" target="Voe-Tx-rLC" id="RJ2-ux-DnI"/>
                                             </connections>

+ 3 - 6
PDF Office/PDF Master/Class/Common/KMCommonEnum.swift

@@ -14,15 +14,12 @@ import Foundation
     case anticlockwise // 逆时针
 }
 
-@objc enum KMZoomType: Int {
-    case z_in = 0   // 缩小
-    case out        // 放大
-}
-
 @objc enum KMPDFZoomType: Int {
     case width = 0
-    case fit
+    case fit   //适应页面
     case actualSize // 实际大小
+    case zoom_In
+    case zoom_Out
 }
 
 @objc enum KMKeyEquivalent: UInt32 {

+ 37 - 2
PDF Office/PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift

@@ -780,6 +780,10 @@ struct KMNMWCFlags {
         sideBarController?.reloadData()
     }
     
+    func reloadSideBar() {
+        sideBarController?.reloadData()
+    }
+    
     //MARK: - 左边侧边栏
     func initLeftSideController() {
         if botaViewController == nil {
@@ -797,7 +801,7 @@ struct KMNMWCFlags {
         return !infoContendSplitView.isSubviewCollapsed(infoSplitLeftView) //第一次点击时存在问题,待解决
     }
     
-    private func toggleOpenLeftSide(pdfSideBarType: KMPDFSidebarType) {
+    func toggleOpenLeftSide(pdfSideBarType: KMPDFSidebarType) {
         if(leftSidePaneIsOpen() == false) {
             let leftWidthNumber = UserDefaults.standard.object(forKey: CPDFViewLeftSidePaneWidthKey) as? NSNumber ?? MIN_SIDE_PANE_WIDTH
             infoContendSplitView.setPosition(MIN_SIDE_PANE_WIDTH.doubleValue, ofDividerAt: 0) //暂时无法记录上一次打开的宽度
@@ -821,7 +825,7 @@ struct KMNMWCFlags {
         }
     }
     
-    private func toggleCloseLeftSide() {
+    func toggleCloseLeftSide() {
         if(leftSidePaneIsOpen() == true) {
             infoContendSplitView.setPosition(0, ofDividerAt: 0)
         }
@@ -2888,6 +2892,17 @@ struct KMNMWCFlags {
         self.showPrintWindow()
     }
     
+    //MARK: - DisplayViewMode
+    func updatePDFViewDisplayMode(viewMode mode: CPDFDisplayViewMode = .singlePage, isbookMode bookMode: Bool = false) {
+        if bookMode == true {
+            listView.displaysAsBook = true
+            listView.displayTwoUp = true
+        } else {
+            listView.setDisplay(mode)
+        }
+        listView.layoutDocumentView()
+    }
+    
     //MARK: - 新增大纲
     @objc func addOutLineItemAction() {
         botaViewController?.outlineViewC.addOutline()
@@ -6959,6 +6974,26 @@ extension KMMainViewController {
                 self.listView.autoScales = false
             }
             break
+        case .zoom_In:
+            self.doZoomIn(nil)
+            
+            break
+        case .zoom_Out:
+            self.doZoomOut(nil)
+            
+            break
+        }
+    }
+    
+    func doZoomIn(_ sender: Any?) {
+        if (self.listView.canZoomIn) {
+            self.listView.zoomIn(nil)
+        }
+    }
+    
+    func doZoomOut(_ sender: Any?) {
+        if (self.listView.canZoomOut) {
+            self.listView.zoomOut(nil)
         }
     }