Explorar el Código

Merge branch 'develop_2025' of git.kdan.cc:Mac_PDF/PDF_Office into develop_2025

dinglingui hace 4 meses
padre
commit
3446ce5297
Se han modificado 16 ficheros con 682 adiciones y 125 borrados
  1. 10 4
      PDF Office/KMComponentLibrary/KMComponentLibrary/View/GroupItem/ComponentGroup.swift
  2. 68 84
      PDF Office/KMComponentLibrary/KMComponentLibrary/View/MenuItem/ComponentMenuItem.swift
  3. 0 10
      PDF Office/KMComponentLibrary/KMComponentLibrary/View/MenuItem/ComponentMenuitemProperty.swift
  4. 6 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/Contents.json
  5. 12 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/arrow_left.imageset/Contents.json
  6. 80 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/arrow_left.imageset/arrow_left.pdf
  7. 12 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/arrow_right.imageset/Contents.json
  8. 80 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/arrow_right.imageset/arrow_right.pdf
  9. 12 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/first_vertical.imageset/Contents.json
  10. 84 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/first_vertical.imageset/first_vertical.pdf
  11. 12 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/last_vertical.imageset/Contents.json
  12. 84 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/last_vertical.imageset/last_vertical.pdf
  13. 12 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/tick_Green.imageset/Contents.json
  14. 76 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/tick_Green.imageset/tick_Green.pdf
  15. 127 20
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFView/SideBar/KMPDFSideBarController.swift
  16. 7 7
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFView/SideBar/KMPDFSideBarController.xib

+ 10 - 4
PDF Office/KMComponentLibrary/KMComponentLibrary/View/GroupItem/ComponentGroup.swift

@@ -32,6 +32,8 @@ public class ComponentGroup: NSView, NibLoadable {
     
     
     public var menuItemArr: [ComponentMenuitemProperty] = []
     public var menuItemArr: [ComponentMenuitemProperty] = []
     
     
+    public var clickedAutoHide = true //点击Item后,是否自动隐藏
+    
     var subGroupView: ComponentGroup!
     var subGroupView: ComponentGroup!
     
     
     weak open var groupDelegate: ComponentGroupDelegate?
     weak open var groupDelegate: ComponentGroupDelegate?
@@ -355,9 +357,13 @@ extension ComponentGroup: NSCollectionViewDataSource {
                 
                 
                 self?.groupDelegate?.componentGroupDidSelect?(group: self, menuItemProperty: property)
                 self?.groupDelegate?.componentGroupDidSelect?(group: self, menuItemProperty: property)
                 
                 
-                self?.groupDelegate?.componentGroupDidDismiss?(group: self)
-                
-                self?.removeGroupView()
+                if self?.clickedAutoHide == true {
+                    self?.groupDelegate?.componentGroupDidDismiss?(group: self)
+                    
+                    self?.removeGroupView()
+                    
+                }
+                    
             }
             }
         }
         }
         
         
@@ -410,6 +416,6 @@ extension ComponentGroup: NSCollectionViewDelegateFlowLayout {
     }
     }
     
     
     public func collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>) {
     public func collectionView(_ collectionView: NSCollectionView, didSelectItemsAt indexPaths: Set<IndexPath>) {
-        print("1")
+    
     }
     }
 }
 }

+ 68 - 84
PDF Office/KMComponentLibrary/KMComponentLibrary/View/MenuItem/ComponentMenuItem.swift

