KMDesignButton.swift 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. //
  2. // KMDesignButton.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by wanjun on 2023/2/18.
  6. //
  7. import Cocoa
  8. @objc enum DesignButtonType : Int {
  9. case Text = 0 // 纯文本按钮
  10. case Image // 纯图片按钮
  11. case TextImage // 文本+图片按钮,区分图片在上左下右位置
  12. case PopUpButton // PopUp按钮
  13. case RadioButton // 单选按钮
  14. case CheckBox // 多选按钮
  15. }
  16. @objcMembers class KMDesignButton: KMDesignBase {
  17. @IBOutlet weak var mainBox: NSBox!
  18. @IBOutlet weak var button : NSButton!
  19. // Text
  20. @IBOutlet weak var textButtonBox: NSBox!
  21. @IBOutlet weak var textButtonlabel : NSTextField!
  22. // Image
  23. @IBOutlet weak var imageButtonBox: NSBox!
  24. @IBOutlet weak var imageView1: NSImageView!
  25. // TextImage
  26. @IBOutlet weak var textImageButtonBox: NSBox!
  27. @IBOutlet weak var textImage_upView: NSView!
  28. @IBOutlet weak var textImage_leftView: NSView!
  29. @IBOutlet weak var textImage_downView: NSView!
  30. @IBOutlet weak var textImage_rightView: NSView!
  31. @IBOutlet weak var textImage_upImageView: NSImageView!
  32. @IBOutlet weak var textImage_leftImageView: NSImageView!
  33. @IBOutlet weak var textImage_downImageView: NSImageView!
  34. @IBOutlet weak var textImage_rightImageView: NSImageView!
  35. @IBOutlet weak var textImage_upTextfield: NSTextField!
  36. @IBOutlet weak var textImage_leftTextfield: NSTextField!
  37. @IBOutlet weak var textImage_downTextfield: NSTextField!
  38. @IBOutlet weak var textImage_rightTextfield: NSTextField!
  39. @IBOutlet weak var textImage_upPadding_spacing: NSLayoutConstraint!
  40. @IBOutlet weak var textImage_upImageHeight: NSLayoutConstraint!
  41. @IBOutlet weak var textImage_upImageWidth: NSLayoutConstraint!
  42. @IBOutlet weak var textImage_upItem_spacing: NSLayoutConstraint!
  43. @IBOutlet weak var textImage_leftPadding_spacing: NSLayoutConstraint!
  44. @IBOutlet weak var textImage_leftImageHeight: NSLayoutConstraint!
  45. @IBOutlet weak var textImage_leftImageWidth: NSLayoutConstraint!
  46. @IBOutlet weak var textImage_leftItem_spacing: NSLayoutConstraint!
  47. @IBOutlet weak var textImage_downPadding_spacing: NSLayoutConstraint!
  48. @IBOutlet weak var textImage_downImageHeight: NSLayoutConstraint!
  49. @IBOutlet weak var textImage_downImageWidth: NSLayoutConstraint!
  50. @IBOutlet weak var textImage_downItem_spacing: NSLayoutConstraint!
  51. @IBOutlet weak var textImage_rightPadding_spacing: NSLayoutConstraint!
  52. @IBOutlet weak var textImage_rightImageHeight: NSLayoutConstraint!
  53. @IBOutlet weak var textImage_rightImageWidth: NSLayoutConstraint!
  54. @IBOutlet weak var textImage_rightItem_spacing: NSLayoutConstraint!
  55. @IBOutlet weak var radioButton_imageView: NSImageView!
  56. @IBOutlet weak var radioButton_label: NSTextField!
  57. @IBOutlet weak var radio_label_spacing: NSLayoutConstraint!
  58. @IBOutlet weak var radio_imageViewWidth: NSLayoutConstraint!
  59. @IBOutlet weak var radio_imageViewHeight: NSLayoutConstraint!
  60. @IBOutlet weak var mainBoxHeight : NSLayoutConstraint! // mainBox 高度约束
  61. @IBOutlet weak var mainBoxWidth : NSLayoutConstraint! // mainBox 宽度约束
  62. var height: Float = 32.0 // 高度
  63. var width: Float = 80.0 // 宽度
  64. var textImage_imageWidth: Float = 20.0// 图片宽度
  65. var textImage_imageHeight: Float = 20.0// 图片高度
  66. var textImage_paddingSpacing: Float = 16.0
  67. var textImage_itemSpacing: Float = 8.0
  68. // var image: NSImage = NSImage(named: "KMRadioButtonUnSelect")! // imageView 图片
  69. var radio_imageWidth = 16.0 // 图片宽度
  70. var radio_imageHeight = 16.0 // 图片高度
  71. var radio_label = 8.0 // imageView、label 水平间距
  72. var ignoreDisabledImage = false
  73. var tag: Int = 0 {
  74. didSet {
  75. self.button.tag = self.tag
  76. }
  77. }
  78. init(withType type: DesignButtonType) {
  79. super.init(nibName: "KMDesignButton", bundle: nil)
  80. self.buttonType = type
  81. }
  82. required init?(coder: NSCoder) {
  83. fatalError("init(coder:) has not been implemented")
  84. }
  85. override func viewDidLoad() {
  86. super.viewDidLoad()
  87. // Do view setup here.
  88. }
  89. // MARK: Get、Set
  90. var action: Selector {
  91. get {
  92. return _action!
  93. }
  94. set {
  95. _action = newValue
  96. if _action != nil {
  97. button.action = _action
  98. }
  99. }
  100. }
  101. var target: AnyObject {
  102. get {
  103. return _target!
  104. }
  105. set {
  106. _target = newValue
  107. if _target != nil {
  108. button.target = _target
  109. }
  110. }
  111. }
  112. var state: KMDesignTokenState = .Norm
  113. var enabled: Bool {
  114. get {
  115. return _enabled
  116. }
  117. set {
  118. _enabled = newValue
  119. self.button.isEnabled = _enabled
  120. if _enabled {
  121. state = .Norm
  122. } else {
  123. state = .Disabled
  124. }
  125. updateUI()
  126. }
  127. }
  128. var isHidden: Bool {
  129. get {
  130. return _isHidden
  131. }
  132. set {
  133. _isHidden = newValue
  134. self.view.isHidden = _isHidden
  135. }
  136. }
  137. var image: NSImage {
  138. get {
  139. return _image
  140. }
  141. set {
  142. _image = newValue
  143. updateUI()
  144. }
  145. }
  146. var image_hov: NSImage {
  147. get {
  148. if _image_hov == nil {
  149. return _image
  150. }
  151. return _image_hov!
  152. }
  153. set {
  154. _image_hov = newValue
  155. updateUI()
  156. }
  157. }
  158. var image_act: NSImage {
  159. get {
  160. if _image_act == nil {
  161. return _image
  162. }
  163. return _image_act!
  164. }
  165. set {
  166. _image_act = newValue
  167. updateUI()
  168. }
  169. }
  170. var image_disabled: NSImage {
  171. get {
  172. if self.ignoreDisabledImage {
  173. return _image
  174. }
  175. if _image_disabled == nil {
  176. return _image
  177. }
  178. return _image_disabled!
  179. }
  180. set {
  181. _image_disabled = newValue
  182. updateUI()
  183. }
  184. }
  185. var image_sel: NSImage {
  186. get {
  187. if (_image_sel == nil) {
  188. _image_sel = image
  189. }
  190. return _image_sel!
  191. }
  192. set {
  193. _image_sel = newValue
  194. updateUI()
  195. }
  196. }
  197. var image_checked: NSImage {
  198. get {
  199. if (_image_checked == nil) {
  200. _image_checked = image
  201. }
  202. return _image_checked!
  203. }
  204. set {
  205. _image_checked = newValue
  206. updateUI()
  207. }
  208. }
  209. var image_checkeddis: NSImage {
  210. get {
  211. if (_image_checkeddis == nil) {
  212. _image_checkeddis = image
  213. }
  214. return _image_checkeddis!
  215. }
  216. set {
  217. _image_checkeddis = newValue
  218. updateUI()
  219. }
  220. }
  221. var toolTip: String {
  222. get {
  223. return _toolTip
  224. }
  225. set {
  226. _toolTip = newValue
  227. if _toolTip != "" {
  228. button.toolTip = _toolTip
  229. }
  230. }
  231. }
  232. // MARK: Private Methods
  233. func updateUI() -> Void {
  234. }
  235. }
  236. extension KMDesignButton {
  237. func initDefaultValue() {
  238. }
  239. }