KMEraserController.swift 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  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. reloadUI()
  27. }
  28. override func updateUIThemeColor() {
  29. super.updateUIThemeColor()
  30. reloadUI()
  31. }
  32. func reloadUI() {
  33. eraserLabel.stringValue = KMLocalizedString("Line")
  34. eraserLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
  35. eraserLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
  36. }
  37. func setupProperty() {
  38. eraserSlider.properties = ComponentSliderProperty(size: .m, percent: 1)
  39. eraserSlider.delegate = self
  40. eraserSelect.properties = ComponentSelectProperties(size: .s,
  41. state: .normal,
  42. creatable: true,
  43. text: "2",
  44. textUnit: " pt",
  45. regexString: "0123456789 pt")
  46. if true {
  47. var opacityItems: [ComponentMenuitemProperty] = []
  48. for string in ["1 pt", "2 pt", "4 pt", "6 pt", "8 pt", "10 pt"] {
  49. let item = ComponentMenuitemProperty(type: .normal, text: string)
  50. opacityItems.append(item)
  51. }
  52. eraserSelect.updateMenuItemsArr(opacityItems)
  53. }
  54. eraserSelect.delegate = self
  55. }
  56. func reloadData() {
  57. let value = CPDFAnnotationConfig.getDefaultFloatValue(forKey: CEraserkNoteLineWidthKey) ?? 7
  58. let percent: CGFloat = CGFloat(value)/18
  59. eraserSlider.properties.percent = percent
  60. eraserSlider.reloadData()
  61. eraserSelect.properties.text = String(format: "%.0f%@", CGFloat(value), " pt")
  62. eraserSelect.reloadData()
  63. }
  64. }
  65. //MARK: - ComponentSliderDelegate
  66. extension KMEraserController: ComponentSliderDelegate {
  67. func componentSliderDidUpdate(_ view: ComponentSlider) {
  68. if view == eraserSlider {
  69. let percent = view.properties.percent * 18
  70. CPDFAnnotationConfig.setDefaultFloatValue(percent, toKey: CEraserkNoteLineWidthKey)
  71. }
  72. reloadData()
  73. }
  74. }
  75. //MARK: - ComponentSelectDelegate
  76. extension KMEraserController: ComponentSelectDelegate {
  77. func componentSelectDidSelect(view: ComponentSelect?, menuItemProperty: ComponentMenuitemProperty?) {
  78. if let result = menuItemProperty?.text {
  79. let result = result.stringByDeleteCharString(view?.properties.textUnit ?? "")
  80. var value = result.stringToCGFloat()
  81. if value > 18 {
  82. value = 18
  83. } else if value < 0 {
  84. value = 0
  85. }
  86. CPDFAnnotationConfig.setDefaultFloatValue(value, toKey: CEraserkNoteLineWidthKey)
  87. }
  88. reloadData()
  89. }
  90. func componentSelectTextDidEndEditing(_ view: ComponentSelect, removeUnit text: String?) {
  91. if let result = text {
  92. if view == eraserSelect {
  93. var value = result.stringToCGFloat()
  94. if value > 18 {
  95. value = 18
  96. } else if value < 0 {
  97. value = 0
  98. }
  99. CPDFAnnotationConfig.setDefaultFloatValue(value, toKey: CEraserkNoteLineWidthKey)
  100. }
  101. }
  102. reloadData()
  103. }
  104. }