KMConvertOCRSettingItemView.swift 3.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. //
  2. // KMConvertOCRSettingItemView.swift
  3. // PDF Master
  4. //
  5. // Created by tangchao on 2022/12/6.
  6. //
  7. import Cocoa
  8. typealias KMConvertOCRSettingItemViewLanugageDidSelected = (_ index: Int) -> ()
  9. class KMConvertOCRSettingItemView: NSView, NibLoadable {
  10. @IBOutlet weak var titleLabel: NSTextField!
  11. @IBOutlet weak var checkBox: NSButton!
  12. @IBOutlet weak var languageComboBox: NSComboBox!
  13. private var myLanguageIndex: Int = 2
  14. var languageIndex: Int {
  15. get {
  16. return myLanguageIndex
  17. }
  18. set {
  19. myLanguageIndex = newValue
  20. if (languageComboBox != nil && newValue < languageComboBox.numberOfItems) {
  21. languageComboBox.selectItem(at: newValue)
  22. }
  23. }
  24. }
  25. var lanugageDidSelected: KMConvertOCRSettingItemViewLanugageDidSelected!
  26. static var nibName: String? {
  27. return "KMConvertBaseWindowController"
  28. }
  29. static func createFromNib(in bundle: Bundle = Bundle.main) -> Self? {
  30. guard let nibName = nibName else { return nil }
  31. var topLevelArray: NSArray? = nil
  32. bundle.loadNibNamed(NSNib.Name(nibName), owner: nil, topLevelObjects: &topLevelArray)
  33. guard let results = topLevelArray else { return nil }
  34. let views = Array<Any>(results).filter { $0 is Self }
  35. return views.last as? Self
  36. }
  37. override func awakeFromNib() {
  38. super.awakeFromNib()
  39. titleLabel.stringValue = NSLocalizedString("Text Recognition Settings", comment: "")
  40. checkBox.title = NSLocalizedString("Recognize text if needed", comment: "")
  41. checkBox.target = self
  42. checkBox.action = #selector(checkBoxAction)
  43. languageComboBox.isEditable = false
  44. languageComboBox.removeAllItems()
  45. languageComboBox.addItems(withObjectValues: [NSLocalizedString("Chinese Simplified", comment: ""),
  46. NSLocalizedString("Chinese Traditional", comment: ""),
  47. NSLocalizedString("English", comment: ""),
  48. NSLocalizedString("French", comment: ""),
  49. NSLocalizedString("German", comment: ""),
  50. NSLocalizedString("Haitian", comment: ""),
  51. NSLocalizedString("Japan", comment: ""),
  52. NSLocalizedString("Korean", comment: ""),
  53. NSLocalizedString("Latin", comment: "")])
  54. if (myLanguageIndex < languageComboBox.numberOfItems) {
  55. languageComboBox.selectItem(at: myLanguageIndex)
  56. } else {
  57. languageComboBox.selectItem(at: 2)
  58. }
  59. languageComboBox.delegate = self
  60. }
  61. @objc func checkBoxAction(sender: NSButton) {
  62. languageComboBox.isEnabled = sender.state == .on
  63. }
  64. }
  65. extension KMConvertOCRSettingItemView: NSComboBoxDelegate {
  66. func comboBoxSelectionDidChange(_ notification: Notification) {
  67. if (languageComboBox.isEqual(to: notification.object)) {
  68. if languageComboBox.indexOfSelectedItem < 0 {
  69. return
  70. }
  71. guard let callback = lanugageDidSelected else {
  72. return
  73. }
  74. callback(languageComboBox.indexOfSelectedItem)
  75. }
  76. }
  77. }