|
@@ -71,19 +71,19 @@ class KMBatchProcessingView: NSView {
|
|
|
}
|
|
|
|
|
|
func setup() {
|
|
|
- self.addButton.data = ["Import from", "Import from Camera...", "Import from Scanner..."]
|
|
|
+ self.addButton.data = ["Add Files", "Add Folder", "Add Open Files"]
|
|
|
self.addButton.textColor = NSColor.init(hex: "#252629")
|
|
|
self.addButton.font = NSFont.SFProTextRegular(14.0)
|
|
|
self.addButton.stringValue = NSLocalizedString("Add Files", comment: "")
|
|
|
self.addButton.border()
|
|
|
- self.addButton.popWidth = 170.0
|
|
|
+ self.addButton.popWidth = 150.0
|
|
|
self.addButton.mouseDownAction = { [unowned self] (button, itemString) in
|
|
|
if itemString == NSLocalizedString(self.addButton.data[0], comment: "") {
|
|
|
- self.addPhotos(sender: button)
|
|
|
+ self.addFiles()
|
|
|
} else if itemString == NSLocalizedString(self.addButton.data[1], comment: "") {
|
|
|
- self.addPhotosFromCamera(sender: button)
|
|
|
+ self.addFolder()
|
|
|
} else if itemString == NSLocalizedString(self.addButton.data[2], comment: "") {
|
|
|
- self.addPhotosFromScanner(sender: button)
|
|
|
+ self.addOpenFile()
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -96,7 +96,7 @@ class KMBatchProcessingView: NSView {
|
|
|
}
|
|
|
|
|
|
self.selectedFilesView.addAction = {[unowned self] (sender) in
|
|
|
- self.addPhotos(sender: sender)
|
|
|
+ self.addFiles()
|
|
|
}
|
|
|
self.reloadData()
|
|
|
}
|
|
@@ -122,58 +122,113 @@ extension KMBatchProcessingView: KMBatchProcessingViewAction {
|
|
|
self.reloadData()
|
|
|
}
|
|
|
|
|
|
- @objc func addPhotos(sender: Any) {
|
|
|
- weak var weakSelf = self
|
|
|
- KMBatchProcessingView.openfiles(window: window!) { openPanel in
|
|
|
- if weakSelf?.inputType == .OCR {
|
|
|
- openPanel.prompt = "PDF"
|
|
|
+ func addFiles() {
|
|
|
+ KMBatchProcessingView.openfiles(window: window!) { [unowned self] openPanel in
|
|
|
+ if self.inputType == .OCR {
|
|
|
openPanel.allowedFileTypes = KMOCRModel.supportedTypes()
|
|
|
- } else if weakSelf?.inputType == .ImageToPDF {
|
|
|
- openPanel.prompt = "选择图片"
|
|
|
+ } else if self.inputType == .ImageToPDF {
|
|
|
openPanel.allowedFileTypes = KMBatchProcessingTableViewModel.supportedImageTypes()
|
|
|
}
|
|
|
|
|
|
+ openPanel.prompt = "Open"
|
|
|
openPanel.canChooseDirectories = false //是否允许选择目录
|
|
|
openPanel.canChooseFiles = true //是否可以选择文件
|
|
|
openPanel.allowsMultipleSelection = true //是否允许多选
|
|
|
- } completion: { [unowned self] data in
|
|
|
+
|
|
|
+ if openPanel.allowsMultipleSelection == true {
|
|
|
+ openPanel.message = NSLocalizedString("Press the keyboard ⌘/⇧ to select multiple files", comment: "")
|
|
|
+ }
|
|
|
+ } completion: { [unowned self] (panel ,data) in
|
|
|
if data.count != 0 {
|
|
|
self.tableView.presenter.addData(data: data)
|
|
|
self.reloadData()
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- print("AddPhotos")
|
|
|
}
|
|
|
|
|
|
- @objc func addPhotosFromCamera(sender: AnyObject) {
|
|
|
- print("AddPhotosFromCamera")
|
|
|
- let windowController = KMDeviceBrowserWindowController.init(windowNibName: "KMDeviceBrowserWindowController")
|
|
|
- windowController.type = .camera
|
|
|
- windowController.importCameraFileCallback = { [unowned self] (url) in
|
|
|
-// NSDocumentController.shared.openDocumentWithContents(of: url, display: true)
|
|
|
- print("获取照片成功")
|
|
|
+ func addFolder() {
|
|
|
+ print("addFolder")
|
|
|
+ KMBatchProcessingView.openfiles(window: window!) { [unowned self] openPanel in
|
|
|
+ if self.inputType == .OCR {
|
|
|
+ openPanel.allowedFileTypes = KMOCRModel.supportedTypes()
|
|
|
+ } else if self.inputType == .ImageToPDF {
|
|
|
+ openPanel.allowedFileTypes = KMBatchProcessingTableViewModel.supportedImageTypes()
|
|
|
+ } else {
|
|
|
+ openPanel.allowedFileTypes = KMOCRModel.supportedTypes()
|
|
|
+ }
|
|
|
+
|
|
|
+ openPanel.prompt = "Open"
|
|
|
+ openPanel.canChooseDirectories = true //是否允许选择目录
|
|
|
+ openPanel.canChooseFiles = false //是否可以选择文件
|
|
|
+ openPanel.allowsMultipleSelection = false //是否允许多选
|
|
|
+ } completion: { [unowned self] (panel ,data) in
|
|
|
+ if data.count != 0 {
|
|
|
+ var filePaths: [URL] = []
|
|
|
+
|
|
|
+ var types: [String] = []
|
|
|
+ if self.inputType == .OCR {
|
|
|
+ types = KMOCRModel.supportedTypes()
|
|
|
+ } else if self.inputType == .ImageToPDF {
|
|
|
+ types = KMBatchProcessingTableViewModel.supportedImageTypes()
|
|
|
+ } else {
|
|
|
+ types = KMOCRModel.supportedTypes()
|
|
|
+ }
|
|
|
+
|
|
|
+ KMMergeTools.findAllFiles(folder: data.first!, result: &filePaths, types: types)
|
|
|
+ self.tableView.presenter.addData(data: filePaths)
|
|
|
+ self.reloadData()
|
|
|
+ }
|
|
|
}
|
|
|
- windowController.showWindow(nil)
|
|
|
}
|
|
|
|
|
|
- @objc func addPhotosFromScanner(sender: AnyObject) {
|
|
|
- print("AddPhotosFromScanner")
|
|
|
- let windowController = KMDeviceBrowserWindowController.init(windowNibName: "KMDeviceBrowserWindowController")
|
|
|
- windowController.type = .scanner
|
|
|
- windowController.importScannerFileCallback = { [unowned self] (url) in
|
|
|
- print("获取扫描成功")
|
|
|
-// NSDocumentController.shared.openDocumentWithContents(of: url, display: true)
|
|
|
+ func canAddOpenFile() -> Bool {
|
|
|
+ var result: Bool = false
|
|
|
+ let array = self.addOpenFile()
|
|
|
+ if array.count != 0 {
|
|
|
+ result = true
|
|
|
}
|
|
|
- windowController.showWindow(nil)
|
|
|
+ return result
|
|
|
}
|
|
|
|
|
|
+ func addOpenFile() -> [URL] {
|
|
|
+ var files:[URL] = []
|
|
|
+ for window in NSApp.windows {
|
|
|
+ let controller = window.windowController
|
|
|
+ if ((controller?.isKind(of: CTBrowserWindowController.classForCoder())) != nil) {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ let model = (controller as? CTBrowserWindowController)?.browser.tabStripModel
|
|
|
+ let count = model?.count() ?? 0
|
|
|
+ if count > 0 {
|
|
|
+ for i in 0...(count - 1) {
|
|
|
+ let document: KMMainDocument = model?.tabContents(at: Int32(i)) as? KMMainDocument ?? KMMainDocument()
|
|
|
+ if document.isHome {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ if !(FileManager.default.fileExists(atPath: document.fileURL?.path ?? "")) {
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
+ if document.fileURL != nil {
|
|
|
+ files.append(document.fileURL!)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return files
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+protocol KMBatchProcessingViewOpenPanel {}
|
|
|
+extension KMBatchProcessingView: KMBatchProcessingViewOpenPanel {
|
|
|
/**
|
|
|
@abstract 打开文件
|
|
|
@param window 显示window
|
|
|
@param title 标题
|
|
|
*/
|
|
|
- static func openfiles(window:NSWindow, openPanel:((_ openPanel: NSOpenPanel) -> Void)?, completion:@escaping/**逃逸闭包*/ (_ data:[URL]) -> Void) {
|
|
|
+ static func openfiles(window:NSWindow, openPanel:((_ openPanel: NSOpenPanel) -> Void)?, completion:@escaping/**逃逸闭包*/ (_ panel: NSOpenPanel ,_ data:[URL]) -> Void) {
|
|
|
let panel = NSOpenPanel()
|
|
|
if openPanel != nil {
|
|
|
openPanel!(panel)
|
|
@@ -183,14 +238,18 @@ extension KMBatchProcessingView: KMBatchProcessingViewAction {
|
|
|
panel.canChooseFiles = true //是否可以选择文件
|
|
|
panel.allowsMultipleSelection = true //是否允许多选
|
|
|
panel.allowedFileTypes = KMBatchProcessingTableViewModel.supportedImageTypes() //支持类型
|
|
|
+
|
|
|
+// let button = NSButton.init(checkboxWithTitle: "保存后打开文档", target: nil, action: nil)
|
|
|
+// button.state = .off
|
|
|
+// panel.accessoryView = button
|
|
|
}
|
|
|
|
|
|
panel.beginSheetModal(for: window, completionHandler: { result in
|
|
|
if result != .OK {
|
|
|
print("取消")
|
|
|
- completion([])
|
|
|
+ completion(panel, [])
|
|
|
} else {
|
|
|
- completion(panel.urls)
|
|
|
+ completion(panel, panel.urls)
|
|
|
}
|
|
|
})
|
|
|
}
|