KMEraserController.swift 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. //
  2. // KMEraserController.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by Niehaoyu on 2024/11/26.
  6. //
  7. import Cocoa
  8. import KMComponentLibrary
  9. class KMEraserController: KMNBaseViewController {
  10. @IBOutlet var eraserBGView: NSView!
  11. @IBOutlet var eraserLabel: NSTextField!
  12. @IBOutlet var eraserSlider: ComponentSlider!
  13. @IBOutlet var eraserSelect: ComponentSelect!
  14. //MARK: - func
  15. override func viewDidAppear() {
  16. super.viewDidAppear()
  17. eraserSlider.reloadData()
  18. }
  19. override func viewDidLoad() {
  20. super.viewDidLoad()
  21. // Do view setup here.
  22. setupProperty()
  23. }
  24. override func updateUILanguage() {
  25. super.updateUILanguage()
  26. setupProperty()
  27. }
  28. override func updateUIThemeColor() {
  29. super.updateUIThemeColor()
  30. setupProperty()
  31. }
  32. func setupProperty() {
  33. eraserLabel.stringValue = KMLocalizedString("Line")
  34. eraserLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
  35. eraserLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
  36. eraserSlider.properties = ComponentSliderProperty(size: .m, percent: 1)
  37. eraserSlider.delegate = self
  38. eraserSelect.properties = ComponentSelectProperties(size: .s,
  39. state: .normal,
  40. creatable: true,
  41. text: "2",
  42. textUnit: " pt",
  43. regexString: "0123456789 pt")
  44. if true {
  45. var opacityItems: [ComponentMenuitemProperty] = []
  46. for string in ["1 pt", "2 pt", "4 pt", "6 pt", "8 pt", "10 pt"] {
  47. let item = ComponentMenuitemProperty(type: .normal, text: string)
  48. opacityItems.append(item)
  49. }
  50. eraserSelect.updateMenuItemsArr(opacityItems)
  51. }
  52. eraserSelect.delegate = self
  53. }
  54. func reloadData() {
  55. let value = CPDFAnnotationConfig.getDefaultFloatValue(forKey: CEraserkNoteLineWidthKey) ?? 7
  56. let percent: CGFloat = CGFloat(value)/18
  57. eraserSlider.properties.percent = percent
  58. eraserSlider.reloadData()
  59. eraserSelect.properties.text = String(format: "%.0f%@", CGFloat(value), " pt")
  60. eraserSelect.reloadData()
  61. }
  62. }
  63. //MARK: - ComponentSliderDelegate
  64. extension KMEraserController: ComponentSliderDelegate {
  65. func componentSliderDidUpdate(_ view: ComponentSlider) {
  66. if view == eraserSlider {
  67. let percent = view.properties.percent * 18
  68. CPDFAnnotationConfig.setDefaultFloatValue(percent, toKey: CEraserkNoteLineWidthKey)
  69. }
  70. reloadData()
  71. }
  72. }
  73. //MARK: - ComponentSelectDelegate
  74. extension KMEraserController: ComponentSelectDelegate {
  75. func componentSelectDidSelect(view: ComponentSelect?, menuItemProperty: ComponentMenuitemProperty?) {
  76. if let result = menuItemProperty?.text {
  77. let result = result.stringByDeleteCharString(view?.properties.textUnit ?? "")
  78. var value = result.stringToCGFloat()
  79. if value > 18 {
  80. value = 18
  81. } else if value < 0 {
  82. value = 0
  83. }
  84. CPDFAnnotationConfig.setDefaultFloatValue(value, toKey: CEraserkNoteLineWidthKey)
  85. }
  86. reloadData()
  87. }
  88. func componentSelectTextDidEndEditing(_ view: ComponentSelect, removeUnit text: String?) {
  89. if let result = text {
  90. if view == eraserSelect {
  91. var value = result.stringToCGFloat()
  92. if value > 18 {
  93. value = 18
  94. } else if value < 0 {
  95. value = 0
  96. }
  97. CPDFAnnotationConfig.setDefaultFloatValue(value, toKey: CEraserkNoteLineWidthKey)
  98. }
  99. }
  100. reloadData()
  101. }
  102. }