KMOCRController.swift 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. //
  2. // KMOCRController.swift
  3. // PDF Reader Pro
  4. //
  5. // Created by lizhe on 2024/12/19.
  6. //
  7. import Cocoa
  8. import KMComponentLibrary
  9. class KMOCRController: NSViewController {
  10. @IBOutlet weak var typeTabs: ComponentTabs!
  11. @IBOutlet weak var saveButton: ComponentButton!
  12. @IBOutlet weak var pageView: KMOCRPageView!
  13. @IBOutlet weak var areaView: KMOCRAreaView!
  14. var pdfView: CPDFListView?
  15. var model: KMOCRModel = KMOCRModel() {
  16. didSet {
  17. self.pageView.model = model;
  18. self.areaView.model = model
  19. }
  20. }
  21. private var fileTabProperty = ComponentTabsProperty(tabsType: .underline_Fill, state: .normal, showIcon: false, title: KMLocalizedString("Page"))
  22. private var areaTabProperty = ComponentTabsProperty(tabsType: .underline_Fill, state: .normal, showIcon: false, title: KMLocalizedString("Area"))
  23. override func viewDidLoad() {
  24. super.viewDidLoad()
  25. // Do view setup here.
  26. // self.pageView.reloadData()
  27. self.model = KMOCRModel()
  28. self.model.document = pdfView?.document
  29. self.updateUI()
  30. self.reloadData()
  31. }
  32. func updateUI() {
  33. typeTabs.updateItemProperty([fileTabProperty, areaTabProperty])
  34. typeTabs.delegate = self
  35. typeTabs.refreshItems()
  36. saveButton.properties = ComponentButtonProperty(type: .primary, size: .m, buttonText: KMLocalizedString("Apply"), keepPressState: false)
  37. saveButton.setTarget(self, action: #selector(saveButtonClicked(_:)))
  38. self.pageView.changeAction = { [unowned self] view, model in
  39. self.reloadData()
  40. }
  41. }
  42. func reloadData() {
  43. fileTabProperty.state = .normal
  44. areaTabProperty.state = .normal
  45. if model.showType == .page {
  46. pageView.isHidden = false
  47. areaView.isHidden = true
  48. fileTabProperty.state = .pressed
  49. if model.saveAsPDF {
  50. saveButton.properties.buttonText = KMLocalizedString("Save as PDF")
  51. } else {
  52. saveButton.properties.buttonText = KMLocalizedString("Apply")
  53. }
  54. } else {
  55. pageView.isHidden = true
  56. areaView.isHidden = false
  57. areaTabProperty.state = .pressed
  58. saveButton.properties.buttonText = KMLocalizedString("Save as TXT")
  59. }
  60. saveButton.reloadData()
  61. typeTabs.refreshItems()
  62. }
  63. }
  64. //MARK: Action
  65. extension KMOCRController {
  66. @objc func saveButtonClicked(_ sender: ComponentButton) {
  67. }
  68. }
  69. extension KMOCRController: ComponentTabsDelegate {
  70. func componentTabsDidSelected(_ view: ComponentTabs, _ property: ComponentTabsProperty) {
  71. if property == fileTabProperty {
  72. model.showType = .page
  73. } else {
  74. model.showType = .area
  75. }
  76. self.reloadData()
  77. }
  78. }