// // KMConvertOCRSettingItemView.swift // PDF Master // // Created by tangchao on 2022/12/6. // import Cocoa typealias KMConvertOCRSettingItemViewLanugageDidSelected = (_ index: Int) -> () class KMConvertOCRSettingItemView: NSView, NibLoadable { @IBOutlet weak var titleLabel: NSTextField! @IBOutlet weak var checkBox: NSButton! @IBOutlet weak var languageComboBox: NSComboBox! private var myLanguageIndex: Int = 2 var languageIndex: Int { get { return myLanguageIndex } set { myLanguageIndex = newValue if (languageComboBox != nil && newValue < languageComboBox.numberOfItems) { languageComboBox.selectItem(at: newValue) } } } var lanugageDidSelected: KMConvertOCRSettingItemViewLanugageDidSelected! 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() titleLabel.stringValue = NSLocalizedString("Text Recognition Settings", comment: "") checkBox.title = NSLocalizedString("Recognize text if needed", comment: "") checkBox.target = self checkBox.action = #selector(checkBoxAction) languageComboBox.isEditable = false languageComboBox.removeAllItems() languageComboBox.addItems(withObjectValues: [NSLocalizedString("Chinese Simplified", comment: ""), NSLocalizedString("Chinese Traditional", comment: ""), NSLocalizedString("English", comment: ""), NSLocalizedString("French", comment: ""), NSLocalizedString("German", comment: ""), NSLocalizedString("Haitian", comment: ""), NSLocalizedString("Japan", comment: ""), NSLocalizedString("Korean", comment: ""), NSLocalizedString("Latin", comment: "")]) if (myLanguageIndex < languageComboBox.numberOfItems) { languageComboBox.selectItem(at: myLanguageIndex) } else { languageComboBox.selectItem(at: 2) } languageComboBox.delegate = self } @objc func checkBoxAction(sender: NSButton) { languageComboBox.isEnabled = sender.state == .on } } extension KMConvertOCRSettingItemView: NSComboBoxDelegate { func comboBoxSelectionDidChange(_ notification: Notification) { if (languageComboBox.isEqual(to: notification.object)) { if languageComboBox.indexOfSelectedItem < 0 { return } guard let callback = lanugageDidSelected else { return } callback(languageComboBox.indexOfSelectedItem) } } }