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

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

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

+ 58 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Fill_Date/FillDateController.swift

@@ -43,6 +43,8 @@ class FillDateController: NSViewController {
     
     private var annotations: [CSelfSignAnnotationFreeText] = []
     
+    private var editColorGroup: ComponentCColorGroup?
+    
     var pdfView: CPDFListView?
     
     //MARK: - func
@@ -407,6 +409,62 @@ extension FillDateController: 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 colorGroup == fontColorGroup {
+                    key = KM_SelfSign_Date_ColorsKey
+                } else if colorGroup == fillColorGroup {
+                    key = KM_SelfSign_Date_Fill_ColorsKey
+                }
+                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

+ 43 - 1
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Fill_Tick/FillTickController.swift

@@ -329,8 +329,50 @@ extension FillTickController: ComponentCColorDelegate {
         KMAnnotationPropertiesColorManager.manager.updateDefaultColors(colors, forKey: KM_Fill_TickColorsKey)
     }
     
+    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: KM_Fill_TickColorsKey)
+                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)
+        }
     }
 }