KMBatchOperateImageToPDFViewController.swift 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. //
  2. // KMBatchOperateImageToPDFViewController.swift
  3. // PDF Master
  4. //
  5. // Created by liujiajie on 2023/12/5.
  6. //
  7. import Cocoa
  8. class KMBatchOperateImageToPDFViewController: KMBatchOperateBaseViewController, KMImageToPDFMethodDelegate{
  9. @IBOutlet var outputTypeLabel: NSTextField!
  10. @IBOutlet var createNewPDFBtn: NSButton!
  11. @IBOutlet var btnMerge: NSButton!
  12. @IBOutlet var appendPDFBtn: NSButton!
  13. @IBOutlet var appendTextField: NSTextField!
  14. @IBOutlet var appendOtherPDFBtn: NSButton!
  15. @IBOutlet var appendBackView: NSView!
  16. @IBOutlet var ocrLabel: NSTextField!
  17. @IBOutlet var ocrSelectBtn: NSButton!
  18. @IBOutlet var languaeBox: NSBox!
  19. @IBOutlet var languageButton: NSButton!
  20. @IBOutlet var saveAsButton: NSButton!
  21. @IBOutlet var planButton: NSButton!
  22. @IBOutlet var selectLanguageLabel: NSTextField!
  23. @IBOutlet var planBox: NSBox!
  24. @IBOutlet var actionButton: NSButton!
  25. var password: NSString = ""
  26. lazy var method: KMImageToPDFMethod = {
  27. let method = KMImageToPDFMethod()
  28. method.imageTopdfDelegate = self
  29. return method
  30. }()
  31. override var interfaceStatus: KMBatchOperateInterfaceStatus?{
  32. set{
  33. super.interfaceStatus = newValue
  34. if newValue == .PrepareProcess {
  35. DispatchQueue.main.asyncAfter(deadline: .now() + 0.4) {
  36. var files = NSMutableArray()
  37. for url in self.successFilePathURLArray! {
  38. if FileManager.default.fileExists(atPath: url.path) {
  39. files.add(url)
  40. }
  41. }
  42. if files.count > 0 {
  43. let workspace = NSWorkspace.shared
  44. workspace.activateFileViewerSelecting(files as! [URL])
  45. }
  46. }
  47. self.actionButton.tag = 1
  48. self.actionButton.title = NSLocalizedString("Save as PDF", comment: "")
  49. self.actionButton.setTitleColor(KMAppearance.Layout.w0Color())
  50. self.actionButton.isEnabled = true
  51. self.actionButton.layer?.backgroundColor = KMAppearance.Interactive.m0Color().cgColor
  52. } else {
  53. self.actionButton.tag = 0
  54. self.actionButton.layer?.backgroundColor = KMAppearance.Interactive.m0Color().cgColor
  55. self.actionButton.setTitleColor(KMAppearance.Layout.w0Color())
  56. self.actionButton.isEnabled = false
  57. }
  58. }
  59. get{
  60. return super.interfaceStatus
  61. }
  62. }
  63. deinit {
  64. NotificationCenter.default.removeObserver(self)
  65. }
  66. override func viewDidLoad() {
  67. super.viewDidLoad()
  68. self.localizedLanguage()
  69. self.configuUI()
  70. NotificationCenter.default.addObserver(self, selector: #selector(OCRSelectedLanguagesChangeNotification(notification:)), name: NSNotification.Name("KMOCRSelectedLanguagesChangeNotification"), object: nil)
  71. NotificationCenter.default.addObserver(self, selector: #selector(OCRSelectedPlanChangeNotification(notification:)), name: NSNotification.Name("KMOCRSelectedPlanChangeNotification"), object: nil)
  72. NotificationCenter.default.addObserver(self, selector: #selector(themeChanged(notification:)), name: NSNotification.Name("AppleInterfaceThemeChangedNotification"), object: nil)
  73. }
  74. func localizedLanguage() {
  75. self.outputTypeLabel.stringValue = KMLocalizedString("Output",nil)
  76. self.btnMerge.title = KMLocalizedString("Merge All", nil)
  77. self.createNewPDFBtn.title = KMLocalizedString("New PDF Document", nil)
  78. self.appendPDFBtn.title = KMLocalizedString("Append To Existing File", nil)
  79. self.appendTextField.placeholderString = KMLocalizedString("Select a File", nil)
  80. self.selectLanguageLabel.stringValue = KMLocalizedString("Select OCR Language:",nil)
  81. self.ocrSelectBtn.title = KMLocalizedString("OCR Plan",nil)
  82. let languages = KMGOCRManager.default().selectedLanguages.value(forKeyPath: KMGOCRLanguageStringKey) as! [Any]
  83. self.updateLanguageButton(languages)
  84. self.actionButton.title = KMLocalizedString("Save as PDF", nil)
  85. self.saveAsButton.title = KMLocalizedString("Save as TXT", nil)
  86. self.OCRSelectedPlanChangeAction()
  87. }
  88. func configuUI() {
  89. }
  90. func updateViewColor() {
  91. if KMAppearance.isDarkMode() {
  92. self.view.layer?.backgroundColor = NSColor(red: 0.055, green: 0.067, blue: 0.078, alpha: 1).cgColor
  93. appendBackView.layer?.borderColor = NSColor(red: 86/255.0, green: 88/255.0, blue: 90/255.0, alpha: 1).cgColor
  94. appendBackView.layer?.backgroundColor = NSColor(red: 57/255.0, green: 60/255.0, blue: 62/255.0, alpha: 1).cgColor
  95. } else {
  96. self.view.layer?.backgroundColor = NSColor(red: 0.922, green: 0.925, blue: 0.941, alpha: 1).cgColor
  97. appendBackView.layer?.borderColor = NSColor(red: 218/255.0, green: 219/255.0, blue: 222/255.0, alpha: 1).cgColor
  98. appendBackView.layer?.backgroundColor = NSColor.white.cgColor;
  99. }
  100. }
  101. func updateLanguageButton(_ languages: [Any]) {
  102. if languages.count < 1 {
  103. self.languageButton.title = KMLocalizedString("Auto Detection", nil)
  104. return
  105. }
  106. var languageName: String = ""
  107. if languages.count > 0 {
  108. for i in 0..<languages.count {
  109. let language = languages[i] as? String
  110. if i == 0 {
  111. languageName = language ?? ""
  112. } else {
  113. languageName = languageName.appendingFormat(",%@", language ?? "")
  114. }
  115. }
  116. } else {
  117. languageName = ""
  118. }
  119. self.languageButton.title = languageName
  120. }
  121. //MARK: Notification
  122. @objc func OCRSelectedLanguagesChangeNotification(notification: Notification) {
  123. let selectedLanguages = notification.object/* as? [KMBatchOperateFile]*/
  124. }
  125. @objc func OCRSelectedPlanChangeNotification(notification: Notification) {
  126. self.OCRSelectedPlanChangeAction()
  127. }
  128. @objc func themeChanged(notification: Notification) {
  129. DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
  130. self.updateViewColor()
  131. }
  132. }
  133. func OCRSelectedPlanChangeAction() {
  134. let plan = UserDefaults.standard.integer(forKey: "KMOCRCurrentPlanKey")
  135. if plan == 0 {
  136. self.planButton.title = KMLocalizedString("Plan 1 (Online)", nil)
  137. } else {
  138. self.planButton.title = KMLocalizedString("Plan 2 (Offline)", nil)
  139. }
  140. KMGOCRManager.default().selectedLanguages = NSMutableArray()
  141. self.updateLanguageButton(KMGOCRManager.default().selectedLanguages.value(forKeyPath: KMGOCRLanguageStringKey) as! [Any])
  142. }
  143. //MARK: KMImageToPDFMethodDelegate
  144. func imageToPDFMethod(_ method: KMImageToPDFMethod, progress: Float) {
  145. }
  146. }