123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- //
- // KMConvertExcelSettingView.swift
- // PDF Master
- //
- // Created by tangchao on 2022/12/6.
- //
- import Cocoa
- class KMConvertExcelSettingView: KMConvertSettingView, NibLoadable {
- @IBOutlet weak var excelSettingTitleLabel: NSTextField!
- @IBOutlet weak var tableFormatComboBox: NSComboBox!
-
- @IBOutlet weak var allContentsBox: NSBox!
- @IBOutlet weak var sheetBox: NSBox!
- @IBOutlet weak var onlyTableBox: NSBox!
- @IBOutlet weak var tableFormatBox: NSBox!
- @IBOutlet weak var onlyTextBox: NSBox!
-
- @IBOutlet weak var ocrBox: NSBox!
- @IBOutlet weak var pageRangeBox: NSBox!
-
- var sheetView: KMDesignSelect!
- var tableFormatView: KMDesignSelect!
- var allContentsVC: KMDesignButton!
- var onlyTableVC: KMDesignButton!
- var onlyTextVC: KMDesignButton!
- var selectedSettingIndex: Int = 0
- var selectedTableFormatIndex: Int = 0
- var selectedSheetIndex: Int = 0
-
- static var nibName: String? {
- return "KMConvertBaseWindowController"
- }
-
- static func createFromNib(in bundle: Bundle = Bundle.main) -> Self? {
- guard let nibName = nibName else { return nil }
- var topLevelArray: NSArray? = nil
- bundle.loadNibNamed(NSNib.Name(nibName), owner: nil, topLevelObjects: &topLevelArray)
- guard let results = topLevelArray else { return nil }
- let views = Array<Any>(results).filter { $0 is Self }
- return views.last as? Self
- }
-
- override func awakeFromNib() {
- super.awakeFromNib()
- allContentsVC = KMDesignButton.init(withType: .RadioButton)
- onlyTableVC = KMDesignButton.init(withType: .RadioButton)
- onlyTextVC = KMDesignButton.init(withType: .RadioButton)
- allContentsBox.fillColor = .clear
- allContentsBox.contentView = allContentsVC.view
- onlyTableBox.fillColor = .clear
- onlyTableBox.contentView = onlyTableVC.view
- onlyTextBox.fillColor = .clear
- onlyTextBox.contentView = onlyTextVC.view
-
- excelSettingTitleLabel.stringValue = NSLocalizedString("Excel Worksheet Settings", comment: "")
- excelSettingTitleLabel.textColor = NSColor(hex: "#616469")
- excelSettingTitleLabel.font = .SFProTextSemibold(12)
-
- self.allContentsVC.stringValue = NSLocalizedString("All Content", comment: "")
-
- let titles = ["All Content", "Only Table", "Only Text"]
- var i: Int = 0
- for radio in [self.allContentsVC, self.onlyTableVC, self.onlyTextVC] {
- radio?.stringValue = NSLocalizedString(titles[i], comment: "")
- radio?.target = self
- radio?.action = #selector(self.radioAction(sender:))
- radio?.checkbox_radio()
- // radio!.action = { [weak self] view, button in
- // self?.radioAction(sender: view)
- // }
-
- i += 1
- }
-
- sheetView = KMDesignSelect.init(withType: .Combox)
-
- sheetBox.fillColor = .clear
- sheetBox.contentView = sheetView.view
-
- sheetView.removeAllItems()
- sheetView.addItems(withObjectValues: [NSLocalizedString("Create Sheet for each Page", comment: ""),NSLocalizedString("Create single Sheet for File", comment: "")])
- sheetView.selectItem(at: 0)
- sheetView.editable = false //默认属性,初始化可不设置
- sheetView.delete = self
- sheetView.updateUI()
-
- tableFormatView = KMDesignSelect.init(withType: .Combox)
-
- tableFormatBox.fillColor = .clear
- tableFormatBox.contentView = tableFormatView.view
-
- tableFormatView.removeAllItems()
- tableFormatView.addItems(withObjectValues: [NSLocalizedString("Create Sheet for each Table", comment: ""),NSLocalizedString("Create Sheet for each Page", comment: ""),NSLocalizedString("Create single Sheet for File", comment: "")])
- tableFormatView.selectItem(at: 0)
- tableFormatView.editable = false //默认属性,初始化可不设置
- tableFormatView.delete = self
- tableFormatView.updateUI()
-
- allContentsVC.updateUI()
- self.radioAction(sender: self.allContentsVC.button as Any)
- }
-
- override func viewDidMoveToWindow() {
- super.viewDidMoveToWindow()
-
- let ocrItemView = KMConvertOCRSettingItemView.createFromNib()
- ocrItemView?.frame = ocrBox.contentView!.bounds
- ocrItemView?.autoresizingMask = NSView.AutoresizingMask(rawValue: 18)
- // ocrBox.contentView = ocrItemView
- ocrItemView?.languageIndex = ocrLanuguageIndex
- self.ocrItemView = ocrItemView
-
- ocrItemView?.lanugageDidSelected = { [unowned self] index in
- guard let callback = lanugageDidSelected else {
- return
- }
-
- callback(index)
- }
-
- let pageRangeItemView = KMConvertPageRangeSettingItemView.createFromNib()
- pageRangeItemView?.frame = pageRangeBox.contentView!.bounds
- pageRangeItemView?.autoresizingMask = NSView.AutoresizingMask(rawValue: 18)
- pageRangeBox.contentView = pageRangeItemView
- pageRangeItemView?.isTextDidEndCallback = true
- self.pageRangeItemView = pageRangeItemView
- pageRangeItemView?.pageCount = self.pageCount
-
- pageRangeItemView?.itemClick = { [unowned self] index, _ in
- pageRangeSelectedIndex = index
-
- guard let callback = self.pageRangeDidChange else {
- return
- }
-
- callback(KMPageRange(rawValue: index)!)
- }
-
- pageRangeItemView?.textDidEndEditingCallback = { [unowned self] textString in
- let pageRange = KMPageRange(rawValue: self.pageRangeSelectedIndex)
- if (pageRange != .custom) {
- return
- }
-
- guard let callback = pageRangeDidInputFinishCallback else {
- return
- }
-
- callback(textString)
- }
- }
-
- @objc func radioAction(sender: Any) {
- for radio in [self.allContentsVC, self.onlyTableVC, self.onlyTextVC] {
- if ((radio?.button.isEqual(to: sender))!) {
- radio?.state = .Checked
- } else {
- radio?.state = .Norm
- }
- }
-
- if self.onlyTableVC.state == .Checked {
- self.tableFormatView.enabled = true
- self.sheetView.enabled = false
- if (self.ocrItemView != nil) {
- self.ocrItemView.checkBox.isEnabled = false
- self.ocrItemView.checkBox.state = .off
- self.ocrItemView.checkBoxAction(sender: self.ocrItemView.checkBox)
- }
- } else {
- if (self.allContentsVC.state == .Checked) {
- self.tableFormatView.enabled = false
- self.sheetView.enabled = true
- } else {
- self.tableFormatView.enabled = false
- self.sheetView.enabled = false
- }
-
- if (self.ocrItemView != nil) {
- self.ocrItemView.checkBox.isEnabled = true
- self.ocrItemView.checkBox.state = .on
- self.ocrItemView.checkBoxAction(sender: self.ocrItemView.checkBox)
- }
- }
-
- if self.allContentsVC.state == .Checked {
- selectedSettingIndex = 0
- } else if self.onlyTableVC.state == .Checked {
- selectedSettingIndex = 1
- } else if (self.onlyTextVC.state == .Checked) {
- selectedSettingIndex = 2
- }
- }
-
- override func getPageRangeString() -> String {
- if let view = self.pageRangeItemView {
- return view.pageRangeValue
- }
- return ""
- }
- }
- extension KMConvertExcelSettingView: KMSelectPopButtonDelegate {
- func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) {
- if (self.tableFormatView.isEqual(to: obj)) {
- if tableFormatView.indexOfSelectedItem < 0 {
- selectedTableFormatIndex = 0
- return
- }
-
- selectedTableFormatIndex = tableFormatView.indexOfSelectedItem
- } else if (self.sheetView.isEqual(to: obj)) {
- if sheetView.indexOfSelectedItem < 0 {
- selectedSheetIndex = 0
- return
- }
-
- selectedSheetIndex = sheetView.indexOfSelectedItem
- }
- }
-
- func km_controlTextDidChange(_ obj: KMDesignSelect) {
-
- }
-
- func km_controlTextDidEndEditing(_ obj: KMDesignSelect) {
-
- }
- }
|