Просмотр исходного кода

【2025】【Markup】默认颜色值修改&重置处理

niehaoyu 1 месяц назад
Родитель
Сommit
270f49b880

+ 51 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Line/KMLineController.swift

@@ -510,6 +510,57 @@ extension KMLineController: ComponentCColorDelegate {
             KMAnnotationPropertiesColorManager.manager.updateDefaultColors(colors, forKey: KMArrowPropertColorsKey)
         }
     }
+    
+    func componentCColorDidRightMouseUpWithStrings(_ view: NSView) -> [String] {
+        return [KMLocalizedString("Change Color"), KMLocalizedString("Restore default color")]
+    }
+    
+    func componentCColorDidRightMenuItemClicked(_ view: NSView, menuItemProperty: ComponentMenuitemProperty?) {
+        if menuItemProperty?.text == KMLocalizedString("Change Color") {
+            if NSColorPanel.sharedColorPanelExists {
+                NSColorPanel.shared.setTarget(nil)
+                NSColorPanel.shared.setAction(nil)
+            }
+            NSColorPanel.shared.setTarget(self)
+            NSColorPanel.shared.setAction(#selector(colorChoose(_:)))
+            if let colorItem = view as? ComponentCColorItem, let color = colorItem.properties?.color {
+                NSColorPanel.shared.color = color
+            }
+            
+            let viewRect = view.superview?.convert(view.frame, to: nil) ?? CGRectZero
+            var rect = NSColorPanel.shared.frame
+            rect.origin.x = viewRect.minX
+            rect.origin.y = viewRect.minY - 30
+            NSColorPanel.shared.setFrame(rect, display: true)
+            
+            NSColorPanel.shared.orderFront(nil)
+        } else if menuItemProperty?.text == KMLocalizedString("Restore default color") {
+            if let colorItem = colorGroup.rightClickedItem {
+                var colors: [NSColor] = []
+                if self.lineAnnotations.count > 0 || viewManager?.subToolMode == .Line {
+                    colors = KMAnnotationPropertiesColorManager.manager.defaultColors(key: KMLinePropertColorsKey)
+                } else if self.arrowAnnotations.count > 0 || viewManager?.subToolMode == .Arrow {
+                    colors = KMAnnotationPropertiesColorManager.manager.defaultColors(key: KMArrowPropertColorsKey)
+                }
+                if colors.count > 4, colorItem.itemIndex >= 0, colorItem.itemIndex < colors.count {
+                    colorItem.properties?.color = colors[colorItem.itemIndex]
+                    colorItem.reloadData()
+                    colorGroup.componentCColorDidChoosePanelColor(colorGroup, nil)
+                }
+            }
+        }
+    }
+    
+    @objc func colorChoose(_ sender: Any) {
+        if let colorItem = colorGroup.rightClickedItem {
+            let color = NSColorPanel.shared.color
+            colorItem.properties?.color = color
+            
+            colorItem.reloadData()
+            
+            colorGroup.componentCColorDidChoosePanelColor(colorGroup, nil)
+        }
+    }
 }
 
 //MARK: - ComponentSliderDelegate

+ 74 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Rectangle/KMRectangleController.swift

@@ -31,6 +31,8 @@ class KMRectangleController: NSViewController {
     private let solidProperty = ComponentCSelectorProperty.init(size: .s, state: .normal, text: "", iconImage: NSImage(named: "lineStyle_solid"))
     private let dashProperty = ComponentCSelectorProperty.init(size: .s, state: .normal, text: "", iconImage: NSImage(named: "lineStyle_dash"))
     
+    private var editColorGroup: ComponentCColorGroup?
+    
     private var annotations: [CPDFAnnotation] = [] //CPDFCircleAnnotation, CPDFSquareAnnotation
     
     private var circleAnnotations: [CPDFCircleAnnotation] {
@@ -427,6 +429,78 @@ extension KMRectangleController: ComponentCColorDelegate {
         } 
     }
     
+    func componentCColorDidRightMouseUpWithStrings(_ view: NSView) -> [String] {
+        return [KMLocalizedString("Change Color"), KMLocalizedString("Restore default color")]
+    }
+    
+    func componentCColorDidRightMenuItemClicked(_ colorGroup: ComponentCColorGroup, _ view: NSView, menuItemProperty: ComponentMenuitemProperty?) {
+        self.editColorGroup = colorGroup
+        
+        if menuItemProperty?.text == KMLocalizedString("Change Color") {
+            if NSColorPanel.sharedColorPanelExists {
+                NSColorPanel.shared.setTarget(nil)
+                NSColorPanel.shared.setAction(nil)
+            }
+            NSColorPanel.shared.setTarget(self)
+            NSColorPanel.shared.setAction(#selector(colorChoose(_:)))
+            if let colorItem = view as? ComponentCColorItem, let color = colorItem.properties?.color {
+                NSColorPanel.shared.color = color
+            }
+            
+            let viewRect = view.superview?.convert(view.frame, to: nil) ?? CGRectZero
+            var rect = NSColorPanel.shared.frame
+            rect.origin.x = viewRect.minX
+            rect.origin.y = viewRect.minY - 30
+            NSColorPanel.shared.setFrame(rect, display: true)
+            
+            NSColorPanel.shared.orderFront(nil)
+        } else if menuItemProperty?.text == KMLocalizedString("Restore default color") {
+            if let colorItem = colorGroup.rightClickedItem {
+                var key: String?
+                if self.squareAnnotations.count > 0 || viewManager?.subToolMode == .Rectangle {
+                    if colorGroup == colorGroup {
+                        key = KMRectangle_DefaultColorsKey
+                    } else if colorGroup == fillColorGroup {
+                        key = KMRectangle_Default_FillColorsKey
+                    }
+                    if let value = key {
+                        let colors: [NSColor] = KMAnnotationPropertiesColorManager.manager.defaultColors(key: value)
+                        if colors.count > 4, colorItem.itemIndex >= 0, colorItem.itemIndex < colors.count {
+                            colorItem.properties?.color = colors[colorItem.itemIndex]
+                            colorItem.reloadData()
+                            colorGroup.componentCColorDidChoosePanelColor(colorGroup, nil)
+                        }
+                    }
+                }
+                if self.circleAnnotations.count > 0 || viewManager?.subToolMode == .Circle {
+                    if colorGroup == colorGroup {
+                        key = KMCircle_DefaultColorsKey
+                    } else if colorGroup == fillColorGroup {
+                        key = KMCircle_Default_FillColorsKey
+                    }
+                    if let value = key {
+                        let colors: [NSColor] = KMAnnotationPropertiesColorManager.manager.defaultColors(key: value)
+                        if colors.count > 4, colorItem.itemIndex >= 0, colorItem.itemIndex < colors.count {
+                            colorItem.properties?.color = colors[colorItem.itemIndex]
+                            colorItem.reloadData()
+                            colorGroup.componentCColorDidChoosePanelColor(colorGroup, nil)
+                        }
+                    }
+                }
+            }
+        }
+    }
+    
+    @objc func colorChoose(_ sender: Any) {
+        if let colorGroup = self.editColorGroup, let colorItem = colorGroup.rightClickedItem {
+            let color = NSColorPanel.shared.color
+            colorItem.properties?.color = color
+            
+            colorItem.reloadData()
+            
+            colorGroup.componentCColorDidChoosePanelColor(colorGroup, nil)
+        }
+    }
 }
 
 //MARK: - ComponentSliderDelegate