// // KMConvertCSVSettingView.swift // PDF Master // // Created by tangchao on 2022/12/6. // import Cocoa class KMConvertCSVSettingView: KMConvertSettingView, NibLoadable { @IBOutlet weak var oneFileForPageComboBox: NSButton! @IBOutlet weak var onlyGetTableBox: NSBox! @IBOutlet weak var tableSheetComboBox: NSComboBox! @IBOutlet weak var pageRangeBox: NSBox! var selectedSettingIndex: Int = 0 var selectedTableFormatIndex: Int = 0 var onlyGetTableVC: KMDesignButton! 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() onlyGetTableVC = KMDesignButton.init(withType: .CheckBox) onlyGetTableBox.fillColor = .clear onlyGetTableBox.contentView = onlyGetTableVC.view oneFileForPageComboBox.title = NSLocalizedString("Excel Worksheet Settings", comment: "") oneFileForPageComboBox.font = .SFProTextSemibold(12) oneFileForPageComboBox.setTitleColor(NSColor(hex: "#616469")) onlyGetTableVC.stringValue = NSLocalizedString("Only Table", comment: "") onlyGetTableVC.target = self onlyGetTableVC.action = #selector(self.radioAction(sender:)) onlyGetTableVC.checkbox_radio() tableSheetComboBox.removeAllItems() tableSheetComboBox.addItems(withObjectValues: ["支持一个表格提取到单独的工作表","支持按页面提取表格到单独的工作表","支持将所有表格提取到一个工作表"]) tableSheetComboBox.selectItem(at: 0) tableSheetComboBox.delegate = self // for radio in [onlyGetTableComboBox] { // radio?.target = self // radio?.action = #selector(radioAction) // } } override func viewDidMoveToWindow() { super.viewDidMoveToWindow() let pageRangeItemView = KMConvertPageRangeSettingItemView.createFromNib() pageRangeItemView?.frame = pageRangeBox.contentView!.bounds pageRangeItemView?.autoresizingMask = NSView.AutoresizingMask(rawValue: 18) pageRangeBox.contentView = pageRangeItemView self.pageRangeItemView = pageRangeItemView pageRangeItemView?.isTextDidEndCallback = true 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: NSButton) { for radio in [onlyGetTableVC] { if ((radio?.button.isEqual(to: sender))!) { if radio?.state == .Checked { radio?.state = .Norm } else { radio?.state = .Checked } } } if onlyGetTableVC.state == .Checked { tableSheetComboBox.isEnabled = true } else { tableSheetComboBox.isEnabled = false } if onlyGetTableVC.state == .Checked { selectedSettingIndex = 1 } else { selectedSettingIndex = 0 } } override func getPageRangeString() -> String { if let view = self.pageRangeItemView { return view.pageRangeValue } return "" } } extension KMConvertCSVSettingView: NSComboBoxDelegate { func comboBoxSelectionDidChange(_ notification: Notification) { if (tableSheetComboBox.isEqual(to: notification.object)) { if tableSheetComboBox.indexOfSelectedItem < 0 { selectedTableFormatIndex = 0 return } selectedTableFormatIndex = tableSheetComboBox.indexOfSelectedItem } } }