KMConvertExcelSettingView.swift 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. //
  2. // KMConvertExcelSettingView.swift
  3. // PDF Master
  4. //
  5. // Created by tangchao on 2022/12/6.
  6. //
  7. class KMConvertExcelSettingView: KMConvertSettingView {
  8. @IBOutlet weak var excelSettingTitleLabel: NSTextField!
  9. @IBOutlet weak var tableFormatComboBox: NSComboBox!
  10. @IBOutlet weak var allContentsBox: NSBox!
  11. @IBOutlet weak var sheetBox: NSBox!
  12. @IBOutlet weak var onlyTableBox: NSBox!
  13. @IBOutlet weak var tableFormatBox: NSBox!
  14. @IBOutlet weak var onlyTextBox: NSBox!
  15. @IBOutlet weak var ocrBox: NSBox!
  16. @IBOutlet weak var pageRangeBox: NSBox!
  17. var sheetView: KMDesignSelect!
  18. var tableFormatView: KMDesignSelect!
  19. var allContentsVC: KMDesignButton!
  20. var onlyTableVC: KMDesignButton!
  21. var onlyTextVC: KMDesignButton!
  22. var selectedSettingIndex: Int = 0
  23. var selectedTableFormatIndex: Int = 0
  24. var selectedSheetIndex: Int = 0
  25. override func awakeFromNib() {
  26. super.awakeFromNib()
  27. allContentsVC = KMDesignButton.init(withType: .RadioButton)
  28. onlyTableVC = KMDesignButton.init(withType: .RadioButton)
  29. onlyTextVC = KMDesignButton.init(withType: .RadioButton)
  30. allContentsBox.fillColor = .clear
  31. allContentsBox.contentView = allContentsVC.view
  32. onlyTableBox.fillColor = .clear
  33. onlyTableBox.contentView = onlyTableVC.view
  34. onlyTextBox.fillColor = .clear
  35. onlyTextBox.contentView = onlyTextVC.view
  36. excelSettingTitleLabel.stringValue = NSLocalizedString("Excel Worksheet Settings", comment: "")
  37. excelSettingTitleLabel.textColor = NSColor(hex: "#616469")
  38. excelSettingTitleLabel.font = .SFProTextSemibold(12)
  39. self.allContentsVC.stringValue = NSLocalizedString("All Content", comment: "")
  40. let titles = ["All Content", "Only Table", "Only Text"]
  41. var i: Int = 0
  42. for radio in [self.allContentsVC, self.onlyTableVC, self.onlyTextVC] {
  43. radio?.stringValue = NSLocalizedString(titles[i], comment: "")
  44. radio?.target = self
  45. radio?.action = #selector(self.radioAction(sender:))
  46. radio?.checkbox_radio()
  47. // radio!.action = { [weak self] view, button in
  48. // self?.radioAction(sender: view)
  49. // }
  50. i += 1
  51. }
  52. sheetView = KMDesignSelect.init(withType: .Combox)
  53. sheetBox.fillColor = .clear
  54. sheetBox.contentView = sheetView.view
  55. sheetView.removeAllItems()
  56. sheetView.addItems(withObjectValues: [NSLocalizedString("Create Sheet for each Page", comment: ""),NSLocalizedString("Create single Sheet for File", comment: "")])
  57. sheetView.selectItem(at: 0)
  58. sheetView.editable = false //默认属性,初始化可不设置
  59. sheetView.delete = self
  60. sheetView.updateUI()
  61. tableFormatView = KMDesignSelect.init(withType: .Combox)
  62. tableFormatBox.fillColor = .clear
  63. tableFormatBox.contentView = tableFormatView.view
  64. tableFormatView.removeAllItems()
  65. tableFormatView.addItems(withObjectValues: [NSLocalizedString("Create Sheet for each Table", comment: ""),NSLocalizedString("Create Sheet for each Page", comment: ""),NSLocalizedString("Create single Sheet for File", comment: "")])
  66. tableFormatView.selectItem(at: 0)
  67. tableFormatView.editable = false //默认属性,初始化可不设置
  68. tableFormatView.delete = self
  69. tableFormatView.updateUI()
  70. allContentsVC.updateUI()
  71. self.radioAction(sender: self.allContentsVC.button as Any)
  72. }
  73. override func viewDidMoveToWindow() {
  74. super.viewDidMoveToWindow()
  75. let ocrItemView = KMConvertOCRSettingItemView.createFromNib()
  76. ocrItemView?.frame = ocrBox.contentView!.bounds
  77. ocrItemView?.autoresizingMask = NSView.AutoresizingMask(rawValue: 18)
  78. ocrBox.contentView = ocrItemView
  79. ocrItemView?.languageIndex = ocrLanuguageIndex
  80. self.ocrItemView = ocrItemView
  81. ocrItemView?.lanugageDidSelected = { [unowned self] value, change in
  82. guard let callback = lanugageDidSelected else {
  83. return
  84. }
  85. callback(value, change)
  86. }
  87. let pageRangeItemView = KMConvertPageRangeSettingItemView.createFromNib()
  88. pageRangeItemView?.frame = pageRangeBox.contentView!.bounds
  89. pageRangeItemView?.autoresizingMask = NSView.AutoresizingMask(rawValue: 18)
  90. pageRangeBox.contentView = pageRangeItemView
  91. pageRangeItemView?.isTextDidEndCallback = true
  92. self.pageRangeItemView = pageRangeItemView
  93. pageRangeItemView?.pageCount = self.pageCount
  94. pageRangeItemView?.itemClick = { [unowned self] index, _ in
  95. pageRangeSelectedIndex = index
  96. guard let callback = self.pageRangeDidChange else {
  97. return
  98. }
  99. callback(KMPageRange(rawValue: index)!)
  100. }
  101. pageRangeItemView?.textDidEndEditingCallback = { [unowned self] textString in
  102. let pageRange = KMPageRange(rawValue: self.pageRangeSelectedIndex)
  103. if (pageRange != .custom) {
  104. return
  105. }
  106. guard let callback = pageRangeDidInputFinishCallback else {
  107. return
  108. }
  109. callback(textString)
  110. }
  111. }
  112. @objc func radioAction(sender: Any) {
  113. for radio in [self.allContentsVC, self.onlyTableVC, self.onlyTextVC] {
  114. if ((radio?.button.isEqual(to: sender))!) {
  115. radio?.state = .Checked
  116. } else {
  117. radio?.state = .Norm
  118. }
  119. }
  120. if self.onlyTableVC.state == .Checked {
  121. self.tableFormatView.enabled = true
  122. self.sheetView.enabled = false
  123. if (self.ocrItemView != nil) {
  124. self.ocrItemView?.checkVC?.enabled = false
  125. self.ocrItemView?.checkVC?.state = .None
  126. self.ocrItemView?.checkAction()
  127. }
  128. } else {
  129. if (self.allContentsVC.state == .Checked) {
  130. self.tableFormatView.enabled = false
  131. self.sheetView.enabled = true
  132. } else {
  133. self.tableFormatView.enabled = false
  134. self.sheetView.enabled = false
  135. }
  136. if (self.ocrItemView != nil) {
  137. self.ocrItemView?.checkVC?.enabled = true
  138. self.ocrItemView?.checkVC?.state = .Checked
  139. self.ocrItemView?.checkAction()
  140. }
  141. }
  142. if self.allContentsVC.state == .Checked {
  143. selectedSettingIndex = 0
  144. } else if self.onlyTableVC.state == .Checked {
  145. selectedSettingIndex = 1
  146. } else if (self.onlyTextVC.state == .Checked) {
  147. selectedSettingIndex = 2
  148. }
  149. }
  150. override func getPageRangeString() -> String {
  151. if let view = self.pageRangeItemView {
  152. return view.pageRangeValue
  153. }
  154. return ""
  155. }
  156. }
  157. extension KMConvertExcelSettingView: KMSelectPopButtonDelegate {
  158. func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) {
  159. if (self.tableFormatView.isEqual(to: obj)) {
  160. if tableFormatView.indexOfSelectedItem < 0 {
  161. selectedTableFormatIndex = 0
  162. return
  163. }
  164. selectedTableFormatIndex = tableFormatView.indexOfSelectedItem
  165. } else if (self.sheetView.isEqual(to: obj)) {
  166. if sheetView.indexOfSelectedItem < 0 {
  167. selectedSheetIndex = 0
  168. return
  169. }
  170. selectedSheetIndex = sheetView.indexOfSelectedItem
  171. }
  172. }
  173. func km_controlTextDidChange(_ obj: KMDesignSelect) {
  174. }
  175. func km_controlTextDidEndEditing(_ obj: KMDesignSelect) {
  176. }
  177. }