Browse Source

【综合】内容编辑文字属性面板预设字体调整

tangchao 8 months ago
parent
commit
1a107beaba

+ 3 - 0
PDF Office/PDF Master/Class/Common/Category/NSObject+KMExtension.swift

@@ -786,6 +786,9 @@ extension NSShadow {
 
 extension Array where Element: Equatable {
     func safe_element(for idx: Int) -> Any? {
+        if idx < 0 {
+            return nil
+        }
         if idx < self.count {
             let ele = self[idx]
             return ele

+ 8 - 0
PDF Office/PDF Master/Class/Home/ViewController/KMHomePopViewController.swift

@@ -8,6 +8,7 @@
 import Cocoa
 
 typealias popCellViewDownCallback = (_ downEntered: Bool, _ count: String) -> Void
+typealias popCellViewWillShow = (_ cellView: KMBox, _ index: Int) -> Void
 
 @objcMembers class KMHomePopViewController: NSViewController {
     @IBOutlet weak var customBox: NSBox!
@@ -15,6 +16,7 @@ typealias popCellViewDownCallback = (_ downEntered: Bool, _ count: String) -> Vo
     @IBOutlet weak var customBoxHeightLayoutConstraint: NSLayoutConstraint!
     
     var downCallback: popCellViewDownCallback?
+    var viewWillShow: popCellViewWillShow?
     var popCellViewDownString: String?
     var popCellCount: Int?
     var dataArr: [String]?
@@ -250,6 +252,9 @@ typealias popCellViewDownCallback = (_ downEntered: Bool, _ count: String) -> Vo
             box.fillColor = KMDesignToken.shared.fill(withToken: "dropdown.m.bg.sel")
             boxLabel.textColor = KMDesignToken.shared.fill(withToken: "dropdown.m.mac-text.sel")
         }
+        
+        let idx = self.dataArr?.index(of: stringValue) ?? 0
+        self.viewWillShow?(box, idx)
     }
     
     func cellContentAdaptiveWidth(_ content: String) -> Float {
@@ -484,5 +489,8 @@ class KMScrollPopViewController: KMHomePopViewController {
                 boxLabel.textColor = KMDesignToken.shared.fill(withToken: "dropdown.m.mac-text.def")
             }
         }
+        
+        let idx = self.dataArr?.index(of: stringValue) ?? 0
+        self.viewWillShow?(box, idx)
     }
 }

+ 9 - 0
PDF Office/PDF Master/Class/Home/ViewController/customViewController/KMDesignSelect.swift

@@ -12,6 +12,8 @@ import Cocoa
     @objc optional func km_controlTextDidChange(_ obj: KMDesignSelect)
     @objc optional func km_SelectPopoverWillShow(_ obj: KMDesignSelect)
     func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect)
+    
+    @objc optional func km_cellViewWillShow(_ obj: KMDesignSelect, _ cellView: KMBox, _ index: Int)
 }
 
 @objc enum SelectType : Int {
@@ -205,6 +207,8 @@ class KMSelectCell: NSTextFieldCell {
                 if downEntered {
                     self.canHover = false
                     self.mainBoxAction(mouseBox)
+                    
+                    self.updateUI()
                 }
             }
         }
@@ -496,6 +500,11 @@ class KMSelectCell: NSTextFieldCell {
                     self.createFilePopover.close()
                 }
             }
+            vc?.viewWillShow = { [weak self] cellView, idx in
+                if let data = self {
+                    self?.delete?.km_cellViewWillShow?(data, cellView, idx)
+                }
+            }
         }
     }
 }

+ 62 - 29
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/EditPDF/KMEditPDFTextPropertyViewController.swift

@@ -213,35 +213,6 @@ class KMEditPDFTextPropertyViewController: NSViewController {
         self.removeNotification()
     }
     
