Browse Source

【综合】内容编辑文本属性面板多选场景调式

tangchao 8 months ago
parent
commit
9fc9ff7e31

+ 38 - 7
PDF Office/PDF Master/Class/PDFTools/EditPDF/Tools/KMEditPDfHanddler.swift

@@ -505,6 +505,26 @@ extension KMEditPDfHanddler {
         return true
     }
     
+    func editAreasFontStyleIsEqual() -> Bool {
+        if self.editAreasIsEmpty() {
+            return false
+        }
+        let datas = self._editAreasFontStyles()
+        if datas.count == 1 {
+            return true
+        }
+        let data = datas.first
+        for (i, d) in datas.enumerated() {
+            if i == 0 {
+                continue
+            }
+            if d != data {
+                return false
+            }
+        }
+        return true
+    }
+    
     func editAreasFontSizeIsEqual() -> Bool {
         if self.editAreasIsEmpty() {
             return false
@@ -671,7 +691,17 @@ extension KMEditPDfHanddler {
     private func _editAreasFontColors() -> [NSColor] {
         var datas: [NSColor] = []
         for area in self.editingTextAreas {
-            if let data = self.listView?.editingSelectionFontColor(with: area) {
+            if let data = self.listView?.editingSelectionFontColor(byRangeEdit: area) {
+                datas.append(data)
+            }
+        }
+        return datas
+    }
+    
+    private func _editAreasFontStyles() -> [String] {
+        var datas: [String] = []
+        for area in self.editingTextAreas {
+            if let data = self.listView?.editingSelectionCFont(byRangeEdit: area)?.styleName {
                 datas.append(data)
             }
         }
@@ -681,7 +711,7 @@ extension KMEditPDfHanddler {
     private func _editAreasFontNames() -> [String] {
         var datas: [String] = []
         for area in self.editingTextAreas {
-            if let data = self.listView?.editingSelectionCFont(with: area).familyName {
+            if let data = self.listView?.editingSelectionCFont(byRangeEdit: area)?.familyName {
                 datas.append(data)
             }
         }
@@ -691,7 +721,7 @@ extension KMEditPDfHanddler {
     private func _editAreasFontSizes() -> [CGFloat] {
         var datas: [CGFloat] = []
         for area in self.editingTextAreas {
-            if let data = self.listView?.editingSelectionFontSize(with: area) {
+            if let data = self.listView?.editingSelectionFontSize(byRangeEdit: area) {
                 datas.append(data)
             }
         }
@@ -701,7 +731,7 @@ extension KMEditPDfHanddler {
     private func _editAreasFontBolds() -> [Bool] {
         var datas: [Bool] = []
         for area in self.editingTextAreas {
-            if let data = self.listView?.isBoldCurrentSelection(with: area) {
+            if let data = self.listView?.isBoldCurrentSelection(byRangeEdit: area) {
                 datas.append(data)
             }
         }
@@ -711,7 +741,7 @@ extension KMEditPDfHanddler {
     private func _editAreasFontItalics() -> [Bool] {
         var datas: [Bool] = []
         for area in self.editingTextAreas {
-            if let data = self.listView?.isItalicCurrentSelection(with: area) {
+            if let data = self.listView?.isItalicCurrentSelection(byRangeEdit: area) {
                 datas.append(data)
             }
         }
@@ -721,7 +751,7 @@ extension KMEditPDfHanddler {
     private func _editAreasTextAlignments() -> [NSTextAlignment] {
         var datas: [NSTextAlignment] = []
         for area in self.editingTextAreas {
-            if let data = self.listView?.editingSelectionAlignment(with: area) {
+            if let data = self.listView?.currentSelectionAlignment(byRangeEdit: area) {
                 datas.append(data)
             }
         }
@@ -749,7 +779,7 @@ extension KMEditPDfHanddler {
     private func _editAreasOpacitys() -> [CGFloat] {
         var arr: [CGFloat] = []
         for area in self.editingAreas {
-            if let data = self.listView?.opacity(for: area) {
+            if let data = self.listView?.opacityByRange(for: area) {
                 arr.append(data)
             }
         }
@@ -1341,6 +1371,7 @@ extension KMEditPDfHanddler: CPDFViewDelegate {
             if textsAreas.count > 0 && textsAreas.count == areas.count {
                 self.rightViewC?.isHidden = false
                 self.rightViewC?.subViewType = .EditPDFAddText
+                self.rightViewC?.eidtPDFTextProperty.handdler = self
                 self.rightViewC?.eidtPDFTextProperty?.reloadData()
                 self.openRightPane()
             } else if imagesAreas.count > 0 {

+ 70 - 1
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/EditPDF/KMEditPDFTextPropertyViewController.swift

@@ -204,6 +204,8 @@ class KMEditPDFTextPropertyViewController: NSViewController {
         }
     }
     
+    var handdler: KMEditPDfHanddler?
+    
     deinit {
         KMPrint("KMEditPDFTextPropertyViewController 已释放.")
         NSColorPanel.shared.setTarget(nil)
@@ -341,7 +343,7 @@ class KMEditPDFTextPropertyViewController: NSViewController {
         self.fontItalicVC?.pagination()
         self.fontItalicVC?.initDefaultValue()
         
-        fontSizeVC = KMDesignSelect.init(withType: .PopButton)
+        fontSizeVC = KMDesignSelect.init(withType: .Combox)
         fontSizeBox.contentView = fontSizeVC?.view
         fontSizeBox.fillColor = NSColor.clear
         fontSizeVC?.removeAllItems()
@@ -359,6 +361,7 @@ class KMEditPDFTextPropertyViewController: NSViewController {
         fontSizeVC?.popViewControllerTextColor = KMAppearance.Layout.h0Color()
         fontSizeVC?.popViewControllerEnterFillColor = KMAppearance.Interactive.s0Color()
         fontSizeVC?.updateUI()
+        self.fontSizeVC?.editable = true
         
         self.fontAddVC = KMDesignButton(withType: .Image)
         self.fontAddBox.contentView = self.fontAddVC?.view
@@ -589,6 +592,55 @@ class KMEditPDFTextPropertyViewController: NSViewController {
                 sliderView?.doubleValue = Double(opacity)
                 self.opacitVC?.stringValue = String(format: "%0.f%%", opacity*100)
             }
+        } else if self.selectAreas.count > 1 {
+            if let data = self.handdler?.editAreasFontNameIsEqual(), data {
+                if let area = self.handdler?.editingTextAreas.first {
+                    let font = self.listView.editingSelectionCFont(with: area)
+                    self.fontNameVC?.stringValue = font?.familyName ?? ""
+                }
+            } else {
+                self.fontNameVC?.stringValue = "--"
+            }
+            
+            if let data = self.handdler?.editAreasFontStyleIsEqual(), data {
+                if let area = self.handdler?.editingTextAreas.first {
+                    let font = self.listView.editingSelectionCFont(with: area)
+                    self.fontStyleVC?.stringValue = font?.styleName ?? ""
+                }
+            } else {
+                self.fontStyleVC?.stringValue = "--"
+            }
+            
+            if let data = self.handdler?.editAreasFontBoldIsEqual(), data {
+                self.fontBoldVC?.state = .Act
+            } else {
+                self.fontBoldVC?.state = .Disabled
+            }
+            
+            if let data = self.handdler?.editAreasFontItalicIsEqual(), data {
+                self.fontItalicVC?.state = .Act
+            } else {
+                self.fontItalicVC?.state = .Disabled
+            }
+            
+            if let data = self.handdler?.editAreasFontSizeIsEqual(), data {
+                if let area = self.handdler?.editingTextAreas.first {
+                    let data = self.listView.editingSelectionFontSize(with: area)
+                    self.fontSizeVC?.stringValue = String(format: "%.0fpt", data)
+                }
+            } else {
+                self.fontSizeVC?.stringValue = "--"
+                self.fontAddVC?.state = .Disabled
+                self.fontReduceVC?.state = .Disabled
+            }
+            
+            if let data = self.handdler?.editAreasTextAlignmentIsEqual(), data {
+                
+            } else {
+                self.leftAlignmentVC?.state = .Disabled
+                self.centerAlignmentVC?.state = .Disabled
+                self.rightAlignmentVC?.state = .Disabled
+            }
         }
     }
     
@@ -879,6 +931,23 @@ extension KMEditPDFTextPropertyViewController: KMSelectPopButtonDelegate {
         }
     }
     
+    func km_controlTextDidChange(_ obj: KMDesignSelect) {
+        if obj == self.fontSizeVC {
+            let format = NumberFormatter()
+            format.numberStyle = .decimal
+            let size = Float((obj.stringValue.replacingOccurrences(of: "pt", with: ""))) ?? 0
+            self.fontSizeVC?.stringValue = format.string(from: NSNumber(value: size)) ?? ""
+        }
+    }
+    
+    func km_controlTextDidEndEditing(_ obj: KMDesignSelect) {
+        if obj == self.fontSizeVC {
+            let size = CGFloat(Float((obj.stringValue.replacingOccurrences(of: "pt", with: ""))) ?? 12)
+            self.fontSizeVC?.stringValue = String(format: "%.0fpt", size)
+            self.updateFontSize(size: size)
+        }
+    }
+    
     func km_cellViewWillShow(_ obj: KMDesignSelect, _ cellView: KMBox, _ index: Int) {
         if obj.isEqual(to: self.textPresuppositionVC) == false {
             return