// // 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(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) { } }