Browse Source

【BOTA】缩略图列表原始数据兼容

tangchao 1 year ago
parent
commit
e916ca0bfb

+ 1 - 322
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController+Action.swift

@@ -1086,328 +1086,7 @@ extension KMLeftSideViewController: NSTextFieldDelegate {
 
 // MARK: - Menu Item Actions
 
-extension KMLeftSideViewController {
-    @objc func cutPage(_ sender: AnyObject?) {
-        if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
-            return
-        }
-        self.tableView(self.thumbnailTableView, cutRowsWithIndexes: self.thumbnailTableView.selectedRowIndexes)
-    }
-    
-    @objc func copyPage(_ sender: AnyObject?) {
-        self.tableView(self.thumbnailTableView, copyRowsWithIndexes: self.thumbnailTableView.selectedRowIndexes)
-    }
-    
-    @objc func pastePage(_ sender: AnyObject?) {
-        self.tableView(self.thumbnailTableView, pasteFromPasteboard: nil)
-    }
-    
-    @objc func deletePage(_ sender: AnyObject?) {
-        if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
-            return
-        }
-        self.tableView(self.thumbnailTableView, deleteRowsWithIndexes: self.thumbnailTableView.selectedRowIndexes)
-    }
-    
-    @objc func rotatePageMenuAction(_ sender: AnyObject?) {
-        if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
-            return
-        }
-        self.tableView(self.thumbnailTableView, rotateRowsWithIndexes: self.thumbnailTableView.selectedRowIndexes as NSIndexSet)
-    }
-    
-    @objc func quickInsert(_ sender: AnyObject?) {
-        if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
-            return
-        }
-
-        let idx = self.thumbnailTableView.selectedRowIndexes.first ?? NSNotFound
-        if idx == NSNotFound || idx >= self.listView.document.pageCount {
-            return
-        }
-        
-        let result = self.listView.insertPage(KMNormalBlankSize, at: idx+1)
-        if result == false {
-            return
-        }
-        
-        var selectedIndexSet = IndexSet()
-        selectedIndexSet.insert(idx+1)
-        self.insertPages(selectedIndexSet, pageAt: idx)
-    }
-    
-    @objc func insert(_ sender: AnyObject?) {
-        if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
-            return
-        }
-        
-        guard let document = self.listView.document else {
-            return
-        }
-
-        let idx = self.thumbnailTableView.selectedRowIndexes.first ?? NSNotFound
-        if idx == NSNotFound || idx >= document.pageCount {
-            return
-        }
-        
-        if document.allowsCopying == false || document.allowsPrinting == false {
-            Task {
-                _ = await KMAlertTool.runModel(message: KMLocalizedString("This is a secured document. Editing is not permitted.", nil))
-            }
-            return
-        }
-
-        let insertVC = KMPDFEditInsertBlankPageWindow(document: document)
-        insertVC.insertLocation = 3
-        insertVC.currentPage = idx + 1
-        insertVC.callback = { [weak self] pdfDoc, _, pages, insertI in
-            if let _pages = pages {
-                // mm 单位的大小
-                guard let _winC = self?.kmCurrentWindowC as? KMPDFEditInsertBlankPageWindow else {
-                    self?.km_endSheet()
-                    return
-                }
-                var pageSize = _winC.pageSize
-                let direction = _winC.pageRotation == 0 ? 0 : 1
-
-                if (direction == 0) { // 纵向
-                    if (pageSize.width > pageSize.height) { // 需要交换
-                        let tmp = pageSize.width
-                        pageSize.width = pageSize.height
-                        pageSize.height = tmp
-                    } else {
-                        // no things.
-                    }
-                } else { // 横向
-                    if (pageSize.width > pageSize.height) {
-                        // no things.
-                    } else { // 需要交换
-                        let tmp = pageSize.width
-                        pageSize.width = pageSize.height
-                        pageSize.height = tmp
-                    }
-                }
-
-                /// 插入位置
-                let document = CPDFDocument()
-                document?.insertPage(pageSize, at: 0)
-                if let page: CPDFPage = (document?.page(at: 0)) {
-                    self?.insertPage(page, pageAt: insertI)
-                }
-            }
-            self?.km_quick_endSheet()
-        }
-        self.km_beginSheet(windowC: insertVC)
-    }
-    
-    @objc func insertPDF(_ sender: AnyObject?) {
-        if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
-            return
-        }
-                
-        guard let document = self.listView.document else {
-            return
-        }
-
-        let idx = self.thumbnailTableView.selectedRowIndexes.first ?? NSNotFound
-        if idx == NSNotFound || idx >= document.pageCount {
-            return
-        }
-                
-        if document.allowsCopying == false || document.allowsPrinting == false {
-            Task {
-                _ = await KMAlertTool.runModel(message: KMLocalizedString("This is a secured document. Editing is not permitted.", nil))
-            }
-            return
-        }
-        
-        let panel = NSOpenPanel()
-        panel.allowedFileTypes = ["pdf"]
-        panel.beginSheetModal(for: self.view.window!) { response in
-            if response == .cancel {
-                return
-            }
-            
-            for fileURL in panel.urls {
-                let pdfDoc = CPDFDocument(url: fileURL)
-                if let data = pdfDoc?.isLocked, data {
-                    DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
-                        KMBaseWindowController.checkPassword(url: fileURL) { [unowned self] success, resultPassword in
-                            self.km_quick_endSheet()
-//                        }
-                            if (resultPassword.isEmpty == false) {
-                                
-                                let insertVC = KMPDFEditInsertPageWindow(document: document, path: fileURL, password: resultPassword)
-                                insertVC.insertLocation = 3
-                                insertVC.currentPage = idx + 1
-                                self.km_beginSheet(windowC: insertVC)
-                                insertVC.callback = { [weak self] pdfDoc, pwd, pages, insertIdx in
-                                    var indexs = IndexSet()
-                                    guard let _winC = self?.kmCurrentWindowC as? KMPDFEditInsertPageWindow, _winC.insertDocument != nil else {
-                                        self?.km_quick_endSheet()
-                                        return
-                                    }
-                                    let doc = _winC.insertDocument!
-                                    let fileAttribute = _winC.fileAttribute
-                                    var insertIndex = insertIdx
-                                    var insertPages: [CPDFPage] = []
-                                    for number in fileAttribute.fetchSelectPages() {
-                                        if let page = doc.page(at: UInt(number-1)) {
-                                            insertPages.append(page)
-                                            indexs.insert(insertIndex)
-                                            insertIndex += 1
-                                        }
-                                    }
-                                    for (i, page) in insertPages.enumerated() {
-                                        self?.listView.document.insertPageObject(page, at: UInt(insertIdx + i))
-                                    }
-                                    self?.insertPages(indexs, pageAt: insertIdx)
-                                    self?.km_quick_endSheet()
-                                }
-                            }
-                        }
-                    }
-                } else {
-                    let insertVC = KMPDFEditInsertPageWindow(document: document, path: fileURL)
-                    insertVC.insertLocation = 3
-                    insertVC.currentPage = idx + 1
-                    self.km_beginSheet(windowC: insertVC)
-                    insertVC.callback = { [weak self] pdfDoc, pwd, pages, insertIdx in
-                        var indexs = IndexSet()
-                        guard let _winC = self?.kmCurrentWindowC as? KMPDFEditInsertPageWindow, _winC.insertDocument != nil else {
-                            self?.km_quick_endSheet()
-                            return
-                        }
-                        let doc = _winC.insertDocument!
-                        let fileAttribute = _winC.fileAttribute
-                        var insertIndex = insertIdx
-                        var insertPages: [CPDFPage] = []
-                        for number in fileAttribute.fetchSelectPages() {
-                            if let page = doc.page(at: UInt(number-1)) {
-                                insertPages.append(page)
-                                indexs.insert(insertIndex)
-                                insertIndex += 1
-                            }
-                        }
-                        for (i, page) in insertPages.enumerated() {
-                            self?.listView.document.insertPageObject(page, at: UInt(insertIdx + i))
-                        }
-                        self?.insertPages(indexs, pageAt: insertIdx)
-                        self?.km_quick_endSheet()
-                    }
-                    
-                }
-            }
-        }
-    }
-    
-    @objc func extractPage(_ sender: AnyObject?) {
-        if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
-            return
-        }
-        self.tableView(self.thumbnailTableView, extractRowsWithIndexes: self.thumbnailTableView.selectedRowIndexes)
-    }
-    
-    @objc func pageEdit(_ sender: AnyObject?) {
-        self.delegate?.controller?(controller: self, itemClick: nil, itemKey: .pageEdit, params: nil)
-    }
-    
-    @objc func displayPageSize(_ sender: AnyObject?) {
-        if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
-            return
-        }
-        
-        self.isDisplayPageSize = !self.isDisplayPageSize;
-        UserDefaults.standard.setValue(self.isDisplayPageSize, forKey: "kKMThumbnailDisplayPageSizeKey")
-        UserDefaults.standard.synchronize()
-        
-        Task { @MainActor in
-            self.thumbnailTableView.reloadData()
-        }
-    }
-    
-    @objc func sharePage(_ sender: AnyObject?) {
-        if IAPProductsManager.default().isAvailableAllFunction() == false {
-            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
-            return
-        }
-        
-        guard let document = self.listView.document else {
-            return
-        }
-        var pages = NSMutableArray()
-        for idx in self.thumbnailTableView.selectedRowIndexes {
-            if (idx < document.pageCount) {
-                if let page = self.listView.document.page(at: UInt(idx)) {
-                    pages.add(page)
-                }
-            }
-        }
-        let pdf = CPDFDocument()
-        for page in pages {
-//            PDFPage *copyPage = [[page copy] autorelease];
-            if let _page = page as? CPDFPage {
-                pdf?.insertPageObject(_page, at: pdf?.pageCount ?? 0)
-            }
-        }
-        var fileName = ""
-//        NSString * = [self.pdfDocument.documentURL.lastPathComponent stringByDeletingPathExtension];
-        var documentFileName = document.documentURL?.deletingPathExtension().lastPathComponent ?? ""
-
-        var tName = self.fileNameWithSelectedPages(self.thumbnailTableView.selectedRowIndexes)
-        if (tName.count > 50) {
-            tName = tName.substring(to: 50)
-        }
-
-        if (pages.count > 1) {
-            fileName = String(format: "%@ pages %@", documentFileName, tName)
-        } else {
-            fileName = String(format: "%@ page %@", documentFileName, tName)
-        }
-
-        let paths = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)
-        var cachesDir = paths.first ?? ""
-        cachesDir = "\(cachesDir)/\(fileName).pdf"
-        var array = NSMutableArray()
-        let url = URL(fileURLWithPath: cachesDir)
-        array.add(url)
-        let vc = KMProgressWindowController()
-//    //    [NSApp beginSheet:[vc window]
-//    //       modalForWindow:self.window
-//    //        modalDelegate:nil
-//    //       didEndSelector:nil
-//    //          contextInfo:NULL];
-        self.view.window?.beginSheet(vc.window!, completionHandler: { [unowned self] returnCode in
-            NSApp.endSheet(self.view.window!, returnCode: returnCode.rawValue)
-        })
-
-        DispatchQueue.global().async {
-            let sucess = pdf?.write(toFile: cachesDir) ?? false
-            if (sucess) {
-                DispatchQueue.main.async {
-//                    [[sender representedObject] performWithItems:array];
-                    let represent : NSSharingService = (sender as! NSMenuItem).representedObject as! NSSharingService
-                    represent.perform(withItems: [url])
-                    
-                    NSApp.endSheet(vc.window!)
-                    vc.close()
-                }
-            } else {
-                NSApp.endSheet(vc.window!)
-                vc.close()
-            }
-        }
-//        [vc release];
-    }
-    
+extension KMLeftSideViewController { 
     @objc func toggleCaseInsensitiveNoteSearch(_ sender: AnyObject?) {
         self.caseInsensitiveNoteSearch = !self.caseInsensitiveNoteSearch
         if self.searchField.stringValue.isEmpty ==  false {

+ 326 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController+Thumbnail.swift

@@ -9,6 +9,7 @@ import Foundation
 
 extension KMLeftSideViewController.Key {
     static let thumbSizeScaling = "KMThumbnailSizeScalingKey"
+    static let thumbDisplayPageSizeKey = "kKMThumbnailDisplayPageSizeKey"
 }
 
 // MARK: - Actions
@@ -134,6 +135,8 @@ extension KMLeftSideViewController {
     }
     
     func thumb_initDefalutValue() {
+        self.isDisplayPageSize = KMDataManager.ud_bool(forKey: Self.Key.thumbDisplayPageSizeKey)
+        
         self.thumbnailView.wantsLayer = true
         self.thumbnailView.layer?.backgroundColor = KMAppearance.Layout.l0Color().cgColor
         
@@ -293,3 +296,326 @@ extension KMLeftSideViewController {
     }
 }
 
+// MARK: - Menu Actions
+
+extension KMLeftSideViewController {
+    @objc func cutPage(_ sender: AnyObject?) {
+        if IAPProductsManager.default().isAvailableAllFunction() == false {
+            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            return
+        }
+        self.tableView(self.thumbnailTableView, cutRowsWithIndexes: self.thumbnailTableView.selectedRowIndexes)
+    }
+    
+    @objc func copyPage(_ sender: AnyObject?) {
+        self.tableView(self.thumbnailTableView, copyRowsWithIndexes: self.thumbnailTableView.selectedRowIndexes)
+    }
+    
+    @objc func pastePage(_ sender: AnyObject?) {
+        self.tableView(self.thumbnailTableView, pasteFromPasteboard: nil)
+    }
+    
+    @objc func deletePage(_ sender: AnyObject?) {
+        if IAPProductsManager.default().isAvailableAllFunction() == false {
+            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            return
+        }
+        self.tableView(self.thumbnailTableView, deleteRowsWithIndexes: self.thumbnailTableView.selectedRowIndexes)
+    }
+    
+    @objc func rotatePageMenuAction(_ sender: AnyObject?) {
+        if IAPProductsManager.default().isAvailableAllFunction() == false {
+            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            return
+        }
+        self.tableView(self.thumbnailTableView, rotateRowsWithIndexes: self.thumbnailTableView.selectedRowIndexes as NSIndexSet)
+    }
+    
+    @objc func quickInsert(_ sender: AnyObject?) {
+        if IAPProductsManager.default().isAvailableAllFunction() == false {
+            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            return
+        }
+
+        let idx = self.thumbnailTableView.selectedRowIndexes.first ?? NSNotFound
+        if idx == NSNotFound || idx >= self.listView.document.pageCount {
+            return
+        }
+        
+        let result = self.listView.insertPage(KMNormalBlankSize, at: idx+1)
+        if result == false {
+            return
+        }
+        
+        var selectedIndexSet = IndexSet()
+        selectedIndexSet.insert(idx+1)
+        self.insertPages(selectedIndexSet, pageAt: idx)
+    }
+    
+    @objc func insert(_ sender: AnyObject?) {
+        if IAPProductsManager.default().isAvailableAllFunction() == false {
+            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            return
+        }
+        
+        guard let document = self.listView.document else {
+            return
+        }
+
+        let idx = self.thumbnailTableView.selectedRowIndexes.first ?? NSNotFound
+        if idx == NSNotFound || idx >= document.pageCount {
+            return
+        }
+        
+        if document.allowsCopying == false || document.allowsPrinting == false {
+            Task {
+                _ = await KMAlertTool.runModel(message: KMLocalizedString("This is a secured document. Editing is not permitted.", nil))
+            }
+            return
+        }
+
+        let insertVC = KMPDFEditInsertBlankPageWindow(document: document)
+        insertVC.insertLocation = 3
+        insertVC.currentPage = idx + 1
+        insertVC.callback = { [weak self] pdfDoc, _, pages, insertI in
+            if let _pages = pages {
+                // mm 单位的大小
+                guard let _winC = self?.kmCurrentWindowC as? KMPDFEditInsertBlankPageWindow else {
+                    self?.km_endSheet()
+                    return
+                }
+                var pageSize = _winC.pageSize
+                let direction = _winC.pageRotation == 0 ? 0 : 1
+
+                if (direction == 0) { // 纵向
+                    if (pageSize.width > pageSize.height) { // 需要交换
+                        let tmp = pageSize.width
+                        pageSize.width = pageSize.height
+                        pageSize.height = tmp
+                    } else {
+                        // no things.
+                    }
+                } else { // 横向
+                    if (pageSize.width > pageSize.height) {
+                        // no things.
+                    } else { // 需要交换
+                        let tmp = pageSize.width
+                        pageSize.width = pageSize.height
+                        pageSize.height = tmp
+                    }
+                }
+
+                /// 插入位置
+                let document = CPDFDocument()
+                document?.insertPage(pageSize, at: 0)
+                if let page: CPDFPage = (document?.page(at: 0)) {
+                    self?.insertPage(page, pageAt: insertI)
+                }
+            }
+            self?.km_quick_endSheet()
+        }
+        self.km_beginSheet(windowC: insertVC)
+    }
+    
+    @objc func insertPDF(_ sender: AnyObject?) {
+        if IAPProductsManager.default().isAvailableAllFunction() == false {
+            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            return
+        }
+                
+        guard let document = self.listView.document else {
+            return
+        }
+
+        let idx = self.thumbnailTableView.selectedRowIndexes.first ?? NSNotFound
+        if idx == NSNotFound || idx >= document.pageCount {
+            return
+        }
+                
+        if document.allowsCopying == false || document.allowsPrinting == false {
+            Task {
+                _ = await KMAlertTool.runModel(message: KMLocalizedString("This is a secured document. Editing is not permitted.", nil))
+            }
+            return
+        }
+        
+        let panel = NSOpenPanel()
+        panel.allowedFileTypes = ["pdf"]
+        panel.beginSheetModal(for: self.view.window!) { response in
+            if response == .cancel {
+                return
+            }
+            
+            for fileURL in panel.urls {
+                let pdfDoc = CPDFDocument(url: fileURL)
+                if let data = pdfDoc?.isLocked, data {
+                    DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
+                        KMBaseWindowController.checkPassword(url: fileURL) { [unowned self] success, resultPassword in
+                            self.km_quick_endSheet()
+                            if (resultPassword.isEmpty == false) {
+                                
+                                let insertVC = KMPDFEditInsertPageWindow(document: document, path: fileURL, password: resultPassword)
+                                insertVC.insertLocation = 3
+                                insertVC.currentPage = idx + 1
+                                self.km_beginSheet(windowC: insertVC)
+                                insertVC.callback = { [weak self] pdfDoc, pwd, pages, insertIdx in
+                                    var indexs = IndexSet()
+                                    guard let _winC = self?.kmCurrentWindowC as? KMPDFEditInsertPageWindow, _winC.insertDocument != nil else {
+                                        self?.km_quick_endSheet()
+                                        return
+                                    }
+                                    let doc = _winC.insertDocument!
+                                    let fileAttribute = _winC.fileAttribute
+                                    var insertIndex = insertIdx
+                                    var insertPages: [CPDFPage] = []
+                                    for number in fileAttribute.fetchSelectPages() {
+                                        if let page = doc.page(at: UInt(number-1)) {
+                                            insertPages.append(page)
+                                            indexs.insert(insertIndex)
+                                            insertIndex += 1
+                                        }
+                                    }
+                                    for (i, page) in insertPages.enumerated() {
+                                        self?.listView.document.insertPageObject(page, at: UInt(insertIdx + i))
+                                    }
+                                    self?.insertPages(indexs, pageAt: insertIdx)
+                                    self?.km_quick_endSheet()
+                                }
+                            }
+                        }
+                    }
+                } else {
+                    let insertVC = KMPDFEditInsertPageWindow(document: document, path: fileURL)
+                    insertVC.insertLocation = 3
+                    insertVC.currentPage = idx + 1
+                    self.km_beginSheet(windowC: insertVC)
+                    insertVC.callback = { [weak self] pdfDoc, pwd, pages, insertIdx in
+                        var indexs = IndexSet()
+                        guard let _winC = self?.kmCurrentWindowC as? KMPDFEditInsertPageWindow, _winC.insertDocument != nil else {
+                            self?.km_quick_endSheet()
+                            return
+                        }
+                        let doc = _winC.insertDocument!
+                        let fileAttribute = _winC.fileAttribute
+                        var insertIndex = insertIdx
+                        var insertPages: [CPDFPage] = []
+                        for number in fileAttribute.fetchSelectPages() {
+                            if let page = doc.page(at: UInt(number-1)) {
+                                insertPages.append(page)
+                                indexs.insert(insertIndex)
+                                insertIndex += 1
+                            }
+                        }
+                        for (i, page) in insertPages.enumerated() {
+                            self?.listView.document.insertPageObject(page, at: UInt(insertIdx + i))
+                        }
+                        self?.insertPages(indexs, pageAt: insertIdx)
+                        self?.km_quick_endSheet()
+                    }
+                    
+                }
+            }
+        }
+    }
+    
+    @objc func extractPage(_ sender: AnyObject?) {
+        if IAPProductsManager.default().isAvailableAllFunction() == false {
+            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            return
+        }
+        self.tableView(self.thumbnailTableView, extractRowsWithIndexes: self.thumbnailTableView.selectedRowIndexes)
+    }
+    
+    @objc func pageEdit(_ sender: AnyObject?) {
+        self.delegate?.controller?(controller: self, itemClick: nil, itemKey: .pageEdit, params: nil)
+    }
+    
+    @objc func displayPageSize(_ sender: AnyObject?) {
+        if IAPProductsManager.default().isAvailableAllFunction() == false {
+            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            return
+        }
+        
+        self.isDisplayPageSize = !self.isDisplayPageSize
+        KMDataManager.ud_set(self.isDisplayPageSize, forKey: Self.Key.thumbDisplayPageSizeKey)
+        
+        Task { @MainActor in
+            self.thumbnailTableView.reloadData()
+        }
+    }
+    
+    @objc func sharePage(_ sender: AnyObject?) {
+        if IAPProductsManager.default().isAvailableAllFunction() == false {
+            KMPurchaseCompareWindowController.sharedInstance().showWindow(nil)
+            return
+        }
+        
+        guard let document = self.listView.document else {
+            return
+        }
+        var pages = NSMutableArray()
+        for idx in self.thumbnailTableView.selectedRowIndexes {
+            if (idx < document.pageCount) {
+                if let page = self.listView.document.page(at: UInt(idx)) {
+                    pages.add(page)
+                }
+            }
+        }
+        let pdf = CPDFDocument()
+        for page in pages {
+//            PDFPage *copyPage = [[page copy] autorelease];
+            if let _page = page as? CPDFPage {
+                pdf?.insertPageObject(_page, at: pdf?.pageCount ?? 0)
+            }
+        }
+        var fileName = ""
+//        NSString * = [self.pdfDocument.documentURL.lastPathComponent stringByDeletingPathExtension];
+        var documentFileName = document.documentURL?.deletingPathExtension().lastPathComponent ?? ""
+
+        var tName = self.fileNameWithSelectedPages(self.thumbnailTableView.selectedRowIndexes)
+        if (tName.count > 50) {
+            tName = tName.substring(to: 50)
+        }
+
+        if (pages.count > 1) {
+            fileName = String(format: "%@ pages %@", documentFileName, tName)
+        } else {
+            fileName = String(format: "%@ page %@", documentFileName, tName)
+        }
+
+        let paths = NSSearchPathForDirectoriesInDomains(.cachesDirectory, .userDomainMask, true)
+        var cachesDir = paths.first ?? ""
+        cachesDir = "\(cachesDir)/\(fileName).pdf"
+        var array = NSMutableArray()
+        let url = URL(fileURLWithPath: cachesDir)
+        array.add(url)
+        let vc = KMProgressWindowController()
+//    //    [NSApp beginSheet:[vc window]
+//    //       modalForWindow:self.window
+//    //        modalDelegate:nil
+//    //       didEndSelector:nil
+//    //          contextInfo:NULL];
+        self.view.window?.beginSheet(vc.window!, completionHandler: { [unowned self] returnCode in
+            NSApp.endSheet(self.view.window!, returnCode: returnCode.rawValue)
+        })
+
+        DispatchQueue.global().async {
+            let sucess = pdf?.write(toFile: cachesDir) ?? false
+            if (sucess) {
+                DispatchQueue.main.async {
+//                    [[sender representedObject] performWithItems:array];
+                    let represent : NSSharingService = (sender as! NSMenuItem).representedObject as! NSSharingService
+                    represent.perform(withItems: [url])
+                    
+                    NSApp.endSheet(vc.window!)
+                    vc.close()
+                }
+            } else {
+                NSApp.endSheet(vc.window!)
+                vc.close()
+            }
+        }
+//        [vc release];
+    }
+}
+

+ 0 - 1
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController.swift

@@ -63,7 +63,6 @@ class KMLeftSideViewController: KMSideViewController {
         self.reloadSnapshotSize()
         
 //        DistributedNotificationCenter.default().addObserver(self, selector: #selector(interfaceThemeDidChanged), name: NSApplication.interfaceThemeChangedNotification, object: nil)
-        self.isDisplayPageSize = UserDefaults.standard.bool(forKey: "kKMThumbnailDisplayPageSizeKey")
     }
     
     func showPanelView(show: Bool) {

+ 0 - 48
PDF Office/PDF Reader Pro.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -52,54 +52,6 @@
             landmarkType = "21">
          </BreakpointContent>
       </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "4AA968F7-D1AD-4F10-A211-DD4DBC127E87"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController+Action.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1250"
-            endingLineNumber = "1250"
-            landmarkName = "insertPDF(_:)"
-            landmarkType = "7">
-            <Locations>
-               <Location
-                  uuid = "4AA968F7-D1AD-4F10-A211-DD4DBC127E87 - 197882e9c4091cef"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "closure #1 (Swift.Bool, Swift.String) -&gt; () in closure #1 @Swift.MainActor () -&gt; () in closure #2 (__C.NSModalResponse) -&gt; () in PDF_Reader_Pro.KMLeftSideViewController.insertPDF(Swift.Optional&lt;Swift.AnyObject&gt;) -&gt; ()"
-                  moduleName = "PDF Reader Pro"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Users/kdanmobile/work/tangchao/git/PDFOffice/PDF%20Office/PDF%20Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController+Action.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "1250"
-                  endingLineNumber = "1250"
-                  offsetFromSymbolStart = "574">
-               </Location>
-               <Location
-                  uuid = "4AA968F7-D1AD-4F10-A211-DD4DBC127E87 - 38e951511251b97b"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "closure #1 (Swift.Optional&lt;__C.CPDFDocument&gt;, Swift.Optional&lt;__C.NSString&gt;, Swift.Optional&lt;Swift.Array&lt;__C.CPDFPage&gt;&gt;, Swift.Int) -&gt; () in closure #1 (Swift.Bool, Swift.String) -&gt; () in closure #1 @Swift.MainActor () -&gt; () in closure #2 (__C.NSModalResponse) -&gt; () in PDF_Reader_Pro.KMLeftSideViewController.insertPDF(Swift.Optional&lt;Swift.AnyObject&gt;) -&gt; ()"
-                  moduleName = "PDF Reader Pro"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Users/kdanmobile/work/tangchao/git/PDFOffice/PDF%20Office/PDF%20Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController+Action.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "1250"
-                  endingLineNumber = "1250"
-                  offsetFromSymbolStart = "378">
-               </Location>
-            </Locations>
-         </BreakpointContent>
-      </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent