KMConvertExcelSettingView.swift 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. //
  2. // KMConvertExcelSettingView.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by tangchao on 2022/12/6.
  6. //
  7. import KMComponentLibrary
  8. typealias KMConvertExcelSettingViewTypeAction = (_ view: KMConvertExcelSettingView, _ typeSelectIndex: Int) -> Void
  9. typealias KMConvertExcelSettingViewAllContentTypeAction = (_ view: KMConvertExcelSettingView, _ typeSelectIndex: Int) -> Void
  10. typealias KMConvertExcelSettingViewOnlyTablesTypeAction = (_ view: KMConvertExcelSettingView, _ typeSelectIndex: Int) -> Void
  11. class KMConvertExcelSettingView: KMConvertSettingView {
  12. @IBOutlet weak var excelSettingTitleLabel: NSTextField!
  13. @IBOutlet weak var tableFormatComboBox: NSComboBox!
  14. @IBOutlet weak var allContentsBox: NSBox!
  15. @IBOutlet weak var sheetBox: NSBox!
  16. @IBOutlet weak var onlyTableBox: NSBox!
  17. @IBOutlet weak var tableFormatBox: NSBox!
  18. @IBOutlet weak var onlyTextBox: NSBox!
  19. @IBOutlet weak var ocrBox: NSBox!
  20. @IBOutlet weak var pageRangeBox: NSBox!
  21. var selectedSettingIndex: Int = 0
  22. var selectedTableFormatIndex: Int = 0
  23. var selectedSheetIndex: Int = 0
  24. var typeAction: KMConvertExcelSettingViewTypeAction?
  25. var allContentTypeAction: KMConvertExcelSettingViewAllContentTypeAction?
  26. var onlyTablesTypeAction: KMConvertExcelSettingViewOnlyTablesTypeAction?
  27. private var allContentRadio_: ComponentRadio = {
  28. let view = ComponentRadio()
  29. view.properties = ComponentCheckBoxProperty(size: .s,
  30. state: .normal,
  31. isDisabled: false,
  32. showhelp: false,
  33. text: NSLocalizedString("All Content", comment: ""),
  34. checkboxType: .normal)
  35. return view
  36. }()
  37. private lazy var sheetSelect_: ComponentSelect = {
  38. let view = ComponentSelect()
  39. view.properties = ComponentSelectProperties(size: .s,
  40. state: .normal,
  41. isDisabled: false,
  42. isError: false,
  43. leftIcon: false,
  44. placeholder: nil,
  45. errorText: nil,
  46. creatable: false,
  47. text: NSLocalizedString("", comment: ""))
  48. view.delegate = self
  49. return view
  50. }()
  51. private var onlyTableRadio_: ComponentRadio = {
  52. let view = ComponentRadio()
  53. view.properties = ComponentCheckBoxProperty(size: .s,
  54. state: .normal,
  55. isDisabled: false,
  56. showhelp: false,
  57. text: NSLocalizedString("Only Table", comment: ""),
  58. checkboxType: .normal)
  59. return view
  60. }()
  61. private lazy var tableFormatSelect_: ComponentSelect = {
  62. let view = ComponentSelect()
  63. view.properties = ComponentSelectProperties(size: .s,
  64. state: .normal,
  65. isDisabled: false,
  66. isError: false,
  67. leftIcon: false,
  68. placeholder: nil,
  69. errorText: nil,
  70. creatable: false,
  71. text: NSLocalizedString("", comment: ""))
  72. view.delegate = self
  73. return view
  74. }()
  75. private var onlyTextRadio_: ComponentRadio = {
  76. let view = ComponentRadio()
  77. view.properties = ComponentCheckBoxProperty(size: .s,
  78. state: .normal,
  79. isDisabled: false,
  80. showhelp: false,
  81. text: NSLocalizedString("Only Text", comment: ""),
  82. checkboxType: .normal)
  83. return view
  84. }()
  85. override func awakeFromNib() {
  86. super.awakeFromNib()
  87. self.radioAction(sender: self.allContentRadio_)
  88. }
  89. override func initSubViews() {
  90. super.initSubViews()
  91. self.allContentsBox.contentView = self.allContentRadio_
  92. self.allContentRadio_.setTarget(self, action: #selector(radioAction))
  93. self.onlyTableBox.contentView = self.onlyTableRadio_
  94. self.onlyTableRadio_.setTarget(self, action: #selector(radioAction))
  95. self.onlyTextBox.contentView = self.onlyTextRadio_
  96. self.onlyTextRadio_.setTarget(self, action: #selector(radioAction))
  97. self.sheetBox.contentView = self.sheetSelect_
  98. var menuItemArr: [ComponentMenuitemProperty] = []
  99. for string in [NSLocalizedString("Create Sheet for each Page", comment: ""),NSLocalizedString("Create single Sheet for File", comment: "")] {
  100. let itemProperty: ComponentMenuitemProperty = ComponentMenuitemProperty(multipleSelect: false,
  101. itemSelected: false,
  102. isDisabled: false,
  103. keyEquivalent: nil,
  104. text: string)
  105. menuItemArr.append(itemProperty)
  106. }
  107. sheetSelect_.updateMenuItemsArr(menuItemArr)
  108. sheetSelect_.selectItemAtIndex(0)
  109. sheetSelect_.properties.creatable = false
  110. sheetSelect_.properties.text = NSLocalizedString("Create Sheet for each Page", comment: "")
  111. sheetSelect_.reloadData()
  112. self.tableFormatBox.contentView = self.tableFormatSelect_
  113. var menuItemArr2: [ComponentMenuitemProperty] = []
  114. for string in [NSLocalizedString("Create Sheet for each Table", comment: ""),NSLocalizedString("Create Sheet for each Page", comment: ""),NSLocalizedString("Create single Sheet for File", comment: "")] {
  115. let itemProperty: ComponentMenuitemProperty = ComponentMenuitemProperty(multipleSelect: false,
  116. itemSelected: false,
  117. isDisabled: false,
  118. keyEquivalent: nil,
  119. text: string)
  120. menuItemArr2.append(itemProperty)
  121. }
  122. tableFormatSelect_.updateMenuItemsArr(menuItemArr2)
  123. tableFormatSelect_.selectItemAtIndex(0)
  124. tableFormatSelect_.properties.creatable = false
  125. tableFormatSelect_.properties.text = NSLocalizedString("Create Sheet for each Table", comment: "")
  126. tableFormatSelect_.reloadData()
  127. self.tipView?.km_add_left_constraint(constant: 8)
  128. self.tipView?.km_add_top_constraint(equalTo: self.pageRangeBox, attribute: .bottom, constant: -5)
  129. self.tipView?.km_add_right_constraint()
  130. self.tipView?.km_add_height_constraint(constant: 16+20+16)
  131. }
  132. override func initDefaultVlaue() {
  133. super.initDefaultVlaue()
  134. self.excelSettingTitleLabel.stringValue = NSLocalizedString("Excel Worksheet Settings", comment: "")
  135. self.excelSettingTitleLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
  136. self.allContentsBox.fillColor = .clear
  137. self.onlyTableBox.fillColor = .clear
  138. self.onlyTextBox.fillColor = .clear
  139. self.sheetBox.fillColor = .clear
  140. self.tableFormatBox.fillColor = .clear
  141. }
  142. override func viewDidMoveToWindow() {
  143. super.viewDidMoveToWindow()
  144. if (self.ocrItemView == nil) {
  145. self.ocrItemView = KMConvertOCRSettingItemView.createFromNib()
  146. self.ocrBox.contentView = self.ocrItemView
  147. self.ocrItemView?.titleLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
  148. updateViewColor()
  149. }
  150. self.ocrItemView?.languageIndex = self.ocrLanuguageIndex
  151. if (self.pageRangeItemView == nil) {
  152. self.pageRangeItemView = KMConvertPageRangeSettingItemView.createFromNib()
  153. self.pageRangeBox.contentView = self.pageRangeItemView
  154. self.pageRangeItemView?.titleLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
  155. self.pageRangeItemView?.titleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
  156. updateViewColor()
  157. }
  158. self.pageRangeItemView?.isHidden = self.isBatch
  159. }
  160. override func updateViewColor() {
  161. super.updateViewColor()
  162. KMMainThreadExecute {
  163. self.excelSettingTitleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
  164. }
  165. }
  166. @objc func radioAction(sender: Any) {
  167. for radio in [self.allContentRadio_, self.onlyTableRadio_, self.onlyTextRadio_] {
  168. if (radio.isEqual(to: sender)) {
  169. radio.properties.checkboxType = .selected
  170. radio.reloadData()
  171. } else {
  172. radio.properties.checkboxType = .normal
  173. radio.reloadData()
  174. }
  175. }
  176. if self.onlyTableRadio_.properties.checkboxType == .selected {
  177. self.tableFormatSelect_.properties.isDisabled = false
  178. self.tableFormatSelect_.reloadData()
  179. self.sheetSelect_.properties.isDisabled = true
  180. self.sheetSelect_.reloadData()
  181. self.ocrItemView?.checkVC?.state = .None
  182. self.ocrItemView?.checkVC?.enabled = false
  183. self.ocrItemView?.checkAction()
  184. self.selectedSettingIndex = 1
  185. } else {
  186. if self.allContentRadio_.properties.checkboxType == .selected {
  187. self.tableFormatSelect_.properties.isDisabled = true
  188. self.tableFormatSelect_.reloadData()
  189. self.sheetSelect_.properties.isDisabled = false
  190. self.sheetSelect_.reloadData()
  191. self.selectedSettingIndex = 0
  192. } else {
  193. self.tableFormatSelect_.properties.isDisabled = true
  194. self.tableFormatSelect_.reloadData()
  195. self.sheetSelect_.properties.isDisabled = true
  196. self.sheetSelect_.reloadData()
  197. self.selectedSettingIndex = 2
  198. }
  199. self.ocrItemView?.checkVC?.enabled = true
  200. self.ocrItemView?.checkAction()
  201. }
  202. typeAction?(self, self.selectedSettingIndex)
  203. }
  204. override func reloadData() {
  205. allContentRadio_.properties.isDisabled = self.isDisable
  206. sheetSelect_.properties.isDisabled = self.isDisable
  207. onlyTableRadio_.properties.isDisabled = self.isDisable
  208. tableFormatSelect_.properties.isDisabled = self.isDisable
  209. onlyTextRadio_.properties.isDisabled = self.isDisable
  210. }
  211. }
  212. extension KMConvertExcelSettingView: ComponentSelectDelegate {
  213. func componentSelectDidSelect(view: ComponentSelect?, menuItemProperty: ComponentMenuitemProperty?) {
  214. guard let index = view?.indexOfSelect(), index >= 0 else {
  215. return
  216. }
  217. if self.sheetSelect_.isEqual(to: view) {
  218. self.selectedSheetIndex = max(index, 0)
  219. self.allContentTypeAction?(self, self.selectedSheetIndex)
  220. } else if self.tableFormatSelect_.isEqual(to: view) {
  221. self.selectedTableFormatIndex = max(index, 0)
  222. self.onlyTablesTypeAction?(self, self.selectedTableFormatIndex)
  223. }
  224. }
  225. }