Browse Source

【综合】内容编辑处理多选场景

tangchao 8 months ago
parent
commit
9d69fad768

+ 38 - 0
PDF Office/PDF Master/Class/Appearance/Color.xcassets/KMButtonDisabledColor.colorset/Contents.json

@@ -0,0 +1,38 @@
+{
+  "colors" : [
+    {
+      "color" : {
+        "color-space" : "srgb",
+        "components" : {
+          "alpha" : "1.000",
+          "blue" : "0xDE",
+          "green" : "0xDB",
+          "red" : "0xDA"
+        }
+      },
+      "idiom" : "universal"
+    },
+    {
+      "appearances" : [
+        {
+          "appearance" : "luminosity",
+          "value" : "dark"
+        }
+      ],
+      "color" : {
+        "color-space" : "srgb",
+        "components" : {
+          "alpha" : "1.000",
+          "blue" : "0xCC",
+          "green" : "0xC9",
+          "red" : "0xC8"
+        }
+      },
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 10 - 0
PDF Office/PDF Master/Class/Appearance/KMAppearance.swift

@@ -698,6 +698,16 @@ let KMImageNameElsei = "KMImageNameElsei";
         return NSColor(hex: "#EAF2FB")
     }
     
+    class func buttonDisabledColor() -> NSColor {
+        if (!self.isSupportNewColor()) {
+            return NSColor(hex: "#DADBDE")
+        }
+        if let _color = NSColor(named: "KMButtonDisabledColor") {
+            return _color
+        }
+        return NSColor(hex: "#DADBDE")
+    }
+    
     class func separatorLineColor() -> NSColor {
         if (!self.isSupportNewColor()) {
             return NSColor.km_init(hex: "#DADBDE", alpha: 1)

+ 220 - 24
PDF Office/PDF Master/Class/PDFTools/EditPDF/Tools/KMEditPDfHanddler.swift

@@ -73,6 +73,30 @@ class KMEditPDfHanddler: NSObject {
         }
     }
     
+    var editingImageAreas: [CPDFEditImageArea] {
+        get {
+            var areas: [CPDFEditImageArea] = []
+            for area in self.editingAreas {
+                if let data = area as? CPDFEditImageArea {
+                    areas.append(data)
+                }
+            }
+            return areas
+        }
+    }
+    
+    var editingTextAreas: [CPDFEditTextArea] {
+        get {
+            var areas: [CPDFEditTextArea] = []
+            for area in self.editingAreas {
+                if let data = area as? CPDFEditTextArea {
+                    areas.append(data)
+                }
+            }
+            return areas
+        }
+    }
+    
     var rightSideLastState: KMRightSideLastState {
         get {
             let state = KMDataManager.ud_integer(forKey: Self.kRightSideLastStateKey)
@@ -275,33 +299,39 @@ class KMEditPDfHanddler: NSObject {
     }
     
     func showCropComfirmWindow() {
-        let win = KMEditPDFPopToolBarWindow.shared
-        let winFrame = win.frame
-        
         let winC = KMEditPDFCropComfirmWindowController.shared
-        let x = winFrame.origin.x + (NSWidth(winFrame)-84) * 0.5
-        let frame = NSMakeRect(x, winFrame.origin.y, 84, 44)
-        winC.window?.setFrame(frame, display: true)
+        if KMEditPDFPopToolBarWindow.shared.isVisible {
+            let winFrame = KMEditPDFPopToolBarWindow.shared.frame
+            let x = winFrame.origin.x + (NSWidth(winFrame)-84) * 0.5
+            let frame = NSMakeRect(x, winFrame.origin.y, 84, 44)
+            
+            winC.window?.setFrame(frame, display: true)
+        } else {
+            let area = (self.listView?.editingAreas().first as? CPDFEditArea)
+            let areaBounds = (self.listView?.convert(area!.bounds, from: area!.page) as? NSRect) ?? .zero
+            
+            let positioningView = self.listView
+            let winFrame = positioningView?.window?.frame ?? .zero
+            let toView: NSView? = nil
+            var position = positioningView?.convert(areaBounds.origin, to: toView) ?? .zero
+            position.x += winFrame.origin.x
+            position.y += winFrame.origin.y
+            position.y += areaBounds.size.height
+            position.y += 26
+            
+            let x = position.x + (NSWidth(areaBounds)-84) * 0.5
+            let frame = NSMakeRect(x, position.y, 84, 44)
+            
+            winC.window?.setFrame(frame, display: true)
+        }
+        
         winC.showWindow(nil)
         self._kAddchildwindow(winC.window!)
         winC.itemAction = { [weak self] idx, _ in
-            self?.hiddenCropComfirmWindow()
-            
             if idx == 0 { // 确认
-                self?.listView?.cropEditImageArea(self?.listView?.selectImageAreas, withBounds: self?.listView?.cropAreas.cropRect ?? .zero)
-                self?.listView?.exitCrop(with: self?.listView?.selectImageAreas)
-                self?.listView?.cropAreas = nil
-                self?.listView?.isEditImage = false
+                self?.cropComfirmAction()
             } else if idx == 1 { // 取消
-                self?.listView?.exitCrop(with: self?.listView?.selectImageAreas)
-                self?.listView?.cropAreas = nil
-                self?.listView?.isEditImage = false
-            }
-            
-            Task { @MainActor [weak self] in
-                if let data = self?.listView?.selectImageAreas {
-                    self?.showPopWindow(positionRect:data.bounds)
-                }
+                self?.cropCancelAction()
             }
         }
     }
@@ -413,6 +443,133 @@ extension KMEditPDfHanddler {
     }
 }
 
+// MARK: - Tools
+
+extension KMEditPDfHanddler {
+    func editAreasIsEmpty() -> Bool {
+        return self.editingAreas.isEmpty
+    }
+    
+    func editAreasHavTextArea() -> Bool {
+        return self.editingTextAreas.isEmpty == false
+    }
+    
+    func editAreasHavImageArea() -> Bool {
+        return self.editingImageAreas.isEmpty == false
+    }
+    
+    func editAreasBoundsIsEqualForWidth() -> Bool {
+        if self.editAreasIsEmpty() {
+            return false
+        }
+        let rects = self._editAreasBounds()
+        if rects.count == 1 {
+            return true
+        }
+        let width = rects.first?.width ?? 0
+        for (i, rect) in rects.enumerated() {
+            if i == 0 {
+                continue
+            }
+            if width != rect.size.width {
+                return false
+            }
+        }
+        return true
+    }
+    
+    func editAreasBoundsIsEqualForHeight() -> Bool {
+        if self.editAreasIsEmpty() {
+            return false
+        }
+        let rects = self._editAreasBounds()
+        if rects.count == 1 {
+            return true
+        }
+        let height = rects.first?.height ?? 0
+        for (i, rect) in rects.enumerated() {
+            if i == 0 {
+                continue
+            }
+            if height != rect.size.height {
+                return false
+            }
+        }
+        return true
+    }
+    
+    func editAreasRotateIsEqual() -> Bool {
+        if self.editAreasIsEmpty() {
+            return false
+        }
+        if self.editAreasHavTextArea() {
+            return false
+        }
+        let datas = self._editAreasRotates()
+        if datas.count == 1 {
+            return true
+        }
+        let data = datas.first ?? 0
+        for (i, d) in datas.enumerated() {
+            if i == 0 {
+                continue
+            }
+            if data != d {
+                return false
+            }
+        }
+        return true
+    }
+    
+    func editAreasOpacityIsEqual() -> Bool {
+        if self.editAreasIsEmpty() {
+            return false
+        }
+        let datas = self._editAreasOpacitys()
+        if datas.count == 1 {
+            return true
+        }
+        let data = datas.first ?? 0
+        for (i, d) in datas.enumerated() {
+            if i == 0 {
+                continue
+            }
+            if data != d {
+                return false
+            }
+        }
+        return true
+    }
+    
+    private func _editAreasBounds() -> [NSRect] {
+        var rects: [NSRect] = []
+        for area in self.editingAreas {
+            rects.append(area.bounds)
+        }
+        return rects
+    }
+    
+    private func _editAreasRotates() -> [CGFloat] {
+        var arr: [CGFloat] = []
+        for area in self.editingImageAreas {
+            if let data = self.listView?.getRotateWith(area) {
+                arr.append(data)
+            }
+        }
+        return arr
+    }
+    
+    private func _editAreasOpacitys() -> [CGFloat] {
+        var arr: [CGFloat] = []
+        for area in self.editingAreas {
+            if let data = self.listView?.opacity(for: area) {
+                arr.append(data)
+            }
+        }
+        return arr
+    }
+}
+
 // MARK: - Action
 
 extension KMEditPDfHanddler {
@@ -573,11 +730,12 @@ extension KMEditPDfHanddler {
     }
     
     func cropAction() {
-        self.listView?.isEditImage = true
         let editingAreas = self.editingAreas
         if editingAreas.isEmpty {
             return
         }
+        
+        self.listView?.isEditImage = true
         for area in editingAreas {
             if let data = area as? CPDFEditImageArea {
                 self.listView?.enterCrop(with: data)
@@ -588,6 +746,42 @@ extension KMEditPDfHanddler {
         Task { @MainActor in
             self.showCropComfirmWindow()
         }
+        
+        self.rightViewC?.eidtPDFImageProperty.updateButtonState(hidden: false)
+    }
+    
+    func cropCancelAction() {
+        self.hiddenCropComfirmWindow()
+        
+        let areas = self.editingAreas
+        if areas.isEmpty {
+            return
+        }
+        for area in areas {
+            if let data = area as? CPDFEditImageArea {
+                self.listView?.exitCrop(with: data)
+            }
+        }
+        
+        self.listView?.cropAreas = nil
+        self.listView?.isEditImage = false
+        
+        self.rightViewC?.eidtPDFImageProperty.updateButtonState(hidden: true)
+        
+        Task { @MainActor [weak self] in
+            if let data = self?.listView?.selectImageAreas {
+                self?.showPopWindow(positionRect:data.bounds)
+            }
+        }
+    }
+    
+    func cropComfirmAction() {
+        guard let selectImageAreas = self.listView?.selectImageAreas else {
+            self.cropCancelAction()
+            return
+        }
+        self.listView?.cropEditImageArea(selectImageAreas, withBounds: self.listView?.cropAreas.cropRect ?? .zero)
+        self.cropCancelAction()
     }
     
     func replaceAction() {
@@ -603,8 +797,8 @@ extension KMEditPDfHanddler {
                 let openPath = panel.url?.path
                 for area in editingAreas {
                     if let data = area as? CPDFEditImageArea {
-//                        self.listView?.replace(data, imagePath: openPath!)
-                        self.listView?.replace(data, imagePath: openPath!, rect: data.bounds)
+                        // , rect: data.bounds
+                        self.listView?.replace(data, imagePath: openPath!)
                     }
                 }
             }
@@ -925,6 +1119,7 @@ extension KMEditPDfHanddler: CPDFViewDelegate {
                 self.rightViewC?.isHidden = false
                 if self.subViewType == .EditPDFAddImage {
                     self.rightViewC?.subViewType = .EditPDFAddImage
+                    self.rightViewC?.eidtPDFImageProperty.handdler = self
                     self.rightViewC?.eidtPDFImageProperty.reloadData()
                 }
                 self.openRightPane()
@@ -964,6 +1159,7 @@ extension KMEditPDfHanddler: CPDFViewDelegate {
             } else if imagesAreas.count > 0 {
                 self.rightViewC?.isHidden = false
                 self.rightViewC?.subViewType = .EditPDFAddImage
+                self.rightViewC?.eidtPDFImageProperty.handdler = self
                 self.rightViewC?.eidtPDFImageProperty?.reloadData()
                 self.openRightPane()
             }

+ 50 - 115
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/EditPDF/KMEditImagePropertyViewController.swift

@@ -26,7 +26,6 @@ protocol KMEditImagePropertyViewControllerDelegate: NSObject {
 }
 
 class KMEditImagePropertyViewController: NSViewController {
-
     @IBOutlet weak var backgroundView: NSView!
     @IBOutlet weak var titleLabel: NSTextField!
     
@@ -107,7 +106,10 @@ class KMEditImagePropertyViewController: NSViewController {
     
     weak var delegate: KMEditImagePropertyViewControllerDelegate?
     
+    weak var handdler: KMEditPDfHanddler?
+    
     deinit {
+        KMPrint("KMEditImagePropertyViewController deinit.")
         self.removeNotification()
     }
     
@@ -152,8 +154,8 @@ class KMEditImagePropertyViewController: NSViewController {
         self.wTextFieldItemView.rightView = wRightView
         var formatter = NumberFormatter()
         formatter.numberStyle = .decimal
-        formatter.maximum = NSNumber(value: 999)
-        formatter.minimum = NSNumber(value: 1)
+//        formatter.maximum = NSNumber(value: 999)
+//        formatter.minimum = NSNumber(value: 1)
         self.wTextFieldItemView.textFiled.formatter = formatter
         
         self.hTextFieldItemView.backgroundView.wantsLayer = true
@@ -162,6 +164,7 @@ class KMEditImagePropertyViewController: NSViewController {
         self.hTextFieldItemView.backgroundView.layer?.borderColor = NSColor(hex: "#DFE1E5").cgColor
         self.hTextFieldItemView.backgroundView.layer?.cornerRadius = 4
         self.hTextFieldItemView.delegate = self
+        self.hTextFieldItemView.textFiled.formatter = formatter
         let hRightView = NSView()
         hRightView.frame = NSMakeRect(0, 0, 24, 32)
         let hIv = NSImageView()
@@ -185,12 +188,15 @@ class KMEditImagePropertyViewController: NSViewController {
         self.whVC?.pagination()
         whVC?.borderColor_hov = KMAppearance.Interactive.s0Color()
         whVC?.borderColor_act = KMAppearance.Interactive.s0Color()
+        whVC?.borderColor_disabled = KMAppearance.Interactive.s0Color()
         whVC?.cornerRadius = 4
         whVC?.cornerRadius_hov = 4
         whVC?.cornerRadius_act = 4
+        whVC?.cornerRadius_disabled = 4
         whVC?.background_hov = KMAppearance.view_bg_dis_color()
         whVC?.background_focus = KMAppearance.Layout.l1Color()
         whVC?.background_act = KMAppearance.buttonSelectedColor()
+        whVC?.background_disabled = KMAppearance.buttonDisabledColor()
         
         self.rotateTitleLabel.stringValue = NSLocalizedString("Rotate", comment: "")
         self.rotateTextFieldItemView.delegate = self
@@ -472,6 +478,8 @@ class KMEditImagePropertyViewController: NSViewController {
                 self.updateImageAreasOpacity(opacity: opacity, state: .ended, needListView: false)
                 self.turnOverBox.isHidden = false
                 self.opacityTitleLabel.isHidden = false
+                self.whVC?.state = .Norm
+                self.cropVC?.state = .Norm
             } else if imagesAreas.count > 1 && imagesAreas.count == areas.count { //多选图片
                 self.headerBox.isHidden = false
                 self.headerBoxHeight.constant = 176
@@ -492,6 +500,17 @@ class KMEditImagePropertyViewController: NSViewController {
                 self.updateImageAreasOpacity(opacity: opacity, state: .ended, needListView: false)
                 self.turnOverBox.isHidden = false
                 self.opacityTitleLabel.isHidden = false
+                
+                self.whVC?.state = .Disabled
+                self.cropVC?.state = .Disabled
+                
+                if let data = self.handdler?.editAreasOpacityIsEqual(), data {
+                    self.opacitySlider.isEnabled = true
+                    self.opacityVC?.state = .Norm
+                } else {
+                    self.opacitySlider.isEnabled = false
+                    self.opacityVC?.state = .Disabled
+                }
             } else if imagesAreas.count > 0 && imagesAreas.count != areas.count { //多选图片跟文字
                 self.opacityBoxBottomMaginConstraint.constant = 8
                 self.alignmentViewTopConstraint.constant = 0
@@ -551,21 +570,23 @@ class KMEditImagePropertyViewController: NSViewController {
     }
     
     func updateWHData() {
-        let areas = self.listView.editingAreas() as? [CPDFEditArea] ?? []
-        if areas.count == 1 {
-            let areaFrame = areas.first?.bounds ?? .zero
+        if let data = self.handdler?.editAreasBoundsIsEqualForWidth(), data {
+            let areaFrame = self.handdler?.editingAreas.first?.bounds ?? .zero
             self.wTextFieldItemView.stringValue = String(format: "%.1f", areaFrame.size.width)
+        } else {
+            self.wTextFieldItemView.stringValue = "--"
+        }
+        if let data = self.handdler?.editAreasBoundsIsEqualForHeight(), data {
+            let areaFrame = self.handdler?.editingAreas.first?.bounds ?? .zero
             self.hTextFieldItemView.stringValue = String(format: "%.1f", areaFrame.size.height)
         } else {
-            self.wTextFieldItemView.stringValue = "-"
-            self.hTextFieldItemView.stringValue = "-"
+            self.hTextFieldItemView.stringValue = "--"
         }
     }
     
     func updateRotateData() {
-        let areas = self.listView.editingAreas() as? [CPDFEditArea] ?? []
-        if areas.count == 1 {
-            let area = (areas.first as? CPDFEditImageArea)
+        if let data = self.handdler?.editAreasRotateIsEqual(), data {
+            let area = self.handdler?.editingImageAreas.first
             let rotate = self.listView.getRotateWith(area)
             let stringValue = self.rotateTextFieldItemView.stringValue?.replacingOccurrences(of: "°", with: "")
             let number = NSNumber(value: rotate)
@@ -573,7 +594,7 @@ class KMEditImagePropertyViewController: NSViewController {
             let string = formatter.string(for: number)
             self.rotateTextFieldItemView.stringValue = "\(string ?? "0") °"
         } else {
-            self.rotateTextFieldItemView.stringValue = "-"
+            self.rotateTextFieldItemView.stringValue = "--"
         }
     }
     
@@ -713,32 +734,16 @@ extension KMEditImagePropertyViewController {
     }
     
     @IBAction func cutImageAction(_ sender: Any) {
-        if self.listView.selectImageAreas == nil {
-            return
-        }
-
-        self.listView.isEditImage = true
-        self.listView.enterCrop(with: self.listView.selectImageAreas)
-        self.updateButtonState(hidden: false)
+        // selectImageAreas
+        self.handdler?.cropAction()
     }
     
     @IBAction func confirmVCImageAction(_ sender: Any) {
-        if self.listView.selectImageAreas == nil || self.listView.cropAreas == nil {
-            return
-        }
-        
-        self.listView.cropEditImageArea(self.listView.selectImageAreas, withBounds: self.listView.cropAreas.cropRect)
-        self.cancelCutImageAction(cancelVC?.button as Any)
+        self.handdler?.cropComfirmAction()
     }
     
     @IBAction func cancelCutImageAction(_ sender: Any) {
-        if self.listView.selectImageAreas == nil {
-            return
-        }
-        self.listView.exitCrop(with: self.listView.selectImageAreas)
-        self.listView.cropAreas = nil
-        self.listView.isEditImage = false
-        self.updateButtonState(hidden: true)
+        self.handdler?.cropCancelAction()
     }
     
     @IBAction func restoreCutImageAction(_ sender: Any) {
@@ -753,85 +758,12 @@ extension KMEditImagePropertyViewController {
             return
         }
         FMTrackEventManager.defaultManager.trackEvent(event: "SubTbr_PageEdit", withProperties: ["SubTbr_Btn": "Btn_SubTbr_PageEdit_Replace"])
-        let panel = NSOpenPanel()
-        panel.allowsMultipleSelection = false
-        panel.allowedFileTypes = ["png","jpg"]
-        panel.beginSheetModal(for: NSApp.mainWindow!) { response in
-            if response == .OK {
-                let openPath = panel.url?.path
-//                let s = self.listView.extractImage(with: self.selectImageAreas, toImagePath: openPath!)
-                let s = self.listView.replace(self.listView.selectImageAreas, imagePath: openPath!)
-                if s {
-                    
-                }
-            }
-        }
+
+        self.handdler?.replaceAction()
     }
     
     @IBAction func exportImageAction(_ sender: Any) {
-        if self.listView.selectImageAreas == nil {
-            return
-        }
-        if imagesAreas.count == 1 {
-            let panel = NSSavePanel()
-            panel.nameFieldStringValue = "\(NSLocalizedString("Untitled", comment: "")).jpg"
-//            let button = NSButton.init(checkboxWithTitle: NSLocalizedString("Open the document after saving", comment: ""), target: nil, action: nil)
-//            button.state = .on
-//            panel.accessoryView = button
-            panel.isExtensionHidden = true
-            let response = panel.runModal()
-            if response == .OK {
-                let url = panel.url
-                if FileManager.default.fileExists(atPath: url!.path) {
-                    try?FileManager.default.removeItem(atPath: url!.path)
-                }
-                let result = self.listView.extractImage(with: self.listView.selectImageAreas, toImagePath: url!.path)
-                if result {
-//                    if button.state == .on { /// 开启文档
-//                        NSWorkspace.shared.openFile(url!.path)
-                    NSWorkspace.shared.activateFileViewerSelecting([url!])
-//                    } else {
-//
-//                    }
-                }
-            }
-        } else if imagesAreas.count > 1 {
-            let panel = NSOpenPanel()
-            panel.canChooseFiles = false
-            panel.canChooseDirectories = true
-            panel.canCreateDirectories = true
-            panel.allowsMultipleSelection = false
-            panel.beginSheetModal(for: NSApp.mainWindow!) { response in
-                if response == .OK {
-                    let outputURL = panel.url
-                    let s = self.listView.document.documentURL.lastPathComponent
-                    let folderPath = self.listView.document.documentURL.deletingPathExtension().lastPathComponent + "_extract"
-                    var filePath = outputURL?.path.stringByAppendingPathComponent(folderPath)
-                    
-                    var i = 1
-                    let testFilePath = filePath
-                    while FileManager.default.fileExists(atPath: filePath!) {
-                        filePath = testFilePath! + "\(i)"
-                        i = i + 1
-                    }
-                    try? FileManager.default.createDirectory(atPath: filePath!, withIntermediateDirectories: false, attributes: nil)
-                    var saveURLs : [URL] = []
-                    for j in 0 ... self.imagesAreas.count-1 {
-                        let documentFileName = self.listView.document.documentURL.deletingPathExtension().lastPathComponent
-                        var outPath = filePath!
-                        outPath = outPath.stringByAppendingPathComponent(documentFileName)
-                        outPath = outPath + "page \(j+1)"
-                        outPath = outPath.stringByAppendingPathExtension("jpg")
-                        let result = self.listView.extractImage(with: self.imagesAreas[j], toImagePath: outPath)
-                        if result {
-                            saveURLs.append(URL(fileURLWithPath: outPath))
-                        }
-                    }
-                    NSWorkspace.shared.activateFileViewerSelecting(saveURLs)
-                }
-            }
-        }
-      
+        self.handdler?.exportAction()
     }
 }
 
@@ -896,7 +828,8 @@ extension KMEditImagePropertyViewController: KMTextFieldDelegate {
             let string = formatter.string(for: number)
             self.rotateTextFieldItemView.stringValue = "\(string ?? "0") °"
             
-            if let area = self.listView.editingAreas().first as? CPDFEditImageArea {
+            let areas = self.handdler?.editingImageAreas ?? []
+            for area in areas {
                 let rotate = self.listView.getRotateWith(area)
                 let rotate2 = string?.stringToCGFloat() ?? 0
                 let offset = rotate2-rotate
@@ -913,9 +846,9 @@ extension KMEditImagePropertyViewController: KMTextFieldDelegate {
             let string = self.wTextFieldItemView.textFiled.formatter?.string(for: number)
             self.wTextFieldItemView.stringValue = string ?? ""
             
-            let areas = self.listView?.editingAreas() as? [CPDFEditArea] ?? []
-            if let area = areas.first as? CPDFEditImageArea {
-                self.listView.editAreaBoundUpdating = true
+            let areas = self.handdler?.editingImageAreas ?? []
+            self.listView.editAreaBoundUpdating = true
+            for area in areas {
                 let state =  self.whVC?.state ?? .None
                 var bounds = area.bounds
                 let width = string?.stringToCGFloat() ?? 0
@@ -946,9 +879,11 @@ extension KMEditImagePropertyViewController: KMTextFieldDelegate {
             let string = self.hTextFieldItemView.textFiled.formatter?.string(for: number)
             self.hTextFieldItemView.stringValue = string ?? ""
             
-            let areas = self.listView?.editingAreas() as? [CPDFEditArea] ?? []
-            if let area = areas.first as? CPDFEditImageArea {
-                self.listView.editAreaBoundUpdating = true
+//            let areas = self.listView?.editingAreas() as? [CPDFEditArea] ?? []
+            let areas = self.handdler?.editingImageAreas ?? []
+            self.listView.editAreaBoundUpdating = true
+            for area in areas {
+//            if let area = areas.first as? CPDFEditImageArea {
                 let state =  self.whVC?.state ?? .None
                 var bounds = area.bounds
                 let height = string?.stringToCGFloat() ?? 0