Browse Source

Merge branch 'develop_2025' of git.kdan.cc:Mac_PDF/PDF_Office into develop_2025

niehaoyu 1 month ago
parent
commit
5f6d57f0c1

+ 4 - 0
PDF Office/PDF Master/KMClass/Convert/Base/KMConvertBaseWindowController.swift

@@ -24,6 +24,8 @@ class KMConvertBaseWindowController: KMNBaseWindowController {
     private var convertButton_: ComponentButton?
     private var batchButton_: ComponentButton?
     
+    var batchAction:(() -> Void)?
+    
     var documentModel: KMDocumentModel?
     
     var currentPageIndex: Int = 1
@@ -209,6 +211,8 @@ class KMConvertBaseWindowController: KMNBaseWindowController {
     @objc func batchButtonAction() {
         self._clearData()
         own_closeEndSheet()
+        
+        self.batchAction?()
     }
     
     @objc func cancelButtonAction() {

+ 27 - 25
PDF Office/PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift

@@ -1975,7 +1975,7 @@ struct KMNMWCFlags {
     func reloadPopUIActiveAnnotations(activeAnnotations:[CPDFAnnotation]) {
         let annotationMode = KMNAnnotationPopMode(pdfAnnotations: activeAnnotations )
         let popWindow = KMNPopAnnotationWindowController.shared
-        if annotationMode.popType == .popTypeNone {
+        if annotationMode.popType == .popTypeNone || !SettingsManager.sharedInstance.showQuickActionBar {
             closeAnnotationPopWindow()
         } else {
             if popWindow.window?.isVisible == false {
@@ -2006,7 +2006,7 @@ struct KMNMWCFlags {
         let editingAreas = listView.km_EditingAreas()
         let editMode = KMNEditContentPopMode(currentEditAreas: editingAreas)
         let popWindow = KMNPopContentEditWindowController.shared
-        if editMode.popType == .editNone {
+        if editMode.popType == .editNone || !SettingsManager.sharedInstance.showQuickActionBar {
             closePopContentEditWindow()
         } else {
             listView.window?.addChildWindow(popWindow.window ?? NSWindow(), ordered: .above)
@@ -3184,48 +3184,49 @@ struct KMNMWCFlags {
     
     //MARK: - 转档
     func showConvertWindow(_ convertType: KMPDFConvertType) {
-  
+        
+        var winC: KMConvertBaseWindowController = KMConvertBaseWindowController()
         if convertType == .word {
-            let winC = KMConvertWordWindowController()
+            winC = KMConvertWordWindowController()
             let model = KMDocumentModel(url: listView.document.documentURL)
             winC.documentModel = model
             winC.own_beginSheetModal(for: self.view.window, completionHandler: nil)
         } else if convertType == .ppt {
-            let winC = KMConvertPPTsWindowController()
+            winC = KMConvertPPTsWindowController()
             winC.subType = 1
             let model = KMDocumentModel(url: listView.document.documentURL)
             winC.documentModel = model
             winC.own_beginSheetModal(for: self.view.window, completionHandler: nil)
         } else if convertType == .rtf {
-            let winC = KMConvertPPTsWindowController()
+            winC = KMConvertPPTsWindowController()
             winC.subType = 2
             let model = KMDocumentModel(url: listView.document.documentURL)
             winC.documentModel = model
             winC.own_beginSheetModal(for: self.view.window, completionHandler: nil)
         } else if convertType == .text {
-            let winC = KMConvertPPTsWindowController()
+            winC = KMConvertPPTsWindowController()
             winC.subType = 4
             let model = KMDocumentModel(url: listView.document.documentURL)
             winC.documentModel = model
             winC.own_beginSheetModal(for: self.view.window, completionHandler: nil)
         } else if convertType == .csv {
-            let winC = KMConvertPPTsWindowController()
+            winC = KMConvertPPTsWindowController()
             winC.subType = 5
             let model = KMDocumentModel(url: listView.document.documentURL)
             winC.documentModel = model
             winC.own_beginSheetModal(for: self.view.window, completionHandler: nil)
         } else if convertType == .excel {
-            let winC = KMConvertExcelWindowController()
+            winC = KMConvertExcelWindowController()
             let model = KMDocumentModel(url: listView.document.documentURL)
             winC.documentModel = model
             winC.own_beginSheetModal(for: self.view.window, completionHandler: nil)
         } else if convertType == .html {
-            let winC = KMConvertHtmlWindowController()
+            winC = KMConvertHtmlWindowController()
             let model = KMDocumentModel(url: listView.document.documentURL)
             winC.documentModel = model
             winC.own_beginSheetModal(for: self.view.window, completionHandler: nil)
         } else if convertType == .json {
-            let winC = KMConvertJsonWindowController()
+            winC = KMConvertJsonWindowController()
             let model = KMDocumentModel(url: listView.document.documentURL)
             winC.documentModel = model
             winC.own_beginSheetModal(for: view.window, completionHandler: nil)
@@ -3237,7 +3238,7 @@ struct KMNMWCFlags {
                     convertType == .tga ||
                     convertType == .bmp ||
                     convertType == .jp2{
-            let winC = KMConvertImageWindowController()
+            winC = KMConvertImageWindowController()
             let model = KMDocumentModel(url: listView.document.documentURL)
             winC.documentModel = model
             winC.own_beginSheetModal(for: view.window, completionHandler: nil)
@@ -3245,6 +3246,10 @@ struct KMNMWCFlags {
                 settingView.selectConvertType(convertType: convertType)
             }
         }
+        
+        winC.batchAction = { [unowned self] in
+            self.showBatchWindow(type: .convertPDF, subType: convertType.rawValue, files: [listView.document.documentURL])
+        }
     }
     
     //MARK: - 选择Form注释
@@ -3620,9 +3625,13 @@ extension KMMainViewController {
     }
 }
 
-//Batch
+//MARK: Batch
 extension KMMainViewController {
     func showBatchWindow(type: KMBatchCollectionViewType, files: [URL]?) {
+        self.showBatchWindow(type: type, subType: 0, files: files)
+    }
+    
+    func showBatchWindow(type: KMBatchCollectionViewType, subType: Int = 0, files: [URL]?) {
         let batchWindowController = KMBatchWindowController.init(windowNibName: "KMBatchWindowController")
         batchWindowController.window?.makeKeyAndOrderFront("")
         
@@ -3633,16 +3642,7 @@ extension KMMainViewController {
 //        }
         batchWindowController.inputData = files ?? []
         batchWindowController.type = type
-        
-//        let batchWindowController = KMBatchOperateWindowController.sharedWindowController
-//        
-//        var array: [KMBatchOperateFile] = []
-//        for fpath in filepaths ?? [] {
-//            let batchOperateFile = KMBatchOperateFile(filePath: fpath, type: type)
-//            array.append(batchOperateFile)
-//        }
-//        batchWindowController.switchToOperateType(type, files: array)
-//        batchWindowController.window?.makeKeyAndOrderFront("")
+        batchWindowController.inputSubType = subType
     }
 }
 
@@ -5363,7 +5363,7 @@ extension KMMainViewController: CPDFViewDelegate,CPDFListViewDelegate {
         var pagePoint = CGPoint.zero
         let point = theEvent.locationInWindow
         
-        let isShowPopUI:Bool = false
+        let isShowPopUI:Bool = !SettingsManager.sharedInstance.showQuickActionBar
 
         if let page = pdfListView.pageAndPoint(&pagePoint, for: theEvent, nearest: false) {
             if view.window?.interactionMode == .presentation {
@@ -5652,7 +5652,7 @@ extension KMMainViewController: CPDFViewDelegate,CPDFListViewDelegate {
             
             groupListMenuGroup?.showWithPoint(CGPoint(x: windowPoint.x, y: windowPoint.y - menuStruct.viewHeight), relativeTo: listView)
         } else {
-            let isShowPopUI:Bool = false
+            let isShowPopUI:Bool = !SettingsManager.sharedInstance.showQuickActionBar
             var menuStringArr: [String] = []
             let editingAreas = listView.km_EditingAreas()
             let firstEditingArea = editingAreas.first
@@ -6575,6 +6575,8 @@ extension KMMainViewController: ComponentGroupDelegate {
                 listView.delete(nil)
             }
         } else if(menuItemProperty?.identifier == PDFViewMenuIdentifier_Normal_ShowPopUI) {
+            UserDefaults.standard.setValue(true, forKey: settingsShowQuickActionBarKey)
+            SettingsManager.sharedInstance.showQuickActionBar = true
             reloadPopUIWindow()
         } else if(menuItemProperty?.identifier == PDFViewMenuIdentifier_Normal_LinkReade) {
         

+ 1 - 1
PDF Office/PDF Master/KMClass/KMPDFViewController/KMPDFMenuConfig.swift

@@ -1039,7 +1039,7 @@ let BOTAMenuIdentifier_Annotation_DeleteMuteRep = "BOTAMenuIdentifier_Annotation
     
     class func editFontAlighProperty(theEvent:NSEvent?,listView:CPDFListView?)->ComponentMenuitemProperty {
         let propertie_Menuitem: ComponentMenuitemProperty = ComponentMenuitemProperty(keyEquivalent: nil,
-                                                                                       text: KMLocalizedString("Align"),
+                                                                                       text: KMLocalizedString("Text Alignment"),
                                                                                        identifier: PDFViewMenuIdentifier_Edit_FontAlight,representedObject: listView)
         var subMenuItemArr: [ComponentMenuitemProperty] = []
         let subItem0Property: ComponentMenuitemProperty = ComponentMenuitemProperty(keyEquivalent: "⌘{",text: KMLocalizedString("Align Left"),identifier: PDFViewMenuIdentifier_Edit_FontLeftAlight,

+ 28 - 10
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/KMBatchConvertPDFView.swift

@@ -30,18 +30,36 @@ class KMBatchConvertPDFView: KMBatchSettingItemView {
             switch value {
             case 0:
                 convertType = .word
-            case 2:
+            case 1:
                 convertType = .excel
-            case 3:
+            case 2:
                 convertType = .ppt
-            case 4:
+            case 3:
                 convertType = .rtf
-            case 5:
+            case 4:
                 convertType = .csv
-            case 6:
+            case 5:
                 convertType = .html
-            case 7:
+            case 6:
                 convertType = .text
+            case 7:
+                convertType = .jpeg
+            case 8:
+                convertType = .jpg
+            case 9:
+                convertType = .png
+            case 10:
+                convertType = .gif
+            case 11:
+                convertType = .tiff
+            case 12:
+                convertType = .tga
+            case 13:
+                convertType = .bmp
+            case 14:
+                convertType = .jpeg2000
+            case 15:
+                convertType = .json
             default:
                 convertType = .word
             }
@@ -131,8 +149,8 @@ class KMBatchConvertPDFView: KMBatchSettingItemView {
         }
         self.convertButton.reloadData()
         
-        //选择选项
-        self.formatSelectButton.selectItemAtIndex(KMBatchConvertPDFType.allValues().firstIndex(of: self.data.convertPDFType.rawValue) ?? 0)
+        //选择选项 如果没找到 则是图片
+        self.formatSelectButton.selectItemAtIndex(KMBatchConvertPDFType.allValues().firstIndex(of: self.data.convertPDFType.rawValue) ?? 7)
         
         self.currentView.data = self.data
         self.currentView.reloadData()
@@ -163,7 +181,7 @@ class KMBatchConvertPDFView: KMBatchSettingItemView {
             case .ppt:
                 view = KMBatchConverPDFPPTView.init(frame: self.itemContentView.bounds)
                 break
-            case .image:
+            case .jpg, .jpeg, .jpeg2000, .png, .gif, .tiff, .bmp, .tga:
                 view = KMBatchConverPDFImageView.init(frame: self.itemContentView.bounds)
                 break
             case .csv:
@@ -185,13 +203,13 @@ class KMBatchConvertPDFView: KMBatchSettingItemView {
                 KMPrint("找不到")
                 break
             }
-            view.type = type
             view.presenter = self.presenter
             view.data = self.data
             self.itemViewArray.append(view)
         }
         view.isDisable = self.isDisable
         view.settingView?.isBatch = true
+        view.type = type
         return view
     }
     

+ 42 - 15
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Model/KMBatchConvertPDFViewModel.swift

@@ -6,24 +6,35 @@
 //
 
 import Cocoa
-
 //转换类型
 enum KMBatchConvertPDFType: String, CaseIterable {
-    case word = "Word"
-    case excel = "Excel"
-    case csv = "CSV"
+    case word = "Word (.docx)"
+    case excel = "Excel (.xlsx)"
+    case csv = "CSV (.csv)"
+    case ppt = "PowerPoint (.pptx)"
+    case rtf = "RTF (.rtf)"
+    case html = "Html (.html)"
+    case text = "Text (.txt)"
     case image = "Image"
-    case ppt = "PPT"
-    case rtf = "RTF"
-    case html = "HTML"
-    case text = "Text"
-    case json = "json"
+    case jpeg = "JPEG (.jpeg)"
+    case jpg = "JPG (.jpg)"
+    case png = "PNG (.png)"
+    case gif = "GIF (.gif)"
+    case tiff = "TIFF (.tiff)"
+    case tga = "TGA (.tga)"
+    case bmp = "BMP (.bmp)"
+    case jpeg2000 = "JPEG-2000 (.jp2)"
+    case json = "Json(.json)"
     
     static func allValues() -> [String] {
-        var array: [String] = []
-        for key in KMBatchConvertPDFType.allCases {
-            array.append(key.rawValue)
-        }
+        let array: [String] = [KMBatchConvertPDFType.word.rawValue,
+                               KMBatchConvertPDFType.excel.rawValue,
+                               KMBatchConvertPDFType.csv.rawValue,
+                               KMBatchConvertPDFType.ppt.rawValue,
+                               KMBatchConvertPDFType.rtf.rawValue,
+                               KMBatchConvertPDFType.html.rawValue,
+                               KMBatchConvertPDFType.text.rawValue,
+                               KMBatchConvertPDFType.image.rawValue,]
         return array
     }
     
@@ -36,8 +47,6 @@ enum KMBatchConvertPDFType: String, CaseIterable {
             type = .excel
         case KMBatchConvertPDFType.csv.rawValue:
             type = .csv
-        case KMBatchConvertPDFType.image.rawValue:
-            type = .image
         case KMBatchConvertPDFType.ppt.rawValue:
             type = .ppt
         case KMBatchConvertPDFType.rtf.rawValue:
@@ -48,6 +57,24 @@ enum KMBatchConvertPDFType: String, CaseIterable {
             type = .json
         case KMBatchConvertPDFType.text.rawValue:
             type = .text
+        case KMBatchConvertPDFType.jpeg.rawValue:
+            type = .jpeg
+        case KMBatchConvertPDFType.jpg.rawValue:
+            type = .jpg
+        case KMBatchConvertPDFType.jpeg2000.rawValue:
+            type = .jpeg2000
+        case KMBatchConvertPDFType.png.rawValue:
+            type = .png
+        case KMBatchConvertPDFType.gif.rawValue:
+            type = .gif
+        case KMBatchConvertPDFType.tiff.rawValue:
+            type = .tiff
+        case KMBatchConvertPDFType.tga.rawValue:
+            type = .tga
+        case KMBatchConvertPDFType.bmp.rawValue:
+            type = .bmp
+        case KMBatchConvertPDFType.image.rawValue:
+            type = .image
         default:
             type = .word
         }

+ 1 - 1
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Presenter/KMBatchConvertPDFViewPresenter.swift

@@ -24,7 +24,7 @@ extension KMBatchConvertPDFViewPresenter: KMBatchConvertPDFViewPresenterProtocol
     }
     
     func convertPDFTypeAction(string: String) {
-        self.modelData.convertPDFType = KMBatchConvertPDFType.typeOfRawValue(string)
+        self.modelData.convertPDFType = KMBatchConvertPDFType.typeOfRawValue((string))
         self.delegate?.showData(presenter: self, data: self.modelData)
     }
     

+ 5 - 1
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Base/KMBatchConvertPDFItemView.swift

@@ -10,7 +10,11 @@ import Cocoa
 class KMBatchConvertPDFItemView: BaseXibView {
 
     
-    var type: KMBatchConvertPDFType = .word
+    var type: KMBatchConvertPDFType = .word {
+        didSet {
+            self.reloadData()
+        }
+    }
     var presenter: KMBatchConvertPDFViewPresenter = KMBatchConvertPDFViewPresenter()
     var data: KMBatchConvertPDFViewModel = KMBatchConvertPDFViewModel()
     

+ 24 - 1
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/ConvertPDF/Views/Image/KMBatchConverPDFImageView.swift

@@ -20,7 +20,30 @@ class KMBatchConverPDFImageView: KMBatchConvertPDFItemView {
     }
     
     override func reloadData() {
-
+        var type: KMPDFConvertType = .jpeg
+        
+        switch self.type {
+        case .jpg:
+            type = .jpg
+        case .jpeg:
+            type = .jpeg
+        case .png:
+            type = .png
+        case .gif:
+            type = .gif
+        case .tga:
+            type = .tga
+        case .bmp:
+            type = .bmp
+        case .jpeg2000:
+            type = .jpg
+        case .tiff:
+            type = .tiff
+        default:
+            type = .jpeg
+        }
+                
+        (settingView as? KMConvertImageSettingView)?.selectConvertType(convertType: type)
     }
     
 }

+ 1 - 1
PDF Office/PDF Master/KMClass/NewBatch/View/Setting/KMBatchSettingView.swift

@@ -161,7 +161,6 @@ class KMBatchSettingView: BaseXibView {
                 break
             }
             resultView.type = type
-            resultView.subType = subType
             resultView.filesData = self.filesData ?? []
             resultView.isDisable = self.isDisable
             resultView.reloadData()
@@ -171,6 +170,7 @@ class KMBatchSettingView: BaseXibView {
                 resultView.filesData = self.filesData ?? []
             }
         }
+        resultView.subType = subType
         
         return resultView
     }