KMConvertCSVSettingView.swift 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. //
  2. // KMConvertCSVSettingView.swift
  3. // PDF Master
  4. //
  5. // Created by tangchao on 2022/12/6.
  6. //
  7. import Cocoa
  8. class KMConvertCSVSettingView: KMConvertSettingView, NibLoadable {
  9. @IBOutlet weak var oneFileForPageComboBox: NSButton!
  10. @IBOutlet weak var onlyGetTableBox: NSBox!
  11. @IBOutlet weak var tableSheetComboBox: NSComboBox!
  12. @IBOutlet weak var pageRangeBox: NSBox!
  13. var selectedSettingIndex: Int = 0
  14. var selectedTableFormatIndex: Int = 0
  15. var onlyGetTableVC: KMDesignButton!
  16. static var nibName: String? {
  17. return "KMConvertBaseWindowController"
  18. }
  19. static func createFromNib(in bundle: Bundle = Bundle.main) -> Self? {
  20. guard let nibName = nibName else { return nil }
  21. var topLevelArray: NSArray? = nil
  22. bundle.loadNibNamed(NSNib.Name(nibName), owner: nil, topLevelObjects: &topLevelArray)
  23. guard let results = topLevelArray else { return nil }
  24. let views = Array<Any>(results).filter { $0 is Self }
  25. return views.last as? Self
  26. }
  27. override func awakeFromNib() {
  28. super.awakeFromNib()
  29. onlyGetTableVC = KMDesignButton.init(withType: .CheckBox)
  30. onlyGetTableBox.fillColor = .clear
  31. onlyGetTableBox.contentView = onlyGetTableVC.view
  32. oneFileForPageComboBox.title = NSLocalizedString("Excel Worksheet Settings", comment: "")
  33. oneFileForPageComboBox.font = .SFProTextSemibold(12)
  34. oneFileForPageComboBox.setTitleColor(NSColor(hex: "#616469"))
  35. onlyGetTableVC.stringValue = NSLocalizedString("Only Table", comment: "")
  36. onlyGetTableVC.target = self
  37. onlyGetTableVC.action = #selector(self.radioAction(sender:))
  38. onlyGetTableVC.checkbox_radio()
  39. tableSheetComboBox.removeAllItems()
  40. tableSheetComboBox.addItems(withObjectValues: ["支持一个表格提取到单独的工作表","支持按页面提取表格到单独的工作表","支持将所有表格提取到一个工作表"])
  41. tableSheetComboBox.selectItem(at: 0)
  42. tableSheetComboBox.delegate = self
  43. // for radio in [onlyGetTableComboBox] {
  44. // radio?.target = self
  45. // radio?.action = #selector(radioAction)
  46. // }
  47. }
  48. override func viewDidMoveToWindow() {
  49. super.viewDidMoveToWindow()
  50. let pageRangeItemView = KMConvertPageRangeSettingItemView.createFromNib()
  51. pageRangeItemView?.frame = pageRangeBox.contentView!.bounds
  52. pageRangeItemView?.autoresizingMask = NSView.AutoresizingMask(rawValue: 18)
  53. pageRangeBox.contentView = pageRangeItemView
  54. self.pageRangeItemView = pageRangeItemView
  55. pageRangeItemView?.isTextDidEndCallback = true
  56. pageRangeItemView?.pageCount = self.pageCount
  57. pageRangeItemView?.itemClick = { [unowned self] index, _ in
  58. pageRangeSelectedIndex = index
  59. guard let callback = self.pageRangeDidChange else {
  60. return
  61. }
  62. callback(KMPageRange(rawValue: index)!)
  63. }
  64. pageRangeItemView?.textDidEndEditingCallback = { [unowned self] textString in
  65. let pageRange = KMPageRange(rawValue: self.pageRangeSelectedIndex)
  66. if (pageRange != .custom) {
  67. return
  68. }
  69. guard let callback = pageRangeDidInputFinishCallback else {
  70. return
  71. }
  72. callback(textString)
  73. }
  74. }
  75. @objc func radioAction(sender: NSButton) {
  76. for radio in [onlyGetTableVC] {
  77. if ((radio?.button.isEqual(to: sender))!) {
  78. if radio?.state == .Checked {
  79. radio?.state = .Norm
  80. } else {
  81. radio?.state = .Checked
  82. }
  83. }
  84. }
  85. if onlyGetTableVC.state == .Checked {
  86. tableSheetComboBox.isEnabled = true
  87. } else {
  88. tableSheetComboBox.isEnabled = false
  89. }
  90. if onlyGetTableVC.state == .Checked {
  91. selectedSettingIndex = 1
  92. } else {
  93. selectedSettingIndex = 0
  94. }
  95. }
  96. override func getPageRangeString() -> String {
  97. if let view = self.pageRangeItemView {
  98. return view.pageRangeValue
  99. }
  100. return ""
  101. }
  102. }
  103. extension KMConvertCSVSettingView: NSComboBoxDelegate {
  104. func comboBoxSelectionDidChange(_ notification: Notification) {
  105. if (tableSheetComboBox.isEqual(to: notification.object)) {
  106. if tableSheetComboBox.indexOfSelectedItem < 0 {
  107. selectedTableFormatIndex = 0
  108. return
  109. }
  110. selectedTableFormatIndex = tableSheetComboBox.indexOfSelectedItem
  111. }
  112. }
  113. }