@@ -21,8 +21,7 @@ public class ComponentMenuItem: ComponentBaseXibView {
     @IBOutlet var separatorDivider: ComponentDivider!
     @IBOutlet var separatorDivider: ComponentDivider!
      
      
     @IBOutlet var titleLabelLeftConst: NSLayoutConstraint!
     @IBOutlet var titleLabelLeftConst: NSLayoutConstraint!
-    
-    
+     
     // MARK: Private Property
     // MARK: Private Property
     private var _properties : ComponentMenuitemProperty = ComponentMenuitemProperty()
     private var _properties : ComponentMenuitemProperty = ComponentMenuitemProperty()
     
     
@@ -62,37 +61,36 @@ public class ComponentMenuItem: ComponentBaseXibView {
             
             
             ComponentLibrary.shared.configMenuItemComponent(properties: _properties)
             ComponentLibrary.shared.configMenuItemComponent(properties: _properties)
             
             
-            self.setupUI()
+            setupUI()
             
             
-            self.refreshUI()
+            refreshUI()
         }
         }
     }
     }
     
     
     //MARK: - SetupUI
     //MARK: - SetupUI
     func setupUI() {
     func setupUI() {
-        self.contendBox.isHidden = true
-        self.separatorBox.isHidden = true
+        contendBox.isHidden = true
+        separatorBox.isHidden = true
         
         
-        if self.properties.type == .normal {
-            self.contendBox.isHidden = false
+        if properties.type == .normal {
+            contendBox.isHidden = false
             
             
-        } else if self.properties.type == .divider {
-            self.separatorBox.isHidden = false
-            self.separatorBox.borderWidth = 0
-            self.separatorBox.borderColor = NSColor.clear
-            self.separatorBox.fillColor = NSColor.clear
+        } else if properties.type == .divider {
+            separatorBox.isHidden = false
+            separatorBox.borderWidth = 0
+            separatorBox.borderColor = NSColor.clear
+            separatorBox.fillColor = NSColor.clear
             
             
             let property: ComponentDividerProperty = ComponentDividerProperty(type: .horizontal, dash: false)
             let property: ComponentDividerProperty = ComponentDividerProperty(type: .horizontal, dash: false)
-            self.separatorDivider.properties = property
+            separatorDivider.properties = property
             
             
-        } else if self.properties.type == .header {
+        } else if properties.type == .header {
             
             
         }
         }
-        
-        
+         
         let checkboxProperties: ComponentCheckBoxProperty = ComponentCheckBoxProperty.init(size: .m,
         let checkboxProperties: ComponentCheckBoxProperty = ComponentCheckBoxProperty.init(size: .m,
                                                                                    state: .normal,
                                                                                    state: .normal,
-                                                                                   isDisabled: self.properties.isDisabled,
+                                                                                   isDisabled: properties.isDisabled,
                                                                                    showhelp: false,
                                                                                    showhelp: false,
                                                                                    text: nil,
                                                                                    text: nil,
                                                                                    checkboxType: .normal)
                                                                                    checkboxType: .normal)
@@ -100,7 +98,7 @@ public class ComponentMenuItem: ComponentBaseXibView {
         checkBox.properties = checkboxProperties
         checkBox.properties = checkboxProperties
         
         
         
         
-        checkBox.properties.isDisabled = self.properties.isDisabled
+        checkBox.properties.isDisabled = properties.isDisabled
         checkBox.reloadData()
         checkBox.reloadData()
         
         
         if properties.lefticon != nil {
         if properties.lefticon != nil {
@@ -123,79 +121,65 @@ public class ComponentMenuItem: ComponentBaseXibView {
             righticonImage.isHidden = true
             righticonImage.isHidden = true
         }
         }
         
         
-        if self.properties.keyEquivalent != nil &&
-            self.properties.keyEquivalent?.isEmpty == false {
-            self.keyEquivalentLabel.isHidden = false
+        if properties.keyEquivalent != nil &&
+            properties.keyEquivalent?.isEmpty == false {
+            keyEquivalentLabel.isHidden = false
         } else {
         } else {
-            self.keyEquivalentLabel.isHidden = true
+            keyEquivalentLabel.isHidden = true
         }
         }
         
         
-        if self.properties.multipleSelect == true {
-            self.checkBox.isHidden = false
-            self.leftIconImage.isHidden = true
-            self.righticonImage.isHidden = true
-            self.titleLabelLeftConst.constant = 40
+        if properties.multipleSelect == true {
+            checkBox.isHidden = false
+            leftIconImage.isHidden = true
+            righticonImage.isHidden = true
+            titleLabelLeftConst.constant = 40
         } else {
         } else {
-            self.checkBox.isHidden = true
+            checkBox.isHidden = true
         }
         }
         
         
-        self.properties.propertyInfo.viewWidth = 200
-        
-        self.titleLabel.stringValue = self.properties.text
+         properties.propertyInfo.viewWidth = 200
+         
+        titleLabel.stringValue = properties.text
     }
     }
     
     
     func refreshUI() {
     func refreshUI() {
         
         
-        if self.properties.itemSelected == true {
-            self.checkBox.properties.checkboxType = .selected
-            self.checkBox.refreshUI()
+        if properties.itemSelected == true {
+            checkBox.properties.checkboxType = .selected
+            checkBox.refreshUI()
         } else {
         } else {
-            self.checkBox.properties.checkboxType = .normal
-            self.checkBox.refreshUI()
+            checkBox.properties.checkboxType = .normal
+            checkBox.refreshUI()
         }
         }
         
         
-        self.contendBox.borderWidth = 0
-        self.contendBox.borderColor = NSColor.clear
+        contendBox.borderWidth = 0
+        contendBox.borderColor = NSColor.clear
         
         
-        var fillColor = self.properties.propertyInfo.color_nor
-        var textColor = self.properties.propertyInfo.textColor
-        var leftIconImg = self.properties.propertyInfo.leftIconImage_nor
-        var rightIconImg = self.properties.propertyInfo.rightIconImage_nor
+        var fillColor = properties.propertyInfo.color_nor
+        var textColor = properties.propertyInfo.textColor
         
         
-        if self.properties.state == .hover {
-            fillColor = self.properties.propertyInfo.color_hov
-            leftIconImg = self.properties.propertyInfo.leftIconImage_hov
-            rightIconImg = self.properties.propertyInfo.rightIconImage_hov
+        if properties.state == .hover {
+            fillColor = properties.propertyInfo.color_hov
         }
         }
-        if self.properties.itemSelected == true {
-            fillColor = self.properties.propertyInfo.color_active
+        if properties.itemSelected == true {
+            fillColor = properties.propertyInfo.color_active
         }
         }
         
         
-        if self.properties.isDisabled == true {
-            fillColor = self.properties.propertyInfo.color_dis
-            textColor = self.properties.propertyInfo.textColor_dis
-            leftIconImg = self.properties.propertyInfo.leftIconImage_dis
-            rightIconImg = self.properties.propertyInfo.rightIconImage_dis
+        if properties.isDisabled == true {
+            fillColor = properties.propertyInfo.color_dis
+            textColor = properties.propertyInfo.textColor_dis
         }
         }
         
         
-        self.contendBox.fillColor = fillColor
-        
-        self.titleLabel.textColor = textColor
+        contendBox.fillColor = fillColor
         
         
-        if let image = leftIconImg {
-            self.leftIconImage.image = image
-        }
-        
-        if let image = rightIconImg {
-            self.righticonImage.image = image
-        }
+        titleLabel.textColor = textColor
         
         
-        self.titleLabel.font = properties.propertyInfo.textFont
-        self.keyEquivalentLabel.font = properties.propertyInfo.textFont
+        titleLabel.font = properties.propertyInfo.textFont
+        keyEquivalentLabel.font = properties.propertyInfo.textFont
         
         
-        self.keyEquivalentLabel.textColor = properties.propertyInfo.keyEquivalent_textColor
+        keyEquivalentLabel.textColor = properties.propertyInfo.keyEquivalent_textColor
         
         
-        self.keyEquivalentLabel.stringValue = properties.keyEquivalent ?? ""
+        keyEquivalentLabel.stringValue = properties.keyEquivalent ?? ""
         
         
     }
     }
     
     
@@ -208,14 +192,14 @@ public class ComponentMenuItem: ComponentBaseXibView {
     public override func mouseEntered(with event: NSEvent) {
     public override func mouseEntered(with event: NSEvent) {
         super.mouseEntered(with: event)
         super.mouseEntered(with: event)
         
         
-        if self.properties.isDisabled == false &&
-            self.properties.itemSelected == false {
+        if properties.isDisabled == false &&
+            properties.itemSelected == false {
             
             
-            self.properties.state = .hover
+            properties.state = .hover
         }
         }
-        self.refreshUI()
+        refreshUI()
         
         
-        guard let callBack = self.mouseHandle else {
+        guard let callBack = mouseHandle else {
             return
             return
         }
         }
         callBack(self, .enter, event)
         callBack(self, .enter, event)
@@ -224,7 +208,7 @@ public class ComponentMenuItem: ComponentBaseXibView {
     public override func mouseMoved(with event: NSEvent) {
     public override func mouseMoved(with event: NSEvent) {
         super.mouseMoved(with: event)
         super.mouseMoved(with: event)
         
         
-        guard let callBack = self.mouseHandle else {
+        guard let callBack = mouseHandle else {
             return
             return
         }
         }
         callBack(self, .move, event)
         callBack(self, .move, event)
@@ -233,14 +217,14 @@ public class ComponentMenuItem: ComponentBaseXibView {
     public override func mouseExited(with event: NSEvent) {
     public override func mouseExited(with event: NSEvent) {
         super.mouseExited(with: event)
         super.mouseExited(with: event)
         
         
-        if self.properties.isDisabled == false &&
-            self.properties.itemSelected == false  {
-            self.properties.state = .normal
+        if properties.isDisabled == false &&
+            properties.itemSelected == false  {
+            properties.state = .normal
         }
         }
         
         
-        self.refreshUI()
+        refreshUI()
          
          
-        guard let callBack = self.mouseHandle else {
+        guard let callBack = mouseHandle else {
             return
             return
         }
         }
         callBack(self, .exit, event)
         callBack(self, .exit, event)
@@ -248,14 +232,14 @@ public class ComponentMenuItem: ComponentBaseXibView {
     
     
     public override func mouseDown(with event: NSEvent) {
     public override func mouseDown(with event: NSEvent) {
 
 
-        if self.properties.isDisabled == false {
-            if self.properties.itemSelected == true {
-                self.properties.itemSelected = false
+        if properties.isDisabled == false {
+            if properties.itemSelected == true {
+                properties.itemSelected = false
             } else {
             } else {
-                self.properties.itemSelected = true
+                properties.itemSelected = true
             }
             }
         }
         }
-        self.refreshUI()
+        refreshUI()
         
         
     }
     }
     
     

+ 0 - 10
PDF Office/KMComponentLibrary/KMComponentLibrary/View/MenuItem/ComponentMenuitemProperty.swift

@@ -68,16 +68,6 @@ import Cocoa
 
 
 public class MenuitemPropertyInfo: ComponentPropertyInfo {
 public class MenuitemPropertyInfo: ComponentPropertyInfo {
     
     
-    var leftIconImage_nor: NSImage?
-    var leftIconImage_hov : NSImage?
-    var leftIconImage_active : NSImage?
-    var leftIconImage_dis : NSImage?
-    
-    var rightIconImage_nor: NSImage?
-    var rightIconImage_hov : NSImage?
-    var rightIconImage_active : NSImage?
-    var rightIconImage_dis : NSImage?
-     
     var keyEquivalent_textColor: NSColor = .clear
     var keyEquivalent_textColor: NSColor = .clear
     
     
     
     

+ 6 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/Contents.json

@@ -0,0 +1,6 @@
+{
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 12 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/arrow_left.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "arrow_left.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 80 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/arrow_left.imageset/arrow_left.pdf

@@ -0,0 +1,80 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 4.000000 4.804749 cm
+0.000000 0.000000 0.000000 scn
+7.707107 13.902358 m
+8.097631 13.511834 8.097631 12.878669 7.707107 12.488145 c
+3.414213 8.195251 l
+15.000000 8.195251 l
+15.552285 8.195251 16.000000 7.747536 16.000000 7.195251 c
+16.000000 6.642967 15.552285 6.195251 15.000000 6.195251 c
+3.414213 6.195251 l
+7.707107 1.902358 l
+8.097631 1.511834 8.097631 0.878669 7.707107 0.488145 c
+7.316583 0.097620 6.683417 0.097620 6.292893 0.488145 c
+0.292893 6.488145 l
+-0.097631 6.878669 -0.097631 7.511834 0.292893 7.902358 c
+6.292893 13.902358 l
+6.683417 14.292883 7.316583 14.292883 7.707107 13.902358 c
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  677
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000767 00000 n
+0000000789 00000 n
+0000000962 00000 n
+0000001036 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1095
+%%EOF

+ 12 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/arrow_right.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "arrow_right.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 80 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/arrow_right.imageset/arrow_right.pdf

@@ -0,0 +1,80 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 4.000000 4.804749 cm
+0.000000 0.000000 0.000000 scn
+8.292893 13.902358 m
+8.683417 14.292883 9.316583 14.292883 9.707107 13.902358 c
+15.707107 7.902358 l
+16.097631 7.511834 16.097631 6.878669 15.707107 6.488145 c
+9.707107 0.488145 l
+9.316583 0.097620 8.683417 0.097620 8.292893 0.488145 c
+7.902369 0.878669 7.902369 1.511834 8.292893 1.902358 c
+12.585787 6.195251 l
+1.000000 6.195251 l
+0.447715 6.195251 0.000000 6.642967 0.000000 7.195251 c
+0.000000 7.747536 0.447715 8.195251 1.000000 8.195251 c
+12.585787 8.195251 l
+8.292893 12.488145 l
+7.902369 12.878669 7.902369 13.511834 8.292893 13.902358 c
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  674
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000764 00000 n
+0000000786 00000 n
+0000000959 00000 n
+0000001033 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1092
+%%EOF

+ 12 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/first_vertical.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "first_vertical.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 84 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/first_vertical.imageset/first_vertical.pdf

@@ -0,0 +1,84 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 5.000000 6.902344 cm
+0.000000 0.000000 0.000000 scn
+1.750000 11.097656 m
+1.335786 11.097656 1.000000 10.649941 1.000000 10.097656 c
+1.000000 9.545372 1.335786 9.097656 1.750000 9.097656 c
+12.250000 9.097656 l
+12.664214 9.097656 13.000000 9.545372 13.000000 10.097656 c
+13.000000 10.649941 12.664214 11.097656 12.250000 11.097656 c
+1.750000 11.097656 l
+h
+7.707107 7.804763 m
+7.316583 8.195288 6.683417 8.195288 6.292893 7.804763 c
+0.292893 1.804763 l
+-0.097631 1.414239 -0.097631 0.781074 0.292893 0.390550 c
+0.683417 0.000025 1.316582 0.000025 1.707107 0.390550 c
+7.000000 5.683443 l
+12.292893 0.390550 l
+12.683417 0.000025 13.316583 0.000025 13.707107 0.390550 c
+14.097631 0.781074 14.097631 1.414239 13.707107 1.804763 c
+7.707107 7.804763 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  819
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000909 00000 n
+0000000931 00000 n
+0000001104 00000 n
+0000001178 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1237
+%%EOF

+ 12 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/last_vertical.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "last_vertical.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 84 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/last_vertical.imageset/last_vertical.pdf

@@ -0,0 +1,84 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 5.000000 5.902344 cm
+0.000000 0.000000 0.000000 scn
+1.707107 10.804763 m
+1.316582 11.195288 0.683417 11.195288 0.292893 10.804763 c
+-0.097631 10.414239 -0.097631 9.781074 0.292893 9.390550 c
+6.292893 3.390550 l
+6.683417 3.000026 7.316583 3.000026 7.707107 3.390550 c
+13.707107 9.390550 l
+14.097631 9.781074 14.097631 10.414239 13.707107 10.804763 c
+13.316583 11.195288 12.683417 11.195288 12.292893 10.804763 c
+7.000000 5.511869 l
+1.707107 10.804763 l
+h
+1.750000 2.097656 m
+1.335786 2.097656 1.000000 1.649941 1.000000 1.097656 c
+1.000000 0.545371 1.335786 0.097656 1.750000 0.097656 c
+12.250000 0.097656 l
+12.664214 0.097656 13.000000 0.545371 13.000000 1.097656 c
+13.000000 1.649941 12.664214 2.097656 12.250000 2.097656 c
+1.750000 2.097656 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  821
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 24.000000 24.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000911 00000 n
+0000000933 00000 n
+0000001106 00000 n
+0000001180 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1239
+%%EOF

+ 12 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/tick_Green.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "tick_Green.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 76 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/Toolbar/Sidebar/tick_Green.imageset/tick_Green.pdf

@@ -0,0 +1,76 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 2.000000 3.203156 cm
+0.054902 0.572549 0.333333 scn
+11.804739 8.601583 m
+12.065088 8.341233 12.065088 7.919123 11.804739 7.658773 c
+4.471405 0.325439 l
+4.211055 0.065090 3.788945 0.065090 3.528596 0.325439 c
+0.195262 3.658773 l
+-0.065087 3.919123 -0.065087 4.341233 0.195262 4.601582 c
+0.455612 4.861932 0.877722 4.861932 1.138071 4.601582 c
+4.000000 1.739653 l
+10.861930 8.601583 l
+11.122279 8.861932 11.544388 8.861932 11.804739 8.601583 c
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  518
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000034 00000 n
+0000000608 00000 n
+0000000630 00000 n
+0000000803 00000 n
+0000000877 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+936
+%%EOF

+ 127 - 20
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFView/SideBar/KMPDFSideBarController.swift

@@ -12,7 +12,7 @@ import KMComponentLibrary
     
     
     //BOTA模式刷新回调
     //BOTA模式刷新回调
     @objc optional func kmPDFSideBarControllerDidSidebarTypeUpdated(_ view: KMPDFSideBarController)
     @objc optional func kmPDFSideBarControllerDidSidebarTypeUpdated(_ view: KMPDFSideBarController)
- 
+    
     @objc optional func kmPDFSideBarControllerDidGotoPage(_ view: KMPDFSideBarController, _ pageIndex: Int)
     @objc optional func kmPDFSideBarControllerDidGotoPage(_ view: KMPDFSideBarController, _ pageIndex: Int)
 }
 }
 
 
@@ -36,7 +36,19 @@ class KMPDFSideBarController: NSViewController {
     let outlineProperty: ComponentSideBarItemProperty = ComponentSideBarItemProperty(state: .normal, icon: ComponentLibrary.shared.image(forResource: "Sidebar_outline"))
     let outlineProperty: ComponentSideBarItemProperty = ComponentSideBarItemProperty(state: .normal, icon: ComponentLibrary.shared.image(forResource: "Sidebar_outline"))
     let bookmarkProperty: ComponentSideBarItemProperty = ComponentSideBarItemProperty(state: .normal, icon: ComponentLibrary.shared.image(forResource: "Sidebar_bookmark"))
     let bookmarkProperty: ComponentSideBarItemProperty = ComponentSideBarItemProperty(state: .normal, icon: ComponentLibrary.shared.image(forResource: "Sidebar_bookmark"))
     let annotationProperty: ComponentSideBarItemProperty = ComponentSideBarItemProperty(state: .normal, icon: ComponentLibrary.shared.image(forResource: "Sidebar_annotation"))
     let annotationProperty: ComponentSideBarItemProperty = ComponentSideBarItemProperty(state: .normal, icon: ComponentLibrary.shared.image(forResource: "Sidebar_annotation"))
-     
+    
+    let firstPageProperty = ComponentMenuitemProperty(lefticon: NSImage(named: "first_vertical"), righticon: nil, text: KMLocalizedString("First Page"))
+    let lastPageProperty = ComponentMenuitemProperty(lefticon: NSImage(named: "last_vertical"), righticon: nil, text: KMLocalizedString("Last Page"))
+    let previouseProperty = ComponentMenuitemProperty(lefticon: NSImage(named: "arrow_left"), righticon: nil, text: KMLocalizedString("Previous Page"))
+    let nextProperty = ComponentMenuitemProperty(lefticon: NSImage(named: "arrow_right"), righticon: nil, text: KMLocalizedString("Next Page"))
+    
+    private var groupView: ComponentGroup!
+    
+    var firstPage_show: Bool = false
+    var lastPage_show: Bool = false
+    var previous_show: Bool = false
+    var next_show: Bool = false
+    
     override func viewDidLoad() {
     override func viewDidLoad() {
         super.viewDidLoad()
         super.viewDidLoad()
         // Do view setup here.
         // Do view setup here.
@@ -46,7 +58,7 @@ class KMPDFSideBarController: NSViewController {
         setupProperty()
         setupProperty()
         
         
         setUpPageTurnerData()
         setUpPageTurnerData()
-         
+        
         reloadData()
         reloadData()
     }
     }
     
     
@@ -66,22 +78,6 @@ class KMPDFSideBarController: NSViewController {
         
         
     }
     }
     
     
-    func setUpPageTurnerData() {
-        var count = 1
-        if let pdfView = self.pdfView {
-            count = Int(pdfView.document.pageCount)
-        }
-        let turnerProperty: ComponentSidebarPageTurnerProperty = ComponentSidebarPageTurnerProperty(currentIndex: 1, totalCount: count)
-//        turnerProperty.firstPage_show = self.firstPageBtn.state == .on
-//        turnerProperty.lastPage_show = self.lastPageBtn.state == .on
-//        turnerProperty.previous_show = self.previousBtn.state == .on
-//        turnerProperty.next_show = self.nextBtn.state == .on
-        
-        
-        pageTurnerView.properties = turnerProperty
-        pageTurnerView.delegate = self
-        
-    }
     
     
     //MARK: - reloadData
     //MARK: - reloadData
     func reloadData() {
     func reloadData() {
@@ -90,6 +86,7 @@ class KMPDFSideBarController: NSViewController {
         reloadPageTurnerData()
         reloadPageTurnerData()
     }
     }
     
     
+    //MARK: - BOTA
     func reloadBOTAData() {
     func reloadBOTAData() {
         searchProperty.state = .normal
         searchProperty.state = .normal
         thumbnailProperty.state = .normal
         thumbnailProperty.state = .normal
@@ -115,6 +112,23 @@ class KMPDFSideBarController: NSViewController {
         annotationItem.reloadData()
         annotationItem.reloadData()
     }
     }
     
     
+    //MARK: - PageTurner
+    func setUpPageTurnerData() {
+        var count = 1
+        if let pdfView = self.pdfView {
+            count = Int(pdfView.document.pageCount)
+        }
+        let turnerProperty: ComponentSidebarPageTurnerProperty = ComponentSidebarPageTurnerProperty(currentIndex: 1, totalCount: count)
+        turnerProperty.firstPage_show = self.firstPage_show
+        turnerProperty.lastPage_show = self.lastPage_show
+        turnerProperty.previous_show = self.previous_show
+        turnerProperty.next_show = next_show
+        
+        pageTurnerView.properties = turnerProperty
+        pageTurnerView.delegate = self
+        
+    }
+    
     func reloadPageTurnerData() {
     func reloadPageTurnerData() {
         guard let pdfview = self.pdfView else {
         guard let pdfview = self.pdfView else {
             return
             return
@@ -124,8 +138,56 @@ class KMPDFSideBarController: NSViewController {
         pageTurnerView.properties.totalCount = Int(pdfview.document.pageCount)
         pageTurnerView.properties.totalCount = Int(pdfview.document.pageCount)
         pageTurnerView.reloadData()
         pageTurnerView.reloadData()
     }
     }
-   
     
     
+    //MARK: - PageTurner Menu
+    func showPageTurnMenuWithPoint(_ point: CGPoint) {
+        if (groupView?.superview) != nil {
+            return
+        }
+        
+        var items: [ComponentMenuitemProperty] = []
+        if firstPage_show == false {
+            items.append(firstPageProperty)
+        }
+        if lastPage_show == false {
+            items.append(lastPageProperty)
+        }
+        if previous_show == false {
+            items.append(previouseProperty)
+        }
+        if next_show == false {
+            items.append(nextProperty)
+        }
+        
+        var viewHeight: CGFloat = 8.0
+        for item in items {
+            item.state = .normal
+            item.itemSelected = false
+            
+            if item.type == .normal {
+                viewHeight += 36
+            } else if item.type == .divider {
+                viewHeight += 8
+            }
+        }
+        
+        if groupView == nil {
+            groupView = ComponentGroup.createFromNib(in: ComponentLibrary.shared.componentBundle())
+        }
+        groupView.clickedAutoHide = false
+        groupView?.frame = CGRectMake(0, 0, 160, viewHeight)
+        groupView?.reloadData()
+        groupView.groupDelegate = self
+        groupView.showWithPoint(point, relativeTo: self.contendBox)
+        groupView?.updateGroupInfo(items)
+         
+    }
+    
+    func hideGroupView() {
+        groupView?.removeGroupView()
+        
+    }
+     
     //MARK: - Action
     //MARK: - Action
     @objc func sidebarItemClicked(_ sender: ComponentSideBarItem) {
     @objc func sidebarItemClicked(_ sender: ComponentSideBarItem) {
         if sender == searchItem {
         if sender == searchItem {
@@ -164,6 +226,16 @@ class KMPDFSideBarController: NSViewController {
         
         
         delegate?.kmPDFSideBarControllerDidSidebarTypeUpdated?(self)
         delegate?.kmPDFSideBarControllerDidSidebarTypeUpdated?(self)
     }
     }
+    
+    //MARK: - MouseEvent
+    override func rightMouseUp(with event: NSEvent) {
+        super.rightMouseUp(with: event)
+        
+        let point = self.view.convert(event.locationInWindow, from: nil)
+        
+        showPageTurnMenuWithPoint(point)
+        
+    }
 }
 }
 
 
 
 
@@ -185,3 +257,38 @@ extension KMPDFSideBarController: ComponentSidebarDelegate {
     
     
     
     
 }
 }
+
+
+//MARK: - ComponentGroupDelegate
+extension KMPDFSideBarController: ComponentGroupDelegate {
+    func componentGroupDidDismiss(group: ComponentGroup?) {
+        
+    }
+    
+    func componentGroupDidSelect(group: ComponentGroup?, menuItemProperty: ComponentMenuitemProperty?) {
+        if menuItemProperty == firstPageProperty {
+            firstPage_show = !firstPage_show
+            
+            firstPageProperty.righticon = firstPage_show ? NSImage(named: "tick_Green") : nil
+            
+        } else if menuItemProperty == lastPageProperty {
+            lastPage_show = !lastPage_show
+            
+            lastPageProperty.righticon = lastPage_show ? NSImage(named: "tick_Green") : nil
+            
+        } else if menuItemProperty == previouseProperty {
+            previous_show = !previous_show
+            
+            previouseProperty.righticon = previous_show ? NSImage(named: "tick_Green") : nil
+            
+        } else if menuItemProperty == nextProperty {
+            next_show = !next_show
+            
+            nextProperty.righticon = next_show ? NSImage(named: "tick_Green") : nil
+        }
+        
+        group?.reloadData()
+        
+        setUpPageTurnerData()
+    }
+}

+ 7 - 7
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFView/SideBar/KMPDFSideBarController.xib

@@ -21,17 +21,17 @@
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="Hz6-mo-xeY">
         <customView id="Hz6-mo-xeY">
-            <rect key="frame" x="0.0" y="0.0" width="44" height="555"/>
+            <rect key="frame" x="0.0" y="0.0" width="44" height="624"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
             <subviews>
             <subviews>
                 <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="QVI-Y2-UQb">
                 <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="QVI-Y2-UQb">
-                    <rect key="frame" x="0.0" y="0.0" width="44" height="555"/>
+                    <rect key="frame" x="0.0" y="0.0" width="44" height="624"/>
                     <view key="contentView" id="bgs-Pl-uqU">
                     <view key="contentView" id="bgs-Pl-uqU">
-                        <rect key="frame" x="0.0" y="0.0" width="44" height="555"/>
+                        <rect key="frame" x="0.0" y="0.0" width="44" height="624"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                         <subviews>
                             <customView translatesAutoresizingMaskIntoConstraints="NO" id="rk5-tq-YQl">
                             <customView translatesAutoresizingMaskIntoConstraints="NO" id="rk5-tq-YQl">
-                                <rect key="frame" x="0.0" y="335" width="44" height="220"/>
+                                <rect key="frame" x="0.0" y="404" width="44" height="220"/>
                                 <subviews>
                                 <subviews>
                                     <customView translatesAutoresizingMaskIntoConstraints="NO" id="yIs-SF-bEs" customClass="ComponentSideBarItem" customModule="KMComponentLibrary">
                                     <customView translatesAutoresizingMaskIntoConstraints="NO" id="yIs-SF-bEs" customClass="ComponentSideBarItem" customModule="KMComponentLibrary">
                                         <rect key="frame" x="0.0" y="176" width="44" height="44"/>
                                         <rect key="frame" x="0.0" y="176" width="44" height="44"/>
@@ -85,10 +85,10 @@
                                 </constraints>
                                 </constraints>
                             </customView>
                             </customView>
                             <customView translatesAutoresizingMaskIntoConstraints="NO" id="T4t-bm-SNF" customClass="ComponentSidebarPageTurner" customModule="KMComponentLibrary">
                             <customView translatesAutoresizingMaskIntoConstraints="NO" id="T4t-bm-SNF" customClass="ComponentSidebarPageTurner" customModule="KMComponentLibrary">
-                                <rect key="frame" x="6" y="0.0" width="32" height="214"/>
+                                <rect key="frame" x="6" y="0.0" width="32" height="350"/>
                                 <constraints>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="32" id="PHz-1f-VP0"/>
                                     <constraint firstAttribute="width" constant="32" id="PHz-1f-VP0"/>
-                                    <constraint firstAttribute="height" constant="214" id="cKr-dl-Cmg"/>
+                                    <constraint firstAttribute="height" constant="350" id="cKr-dl-Cmg"/>
                                 </constraints>
                                 </constraints>
                             </customView>
                             </customView>
                         </subviews>
                         </subviews>
@@ -107,7 +107,7 @@
                 <constraint firstItem="QVI-Y2-UQb" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="Gbq-ND-8vc"/>
                 <constraint firstItem="QVI-Y2-UQb" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="Gbq-ND-8vc"/>
                 <constraint firstAttribute="bottom" secondItem="QVI-Y2-UQb" secondAttribute="bottom" id="dxP-eS-K03"/>
                 <constraint firstAttribute="bottom" secondItem="QVI-Y2-UQb" secondAttribute="bottom" id="dxP-eS-K03"/>
             </constraints>
             </constraints>
-            <point key="canvasLocation" x="-43" y="257.5"/>
+            <point key="canvasLocation" x="-43" y="223"/>
         </customView>
         </customView>
     </objects>
     </objects>
 </document>
 </document>