KMConvertImageSettingView.swift 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. //
  2. // KMConvertImageSettingView.swift
  3. // PDF Master
  4. //
  5. // Created by tangchao on 2022/12/6.
  6. //
  7. import Cocoa
  8. class KMConvertImageSettingView: KMConvertSettingView, NibLoadable {
  9. @IBOutlet weak var fileTypeTitleLabel: NSTextField!
  10. @IBOutlet weak var formatComboBox: NSComboBox!
  11. @IBOutlet weak var resolutionComboBox: NSComboBox!
  12. @IBOutlet weak var formatBox: NSBox!
  13. var formartView: KMDesignSelect!
  14. @IBOutlet weak var pageRangeBox: NSBox!
  15. @IBOutlet weak var topBoxHeightConst: NSLayoutConstraint!
  16. var selectedFormatIndex = 0
  17. var selectedResolutionIndex = 3
  18. static var nibName: String? {
  19. return "KMConvertBaseWindowController"
  20. }
  21. static func createFromNib(in bundle: Bundle = Bundle.main) -> Self? {
  22. guard let nibName = nibName else { return nil }
  23. var topLevelArray: NSArray? = nil
  24. bundle.loadNibNamed(NSNib.Name(nibName), owner: nil, topLevelObjects: &topLevelArray)
  25. guard let results = topLevelArray else { return nil }
  26. let views = Array<Any>(results).filter { $0 is Self }
  27. return views.last as? Self
  28. }
  29. override func awakeFromNib() {
  30. super.awakeFromNib()
  31. fileTypeTitleLabel.stringValue = NSLocalizedString("Format", comment: "")
  32. fileTypeTitleLabel.textColor = NSColor(hex: "#616469")
  33. fileTypeTitleLabel.font = .SFProTextSemibold(12)
  34. formartView = KMDesignSelect.init(withType: .Combox)
  35. formatBox.fillColor = .clear
  36. formatBox.contentView = formartView.view
  37. formartView.removeAllItems()
  38. formartView.addItems(withObjectValues: ["JPEG","JPG","PNG","GIF","TIFF","TGA","BMP","JPEG-2000"])
  39. formartView.selectItem(at: 0)
  40. formartView.editable = false //默认属性,初始化可不设置
  41. formartView.delete = self
  42. formartView.updateUI()
  43. // resolutionComboBox.isEditable = false
  44. // resolutionComboBox.removeAllItems()
  45. // resolutionComboBox.addItems(withObjectValues: ["50 dpi", "72 dpi", "96 dpi", "150 dpi", "300 dpi", "600 dpi"])
  46. // resolutionComboBox.selectItem(at: 3)
  47. // resolutionComboBox.delegate = self
  48. self.topBoxHeightConst.constant = 80
  49. resolutionComboBox.isHidden = true
  50. }
  51. override func viewDidMoveToWindow() {
  52. super.viewDidMoveToWindow()
  53. let pageRangeItemView = KMConvertPageRangeSettingItemView.createFromNib()
  54. pageRangeItemView?.frame = pageRangeBox.contentView!.bounds
  55. pageRangeItemView?.autoresizingMask = NSView.AutoresizingMask(rawValue: 18)
  56. pageRangeBox.contentView = pageRangeItemView
  57. self.pageRangeItemView = pageRangeItemView
  58. pageRangeItemView?.isTextDidEndCallback = true
  59. pageRangeItemView?.pageCount = self.pageCount
  60. pageRangeItemView?.itemClick = { [unowned self] index, _ in
  61. pageRangeSelectedIndex = index
  62. guard let callback = self.pageRangeDidChange else {
  63. return
  64. }
  65. callback(KMPageRange(rawValue: index)!)
  66. }
  67. pageRangeItemView?.textDidEndEditingCallback = { [unowned self] textString in
  68. let pageRange = KMPageRange(rawValue: self.pageRangeSelectedIndex)
  69. if (pageRange != .custom) {
  70. return
  71. }
  72. guard let callback = pageRangeDidInputFinishCallback else {
  73. return
  74. }
  75. callback(textString)
  76. }
  77. }
  78. override func getPageRangeString() -> String {
  79. if let view = self.pageRangeItemView {
  80. return view.pageRangeValue
  81. }
  82. return ""
  83. }
  84. }
  85. extension KMConvertImageSettingView: KMSelectPopButtonDelegate {
  86. func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) {
  87. if formartView.isEqual(to: obj) {
  88. if formartView.indexOfSelectedItem < 0 {
  89. selectedFormatIndex = 0
  90. } else {
  91. selectedFormatIndex = formartView.indexOfSelectedItem
  92. }
  93. }
  94. // else if resolutionComboBox.isEqual(to: notification.object) {
  95. // if resolutionComboBox.indexOfSelectedItem < 0 {
  96. // selectedResolutionIndex = 0
  97. // } else {
  98. // selectedResolutionIndex = resolutionComboBox.indexOfSelectedItem
  99. // }
  100. // }
  101. }
  102. func km_controlTextDidEndEditing(_ obj: KMDesignSelect) {
  103. }
  104. }