// // KMBatchOperateImageToPDFViewController.swift // PDF Master // // Created by liujiajie on 2023/12/5. // import Cocoa class KMBatchOperateImageToPDFViewController: KMBatchOperateBaseViewController, KMImageToPDFMethodDelegate{ @IBOutlet var outputTypeLabel: NSTextField! @IBOutlet var createNewPDFBtn: NSButton! @IBOutlet var btnMerge: NSButton! @IBOutlet var appendPDFBtn: NSButton! @IBOutlet var appendTextField: NSTextField! @IBOutlet var appendOtherPDFBtn: NSButton! @IBOutlet var appendBackView: NSView! @IBOutlet var ocrLabel: NSTextField! @IBOutlet var ocrSelectBtn: NSButton! @IBOutlet var languaeBox: NSBox! @IBOutlet var languageButton: NSButton! @IBOutlet var saveAsButton: NSButton! @IBOutlet var planButton: NSButton! @IBOutlet var selectLanguageLabel: NSTextField! @IBOutlet var planBox: NSBox! @IBOutlet var actionButton: NSButton! var password: NSString = "" lazy var method: KMImageToPDFMethod = { let method = KMImageToPDFMethod() method.imageTopdfDelegate = self return method }() override var interfaceStatus: KMBatchOperateInterfaceStatus?{ set{ super.interfaceStatus = newValue if newValue == .PrepareProcess { DispatchQueue.main.asyncAfter(deadline: .now() + 0.4) { var files = NSMutableArray() for url in self.successFilePathURLArray! { if FileManager.default.fileExists(atPath: url.path) { files.add(url) } } if files.count > 0 { let workspace = NSWorkspace.shared workspace.activateFileViewerSelecting(files as! [URL]) } } self.actionButton.tag = 1 self.actionButton.title = NSLocalizedString("Save as PDF", comment: "") self.actionButton.setTitleColor(KMAppearance.Layout.w0Color()) self.actionButton.isEnabled = true self.actionButton.layer?.backgroundColor = KMAppearance.Interactive.m0Color().cgColor } else { self.actionButton.tag = 0 self.actionButton.layer?.backgroundColor = KMAppearance.Interactive.m0Color().cgColor self.actionButton.setTitleColor(KMAppearance.Layout.w0Color()) self.actionButton.isEnabled = false } } get{ return super.interfaceStatus } } deinit { NotificationCenter.default.removeObserver(self) } override func viewDidLoad() { super.viewDidLoad() self.localizedLanguage() self.configuUI() NotificationCenter.default.addObserver(self, selector: #selector(OCRSelectedLanguagesChangeNotification(notification:)), name: NSNotification.Name("KMOCRSelectedLanguagesChangeNotification"), object: nil) NotificationCenter.default.addObserver(self, selector: #selector(OCRSelectedPlanChangeNotification(notification:)), name: NSNotification.Name("KMOCRSelectedPlanChangeNotification"), object: nil) NotificationCenter.default.addObserver(self, selector: #selector(themeChanged(notification:)), name: NSNotification.Name("AppleInterfaceThemeChangedNotification"), object: nil) } func localizedLanguage() { self.outputTypeLabel.stringValue = KMLocalizedString("Output",nil) self.btnMerge.title = KMLocalizedString("Merge All", nil) self.createNewPDFBtn.title = KMLocalizedString("New PDF Document", nil) self.appendPDFBtn.title = KMLocalizedString("Append To Existing File", nil) self.appendTextField.placeholderString = KMLocalizedString("Select a File", nil) self.selectLanguageLabel.stringValue = KMLocalizedString("Select OCR Language:",nil) self.ocrSelectBtn.title = KMLocalizedString("OCR Plan",nil) let languages = KMGOCRManager.default().selectedLanguages.value(forKeyPath: KMGOCRLanguageStringKey) as! [Any] self.updateLanguageButton(languages) self.actionButton.title = KMLocalizedString("Save as PDF", nil) self.saveAsButton.title = KMLocalizedString("Save as TXT", nil) self.OCRSelectedPlanChangeAction() } func configuUI() { } func updateViewColor() { if KMAppearance.isDarkMode() { self.view.layer?.backgroundColor = NSColor(red: 0.055, green: 0.067, blue: 0.078, alpha: 1).cgColor appendBackView.layer?.borderColor = NSColor(red: 86/255.0, green: 88/255.0, blue: 90/255.0, alpha: 1).cgColor appendBackView.layer?.backgroundColor = NSColor(red: 57/255.0, green: 60/255.0, blue: 62/255.0, alpha: 1).cgColor } else { self.view.layer?.backgroundColor = NSColor(red: 0.922, green: 0.925, blue: 0.941, alpha: 1).cgColor appendBackView.layer?.borderColor = NSColor(red: 218/255.0, green: 219/255.0, blue: 222/255.0, alpha: 1).cgColor appendBackView.layer?.backgroundColor = NSColor.white.cgColor; } } func updateLanguageButton(_ languages: [Any]) { if languages.count < 1 { self.languageButton.title = KMLocalizedString("Auto Detection", nil) return } var languageName: String = "" if languages.count > 0 { for i in 0..