KMToolbarZoomItemView.swift 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. //
  2. // KMToolbarZoomItemView.swift
  3. // PDF Master
  4. //
  5. // Created by tangchao on 2023/11/28.
  6. //
  7. import Cocoa
  8. class KMToolbarZoomItemView: NSView {
  9. lazy var boxView: NSView = {
  10. let view = NSView()
  11. view.frame = NSMakeRect(0, 16, 70, 22)
  12. return view
  13. }()
  14. weak var zoomView: NSView?
  15. lazy var titleLabel: NSTextField = {
  16. let label = NSTextField(labelWithString: NSLocalizedString("Zoom", comment: ""))
  17. label.frame = NSMakeRect(0, 0, 70, 16)
  18. label.alignment = .right
  19. label.font = .systemFont(ofSize: 11)
  20. return label
  21. }()
  22. lazy var zoomInButton: NSButton = {
  23. let button = NSButton()
  24. button.isBordered = false
  25. button.title = ""
  26. button.image = NSImage(named: "KMImageNameUXIconToolbarZoominNor")
  27. button.target = self
  28. button.action = #selector(_buttonClicked)
  29. return button
  30. }()
  31. lazy var zoomOutButton: NSButton = {
  32. let button = NSButton()
  33. button.isBordered = false
  34. button.title = ""
  35. button.image = NSImage(named: "KMImageNameUXIconToolbarZoomoutNor")
  36. button.target = self
  37. button.action = #selector(_buttonClicked)
  38. return button
  39. }()
  40. var callback: KMCommonClickBlock?
  41. convenience init(zoomView: NSView?) {
  42. let vspace: CGFloat = 2
  43. let zoomButtonW: CGFloat = 20
  44. self.init(frame: NSMakeRect(0, 0, 70+2*zoomButtonW+vspace, 40))
  45. self.zoomView = zoomView
  46. self.addSubview(self.boxView)
  47. if let zview = self.zoomView {
  48. self.boxView.addSubview(zview)
  49. self.zoomView?.frame = NSMakeRect(10, 3, NSWidth(zview.frame), NSHeight(zview.frame))
  50. }
  51. self.addSubview(self.titleLabel)
  52. self.addSubview(self.zoomInButton)
  53. self.addSubview(self.zoomOutButton)
  54. self.zoomOutButton.frame = NSMakeRect(CGRectGetMaxX(self.boxView.frame)+vspace, 17, zoomButtonW, zoomButtonW)
  55. self.zoomInButton.frame = NSMakeRect(CGRectGetMaxX(self.zoomOutButton.frame), 17, zoomButtonW, zoomButtonW)
  56. self.boxView.wantsLayer = true
  57. self.boxView.layer?.borderWidth = 1
  58. self.boxView.layer?.borderColor = NSColor.lightGray.cgColor
  59. }
  60. override func draw(_ dirtyRect: NSRect) {
  61. super.draw(dirtyRect)
  62. }
  63. }
  64. // MARK: - Private Methods
  65. extension KMToolbarZoomItemView {
  66. @objc private func _buttonClicked(_ sender: NSButton) {
  67. var idx = 1
  68. if self.zoomInButton.isEqual(to: sender) {
  69. idx = 2
  70. }
  71. guard let block = self.callback else {
  72. return
  73. }
  74. block(idx)
  75. }
  76. }