-    func addNotification() {
-        NotificationCenter.default.addObserver(self, selector: #selector(changeEffectiveAppearance), name: NSNotification.Name(rawValue: "kEffectiveAppearance"), object: nil)
-    }
-    
-    func removeNotification() {
-        NotificationCenter.default.removeObserver(self)
-        DistributedNotificationCenter.default().removeObserver(self)
-    }
-    
-    @objc func changeEffectiveAppearance() {
-        print("changeEffectiveAppearance")
-        let isDarkModel = KMAdvertisementConfig.isDarkModel()
-        if isDarkModel {
-            self.view.appearance = NSAppearance(named: .darkAqua)
-        } else {
-            self.view.appearance = NSAppearance(named: .aqua)
-        }
-        self.updateUI()
-    }
-    
-    func updateUI() {
-        let isDarkModel = KMAdvertisementConfig.isDarkModel()
-        if isDarkModel {
-            self.backgroundView.backgroundColor(NSColor.km_init(hex: "#252526"))
-        } else {
-            self.backgroundView.backgroundColor(NSColor.km_init(hex: "#FAFAFA"))
-        }
-    }
-    
     override func viewDidLoad() {
         super.viewDidLoad()
         self.addNotification()
@@ -508,6 +479,34 @@ class KMEditPDFTextPropertyViewController: NSViewController {
         self.fontTitleLabel.stringValue = NSLocalizedString("Font", comment: "")
     }
     
+    func addNotification() {
+        NotificationCenter.default.addObserver(self, selector: #selector(changeEffectiveAppearance), name: NSNotification.Name(rawValue: "kEffectiveAppearance"), object: nil)
+    }
+    
+    func removeNotification() {
+        NotificationCenter.default.removeObserver(self)
+        DistributedNotificationCenter.default().removeObserver(self)
+    }
+    
+    @objc func changeEffectiveAppearance() {
+        let isDarkModel = KMAdvertisementConfig.isDarkModel()
+        if isDarkModel {
+            self.view.appearance = NSAppearance(named: .darkAqua)
+        } else {
+            self.view.appearance = NSAppearance(named: .aqua)
+        }
+        self.updateUI()
+    }
+    
+    func updateUI() {
+        let isDarkModel = KMAdvertisementConfig.isDarkModel()
+        if isDarkModel {
+            self.backgroundView.backgroundColor(NSColor.km_init(hex: "#252526"))
+        } else {
+            self.backgroundView.backgroundColor(NSColor.km_init(hex: "#FAFAFA"))
+        }
+    }
+    
     func reloadData() {
         if self.selectAreas.count > 0 {
             textsAreas = []
@@ -838,6 +837,40 @@ extension KMEditPDFTextPropertyViewController: KMSelectPopButtonDelegate {
             }
         }
     }
+    
+    func km_cellViewWillShow(_ obj: KMDesignSelect, _ cellView: KMBox, _ index: Int) {
+        if obj.isEqual(to: self.textPresuppositionVC) == false {
+            return
+        }
+        if let label = cellView.contentView?.subviews.first as? NSTextField {
+            /* 14.0 "SFProText-Regular" */
+            
+            let allValues = KMEditPDFTextFontType.allValues()
+            let idx = allValues.count-index-1
+            if idx == 0 { // custom
+                return
+            }
+            guard let value = allValues.safe_element(for: idx) as? String else {
+                return
+            }
+            
+            let type = KMEditPDFTextFontType.typeOfRawValue(value: value)
+            let model = KMEditPDFTextManager.manager.fetchUserDefaultData(type: type)
+            let fontName: String = model.fontName
+//            let size: CGFloat = model.fontSize
+            let bold = fontName.contains("Bold")
+            let italic = fontName.contains("Oblique") || fontName.contains("Italic")
+            
+            let attri = NSMutableAttributedString(attributedString: label.attributedStringValue)
+            if bold {
+                attri.addAttribute(.font, value: NSFont.boldSystemFont(ofSize: 14), range: NSMakeRange(0, attri.string.count))
+            }
+            if italic {
+                attri.addAttribute(.obliqueness, value: 0.3, range: NSMakeRange(0, attri.string.count))
+            }
+            label.attributedStringValue = attri
+        }
+    }
 }
 
 //MARK: - TextPresupposition