KMConvertExcelSettingView.swift 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  1. //
  2. // KMConvertExcelSettingView.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by tangchao on 2022/12/6.
  6. //
  7. import KMComponentLibrary
  8. class KMConvertExcelSettingView: KMConvertSettingView {
  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. private var allContentRadio_: ComponentRadio = {
  27. let view = ComponentRadio()
  28. view.properties = ComponentCheckBoxProperty(size: .s,
  29. state: .normal,
  30. isDisabled: false,
  31. showhelp: false,
  32. text: NSLocalizedString("All Content", comment: ""),
  33. checkboxType: .normal)
  34. return view
  35. }()
  36. private lazy var sheetSelect_: ComponentSelect = {
  37. let view = ComponentSelect()
  38. view.properties = ComponentSelectProperties(size: .s,
  39. state: .normal,
  40. isDisabled: false,
  41. isError: false,
  42. leftIcon: false,
  43. placeholder: nil,
  44. errorText: nil,
  45. creatable: false,
  46. text: NSLocalizedString("", comment: ""))
  47. view.delegate = self
  48. return view
  49. }()
  50. private var onlyTableRadio_: ComponentRadio = {
  51. let view = ComponentRadio()
  52. view.properties = ComponentCheckBoxProperty(size: .s,
  53. state: .normal,
  54. isDisabled: false,
  55. showhelp: false,
  56. text: NSLocalizedString("Only Table", comment: ""),
  57. checkboxType: .normal)
  58. return view
  59. }()
  60. private lazy var tableFormatSelect_: ComponentSelect = {
  61. let view = ComponentSelect()
  62. view.properties = ComponentSelectProperties(size: .s,
  63. state: .normal,
  64. isDisabled: false,
  65. isError: false,
  66. leftIcon: false,
  67. placeholder: nil,
  68. errorText: nil,
  69. creatable: false,
  70. text: NSLocalizedString("", comment: ""))
  71. view.delegate = self
  72. return view
  73. }()
  74. private var onlyTextRadio_: ComponentRadio = {
  75. let view = ComponentRadio()
  76. view.properties = ComponentCheckBoxProperty(size: .s,
  77. state: .normal,
  78. isDisabled: false,
  79. showhelp: false,
  80. text: NSLocalizedString("Only Text", comment: ""),
  81. checkboxType: .normal)
  82. return view
  83. }()
  84. override func awakeFromNib() {
  85. super.awakeFromNib()
  86. self.radioAction(sender: self.allContentRadio_)
  87. }
  88. override func initSubViews() {
  89. super.initSubViews()
  90. self.allContentsBox.contentView = self.allContentRadio_
  91. self.allContentRadio_.setTarget(self, action: #selector(radioAction))
  92. self.onlyTableBox.contentView = self.onlyTableRadio_
  93. self.onlyTableRadio_.setTarget(self, action: #selector(radioAction))
  94. self.onlyTextBox.contentView = self.onlyTextRadio_
  95. self.onlyTextRadio_.setTarget(self, action: #selector(radioAction))
  96. self.sheetBox.contentView = self.sheetSelect_
  97. var menuItemArr: [ComponentMenuitemProperty] = []
  98. for string in [NSLocalizedString("Create Sheet for each Page", comment: ""),NSLocalizedString("Create single Sheet for File", comment: "")] {
  99. let itemProperty: ComponentMenuitemProperty = ComponentMenuitemProperty(multipleSelect: false,
  100. itemSelected: false,
  101. isDisabled: false,
  102. keyEquivalent: nil,
  103. text: string)
  104. menuItemArr.append(itemProperty)
  105. }
  106. sheetSelect_.updateMenuItemsArr(menuItemArr)
  107. sheetSelect_.selectItemAtIndex(0)
  108. sheetSelect_.properties.creatable = false
  109. sheetSelect_.properties.text = ""
  110. sheetSelect_.reloadData()
  111. self.tableFormatBox.contentView = self.tableFormatSelect_
  112. var menuItemArr2: [ComponentMenuitemProperty] = []
  113. for string in [NSLocalizedString("Create Sheet for each Table", comment: ""),NSLocalizedString("Create Sheet for each Page", comment: ""),NSLocalizedString("Create single Sheet for File", comment: "")] {
  114. let itemProperty: ComponentMenuitemProperty = ComponentMenuitemProperty(multipleSelect: false,
  115. itemSelected: false,
  116. isDisabled: false,
  117. keyEquivalent: nil,
  118. text: string)
  119. menuItemArr2.append(itemProperty)
  120. }
  121. tableFormatSelect_.updateMenuItemsArr(menuItemArr2)
  122. tableFormatSelect_.selectItemAtIndex(0)
  123. tableFormatSelect_.properties.creatable = false
  124. tableFormatSelect_.properties.text = ""
  125. tableFormatSelect_.reloadData()
  126. self.tipView?.km_add_left_constraint(constant: 8)
  127. self.tipView?.km_add_top_constraint(equalTo: self.pageRangeBox, attribute: .bottom, constant: -5)
  128. self.tipView?.km_add_right_constraint()
  129. self.tipView?.km_add_height_constraint(constant: 16+20+16)
  130. }
  131. override func initDefaultVlaue() {
  132. super.initDefaultVlaue()
  133. self.excelSettingTitleLabel.stringValue = NSLocalizedString("Excel Worksheet Settings", comment: "")
  134. self.excelSettingTitleLabel.textColor = NSColor.km_init(hex: "#616469")
  135. self.excelSettingTitleLabel.font = .SFProTextSemiboldFont(12)
  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. }
  148. self.ocrItemView?.languageIndex = self.ocrLanuguageIndex
  149. if (self.pageRangeItemView == nil) {
  150. self.pageRangeItemView = KMConvertPageRangeSettingItemView.createFromNib()
  151. self.pageRangeBox.contentView = self.pageRangeItemView
  152. // self.tipView?.km_add_left_constraint(constant: 8)
  153. // self.tipView?.km_add_top_constraint(equalTo: self.pageRangeBox, attribute: .bottom, constant: -5)
  154. // self.tipView?.km_add_right_constraint()
  155. // self.tipView?.km_add_height_constraint(constant: 16+20+16)
  156. }
  157. }
  158. @objc func radioAction(sender: Any) {
  159. for radio in [self.allContentRadio_, self.onlyTableRadio_, self.onlyTextRadio_] {
  160. if (radio.isEqual(to: sender)) {
  161. radio.properties.checkboxType = .selected
  162. radio.reloadData()
  163. } else {
  164. radio.properties.checkboxType = .normal
  165. radio.reloadData()
  166. }
  167. }
  168. if self.onlyTableRadio_.properties.checkboxType == .selected {
  169. self.tableFormatSelect_.properties.isDisabled = false
  170. self.tableFormatSelect_.reloadData()
  171. self.sheetSelect_.properties.isDisabled = true
  172. self.sheetSelect_.reloadData()
  173. //#if VERSION_DMG
  174. // let isExist = KMResourceDownload.manager().documentAIBundleIsExist()
  175. // if isExist {
  176. // self.ocrItemView?.checkVC?.state = .None
  177. // self.ocrItemView?.checkVC?.enabled = false
  178. // self.ocrItemView?.checkAction()
  179. // }
  180. //#else
  181. self.ocrItemView?.checkVC?.state = .None
  182. self.ocrItemView?.checkVC?.enabled = false
  183. self.ocrItemView?.checkAction()
  184. //#endif
  185. self.selectedSettingIndex = 1
  186. } else {
  187. if self.allContentRadio_.properties.checkboxType == .selected {
  188. self.tableFormatSelect_.properties.isDisabled = true
  189. self.tableFormatSelect_.reloadData()
  190. self.sheetSelect_.properties.isDisabled = false
  191. self.sheetSelect_.reloadData()
  192. self.selectedSettingIndex = 0
  193. } else {
  194. self.tableFormatSelect_.properties.isDisabled = true
  195. self.tableFormatSelect_.reloadData()
  196. self.sheetSelect_.properties.isDisabled = true
  197. self.sheetSelect_.reloadData()
  198. self.selectedSettingIndex = 2
  199. }
  200. //#if VERSION_DMG
  201. // let isExist = KMResourceDownload.manager().documentAIBundleIsExist()
  202. // if isExist {
  203. // self.ocrItemView?.checkVC?.enabled = true
  204. // self.ocrItemView?.checkVC?.state = .Checked
  205. // self.ocrItemView?.checkAction()
  206. // }
  207. //#else
  208. self.ocrItemView?.checkVC?.enabled = true
  209. // self.ocrItemView?.checkVC?.state = .Checked
  210. self.ocrItemView?.checkAction()
  211. //#endif
  212. }
  213. }
  214. }
  215. //extension KMConvertExcelSettingView: KMSelectPopButtonDelegate {
  216. // func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) {
  217. // if (obj.isEqual(to: self.tableFormatView)) {
  218. // if let index = self.tableFormatView?.indexOfSelectedItem, index >= 0 {
  219. // self.selectedTableFormatIndex = index
  220. // return
  221. // }
  222. // self.selectedTableFormatIndex = 0
  223. // } else if (obj.isEqual(to: self.sheetView)) {
  224. // if let view = self.sheetView {
  225. // self.selectedSheetIndex = max(view.indexOfSelectedItem, 0)
  226. // }
  227. // }
  228. // }
  229. //}
  230. extension KMConvertExcelSettingView: ComponentSelectDelegate {
  231. func componentSelectDidSelect(view: ComponentSelect?, menuItemProperty: ComponentMenuitemProperty?) {
  232. guard let index = view?.indexOfSelect(), index >= 0 else {
  233. return
  234. }
  235. if self.sheetSelect_.isEqual(to: view) {
  236. self.selectedSheetIndex = max(index, 0)
  237. } else if self.tableFormatSelect_.isEqual(to: view) {
  238. self.selectedTableFormatIndex = max(index, 0)
  239. }
  240. }
  241. }