KMConvertExcelSettingView.swift 8.5 KB

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