// // KMEditPDFTextPropertyViewController.swift // PDF Reader Pro // // Created by lxy on 2022/12/27. // import Cocoa import KMComponentLibrary class KMEditPDFTextPropertyViewController: NSViewController { @IBOutlet weak var contentView: NSClipView! @IBOutlet weak var backgroundView: NSView! @IBOutlet var fontBGView: NSView! @IBOutlet var fontLabel: NSTextField! @IBOutlet var fontTitleSelect: ComponentSelect! @IBOutlet var fontTitleButton: ComponentButton! @IBOutlet var fontNameSelect: ComponentSelect! @IBOutlet var fontStyleSelect: ComponentSelect! @IBOutlet var fontSizeSelect: ComponentSelect! @IBOutlet var fontStyleGroup: ComponentCSelectorGroup! @IBOutlet var fontAlignmentGroup: ComponentCSelectorGroup! @IBOutlet var colorBGView: NSView! @IBOutlet var colorLabel: NSTextField! @IBOutlet var colorGroup: ComponentCColorGroup! @IBOutlet var colorSlider: ComponentSlider! @IBOutlet var colorOpacitySelect: ComponentSelect! private var familyNames = CPDFFont.familyNames var pdfView: CPDFListView? { didSet { reloadData() } } var currentArea: CPDFEditTextArea? override func viewDidAppear() { super.viewDidAppear() colorSlider.reloadData() } override func viewDidLoad() { super.viewDidLoad() setupProperty() } func setupProperty() { //Font fontLabel.stringValue = KMLocalizedString("Font") fontLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2") fontLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium") fontTitleSelect.properties = ComponentSelectProperties(size: .s, state: .normal, text: "") if true { var menuItemArr: [ComponentMenuitemProperty] = [] for string in KMEditPDFTextFontTypeWrapper.allValues() { let item = ComponentMenuitemProperty(type: .normal, text: string, identifier: string) menuItemArr.append(item) } fontTitleSelect.updateMenuItemsArr(menuItemArr) } fontTitleButton.properties = ComponentButtonProperty(type: .text_gray, size: .s, onlyIcon: true, icon: NSImage(named: "toolbar_more")) fontTitleButton.setTarget(self, action: #selector(buttonClicked(_:))) fontNameSelect.properties = ComponentSelectProperties(size: .s, state: .normal, text: "") if true { var menuItemArr: [ComponentMenuitemProperty] = [] for string in familyNames { let item = ComponentMenuitemProperty(type: .normal, text: string, identifier: string) menuItemArr.append(item) } fontNameSelect.updateMenuItemsArr(menuItemArr) } fontNameSelect.delegate = self fontStyleSelect.properties = ComponentSelectProperties(size: .s, state: .normal, text: "") fontStyleSelect.delegate = self fontSizeSelect.properties = ComponentSelectProperties(size: .s, state: .normal, creatable: true, text: "12 pt", regexString: "0123456789 pt") if true { var sizeItemArr: [ComponentMenuitemProperty] = [] for string in KMHeaderFooterManager.getFontSize() { let item = ComponentMenuitemProperty(type: .normal, text: string, identifier: string) sizeItemArr.append(item) } fontSizeSelect.updateMenuItemsArr(sizeItemArr) } fontSizeSelect.delegate = self if true { var itemArr: [ComponentCSelectorProperty] = [] for string in ["fontAlign_left", "fontAlign_center", "fontAlign_right", "fontAlign_justify"] { let propertyItem: ComponentCSelectorProperty = ComponentCSelectorProperty.init(size: .m, state: .normal, iconImage: NSImage(named: string)) itemArr.append(propertyItem) } fontAlignmentGroup.updateItemProperty(itemArr) } //Color colorLabel.stringValue = KMLocalizedString("Font") colorLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2") colorLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium") let colorAProperty = ComponentCColorProperty(colorType: .color, state: .normal, isCustom: false, color: KMPDFWatermarkData.watermarkDefaultColors()[0]) let colorBProperty = ComponentCColorProperty(colorType: .color, state: .normal, isCustom: false, color: KMPDFWatermarkData.watermarkDefaultColors()[1]) let colorCProperty = ComponentCColorProperty(colorType: .color, state: .normal, isCustom: false, color: KMPDFWatermarkData.watermarkDefaultColors()[2]) let colorDProperty = ComponentCColorProperty(colorType: .color, state: .normal, isCustom: false, color: KMPDFWatermarkData.watermarkDefaultColors()[3]) let colorEProperty = ComponentCColorProperty(colorType: .color, state: .normal, isCustom: true, color: KMPDFWatermarkData.watermarkDefaultColors()[4]) colorGroup.setUpWithColorPropertys([colorAProperty, colorBProperty, colorCProperty, colorDProperty], customItemProperty: colorEProperty) colorGroup.delegate = self colorSlider.properties = ComponentSliderProperty(size: .m, percent: 1) colorOpacitySelect.properties = ComponentSelectProperties(size: .s, state: .normal, creatable: true, text: "100%", regexString: "0123456789%") if true { var opacityItems: [ComponentMenuitemProperty] = [] for string in ["25%", "50%", "75%", "100%"] { let item = ComponentMenuitemProperty(type: .normal, text: string) opacityItems.append(item) } colorOpacitySelect.updateMenuItemsArr(opacityItems) } colorOpacitySelect.delegate = self } func reloadData() { let areas = pdfView?.km_editingTextAreas() ?? [] if areas.count == 0 { currentArea = nil } else if areas.count == 1 { currentArea = areas.first } else if areas.count == 2 { currentArea = nil } if let area = currentArea { let fontName = pdfView?.km_editTextAreasFontNames([area]) let fontStyle = pdfView?.km_editTextAreasFontStyles([area]) let fontSize = pdfView?.km_editTextAreasFontSizes([area]) let bold = pdfView?.km_editTextAreasFontBolds([area]) let itality = pdfView?.km_editTextAreasFontItalics([area]) let alignment = pdfView?.km_editTextAreasTextAlignments([area]) let colors = pdfView?.km_editTextAreasFontColors([area]) let opacity = pdfView?.km_editAreasOpacitys([area]) print("1") } } //MARK: - Action @objc func buttonClicked(_ sender: ComponentButton) { } } extension KMEditPDFTextPropertyViewController: ComponentSelectDelegate { } extension KMEditPDFTextPropertyViewController: ComponentCColorDelegate { }