Procházet zdrojové kódy

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

niehaoyu před 1 měsícem
rodič
revize
df5cf58d08

+ 3 - 0
PDF Office/KMComponentLibrary/KMComponentLibrary/View/Controller/Color/ComponentCColorGroup.swift

@@ -247,6 +247,9 @@ extension ComponentCColorGroup: ComponentCColorDelegate {
         }
         
         delegate?.componentCColorDidRightMenuItemClicked?(view, menuItemProperty: menuItemProperty)
+        
+        delegate?.componentCColorDidRightMenuItemClicked?(self, view, menuItemProperty: menuItemProperty)
+        
     }
     
     

+ 3 - 0
PDF Office/KMComponentLibrary/KMComponentLibrary/View/Controller/Color/ComponentCColorItem.swift

@@ -19,7 +19,10 @@ import AppKit
     @objc optional func componentCColorDidRightMouseUpWithStrings(_ view: NSView) -> [String]
     @objc optional func componentCColorDidRightMouseUpWithItems(_ view: NSView) -> [ComponentMenuitemProperty]
     
+    //选择回调,二选一即可
     @objc optional func componentCColorDidRightMenuItemClicked(_ view: NSView, menuItemProperty: ComponentMenuitemProperty?)
+     
+    @objc optional func componentCColorDidRightMenuItemClicked(_ colorGroup: ComponentCColorGroup, _ view: NSView, menuItemProperty: ComponentMenuitemProperty?)
     
     //颜色组内颜色变化时回调
     @objc optional func componentCColorGroupColorsUpdates(_ view: NSView, _ colors: [NSColor])

+ 3 - 1
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/AnnotationProperty/NSObject/KMAnnotationPropertiesColorManager.swift

@@ -661,7 +661,9 @@ extension KMAnnotationPropertiesColorManager {
                     NSColor(red: 0, green:225/255.0, blue:146/255.0, alpha:1.0),
                     NSColor(red: 0, green:175/255.0, blue:249/255.0, alpha:1.0),
                     NSColor(red: 0, green:0, blue:0, alpha:1.0)]
-        } else if key == KMInkPropertColorsKey {
+        }
+        //Ink
+        else if key == KMInkPropertColorsKey {
             return [NSColor(red: 252.0 / 255.0, green: 31.0 / 255.0, blue: 31.0 / 255.0, alpha: 1.0),
                     NSColor(red: 255.0 / 255.0, green: 144.0 / 255.0, blue: 0 / 255.0, alpha: 1.0),
                     NSColor(red: 0, green: 225.0 / 255.0, blue: 146.0 / 255.0, alpha: 1.0),

+ 46 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Note/KMNoteController.swift

@@ -212,4 +212,50 @@ extension KMNoteController: ComponentCColorDelegate {
         KMAnnotationPropertiesColorManager.manager.updateDefaultColors(colors, forKey: KMNoteColorsKey)
         
     }
+    
+    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 {
+                let colors: [NSColor] = KMAnnotationPropertiesColorManager.manager.defaultColors(key: KMNoteColorsKey)
+                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)
+        }
+    }
 }

+ 46 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Pen/KMPenController.swift

@@ -387,6 +387,52 @@ extension KMPenController: ComponentCColorDelegate {
         KMAnnotationPropertiesColorManager.manager.updateDefaultColors(colors, forKey: KMInkPropertColorsKey)
         
     }
+    
+    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 {
+                let colors: [NSColor] = KMAnnotationPropertiesColorManager.manager.defaultColors(key: KMInkPropertColorsKey)
+                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

+ 61 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/TextBox/KMTextBoxController.swift

@@ -47,6 +47,8 @@ class KMTextBoxController: NSViewController {
     
     private var annotations: [CPDFFreeTextAnnotation] = []
     
+    private var editColorGroup: ComponentCColorGroup?
+    
     var pdfView: CPDFListView?
     
     //MARK: - func
@@ -491,6 +493,7 @@ class KMTextBoxController: NSViewController {
             dashProperty.state = .normal
             solidProperty.state = .normal
         }
+        lineTypeSelector.reloadData()
         
         if let value = lineWidth {
             let percent = value/18
@@ -561,6 +564,64 @@ extension KMTextBoxController: ComponentCColorDelegate {
             KMAnnotationPropertiesColorManager.manager.updateDefaultColors(colors, forKey: KMFreeText_FillColorsKey)
         }
     }
+    
+    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 colorGroup == fontColorGroup {
+                    key = KMFreeTextPropertColorsKey
+                } else if colorGroup == borderColorGroup {
+                    key = KMFreeText_BorderColorsKey
+                } else if colorGroup == fillColorGroup {
+                    key = KMFreeText_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