|
@@ -214,7 +214,8 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
|
|
|
}
|
|
|
}
|
|
|
@objc func batchFilesCountNotification(notification: Notification) {
|
|
|
- let files = notification.object as? [Any]
|
|
|
+ let files: Array? = notification.object as? [KMBatchOperateFile]
|
|
|
+ self.files? = files ?? []
|
|
|
if files?.count ?? 0 > 0 {
|
|
|
haveFiles = true
|
|
|
} else {
|
|
@@ -242,11 +243,11 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
|
|
|
}
|
|
|
func deleteAll() {
|
|
|
if self.isBates {
|
|
|
- for waterMark in KMHeaderFooterManager.defaultManager.onlyBatesObjects {
|
|
|
+ for waterMark in KMHeaderFooterManager.defaultManager.onlyBatesObjects() {
|
|
|
KMHeaderFooterManager.defaultManager.removeHeaderFooter(waterMark)
|
|
|
}
|
|
|
} else {
|
|
|
- for waterMark in KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects {
|
|
|
+ for waterMark in KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects() {
|
|
|
KMHeaderFooterManager.defaultManager.removeHeaderFooter(waterMark)
|
|
|
}
|
|
|
}
|
|
@@ -259,13 +260,13 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
|
|
|
var count = 0
|
|
|
var array: [KMHeaderFooterModel] = []
|
|
|
if self.isBates {
|
|
|
- count = KMHeaderFooterManager.defaultManager.onlyBatesObjects.count
|
|
|
- array = KMHeaderFooterManager.defaultManager.onlyBatesObjects
|
|
|
+ count = KMHeaderFooterManager.defaultManager.onlyBatesObjects().count
|
|
|
+ array = KMHeaderFooterManager.defaultManager.onlyBatesObjects()
|
|
|
} else {
|
|
|
- count = KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects.count
|
|
|
- array = KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects
|
|
|
+ count = KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects().count
|
|
|
+ array = KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects()
|
|
|
}
|
|
|
- if array.contains(self.currentObject!) {
|
|
|
+ if array.contains(self.currentObject ?? KMHeaderFooterModel()) {
|
|
|
let row = array.firstIndex(of: self.currentObject!)!
|
|
|
let indexSet = IndexSet(integer: row)
|
|
|
self.tableView.selectRowIndexes(indexSet, byExtendingSelection: false)
|
|
@@ -323,7 +324,102 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
|
|
|
|
|
|
}
|
|
|
|
|
|
- @IBAction func buttonClicked_Action(_ sender: Any) {
|
|
|
+ @IBAction func buttonClicked_Action(_ sender: NSButton) {
|
|
|
+ if (!self.onlyManagerTemplate) {
|
|
|
+ if (!self.haveFiles) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (self.onlyManagerTemplate) {
|
|
|
+ if (sender.tag == 1) {
|
|
|
+ var headFooter: KMHeaderFooterModel?
|
|
|
+ let row = self.tableView.selectedRow
|
|
|
+ if (row == -1) {
|
|
|
+ NSSound.beep()
|
|
|
+ return
|
|
|
+ } else {
|
|
|
+ if (self.isBates) {
|
|
|
+ headFooter = KMHeaderFooterManager.defaultManager.onlyBatesObjects()[row]
|
|
|
+ } else {
|
|
|
+ headFooter = KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects()[row]
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ let openPanel = NSOpenPanel()
|
|
|
+ openPanel.canChooseFiles = false
|
|
|
+ openPanel.canChooseDirectories = true
|
|
|
+ openPanel.canCreateDirectories = true
|
|
|
+ openPanel.beginSheetModal(for: self.view.window!) { result in
|
|
|
+ if (result == .OK) {
|
|
|
+ for fileURL in openPanel.urls {
|
|
|
+ self.hiddenWindowCloseButtonIfNeeded()
|
|
|
+ self.successFilePathURLArray?.removeAll()
|
|
|
+ if (self.isBates) {
|
|
|
+ let file = KMBatchOperateFile(filePath: self.pdfView?.document.documentURL.path ?? "")
|
|
|
+ if file.fileType == .PDF {
|
|
|
+ file.addBatesInfo.pageChoice = KMBatchOperatePageChoice(rawValue: headFooter?.pageRangeType.rawValue ?? 0) ?? .All
|
|
|
+ file.addBatesInfo.pageRangeString = headFooter?.pageRangeString
|
|
|
+ file.addBatesInfo.savePath = fileURL.path
|
|
|
+ if file.status == .Waiting {
|
|
|
+ let op = KMBatchAddHeaderFooterOperation(file: file, headerFooter: headFooter!)
|
|
|
+ op.delegate = self
|
|
|
+ self.queue?.addOperation(op)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ self.successFilePathURLArray?.removeAll()
|
|
|
+ let file = KMBatchOperateFile(filePath: self.pdfView?.document.documentURL.path ?? "")
|
|
|
+ if file.fileType == .PDF {
|
|
|
+ file.addHeaderFooterInfo.pageChoice = KMBatchOperatePageChoice(rawValue: headFooter?.pageRangeType.rawValue ?? 0) ?? .All
|
|
|
+ file.addHeaderFooterInfo.pageRangeString = headFooter?.pageRangeString
|
|
|
+ file.addHeaderFooterInfo.savePath = fileURL.path
|
|
|
+ if file.status == .Waiting {
|
|
|
+ let op = KMBatchAddHeaderFooterOperation(file: file, headerFooter: headFooter!)
|
|
|
+ op.delegate = self
|
|
|
+ self.queue?.addOperation(op)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if self.queue?.operations.count ?? 0 > 0 {
|
|
|
+ self.interfaceStatus = .Processing
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (sender.tag == 0) {
|
|
|
+ if let cnt = self.queue?.operations.count, cnt > 0 {
|
|
|
+ self.queue?.cancelAllOperations()
|
|
|
+ }
|
|
|
+ self.interfaceStatus = .PrepareProcess
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //点击开始
|
|
|
+ if (sender.tag == 1) {
|
|
|
+ if (!self.checkAndResetTask()) {
|
|
|
+ NSSound.beep()
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var headFooter: KMHeaderFooterModel?
|
|
|
+ let row = self.tableView.selectedRow
|
|
|
+ if (row == -1 || self.files?.count ?? 0 < 1) {
|
|
|
+ NSSound.beep()
|
|
|
+ return;
|
|
|
+ } else {
|
|
|
+ if (self.isBates) {
|
|
|
+ headFooter = KMHeaderFooterManager.defaultManager.onlyBatesObjects()[row]
|
|
|
+ } else {
|
|
|
+ headFooter = KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects()[row]
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ self.choosePathAndBeginOperation(headFooter!)
|
|
|
+ } else if (sender.tag == 0) {
|
|
|
+ if let cnt = self.queue?.operations.count, cnt > 0 {
|
|
|
+ self.queue?.cancelAllOperations()
|
|
|
+ }
|
|
|
+ self.interfaceStatus = .PrepareProcess
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
func checkAndResetTask() -> Bool {
|
|
@@ -416,6 +512,29 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
|
|
|
// blockSelf.postNotification()
|
|
|
// }
|
|
|
// wc?.beginSheetModalForWindow(NSApp.keyWindow, completionHandler: nil)
|
|
|
+
|
|
|
+ let filePath: String = Bundle.main.path(forResource: "PDF Master User Guide", ofType: "pdf") ?? ""
|
|
|
+ let cdocument = CPDFDocument(url: URL(fileURLWithPath: filePath))
|
|
|
+
|
|
|
+ let windowController = KMHeaderFooterWindowController(windowNibName: "KMHeaderFooterWindowController")
|
|
|
+ windowController.headerFooterObj = obj
|
|
|
+ windowController.isBatch = isBatchOperation
|
|
|
+ windowController.type = .Edit
|
|
|
+ windowController.isBates = isBates
|
|
|
+ windowController.pdfDocument = cdocument
|
|
|
+
|
|
|
+ windowController.cancelAction = { [unowned self] controller in
|
|
|
+ self.km_endSheet()
|
|
|
+ }
|
|
|
+ windowController.operateCallBack = { wController, model in
|
|
|
+ self.currentObject = model
|
|
|
+ self.loadData()
|
|
|
+ self.postNotification()
|
|
|
+ let set = NSIndexSet(index: 0)
|
|
|
+ self.tableView.selectRowIndexes(set as IndexSet, byExtendingSelection: false)
|
|
|
+ }
|
|
|
+ self.km_beginSheet(windowC: windowController)
|
|
|
+
|
|
|
}
|
|
|
func delete(obj: KMHeaderFooterModel) {
|
|
|
KMHeaderFooterManager.defaultManager.removeHeaderFooter(obj)
|
|
@@ -426,7 +545,7 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
|
|
|
func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
|
|
|
let action = menuItem.action
|
|
|
if action == #selector(buttonItemClick_CleanAll(_:)) {
|
|
|
- if (self.isBates && KMHeaderFooterManager.defaultManager.onlyBatesObjects.count < 1) || (!self.isBates && KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects.count < 1){
|
|
|
+ if (self.isBates && KMHeaderFooterManager.defaultManager.onlyBatesObjects().count < 1) || (!self.isBates && KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects().count < 1){
|
|
|
return false
|
|
|
}
|
|
|
return true
|
|
@@ -435,14 +554,14 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
|
|
|
}
|
|
|
func headerFooterInterfaceSelectHeaderFooter(headerFooter: KMHeaderFooterModel) {
|
|
|
self.tableView.reloadData()
|
|
|
- if let index = KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects.index(of: headerFooter) {
|
|
|
+ if let index = KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects().firstIndex(of: headerFooter) {
|
|
|
let indexSet = IndexSet(integer: index)
|
|
|
self.tableView.selectRowIndexes(indexSet, byExtendingSelection: false)
|
|
|
}
|
|
|
}
|
|
|
func batesInterfaceSelectBates(headerFooter: KMHeaderFooterModel) {
|
|
|
self.tableView.reloadData()
|
|
|
- if let index = KMHeaderFooterManager.defaultManager.onlyBatesObjects.index(of: headerFooter) {
|
|
|
+ if let index = KMHeaderFooterManager.defaultManager.onlyBatesObjects().firstIndex(of: headerFooter) {
|
|
|
let indexSet = IndexSet(integer: index)
|
|
|
self.tableView.selectRowIndexes(indexSet, byExtendingSelection: false)
|
|
|
}
|
|
@@ -451,9 +570,9 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
|
|
|
func numberOfRows(in tableView: NSTableView) -> Int {
|
|
|
var count = 0
|
|
|
if self.isBates {
|
|
|
- count = KMHeaderFooterManager.defaultManager.onlyBatesObjects.count
|
|
|
+ count = KMHeaderFooterManager.defaultManager.onlyBatesObjects().count
|
|
|
} else {
|
|
|
- count = KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects.count
|
|
|
+ count = KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects().count
|
|
|
}
|
|
|
self.blankView.isHidden = count != 0
|
|
|
return count
|
|
@@ -461,9 +580,9 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
|
|
|
func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
|
|
|
var obj: KMHeaderFooterModel? = nil
|
|
|
if self.isBates {
|
|
|
- obj = KMHeaderFooterManager.defaultManager.onlyBatesObjects[row]
|
|
|
+ obj = KMHeaderFooterManager.defaultManager.onlyBatesObjects()[row]
|
|
|
} else {
|
|
|
- obj = KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects[row]
|
|
|
+ obj = KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects()[row]
|
|
|
}
|
|
|
guard let cellView = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "mainCell"), owner: self) as? KMHeaderFooterTableCellView else {
|
|
|
return nil
|
|
@@ -488,17 +607,23 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
|
|
|
}
|
|
|
func tableView(_ tableView: NSTableView, heightOfRow row: Int) -> CGFloat {
|
|
|
if self.isBates {
|
|
|
- return KMHeaderFooterManager.defaultManager.onlyBatesObjects[row].cellHeight
|
|
|
+ return KMHeaderFooterManager.defaultManager.onlyBatesObjects()[row].cellHeight
|
|
|
} else {
|
|
|
- return KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects[row].cellHeight
|
|
|
+ return KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects()[row].cellHeight
|
|
|
}
|
|
|
}
|
|
|
+ func tableView(_ tableView: NSTableView, shouldSelect tableColumn: NSTableColumn?) -> Bool {
|
|
|
+ return true
|
|
|
+ }
|
|
|
+ func tableView(_ tableView: NSTableView, shouldSelectRow row: Int) -> Bool {
|
|
|
+ return true
|
|
|
+ }
|
|
|
func tableViewSelectionDidChange(_ notification: Notification) {
|
|
|
let row = self.tableView.selectedRow
|
|
|
updateActionButtonbackgroundColor()
|
|
|
if row == -1 { return }
|
|
|
if self.isBates {
|
|
|
- let bates = KMHeaderFooterManager.defaultManager.onlyBatesObjects[row]
|
|
|
+ let bates = KMHeaderFooterManager.defaultManager.onlyBatesObjects()[row]
|
|
|
self.currentObject = bates
|
|
|
for i in 0..<(self.files?.count ?? 0) {
|
|
|
let file = self.files?[i]
|
|
@@ -514,7 +639,7 @@ class KMBatchOperateAddHeaderFooterViewController: KMBatchOperateBaseViewControl
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- let headerFooter = KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects[row]
|
|
|
+ let headerFooter = KMHeaderFooterManager.defaultManager.onlyHeaderFooterObjects()[row]
|
|
|
self.currentObject = headerFooter
|
|
|
for i in 0..<(self.files?.count ?? 0) {
|
|
|
let file = self.files?[i]
|