KMEditPDFTextPropertyViewController.swift 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. //
  2. // KMEditPDFTextPropertyViewController.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by lxy on 2022/12/27.
  6. //
  7. import Cocoa
  8. import KMComponentLibrary
  9. class KMEditPDFTextPropertyViewController: NSViewController {
  10. @IBOutlet weak var contentView: NSClipView!
  11. @IBOutlet weak var backgroundView: NSView!
  12. @IBOutlet var fontBGView: NSView!
  13. @IBOutlet var fontLabel: NSTextField!
  14. @IBOutlet var fontTitleSelect: ComponentSelect!
  15. @IBOutlet var fontTitleButton: ComponentButton!
  16. @IBOutlet var fontNameSelect: ComponentSelect!
  17. @IBOutlet var fontStyleSelect: ComponentSelect!
  18. @IBOutlet var fontSizeSelect: ComponentSelect!
  19. @IBOutlet var fontStyleGroup: ComponentCSelectorGroup!
  20. @IBOutlet var fontAlignmentGroup: ComponentCSelectorGroup!
  21. @IBOutlet var colorBGView: NSView!
  22. @IBOutlet var colorLabel: NSTextField!
  23. @IBOutlet var colorGroup: ComponentCColorGroup!
  24. @IBOutlet var colorSlider: ComponentSlider!
  25. @IBOutlet var colorOpacitySelect: ComponentSelect!
  26. private var familyNames = CPDFFont.familyNames
  27. var pdfView: CPDFListView? {
  28. didSet {
  29. reloadData()
  30. }
  31. }
  32. var currentArea: CPDFEditTextArea?
  33. override func viewDidAppear() {
  34. super.viewDidAppear()
  35. colorSlider.reloadData()
  36. }
  37. override func viewDidLoad() {
  38. super.viewDidLoad()
  39. setupProperty()
  40. }
  41. func setupProperty() {
  42. //Font
  43. fontLabel.stringValue = KMLocalizedString("Font")
  44. fontLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
  45. fontLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
  46. fontTitleSelect.properties = ComponentSelectProperties(size: .s,
  47. state: .normal,
  48. text: "")
  49. if true {
  50. var menuItemArr: [ComponentMenuitemProperty] = []
  51. for string in KMEditPDFTextFontTypeWrapper.allValues() {
  52. let item = ComponentMenuitemProperty(type: .normal, text: string, identifier: string)
  53. menuItemArr.append(item)
  54. }
  55. fontTitleSelect.updateMenuItemsArr(menuItemArr)
  56. }
  57. fontTitleButton.properties = ComponentButtonProperty(type: .text_gray, size: .s, onlyIcon: true, icon: NSImage(named: "toolbar_more"))
  58. fontTitleButton.setTarget(self, action: #selector(buttonClicked(_:)))
  59. fontNameSelect.properties = ComponentSelectProperties(size: .s,
  60. state: .normal,
  61. text: "")
  62. if true {
  63. var menuItemArr: [ComponentMenuitemProperty] = []
  64. for string in familyNames {
  65. let item = ComponentMenuitemProperty(type: .normal, text: string, identifier: string)
  66. menuItemArr.append(item)
  67. }
  68. fontNameSelect.updateMenuItemsArr(menuItemArr)
  69. }
  70. fontNameSelect.delegate = self
  71. fontStyleSelect.properties = ComponentSelectProperties(size: .s,
  72. state: .normal,
  73. text: "")
  74. fontStyleSelect.delegate = self
  75. fontSizeSelect.properties = ComponentSelectProperties(size: .s,
  76. state: .normal,
  77. creatable: true,
  78. text: "12 pt",
  79. regexString: "0123456789 pt")
  80. if true {
  81. var sizeItemArr: [ComponentMenuitemProperty] = []
  82. for string in KMHeaderFooterManager.getFontSize() {
  83. let item = ComponentMenuitemProperty(type: .normal, text: string, identifier: string)
  84. sizeItemArr.append(item)
  85. }
  86. fontSizeSelect.updateMenuItemsArr(sizeItemArr)
  87. }
  88. fontSizeSelect.delegate = self
  89. if true {
  90. var itemArr: [ComponentCSelectorProperty] = []
  91. for string in ["fontAlign_left", "fontAlign_center", "fontAlign_right", "fontAlign_justify"] {
  92. let propertyItem: ComponentCSelectorProperty = ComponentCSelectorProperty.init(size: .m, state: .normal, iconImage: NSImage(named: string))
  93. itemArr.append(propertyItem)
  94. }
  95. fontAlignmentGroup.updateItemProperty(itemArr)
  96. }
  97. //Color
  98. colorLabel.stringValue = KMLocalizedString("Font")
  99. colorLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
  100. colorLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
  101. let colorAProperty = ComponentCColorProperty(colorType: .color, state: .normal, isCustom: false, color: KMPDFWatermarkData.watermarkDefaultColors()[0])
  102. let colorBProperty = ComponentCColorProperty(colorType: .color, state: .normal, isCustom: false, color: KMPDFWatermarkData.watermarkDefaultColors()[1])
  103. let colorCProperty = ComponentCColorProperty(colorType: .color, state: .normal, isCustom: false, color: KMPDFWatermarkData.watermarkDefaultColors()[2])
  104. let colorDProperty = ComponentCColorProperty(colorType: .color, state: .normal, isCustom: false, color: KMPDFWatermarkData.watermarkDefaultColors()[3])
  105. let colorEProperty = ComponentCColorProperty(colorType: .color, state: .normal, isCustom: true, color: KMPDFWatermarkData.watermarkDefaultColors()[4])
  106. colorGroup.setUpWithColorPropertys([colorAProperty, colorBProperty, colorCProperty, colorDProperty], customItemProperty: colorEProperty)
  107. colorGroup.delegate = self
  108. colorSlider.properties = ComponentSliderProperty(size: .m, percent: 1)
  109. colorOpacitySelect.properties = ComponentSelectProperties(size: .s,
  110. state: .normal,
  111. creatable: true,
  112. text: "100%",
  113. regexString: "0123456789%")
  114. if true {
  115. var opacityItems: [ComponentMenuitemProperty] = []
  116. for string in ["25%", "50%", "75%", "100%"] {
  117. let item = ComponentMenuitemProperty(type: .normal, text: string)
  118. opacityItems.append(item)
  119. }
  120. colorOpacitySelect.updateMenuItemsArr(opacityItems)
  121. }
  122. colorOpacitySelect.delegate = self
  123. }
  124. func reloadData() {
  125. let areas = pdfView?.km_editingTextAreas() ?? []
  126. if areas.count == 0 {
  127. currentArea = nil
  128. } else if areas.count == 1 {
  129. currentArea = areas.first
  130. } else if areas.count == 2 {
  131. currentArea = nil
  132. }
  133. if let area = currentArea {
  134. let fontName = pdfView?.km_editTextAreasFontNames([area])
  135. let fontStyle = pdfView?.km_editTextAreasFontStyles([area])
  136. let fontSize = pdfView?.km_editTextAreasFontSizes([area])
  137. let bold = pdfView?.km_editTextAreasFontBolds([area])
  138. let itality = pdfView?.km_editTextAreasFontItalics([area])
  139. let alignment = pdfView?.km_editTextAreasTextAlignments([area])
  140. let colors = pdfView?.km_editTextAreasFontColors([area])
  141. let opacity = pdfView?.km_editAreasOpacitys([area])
  142. print("1")
  143. }
  144. }
  145. //MARK: - Action
  146. @objc func buttonClicked(_ sender: ComponentButton) {
  147. }
  148. }
  149. extension KMEditPDFTextPropertyViewController: ComponentSelectDelegate {
  150. }
  151. extension KMEditPDFTextPropertyViewController: ComponentCColorDelegate {
  152. }