123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- //
- // KMDesignDropdown.swift
- // PDF Master
- //
- // Created by wanjun on 2023/2/20.
- //
- import Cocoa
- class KMDesignDropdown: NSViewController {
- @IBOutlet weak var mainBox: KMMoveBox!
- @IBOutlet weak var button : NSButton!
- @IBOutlet weak var label : NSTextField!
- @IBOutlet weak var dropdownView : NSView!
- @IBOutlet weak var horizontalPadding: NSLayoutConstraint!
-
- var height: Float = 30.0
- var horizontalPadding_spacing: Float = 8.0
- var textColor: NSColor = .black // 内容颜色
- var textColor_hov: NSColor = .black // 内容颜色
- var textColor_sel: NSColor = .black // 内容颜色
- var textColor_disabled: NSColor = .black // 内容颜色
- var background: NSColor = .clear// 背景颜色
- var background_hov: NSColor = .clear// 背景颜色
- var background_sel: NSColor = .clear// 背景颜色
- var background_disabled: NSColor = .clear// 背景颜色
- var cornerRadius: Float = 0.0// 边框圆角
- var cornerRadius_hov: Float = 0.0// 边框圆角
- var cornerRadius_sel: Float = 0.0// 边框圆角
- var cornerRadius_disabled: Float = 0.0// 边框圆角
- var lineHeight: CGFloat = 20.0 // 默认 内容行高
- var lineHeight_hov: CGFloat = 20.0 // 默认 内容行高
- var lineHeight_sel: CGFloat = 20.0 // 默认 内容行高
- var lineHeight_disabled: CGFloat = 20.0 // 默认 内容行高
- var font: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
- var font_hov: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
- var font_sel: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
- var font_disabled: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
- var stringValue: String = ""// 内容
- var toolTip: String = "" // 提示文字
- // button 通用属性
- var action: Selector? // 点击事件
- var target: AnyObject? // 对象目标
- var enabled: Bool = true // 是否可点击
- var state: KMDesignTokenState = .Norm
- var canHover: Bool = true // 是否可悬浮
- var isHidden: Bool = false // 是否隐藏
- var editable: Bool = false //是否允许编辑
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do view setup here.
-
- mainBox.contentView = dropdownView
-
- mainBox.move = { [weak self](mouseEntered: Bool) -> Void in
- if self != nil {
- if mouseEntered {
- if self!.state != .Sel && self!.canHover && (self!.state != .Disabled) {
- self!.state = .Hov
- self!.updateUI()
- }
- } else {
- if self!.state != .Sel && self!.canHover && (self!.state != .Disabled) {
- self!.state = .Norm
- self!.updateUI()
- }
- }
- }
- }
- }
-
- // MARK: Private Methods
- func updateUI() -> Void {
- let paragraphStyle = NSMutableParagraphStyle()
- if (state == .Norm) {
- mainBox.fillColor = background
- mainBox.cornerRadius = CGFloat(cornerRadius)
- label.textColor = textColor
- label.font = font
- paragraphStyle.lineSpacing = lineHeight
- } else if (state == .Hov) {
- mainBox.fillColor = background_hov
- mainBox.cornerRadius = CGFloat(cornerRadius_hov)
- label.textColor = textColor_hov
- label.font = font_hov
- paragraphStyle.lineSpacing = lineHeight_hov
- } else if (state == .Sel) {
- mainBox.fillColor = background_sel
- mainBox.cornerRadius = CGFloat(cornerRadius_sel)
- label.textColor = textColor_sel
- label.font = font_sel
- paragraphStyle.lineSpacing = lineHeight_sel
- } else if (state == .Disabled) {
- mainBox.fillColor = background_disabled
- mainBox.cornerRadius = CGFloat(cornerRadius_disabled)
- label.textColor = textColor_disabled
- label.font = font_disabled
- paragraphStyle.lineSpacing = lineHeight_disabled
- }
- if action != nil {
- button.action = action
- button.target = target
- }
- button.isEnabled = enabled
- label.attributedStringValue = NSAttributedString(string: stringValue, attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle])
- if toolTip != "" {
- button.toolTip = toolTip
- }
- self.view.isHidden = isHidden
-
- horizontalPadding.constant = CGFloat(horizontalPadding_spacing)
- }
- }
|