|
@@ -145,6 +145,7 @@ import KMAdvertisement
|
|
// self.initializeUI()
|
|
// self.initializeUI()
|
|
self.initializeUI_DMG()
|
|
self.initializeUI_DMG()
|
|
|
|
|
|
|
|
+ self.setup()
|
|
// refreshUI()
|
|
// refreshUI()
|
|
|
|
|
|
NotificationCenter.default.addObserver(self, selector: #selector(homeFileRectChange(_:)), name: Notification.Name("KMHomeFileRectChange"), object: nil)
|
|
NotificationCenter.default.addObserver(self, selector: #selector(homeFileRectChange(_:)), name: Notification.Name("KMHomeFileRectChange"), object: nil)
|
|
@@ -201,58 +202,19 @@ import KMAdvertisement
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ func setup() {
|
|
|
|
+ self.creatPDFView.openPDFAction = { [unowned self] view, sender in
|
|
|
|
+ self.openPDFAction(sender)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ self.creatPDFView.creatPDFAction = { [unowned self] view, sender in
|
|
|
|
+ self.creatPDFAction(sender)
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
// MARK: Init
|
|
// MARK: Init
|
|
|
|
|
|
func initializeUI() {
|
|
func initializeUI() {
|
|
-// openPDFBox.fillColor = .clear
|
|
|
|
-// openPDFBox.contentView = openPDFButtonVC.view
|
|
|
|
-//
|
|
|
|
-// openPDFButtonVC.target = self
|
|
|
|
-// openPDFButtonVC.action = #selector(self.homeToolAction(_:))
|
|
|
|
-// openPDFButtonVC.button(type: .Brand, size: .l, height: openPDFBoxHeight)
|
|
|
|
-//
|
|
|
|
-// createPDFBox.fillColor = .clear
|
|
|
|
-// createPDFBox.contentView = createPDFButtonVC.view
|
|
|
|
-// createPDFButtonVC.target = self
|
|
|
|
-// createPDFButtonVC.action = #selector(self.homeToolAction(_:))
|
|
|
|
-// createPDFButtonVC.button(type: .Sec, size: .l, height: createPDFBoxHeight)
|
|
|
|
-// createPDFButtonVC.textButtonBox.move = { [unowned self](mouseEntered: Bool) -> Void in
|
|
|
|
-// if mouseEntered {
|
|
|
|
-// if self.createPDFButtonVC.state != .Sel && self.createPDFButtonVC.canHover {
|
|
|
|
-// self.createPDFButtonVC.state = .Hov
|
|
|
|
-// self.createPDFButtonVC.updateUI()
|
|
|
|
-// self.createPDFImage.state = .Hov
|
|
|
|
-// self.createPDFImage.updateUI()
|
|
|
|
-// self.createPDFImage.canHover = false
|
|
|
|
-// }
|
|
|
|
-// } else {
|
|
|
|
-// if self.createPDFButtonVC.state != .Sel && self.createPDFButtonVC.canHover {
|
|
|
|
-// self.createPDFButtonVC.state = .Norm
|
|
|
|
-// self.createPDFButtonVC.updateUI()
|
|
|
|
-// self.createPDFImage.state = .Norm
|
|
|
|
-// self.createPDFImage.updateUI()
|
|
|
|
-// self.createPDFImage.canHover = true
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-
|
|
|
|
-// createPDFView.contentView = createPDFImage.view
|
|
|
|
-// createPDFImage.image = NSImage(named: "icon_btn_arrow_gray_down_s_norm_false")!
|
|
|
|
-// createPDFImage.target = self
|
|
|
|
-// createPDFImage.action = #selector(self.homeToolAction(_:))
|
|
|
|
-// createPDFImage.button(type: .Icon_Fill, size: .m, height: createPDFViewHeight)
|
|
|
|
-//
|
|
|
|
-// homeBox.fillColor = .clear
|
|
|
|
-// homeBox.contentView = homeButtonVC.view
|
|
|
|
-// homeButtonVC.target = self
|
|
|
|
-// homeButtonVC.action = #selector(self.homeToolAction(_:))
|
|
|
|
-// homeButtonVC.image = NSImage(named: "icon_home_sidebar_home_false")!
|
|
|
|
-// homeButtonVC.image_hover = NSImage(named: "icon_home_sidebar_home_false")!
|
|
|
|
-// homeButtonVC.image_click = NSImage(named: "icon_home_sidebar_home_true")!
|
|
|
|
-// homeButtonVC.navMenu(bg: "navmenu.has-icon.m.bg.norm", text: "navmenu.win-text.def", height: homeBoxHeight)
|
|
|
|
-// homeButtonVC.navMenu(bg: "navmenu.has-icon.m.bg.hov", text: "navmenu.win-text.def", state:.Hov)
|
|
|
|
-// homeButtonVC.navMenu(bg: "navmenu.has-icon.m.bg.sel", text: "navmenu.win-text.sel", state:.Sel)
|
|
|
|
-//
|
|
|
|
// pdfToolsBox.fillColor = .clear
|
|
// pdfToolsBox.fillColor = .clear
|
|
// pdfToolsBox.contentView = pdfToolsButtonVC.view
|
|
// pdfToolsBox.contentView = pdfToolsButtonVC.view
|
|
// pdfToolsButtonVC.target = self
|
|
// pdfToolsButtonVC.target = self
|
|
@@ -676,29 +638,146 @@ import KMAdvertisement
|
|
tWorkSpace.open(httpUrl as URL)
|
|
tWorkSpace.open(httpUrl as URL)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+//MARK: Open Creat PDF
|
|
|
|
+extension KMHomeViewController: NSPopoverDelegate {
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+extension KMHomeViewController {
|
|
|
|
+ func openPDFAction(_ sender: KMBox) {
|
|
|
|
+ let openPanel = NSOpenPanel()
|
|
|
|
+ openPanel.allowedFileTypes = ["pdf", "PDF"]
|
|
|
|
+ openPanel.allowsMultipleSelection = false
|
|
|
|
+ openPanel.beginSheetModal(for: self.view.window!) { (result) in
|
|
|
|
+ if result == NSApplication.ModalResponse.OK {
|
|
|
|
+ NSDocumentController.shared.openDocument(withContentsOf: openPanel.url!, display: true) { (document, documentWasAlreadyOpen, error) in
|
|
|
|
+ if let error = error {
|
|
|
|
+ NSApp.presentError(error)
|
|
|
|
+ } else {
|
|
|
|
+ self.view.window?.windowController?.close()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
|
|
- func createPopoverAction(_ data: [String]) {
|
|
|
|
-// if (self.popover != nil && self.popover!.isShown) {
|
|
|
|
-// self.popover?.close()
|
|
|
|
-// self.popover = nil
|
|
|
|
-// return
|
|
|
|
-// }
|
|
|
|
-// let vc: KMHomePopViewController = KMHomePopViewController().initWithPopViewDataArr(data)
|
|
|
|
-// let createFilePopover: NSPopover = NSPopover.init()
|
|
|
|
-// self.popover = createFilePopover
|
|
|
|
-// createFilePopover.contentViewController = vc
|
|
|
|
-// createFilePopover.animates = true
|
|
|
|
-// createFilePopover.behavior = .semitransient
|
|
|
|
-// createFilePopover.setValue(true, forKey: "shouldHideAnchor")
|
|
|
|
-// createFilePopover.show(relativeTo: CGRect(x: createPDFBox.bounds.origin.x, y: 10, width: createPDFBox.bounds.size.width, height: createPDFBox.bounds.size.height), of: createPDFBox, preferredEdge: .minY)
|
|
|
|
-//
|
|
|
|
-// vc.customBoxWidthLayoutConstraint.constant = createPDFBox.frame.width
|
|
|
|
-// vc.downCallback = { [weak self] (downEntered: Bool, count: String) -> Void in
|
|
|
|
-// if downEntered {
|
|
|
|
-// self?.popover?.close()
|
|
|
|
-// self?.popover = nil
|
|
|
|
-// self?.popoverItemAction(count)
|
|
|
|
-// }
|
|
|
|
|
|
+ func creatPDFAction(_ sender: KMBox) {
|
|
|
|
+ let popViewDataArr: [String] = [NSLocalizedString("New Blank Page", comment: ""),
|
|
|
|
+ NSLocalizedString("New From Images", comment: ""),
|
|
|
|
+ NSLocalizedString("New From Web Page", comment: ""),
|
|
|
|
+ NSLocalizedString("Import From Camera", comment: ""),
|
|
|
|
+ NSLocalizedString("Import From Scanner", comment: "")]
|
|
|
|
+ let vc: KMHomePopViewController = KMHomePopViewController().initWithPopViewDataArr(popViewDataArr)
|
|
|
|
+ let createFilePopover: NSPopover = NSPopover.init()
|
|
|
|
+ createFilePopover.contentViewController = vc
|
|
|
|
+ createFilePopover.delegate = self
|
|
|
|
+ createFilePopover.animates = true
|
|
|
|
+ createFilePopover.behavior = .semitransient
|
|
|
|
+ createFilePopover.setValue(true, forKey: "shouldHideAnchor")
|
|
|
|
+ createFilePopover.show(relativeTo: CGRect(x: sender.bounds.origin.x, y: 10, width: sender.bounds.size.width, height: sender.bounds.size.height), of: sender, preferredEdge: .minY)
|
|
|
|
+
|
|
|
|
+ vc.downCallback = { [unowned self] (downEntered: Bool, count: String) -> Void in
|
|
|
|
+ if count == NSLocalizedString("New Blank Page", comment: "") {
|
|
|
|
+ self.openBlankPage()
|
|
|
|
+ } else if count == NSLocalizedString("Import From Camera", comment: "") {
|
|
|
|
+ self.importFromCamera()
|
|
|
|
+ } else if count == NSLocalizedString("Import From Scanner", comment: "") {
|
|
|
|
+ self.importFromScanner()
|
|
|
|
+ } else if count == NSLocalizedString("New From Web Page", comment: "") {
|
|
|
|
+ self.importFromWebPage()
|
|
|
|
+ } else if count == NSLocalizedString("Import From Scanner", comment: "") {
|
|
|
|
+ self.newFromImages()
|
|
|
|
+ }
|
|
|
|
+ createFilePopover.close()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ func openBlankPage() {
|
|
|
|
+ let fileName: NSString = String(format: "%@.pdf", NSLocalizedString("Untitled", comment: "")) as NSString
|
|
|
|
+ let savePath = fetchUniquePath(fileName.kUrlToPDFFolderPath() as String)
|
|
|
|
+ let pdfDocument = CPDFDocument()
|
|
|
|
+ pdfDocument?.insertPage(CGSize(width: 595, height: 842), at: 0)
|
|
|
|
+ pdfDocument?.write(to: URL(fileURLWithPath: savePath))
|
|
|
|
+ NSDocumentController.shared.openDocument(withContentsOf: URL(fileURLWithPath: savePath), display: true) { document, documentWasAlreadyOpen, error in
|
|
|
|
+ if error != nil {
|
|
|
|
+ NSApp.presentError(error!)
|
|
|
|
+ } else {
|
|
|
|
+ if document is KMMainDocument {
|
|
|
|
+ let newDocument = document
|
|
|
|
+ (newDocument as! KMMainDocument).isNewCreated = true
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ func importFromWebPage() {
|
|
|
|
+ self.urlToPDFWindowController = KMURLToPDFWindowController.init(windowNibName: NSNib.Name("KMURLToPDFWindowController"))
|
|
|
|
+
|
|
|
|
+ self.urlToPDFWindowController!.beginSheetModal(for: NSApp.mainWindow!) { filePath in
|
|
|
|
+ if filePath != nil && FileManager.default.fileExists(atPath: filePath) {
|
|
|
|
+ NSDocumentController.shared.openDocument(withContentsOf: URL(fileURLWithPath: filePath), display: true) { document, documentWasAlreadyOpen, error in
|
|
|
|
+ if error != nil {
|
|
|
|
+ NSApp.presentError(error!)
|
|
|
|
+ } else {
|
|
|
|
+ if document is KMMainDocument {
|
|
|
|
+ (document as! KMMainDocument).isNewCreated = true
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ func importFromScanner() {
|
|
|
|
+ let vc = KMDeviceBrowserWindowController.shared
|
|
|
|
+ vc.type = .scanner
|
|
|
|
+ vc.importScannerFileCallback = { [weak self](url: NSURL) -> Void in
|
|
|
|
+ self?.openFile(withFilePath: url as URL)
|
|
|
|
+ }
|
|
|
|
+ vc.showWindow(NSApp.mainWindow)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ func importFromCamera() {
|
|
|
|
+ let vc = KMDeviceBrowserWindowController.shared
|
|
|
|
+ vc.type = .camera
|
|
|
|
+ vc.importCameraFileCallback = { [weak self] (url: NSURL) -> Void in
|
|
|
|
+ self?.openFile(withFilePath: url as URL)
|
|
|
|
+ }
|
|
|
|
+ vc.showWindow(NSApp.mainWindow)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ func newFromImages() {
|
|
|
|
+ let openPanel = NSOpenPanel()
|
|
|
|
+ openPanel.allowedFileTypes = KMImageAccessoryController.supportedImageTypes()
|
|
|
|
+// if IAPProductsManager.defaultManager().isAvailableAllFunction {
|
|
|
|
+// openPanel.allowsMultipleSelection = true
|
|
|
|
+// } else {
|
|
|
|
+// openPanel.allowsMultipleSelection = false
|
|
// }
|
|
// }
|
|
|
|
+ openPanel.message = NSLocalizedString("Select images to create a new document. To select multiple files press cmd ⌘ button on the keyboard and click on the target files one by one.", comment: "")
|
|
|
|
+ openPanel.beginSheetModal(for: NSApp.mainWindow!) { result in
|
|
|
|
+ if result == .OK {
|
|
|
|
+ DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) {
|
|
|
|
+ debugPrint("缺少图片转PDF")
|
|
|
|
+// let baseWindowController = KMBatchOperateBaseWindowController(windowNibName: "KMBatchOperateBaseWindowController")
|
|
|
|
+// var arr: [KMBatchOperateFile] = []
|
|
|
|
+// for url in openPanel.urls {
|
|
|
|
+// let file = KMBatchOperateFile(filePath: url.path, type: .createPDF)
|
|
|
|
+// arr.append(file)
|
|
|
|
+// }
|
|
|
|
+//
|
|
|
|
+// if #available(macOS 10.13, *) {
|
|
|
|
+// baseWindowController.window?.makeKeyAndOrderFront(nil)
|
|
|
|
+// } else {
|
|
|
|
+// baseWindowController.showWindow(nil)
|
|
|
|
+// }
|
|
|
|
+// baseWindowController.checkNeedPasswordSwitch(toOperateType: .createPDF, files: arr)
|
|
|
|
+// if #available(macOS 10.13, *) {
|
|
|
|
+// baseWindowController.release()
|
|
|
|
+// }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|