// // KMDesignButton.swift // PDF Reader Pro // // Created by wanjun on 2023/2/18. // import Cocoa @objc enum DesignButtonType : Int { case Text = 0 // 纯文本按钮 case Image // 纯图片按钮 case TextImage // 文本+图片按钮,区分图片在上左下右位置 case PopUpButton // PopUp按钮 case RadioButton // 单选按钮 case CheckBox // 多选按钮 } @objcMembers class KMDesignButton: KMDesignBase { @IBOutlet weak var mainBox: NSBox! @IBOutlet weak var button : NSButton! // Text @IBOutlet weak var textButtonBox: NSBox! @IBOutlet weak var textButtonlabel : NSTextField! // Image @IBOutlet weak var imageButtonBox: NSBox! @IBOutlet weak var imageView1: NSImageView! // TextImage @IBOutlet weak var textImageButtonBox: NSBox! @IBOutlet weak var textImage_upView: NSView! @IBOutlet weak var textImage_leftView: NSView! @IBOutlet weak var textImage_downView: NSView! @IBOutlet weak var textImage_rightView: NSView! @IBOutlet weak var textImage_upImageView: NSImageView! @IBOutlet weak var textImage_leftImageView: NSImageView! @IBOutlet weak var textImage_downImageView: NSImageView! @IBOutlet weak var textImage_rightImageView: NSImageView! @IBOutlet weak var textImage_upTextfield: NSTextField! @IBOutlet weak var textImage_leftTextfield: NSTextField! @IBOutlet weak var textImage_downTextfield: NSTextField! @IBOutlet weak var textImage_rightTextfield: NSTextField! @IBOutlet weak var textImage_upPadding_spacing: NSLayoutConstraint! @IBOutlet weak var textImage_upImageHeight: NSLayoutConstraint! @IBOutlet weak var textImage_upImageWidth: NSLayoutConstraint! @IBOutlet weak var textImage_upItem_spacing: NSLayoutConstraint! @IBOutlet weak var textImage_leftPadding_spacing: NSLayoutConstraint! @IBOutlet weak var textImage_leftImageHeight: NSLayoutConstraint! @IBOutlet weak var textImage_leftImageWidth: NSLayoutConstraint! @IBOutlet weak var textImage_leftItem_spacing: NSLayoutConstraint! @IBOutlet weak var textImage_downPadding_spacing: NSLayoutConstraint! @IBOutlet weak var textImage_downImageHeight: NSLayoutConstraint! @IBOutlet weak var textImage_downImageWidth: NSLayoutConstraint! @IBOutlet weak var textImage_downItem_spacing: NSLayoutConstraint! @IBOutlet weak var textImage_rightPadding_spacing: NSLayoutConstraint! @IBOutlet weak var textImage_rightImageHeight: NSLayoutConstraint! @IBOutlet weak var textImage_rightImageWidth: NSLayoutConstraint! @IBOutlet weak var textImage_rightItem_spacing: NSLayoutConstraint! @IBOutlet weak var radioButton_imageView: NSImageView! @IBOutlet weak var radioButton_label: NSTextField! @IBOutlet weak var radio_label_spacing: NSLayoutConstraint! @IBOutlet weak var radio_imageViewWidth: NSLayoutConstraint! @IBOutlet weak var radio_imageViewHeight: NSLayoutConstraint! @IBOutlet weak var mainBoxHeight : NSLayoutConstraint! // mainBox 高度约束 @IBOutlet weak var mainBoxWidth : NSLayoutConstraint! // mainBox 宽度约束 var height: Float = 32.0 // 高度 var width: Float = 80.0 // 宽度 var textImage_imageWidth: Float = 20.0// 图片宽度 var textImage_imageHeight: Float = 20.0// 图片高度 var textImage_paddingSpacing: Float = 16.0 var textImage_itemSpacing: Float = 8.0 // var image: NSImage = NSImage(named: "KMRadioButtonUnSelect")! // imageView 图片 var radio_imageWidth = 16.0 // 图片宽度 var radio_imageHeight = 16.0 // 图片高度 var radio_label = 8.0 // imageView、label 水平间距 var ignoreDisabledImage = false var tag: Int = 0 { didSet { self.button.tag = self.tag } } init(withType type: DesignButtonType) { super.init(nibName: "KMDesignButton", bundle: nil) self.buttonType = type } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func viewDidLoad() { super.viewDidLoad() // Do view setup here. } // MARK: Get、Set var action: Selector { get { return _action! } set { _action = newValue if _action != nil { button.action = _action } } } var target: AnyObject { get { return _target! } set { _target = newValue if _target != nil { button.target = _target } } } var state: KMDesignTokenState = .Norm var enabled: Bool { get { return _enabled } set { _enabled = newValue self.button.isEnabled = _enabled if _enabled { state = .Norm } else { state = .Disabled } updateUI() } } var isHidden: Bool { get { return _isHidden } set { _isHidden = newValue self.view.isHidden = _isHidden } } var image: NSImage { get { return _image } set { _image = newValue updateUI() } } var image_hov: NSImage { get { if _image_hov == nil { return _image } return _image_hov! } set { _image_hov = newValue updateUI() } } var image_act: NSImage { get { if _image_act == nil { return _image } return _image_act! } set { _image_act = newValue updateUI() } } var image_disabled: NSImage { get { if self.ignoreDisabledImage { return _image } if _image_disabled == nil { return _image } return _image_disabled! } set { _image_disabled = newValue updateUI() } } var image_sel: NSImage { get { if (_image_sel == nil) { _image_sel = image } return _image_sel! } set { _image_sel = newValue updateUI() } } var image_checked: NSImage { get { if (_image_checked == nil) { _image_checked = image } return _image_checked! } set { _image_checked = newValue updateUI() } } var image_checkeddis: NSImage { get { if (_image_checkeddis == nil) { _image_checkeddis = image } return _image_checkeddis! } set { _image_checkeddis = newValue updateUI() } } var toolTip: String { get { return _toolTip } set { _toolTip = newValue if _toolTip != "" { button.toolTip = _toolTip } } } // MARK: Private Methods func updateUI() -> Void { } } extension KMDesignButton { func initDefaultValue() { } }