12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- //
- // KMCropTipView.swift
- // PDF Reader Pro
- //
- // Created by tangchao on 2023/1/4.
- //
- import Cocoa
- typealias KMCropTipViewEnterAction = ()->()
- class KMCropTipView: NSView {
-
- private var contentView = NSView()
- private var label = NSTextField(labelWithString: "")
-
- private var localMonitor: Any!
-
- var enterAction: KMCropTipViewEnterAction!
-
- deinit {
- NSEvent.removeMonitor(self.localMonitor as Any)
- self.localMonitor = nil
- }
-
- override init(frame frameRect: NSRect) {
- super.init(frame: frameRect)
-
- initSubviews()
- }
-
- required init?(coder: NSCoder) {
- super.init(coder: coder)
-
- initSubviews()
- }
-
- func initSubviews() {
- self.addSubview(self.contentView)
- self.contentView.addSubview(self.label)
-
- self.contentView.wantsLayer = true
- self.contentView.layer?.backgroundColor = NSColor(red: 17.0/255.0, green: 138.0/255.0, blue: 1.0, alpha: 1.0).cgColor
-
- self.label.textColor = NSColor.white
- self.label.font = NSFont.systemFont(ofSize: 14)
- self.label.alignment = .center
-
- self.localMonitor = NSEvent.addLocalMonitorForEvents(matching: .keyUp, handler: {
- [weak self] (event: NSEvent) -> NSEvent in
- if (event.keyCode != 36) {
- return event
- }
-
- guard let callback = self!.enterAction else {
- return event
- }
-
- callback()
-
- return event
- })
- }
-
- override func layout() {
- super.layout()
-
- let width: CGFloat = NSWidth(self.bounds)
- let height: CGFloat = NSHeight(self.bounds)
-
- let contentWidth: CGFloat = 186
- let contentHeight: CGFloat = 32
- self.contentView.frame = NSMakeRect((width-contentWidth)*0.5, (height-contentHeight)*0.5, contentWidth, contentHeight)
- self.label.frame = NSMakeRect(0, 5, contentWidth, 22)
- }
-
- func setString(string: String) {
- self.label.stringValue = string
- }
- }
|