浏览代码

【2025】【Edit】编辑模块调整

niehaoyu 3 月之前
父节点
当前提交
af3e612393
共有 14 个文件被更改,包括 1234 次插入851 次删除
  1. 178 0
      PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListViewExtension/CPDFListView+Edit.swift
  2. 1 1
      PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift
  3. 3 2
      PDF Office/PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift
  4. 12 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/PDF_Edit/flipHorizontal.imageset/Contents.json
  5. 二进制
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/PDF_Edit/flipHorizontal.imageset/flipHorizontal.pdf
  6. 12 0
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/PDF_Edit/flipVertical.imageset/Contents.json
  7. 二进制
      PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/PDF_Edit/flipVertical.imageset/flipVertical.pdf
  8. 49 49
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/KMRightSideController.swift
  9. 151 1
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/KMEditImageController.swift
  10. 303 275
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/KMEditImageController.xib
  11. 24 9
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/KMEditPDFTextPropertyViewController.swift
  12. 197 351
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift
  13. 8 0
      PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj
  14. 296 163
      PDF Office/PDF Reader Pro.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

+ 178 - 0
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListViewExtension/CPDFListView+Edit.swift

@@ -0,0 +1,178 @@
+//
+//  CPDFListView+Edit.swift
+//  PDF Reader Pro
+//
+//  Created by Niehaoyu on 2024/11/15.
+//
+
+import Foundation
+
+
+extension CPDFListView {
+    
+    func km_EditingAreas() -> [CPDFEditArea] {
+        return self.editingAreas() as? [CPDFEditArea] ?? []
+    }
+    
+    func km_editAreasBounds(_ areas: [CPDFEditArea]) -> [NSRect] {
+        var rects: [NSRect] = []
+        for area in areas {
+            rects.append(area.bounds)
+        }
+        return rects
+    }
+    
+    func km_editAreasOpacitys(_ areas: [CPDFEditArea]) -> [CGFloat] {
+        var arr: [CGFloat] = []
+        for area in areas {
+            let data = self.opacityByRange(for: area)
+            arr.append(data)
+        }
+        return arr
+    }
+    
+    
+    //Image
+    func km_editingImageAreas() -> [CPDFEditImageArea] {
+        var areas: [CPDFEditImageArea] = []
+        for area in self.km_EditingAreas() {
+            if let data = area as? CPDFEditImageArea {
+                areas.append(data)
+            }
+        }
+        return areas
+    }
+    
+    func km_editAreasRotates(_ areas: [CPDFEditImageArea]) -> [CGFloat] {
+        var arr: [CGFloat] = []
+        for area in areas {
+            let data = self.getRotateWith(area)
+            arr.append(data)
+            
+        }
+        return arr
+    }
+    
+    //Text
+    func km_editingTextAreas() -> [CPDFEditTextArea] {
+        var areas: [CPDFEditTextArea] = []
+        for area in self.km_EditingAreas() {
+            if let data = area as? CPDFEditTextArea {
+                areas.append(data)
+            }
+        }
+        return areas
+    }
+    
+    func km_editTextAreasFontColors(_ textAreas: [CPDFEditTextArea]) -> [NSColor] {
+        var datas: [NSColor] = []
+        for area in textAreas {
+            if let data = self.editingSelectionFontColor(with: area) {
+                datas.append(data)
+            }
+        }
+        return datas
+    }
+    
+    func km_editTextAreasFontStyles(_ textAreas: [CPDFEditTextArea]) -> [String] {
+        var datas: [String] = []
+        for area in textAreas {
+            if let data = self.editingSelectionCFont(with: area)?.styleName {
+                datas.append(data)
+            }
+        }
+        return datas
+    }
+    
+    func km_editTextAreasFontNames(_ textAreas: [CPDFEditTextArea]) -> [String] {
+        var datas: [String] = []
+        for area in textAreas {
+            if let data = self.editingSelectionCFont(with: area)?.familyName {
+                datas.append(data)
+            }
+        }
+        return datas
+    }
+    
+    func km_editTextAreasFontSizes(_ textAreas: [CPDFEditTextArea]) -> [CGFloat] {
+        var datas: [CGFloat] = []
+        for area in textAreas {
+            let data = self.editingSelectionFontSize(byRangeEdit: area)
+            datas.append(data)
+        }
+        return datas
+    }
+    
+    func km_editTextAreasFontBolds(_ textAreas: [CPDFEditTextArea]) -> [Bool] {
+        var datas: [Bool] = []
+        for area in textAreas {
+            let data = self.isBoldCurrentSelection(byRangeEdit: area)
+            datas.append(data)
+            
+        }
+        return datas
+    }
+    
+    func km_editTextAreasFontItalics(_ textAreas: [CPDFEditTextArea]) -> [Bool] {
+        var datas: [Bool] = []
+        for area in textAreas {
+            let data = self.isItalicCurrentSelection(byRangeEdit: area)
+            datas.append(data)
+            
+        }
+        return datas
+    }
+    
+    func km_editTextAreasTextAlignments(_ textAreas: [CPDFEditTextArea]) -> [NSTextAlignment] {
+        var datas: [NSTextAlignment] = []
+        for area in textAreas {
+            let data = self.currentSelectionAlignment(byRangeEdit: area)
+            datas.append(data)
+            
+        }
+        return datas
+    }
+    
+    //MARK: - 开始&结束编辑
+    func enterEditPDF() {
+        self.updateActiveAnnotations([])
+        self.setNeedsDisplayForVisiblePages()
+        self.commitEditFormText()
+        self.annotationType = .editTextImage
+        
+        // 设置边框颜色
+        self.editingConfig().editingBorderColor = .clear
+        
+        self.editingConfig().isShowMouseAreaHover = true
+        
+        // 边框颜色
+        self.editingConfig().mouseHoverBorderColor = NSColor(hex: "#999999")
+        // 边框虚线设置
+        self.editingConfig().mouseHoverBorderDashPattern = [3,3,3]
+        // 块填充颜色(拖拽中)
+        // 是否显示位置辅助线
+        self.editingConfig().isShowEditingAreaHover = true
+        // 辅助线颜色
+        // 支持多选
+        self.editingConfig().isSupportMultipleSelectEditingArea = true
+        // 图片是否显示8个操作点
+        self.editingConfig().isDrawRectWithDot = true
+        
+        self.editingConfig().editingMouseSelectionBorderWidth = 1
+        self.editingConfig().editingMouseSelectionBorderDashPattern = [3, 3, 3]
+    }
+    
+    func exitEditPDF() {
+        self.updateActiveAnnotations([])
+        
+        self.setNeedsDisplayForVisiblePages()
+        
+        self.commitEditFormText()
+        
+        self.commitEditing()
+        
+        self.layoutDocumentView()
+    }
+    
+    
+}

+ 1 - 1
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift

@@ -3100,7 +3100,7 @@ extension KMMainViewController : KMToolbarViewControllerDelegate {
     
     func mainToolDidClicked(_ toolController: KMToolbarController, _ beforeType: KMToolbarViewType, _ type: KMToolbarViewType, _ item: KMToolbarItemView , _ pages: [Int]) {
         if beforeType == .editPDF {
-            self.editPDFHanddler?.enterEditPDF()
+
         }
         
         if(type != .Page) {

+ 3 - 2
PDF Office/PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift

@@ -365,7 +365,8 @@ import KMComponentLibrary
                 editPDFHanddler = KMEditPDfHanddler()
             }
             editPDFHanddler?.listView = self.listView
-            editPDFHanddler?.enterEditPDF()
+            
+            self.listView.enterEditPDF()
             
             if subToolMode == .None {
                 
@@ -3615,7 +3616,7 @@ extension KMMainViewController {
     // MARK: - Edit PDF
     
     func enterEditPDF() {
-        self.editPDFHanddler?.enterEditPDF()
+        
     }
     
     // MARK: - 数字签名

+ 12 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/PDF_Edit/flipHorizontal.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "flipHorizontal.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二进制
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/PDF_Edit/flipHorizontal.imageset/flipHorizontal.pdf


+ 12 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/PDF_Edit/flipVertical.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "flipVertical.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二进制
PDF Office/PDF Master/KMClass/KMPDFViewController/PDFImages.xcassets/PDF_Edit/flipVertical.imageset/flipVertical.pdf


+ 49 - 49
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/KMRightSideController.swift

@@ -22,44 +22,23 @@ class KMRightSideController: NSViewController {
             return self.pdfView?.activeAnnotations as? [CPDFAnnotation] ?? []
         }
     }
+ 
+    var pdfView: CPDFListView?
+    var viewManager: KMPDFViewManager?
     
-    var editingAreas: [CPDFEditArea] {
-        get {
-            return self.pdfView?.editingAreas() as? [CPDFEditArea] ?? []
-        }
-    }
+    //Controller
+    //Markup
     
-    var editingImageAreas: [CPDFEditImageArea] {
-        get {
-            var areas: [CPDFEditImageArea] = []
-            for area in self.editingAreas {
-                if let data = area as? CPDFEditImageArea {
-                    areas.append(data)
-                }
-            }
-            return areas
-        }
-    }
+    //Edit
+    var edit_textController: KMEditPDFTextPropertyViewController?
+    var edit_imageController: KMEditImageController?
+    var edit_linkController: KMLinkViewController?
     
-    var editingTextAreas: [CPDFEditTextArea] {
-        get {
-            var areas: [CPDFEditTextArea] = []
-            for area in self.editingAreas {
-                if let data = area as? CPDFEditTextArea {
-                    areas.append(data)
-                }
-            }
-            return areas
-        }
-    }
+    //Form
     
-    var pdfView: CPDFListView?
-     
-    var viewManager: KMPDFViewManager? {
-        didSet {
-            updateUI()
-        }
-    } 
+    //Fill
+    
+    //
     
     var contentViewController: NSViewController?
 
@@ -70,7 +49,7 @@ class KMRightSideController: NSViewController {
         
         setupUI()
         
-        updateUI()
+        setupContentController()
     }
     
     func setupUI() {
@@ -96,24 +75,30 @@ class KMRightSideController: NSViewController {
         }
     }
     
-    func updateUI() {
+    func setupContentController() {
         updateTitleLabel()
          
         contentViewController?.view.removeFromSuperview()
         contentViewController = nil
         
         if viewManager?.toolMode == .Edit {
-            if editingAreas.isEmpty == true {
+            if pdfView?.km_EditingAreas().isEmpty == true {
                 
-            } else if editingImageAreas.count == 0 && editingTextAreas.count > 0 {
+            } else if pdfView?.km_editingImageAreas().isEmpty == true && pdfView?.km_editingTextAreas().isEmpty == false {
                 //编辑文字
-                let controller = KMEditPDFTextPropertyViewController.init()
-                contentViewController = controller
+                if edit_textController == nil {
+                    edit_textController = KMEditPDFTextPropertyViewController.init()
+                }
+                edit_textController?.pdfView = self.pdfView
+                
+                contentViewController = edit_textController
                 
-            } else if editingImageAreas.count > 0 && editingTextAreas.count == 0 {
+            } else if pdfView?.km_editingImageAreas().isEmpty == false && pdfView?.km_editingTextAreas().isEmpty == true {
                 //编辑图片
-                let controller = KMEditImagePropertyViewController.init()
-                contentViewController = controller
+                if edit_imageController == nil {
+                    edit_imageController = KMEditImageController.init()
+                }
+                contentViewController = edit_imageController
                 
             } else {
                 //多选
@@ -121,9 +106,11 @@ class KMRightSideController: NSViewController {
             
             if viewManager?.subToolMode == .Edit_Link {
                 //链接
-                let controller = KMLinkViewController.init()
-                controller.pdfView = self.pdfView
-                contentViewController = controller
+                if edit_linkController == nil {
+                    edit_linkController = KMLinkViewController.init()
+                }
+                edit_linkController?.pdfView = self.pdfView
+                contentViewController = edit_linkController
                 
             }
         }
@@ -139,10 +126,21 @@ class KMRightSideController: NSViewController {
     func reloadData() {
         if viewManager?.toolMode == .Edit {
             
-            if contentViewController == nil {
-                updateUI()
+            //图片&文字
+            if pdfView?.km_EditingAreas().isEmpty == true {
+                
+            } else if pdfView?.km_editingImageAreas().isEmpty == true && pdfView?.km_editingTextAreas().isEmpty == false {
+                //编辑文字
+                 
+                edit_textController?.reloadData()
+            } else if pdfView?.km_editingImageAreas().isEmpty == false && pdfView?.km_editingTextAreas().isEmpty == true {
+                //编辑图片
+                edit_imageController?.reloadData()
+                
+            } else {
+                //多选
             }
-            
+                
             //Link
             if viewManager?.subToolMode == .Edit_Link && contentViewController is KMLinkViewController {
                 if (contentViewController as! KMLinkViewController).pdfView != self.pdfView {
@@ -168,6 +166,8 @@ class KMRightSideController: NSViewController {
     public func reloadDataWithPDFView(pdfView: CPDFListView) {
         self.pdfView = pdfView
         
+        setupContentController()
+        
         reloadData()
          
     }

+ 151 - 1
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/KMEditImageController.swift

@@ -6,12 +6,162 @@
 //
 
 import Cocoa
+import KMComponentLibrary
 
 class KMEditImageController: NSViewController {
+  
+    @IBOutlet var scrollView: NSScrollView!
+    @IBOutlet var contendView: NSView!
+    
+    @IBOutlet var sizeBGView: NSView!
+    @IBOutlet var sizeLabel: NSTextField!
+    @IBOutlet var sizeSyncButton: ComponentButton!
+    
+    @IBOutlet var rotateBGView: NSView!
+    @IBOutlet var rotateLabel: NSTextField!
+    @IBOutlet var rotateSelect: ComponentSelect!
+    @IBOutlet var rotateLeftButton: ComponentButton!
+    @IBOutlet var rotateRightButton: ComponentButton!
+    @IBOutlet var flipVerticalButton: ComponentButton!
+    @IBOutlet var flipHorizontalButton: ComponentButton!
 
+    @IBOutlet var opacityBGView: NSView!
+    @IBOutlet var opacityLabel: NSTextField!
+    @IBOutlet var opacitySlider: ComponentSlider!
+    @IBOutlet var opacitySelect: ComponentSelect!
+    
+    @IBOutlet var cropButton: ComponentButton!
+    @IBOutlet var replaceButton: ComponentButton!
+    @IBOutlet var ExtrackButton: ComponentButton!
+    
+    var pdfView: CPDFListView? {
+        didSet {
+            reloadData()
+        }
+    }
+     
+    var currentArea: CPDFEditTextArea?
+    
+    //MARK: - func
+    override func viewDidAppear() {
+        super.viewDidAppear()
+         
+        opacitySlider.reloadData()
+        
+    }
+    
     override func viewDidLoad() {
         super.viewDidLoad()
-        // Do view setup here.
+      
+        setupProperty()
+    }
+    
+    func setupProperty() {
+        
+        //Font
+        sizeLabel.stringValue = KMLocalizedString("Size")
+        sizeLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
+        sizeLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
+
+        //Rotate
+        rotateLabel.stringValue = KMLocalizedString("Rotate & Flip")
+        rotateLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
+        rotateLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
+        
+        rotateSelect.properties = ComponentSelectProperties(size: .s,
+                                                            state: .normal,
+                                                            creatable: true,
+                                                            text: "100%",
+                                                            regexString: "0123456789%")
+        if true {
+            var opacityItems: [ComponentMenuitemProperty] = []
+            for string in ["25%", "50%", "75%", "100%"] {
+                let item = ComponentMenuitemProperty(type: .normal, text: string)
+                opacityItems.append(item)
+            }
+            rotateSelect.updateMenuItemsArr(opacityItems)
+        }
+        rotateSelect.delegate = self
+        
+        rotateLeftButton.properties = ComponentButtonProperty(type: .text_gray, size: .s, onlyIcon: true, icon: NSImage(named: "pageEdit_rotateLeft"), keepPressState: false)
+        rotateLeftButton.setTarget(self, action: #selector(buttonClicked(_:)))
+        
+        rotateRightButton.properties = ComponentButtonProperty(type: .text_gray, size: .s, onlyIcon: true, icon: NSImage(named: "pageEdit_rotateRight"), keepPressState: false)
+        rotateRightButton.setTarget(self, action: #selector(buttonClicked(_:)))
+        
+        flipVerticalButton.properties = ComponentButtonProperty(type: .text_gray, size: .s, onlyIcon: true, icon: NSImage(named: "flipVertical"), keepPressState: false)
+        flipVerticalButton.setTarget(self, action: #selector(buttonClicked(_:)))
+        
+        flipHorizontalButton.properties = ComponentButtonProperty(type: .text_gray, size: .s, onlyIcon: true, icon: NSImage(named: "flipHorizontal"), keepPressState: false)
+        flipHorizontalButton.setTarget(self, action: #selector(buttonClicked(_:)))
+        
+        //Opacity
+        opacityLabel.stringValue = KMLocalizedString("Opacity")
+        opacityLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/2")
+        opacityLabel.font = ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
+        
+        opacitySlider.properties = ComponentSliderProperty(size: .m, percent: 1)
+        
+        opacitySelect.properties = ComponentSelectProperties(size: .s,
+                                                                  state: .normal,
+                                                                  creatable: true,
+                                                                  text: "100%",
+                                                                  regexString: "0123456789%")
+        if true {
+            var opacityItems: [ComponentMenuitemProperty] = []
+            for string in ["25%", "50%", "75%", "100%"] {
+                let item = ComponentMenuitemProperty(type: .normal, text: string)
+                opacityItems.append(item)
+            }
+            opacitySelect.updateMenuItemsArr(opacityItems)
+        }
+        opacitySelect.delegate = self
+        
+        cropButton.properties = ComponentButtonProperty(type: .default_tertiary, size: .s, buttonText: KMLocalizedString("Crop"), keepPressState: false)
+        replaceButton.properties = ComponentButtonProperty(type: .default_tertiary, size: .s, buttonText: KMLocalizedString("Replace"), keepPressState: false)
+        ExtrackButton.properties = ComponentButtonProperty(type: .default_tertiary, size: .s, buttonText: KMLocalizedString("Extract"), keepPressState: false)
+        
+        
     }
     
+    func reloadData() {
+        
+        let areas = pdfView?.km_editingTextAreas() ?? []
+        if areas.count == 0 {
+            currentArea = nil
+        } else if areas.count == 1 {
+            currentArea = areas.first
+        } else if areas.count == 2 {
+            currentArea = nil
+        }
+        
+        if let area = currentArea {
+            let fontName = pdfView?.km_editTextAreasFontNames([area])
+            let fontStyle = pdfView?.km_editTextAreasFontStyles([area])
+            let fontSize = pdfView?.km_editTextAreasFontSizes([area])
+            let bold = pdfView?.km_editTextAreasFontBolds([area])
+            let itality = pdfView?.km_editTextAreasFontItalics([area])
+            let alignment = pdfView?.km_editTextAreasTextAlignments([area])
+            let colors = pdfView?.km_editTextAreasFontColors([area])
+            let opacity = pdfView?.km_editAreasOpacitys([area])
+            print("1")
+        }
+        
+        
+    }
+    
+    //MARK: - Action
+    @objc func buttonClicked(_ sender: ComponentButton) {
+        
+    }
+    
+}
+
+
+extension KMEditImageController: ComponentSelectDelegate {
+    
+}
+
+extension KMEditImageController: ComponentCColorDelegate {
+ 
 }

+ 303 - 275
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/KMEditImageController.xib

@@ -8,294 +8,44 @@
     <objects>
         <customObject id="-2" userLabel="File's Owner" customClass="KMEditImageController" customModule="PDF_Reader_Pro" customModuleProvider="target">
             <connections>
+                <outlet property="ExtrackButton" destination="UTd-IX-9gP" id="tqd-JT-qTT"/>
+                <outlet property="contendView" destination="5d4-9i-VqM" id="Zz9-Aa-SrJ"/>
+                <outlet property="cropButton" destination="V5t-7B-Xe1" id="kBN-y7-R9f"/>
+                <outlet property="flipHorizontalButton" destination="JYo-PF-eR4" id="vQO-zY-WrV"/>
+                <outlet property="flipVerticalButton" destination="Gx1-06-lSN" id="GFE-Nk-kQo"/>
+                <outlet property="opacityBGView" destination="7ge-14-THB" id="byg-j9-eEx"/>
+                <outlet property="opacityLabel" destination="nL4-oY-ZBk" id="oHO-6h-nNQ"/>
+                <outlet property="opacitySelect" destination="AMT-VE-5Un" id="zen-0z-0qw"/>
+                <outlet property="opacitySlider" destination="IDn-kE-RRr" id="18H-ce-LnO"/>
+                <outlet property="replaceButton" destination="CkA-vp-ac0" id="iTk-Og-eap"/>
+                <outlet property="rotateBGView" destination="pRo-Pb-Vwc" id="gFr-oj-DXe"/>
+                <outlet property="rotateLabel" destination="yEz-sB-7uR" id="vJ1-hY-uWe"/>
+                <outlet property="rotateLeftButton" destination="Y8Z-Yy-5Ef" id="q1M-Rj-lyl"/>
+                <outlet property="rotateRightButton" destination="KeZ-Xp-Vdv" id="u1j-ci-qBU"/>
+                <outlet property="rotateSelect" destination="Vt5-L8-3oj" id="fCG-rZ-JQy"/>
+                <outlet property="scrollView" destination="Tk5-ad-SSW" id="Ve5-LR-qLK"/>
+                <outlet property="sizeBGView" destination="Pzv-Qn-Qjl" id="bsy-nt-uhR"/>
+                <outlet property="sizeLabel" destination="4DO-V6-JUJ" id="3pl-k5-tgY"/>
+                <outlet property="sizeSyncButton" destination="JQh-Yd-qje" id="uPt-D1-dUz"/>
                 <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
             </connections>
         </customObject>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="Hz6-mo-xeY">
-            <rect key="frame" x="0.0" y="0.0" width="255" height="557"/>
+            <rect key="frame" x="0.0" y="0.0" width="255" height="716"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
                 <scrollView borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" hasVerticalScroller="NO" usesPredominantAxisScrolling="NO" id="Tk5-ad-SSW">
-                    <rect key="frame" x="0.0" y="0.0" width="255" height="557"/>
+                    <rect key="frame" x="0.0" y="0.0" width="255" height="716"/>
                     <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                     <clipView key="contentView" id="ULX-jS-BxX">
-                        <rect key="frame" x="0.0" y="0.0" width="255" height="557"/>
+                        <rect key="frame" x="0.0" y="0.0" width="255" height="716"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <view id="dAm-DP-gRn">
-                                <rect key="frame" x="0.0" y="-91" width="260" height="648"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
-                                <subviews>
-                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="Xo4-CD-UHR">
-                                        <rect key="frame" x="14" y="576" width="232" height="72"/>
-                                        <subviews>
-                                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="wbI-Vb-vMB">
-                                                <rect key="frame" x="0.0" y="32" width="232" height="40"/>
-                                                <subviews>
-                                                    <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hn5-1I-Oh6">
-                                                        <rect key="frame" x="-2" y="12" width="30" height="16"/>
-                                                        <textFieldCell key="cell" lineBreakMode="clipping" title="Size" id="idY-ef-mfZ">
-                                                            <font key="font" usesAppearanceFont="YES"/>
-                                                            <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                                                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                                        </textFieldCell>
-                                                    </textField>
-                                                </subviews>
-                                                <constraints>
-                                                    <constraint firstItem="hn5-1I-Oh6" firstAttribute="leading" secondItem="wbI-Vb-vMB" secondAttribute="leading" id="0Zh-5i-IHt"/>
-                                                    <constraint firstAttribute="height" constant="40" id="75Y-Qs-7LB"/>
-                                                    <constraint firstItem="hn5-1I-Oh6" firstAttribute="centerY" secondItem="wbI-Vb-vMB" secondAttribute="centerY" id="ydA-o6-CSK"/>
-                                                </constraints>
-                                            </customView>
-                                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="4d5-Dq-Thn">
-                                                <rect key="frame" x="0.0" y="0.0" width="232" height="32"/>
-                                                <subviews>
-                                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="fBC-Xt-M9E" customClass="ComponentInputNumber" customModule="KMComponentLibrary">
-                                                        <rect key="frame" x="0.0" y="0.0" width="96" height="32"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="width" constant="96" id="Qlw-WW-gyQ"/>
-                                                            <constraint firstAttribute="height" constant="32" id="hWv-7C-YgK"/>
-                                                        </constraints>
-                                                    </customView>
-                                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="uaN-8C-Aox" customClass="ComponentButton" customModule="KMComponentLibrary">
-                                                        <rect key="frame" x="104" y="4" width="24" height="24"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="24" id="eGX-Q6-5iX"/>
-                                                            <constraint firstAttribute="width" constant="24" id="maY-6B-jNS"/>
-                                                        </constraints>
-                                                    </customView>
-                                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="Gq1-5q-xfm" customClass="ComponentInputNumber" customModule="KMComponentLibrary">
-                                                        <rect key="frame" x="136" y="0.0" width="96" height="32"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="width" constant="96" id="B5o-OB-MfI"/>
-                                                            <constraint firstAttribute="height" constant="32" id="dL2-2D-J83"/>
-                                                        </constraints>
-                                                    </customView>
-                                                </subviews>
-                                                <constraints>
-                                                    <constraint firstItem="Gq1-5q-xfm" firstAttribute="leading" secondItem="uaN-8C-Aox" secondAttribute="trailing" constant="8" id="CLl-NN-iu7"/>
-                                                    <constraint firstItem="uaN-8C-Aox" firstAttribute="centerY" secondItem="4d5-Dq-Thn" secondAttribute="centerY" id="P96-HM-FLe"/>
-                                                    <constraint firstItem="fBC-Xt-M9E" firstAttribute="leading" secondItem="4d5-Dq-Thn" secondAttribute="leading" id="W3i-38-y9x"/>
-                                                    <constraint firstItem="Gq1-5q-xfm" firstAttribute="top" secondItem="4d5-Dq-Thn" secondAttribute="top" id="c2q-sH-CUT"/>
-                                                    <constraint firstItem="fBC-Xt-M9E" firstAttribute="top" secondItem="4d5-Dq-Thn" secondAttribute="top" id="dUi-kW-IIw"/>
-                                                    <constraint firstAttribute="height" constant="32" id="tPa-RL-Ko2"/>
-                                                    <constraint firstItem="uaN-8C-Aox" firstAttribute="leading" secondItem="fBC-Xt-M9E" secondAttribute="trailing" constant="8" id="tne-Ba-H5G"/>
-                                                </constraints>
-                                            </customView>
-                                        </subviews>
-                                        <constraints>
-                                            <constraint firstAttribute="trailing" secondItem="4d5-Dq-Thn" secondAttribute="trailing" id="Ggw-9G-20b"/>
-                                            <constraint firstItem="wbI-Vb-vMB" firstAttribute="leading" secondItem="Xo4-CD-UHR" secondAttribute="leading" id="KKJ-eX-nZ9"/>
-                                            <constraint firstAttribute="height" constant="72" id="OtA-n6-XkG"/>
-                                            <constraint firstItem="4d5-Dq-Thn" firstAttribute="leading" secondItem="Xo4-CD-UHR" secondAttribute="leading" id="QXl-aG-1sR"/>
-                                            <constraint firstItem="4d5-Dq-Thn" firstAttribute="top" secondItem="wbI-Vb-vMB" secondAttribute="bottom" id="QxR-oe-wRm"/>
-                                            <constraint firstAttribute="width" constant="232" id="WZB-qW-paD"/>
-                                            <constraint firstAttribute="trailing" secondItem="wbI-Vb-vMB" secondAttribute="trailing" id="gN5-YO-NdY"/>
-                                            <constraint firstItem="wbI-Vb-vMB" firstAttribute="top" secondItem="Xo4-CD-UHR" secondAttribute="top" id="rAy-p2-BSv"/>
-                                        </constraints>
-                                    </customView>
-                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="sZo-gS-dLx">
-                                        <rect key="frame" x="14" y="488" width="232" height="72"/>
-                                        <subviews>
-                                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="x0g-dN-uuu">
-                                                <rect key="frame" x="0.0" y="32" width="232" height="40"/>
-                                                <subviews>
-                                                    <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Cc2-mT-2aP">
-                                                        <rect key="frame" x="-2" y="12" width="82" height="16"/>
-                                                        <textFieldCell key="cell" lineBreakMode="clipping" title="Rotate &amp; Flip" id="k2Y-3r-pCf">
-                                                            <font key="font" usesAppearanceFont="YES"/>
-                                                            <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                                                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                                        </textFieldCell>
-                                                    </textField>
-                                                </subviews>
-                                                <constraints>
-                                                    <constraint firstItem="Cc2-mT-2aP" firstAttribute="centerY" secondItem="x0g-dN-uuu" secondAttribute="centerY" id="4yB-eo-s8L"/>
-                                                    <constraint firstItem="Cc2-mT-2aP" firstAttribute="leading" secondItem="x0g-dN-uuu" secondAttribute="leading" id="Rem-NB-Tc4"/>
-                                                    <constraint firstAttribute="height" constant="40" id="mB5-kX-UlG"/>
-                                                </constraints>
-                                            </customView>
-                                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="WjZ-0w-jfu">
-                                                <rect key="frame" x="0.0" y="0.0" width="232" height="32"/>
-                                                <subviews>
-                                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="VBe-B3-1HW" customClass="ComponentSelect" customModule="KMComponentLibrary">
-                                                        <rect key="frame" x="0.0" y="0.0" width="72" height="32"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="32" id="LMP-g2-rok"/>
-                                                            <constraint firstAttribute="width" constant="72" id="lZO-Dc-XMk"/>
-                                                        </constraints>
-                                                    </customView>
-                                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="Bbs-Yy-ALm" customClass="ComponentButton" customModule="KMComponentLibrary">
-                                                        <rect key="frame" x="80" y="0.0" width="32" height="32"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="32" id="ImI-zT-3NX"/>
-                                                            <constraint firstAttribute="width" constant="32" id="Llv-Ha-jIi"/>
-                                                        </constraints>
-                                                    </customView>
-                                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="thV-3i-iQq" customClass="ComponentButton" customModule="KMComponentLibrary">
-                                                        <rect key="frame" x="120" y="0.0" width="32" height="32"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="width" constant="32" id="OPX-W5-xql"/>
-                                                            <constraint firstAttribute="height" constant="32" id="edK-vq-zEi"/>
-                                                        </constraints>
-                                                    </customView>
-                                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="Bki-R4-OQe" customClass="ComponentButton" customModule="KMComponentLibrary">
-                                                        <rect key="frame" x="160" y="0.0" width="32" height="32"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="width" constant="32" id="Eat-BN-jT2"/>
-                                                            <constraint firstAttribute="height" constant="32" id="fqk-ou-l1e"/>
-                                                        </constraints>
-                                                    </customView>
-                                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="YO3-Qw-bz2" customClass="ComponentButton" customModule="KMComponentLibrary">
-                                                        <rect key="frame" x="200" y="0.0" width="32" height="32"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="width" constant="32" id="24A-rk-c84"/>
-                                                            <constraint firstAttribute="height" constant="32" id="aPQ-Ng-gGZ"/>
-                                                        </constraints>
-                                                    </customView>
-                                                </subviews>
-                                                <constraints>
-                                                    <constraint firstItem="Bbs-Yy-ALm" firstAttribute="centerY" secondItem="WjZ-0w-jfu" secondAttribute="centerY" id="2sy-dL-Hox"/>
-                                                    <constraint firstItem="VBe-B3-1HW" firstAttribute="leading" secondItem="WjZ-0w-jfu" secondAttribute="leading" id="3NG-Gt-E9o"/>
-                                                    <constraint firstItem="YO3-Qw-bz2" firstAttribute="leading" secondItem="Bki-R4-OQe" secondAttribute="trailing" constant="8" id="4FD-Rx-tZk"/>
-                                                    <constraint firstAttribute="height" constant="32" id="5mU-GO-0Ij"/>
-                                                    <constraint firstItem="Bki-R4-OQe" firstAttribute="centerY" secondItem="WjZ-0w-jfu" secondAttribute="centerY" id="AB8-yl-fzE"/>
-                                                    <constraint firstItem="VBe-B3-1HW" firstAttribute="top" secondItem="WjZ-0w-jfu" secondAttribute="top" id="Bf3-hP-HWw"/>
-                                                    <constraint firstItem="YO3-Qw-bz2" firstAttribute="centerY" secondItem="WjZ-0w-jfu" secondAttribute="centerY" id="ERP-OR-pNs"/>
-                                                    <constraint firstItem="Bbs-Yy-ALm" firstAttribute="leading" secondItem="VBe-B3-1HW" secondAttribute="trailing" constant="8" id="Kxa-2p-hCw"/>
-                                                    <constraint firstItem="thV-3i-iQq" firstAttribute="leading" secondItem="Bbs-Yy-ALm" secondAttribute="trailing" constant="8" id="MnQ-QI-XPc"/>
-                                                    <constraint firstItem="Bki-R4-OQe" firstAttribute="leading" secondItem="thV-3i-iQq" secondAttribute="trailing" constant="8" id="WfE-JJ-dc2"/>
-                                                    <constraint firstItem="thV-3i-iQq" firstAttribute="centerY" secondItem="WjZ-0w-jfu" secondAttribute="centerY" id="jca-t5-Xkf"/>
-                                                </constraints>
-                                            </customView>
-                                        </subviews>
-                                        <constraints>
-                                            <constraint firstAttribute="height" constant="72" id="7s5-XV-XqQ"/>
-                                            <constraint firstItem="x0g-dN-uuu" firstAttribute="top" secondItem="sZo-gS-dLx" secondAttribute="top" id="8ur-8x-5CU"/>
-                                            <constraint firstAttribute="trailing" secondItem="x0g-dN-uuu" secondAttribute="trailing" id="Az3-Qx-VtL"/>
-                                            <constraint firstAttribute="trailing" secondItem="WjZ-0w-jfu" secondAttribute="trailing" id="N1v-Oi-INw"/>
-                                            <constraint firstItem="WjZ-0w-jfu" firstAttribute="top" secondItem="x0g-dN-uuu" secondAttribute="bottom" id="XtZ-UF-Wcc"/>
-                                            <constraint firstAttribute="width" constant="232" id="ofs-f5-DE6"/>
-                                            <constraint firstItem="x0g-dN-uuu" firstAttribute="leading" secondItem="sZo-gS-dLx" secondAttribute="leading" id="p1v-bz-Yxh"/>
-                                            <constraint firstItem="WjZ-0w-jfu" firstAttribute="leading" secondItem="sZo-gS-dLx" secondAttribute="leading" id="qcY-ZC-D9B"/>
-                                        </constraints>
-                                    </customView>
-                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="fd2-Bv-3ys">
-                                        <rect key="frame" x="14" y="400" width="232" height="72"/>
-                                        <subviews>
-                                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="Dd9-BD-oME">
-                                                <rect key="frame" x="0.0" y="32" width="232" height="40"/>
-                                                <subviews>
-                                                    <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Y9M-Xn-FY5">
-                                                        <rect key="frame" x="-2" y="12" width="51" height="16"/>
-                                                        <textFieldCell key="cell" lineBreakMode="clipping" title="Opacity" id="2lT-pB-hsZ">
-                                                            <font key="font" usesAppearanceFont="YES"/>
-                                                            <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                                                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                                        </textFieldCell>
-                                                    </textField>
-                                                </subviews>
-                                                <constraints>
-                                                    <constraint firstItem="Y9M-Xn-FY5" firstAttribute="centerY" secondItem="Dd9-BD-oME" secondAttribute="centerY" id="0c2-eF-ryJ"/>
-                                                    <constraint firstItem="Y9M-Xn-FY5" firstAttribute="leading" secondItem="Dd9-BD-oME" secondAttribute="leading" id="HNE-6U-o1E"/>
-                                                    <constraint firstAttribute="height" constant="40" id="bkq-J9-meR"/>
-                                                </constraints>
-                                            </customView>
-                                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="0eL-Le-EPr">
-                                                <rect key="frame" x="0.0" y="0.0" width="232" height="32"/>
-                                                <subviews>
-                                                    <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="aMm-VI-fa3">
-                                                        <rect key="frame" x="0.0" y="6" width="20" height="20"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="20" id="H3x-OT-aXi"/>
-                                                            <constraint firstAttribute="width" constant="20" id="O47-qu-OMM"/>
-                                                        </constraints>
-                                                        <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="edit_ocapity" id="cgG-ic-0Uc"/>
-                                                    </imageView>
-                                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="XjV-sp-l2P" customClass="ComponentSlider" customModule="KMComponentLibrary">
-                                                        <rect key="frame" x="28" y="10" width="116" height="12"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="12" id="e2B-WD-Frs"/>
-                                                        </constraints>
-                                                    </customView>
-                                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="owm-4g-Kn8" customClass="ComponentSelect" customModule="KMComponentLibrary">
-                                                        <rect key="frame" x="152" y="0.0" width="80" height="32"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="width" constant="80" id="YHP-kG-7Cp"/>
-                                                            <constraint firstAttribute="height" constant="32" id="ZCK-hk-dSa"/>
-                                                        </constraints>
-                                                    </customView>
-                                                </subviews>
-                                                <constraints>
-                                                    <constraint firstItem="XjV-sp-l2P" firstAttribute="leading" secondItem="0eL-Le-EPr" secondAttribute="leading" constant="28" id="0aN-cp-I2X"/>
-                                                    <constraint firstAttribute="height" constant="32" id="RCI-pp-609"/>
-                                                    <constraint firstItem="owm-4g-Kn8" firstAttribute="leading" secondItem="XjV-sp-l2P" secondAttribute="trailing" constant="8" id="UTZ-8p-HEy"/>
-                                                    <constraint firstAttribute="trailing" secondItem="owm-4g-Kn8" secondAttribute="trailing" id="bT1-Rz-Rux"/>
-                                                    <constraint firstItem="aMm-VI-fa3" firstAttribute="centerY" secondItem="0eL-Le-EPr" secondAttribute="centerY" id="gDz-db-GOs"/>
-                                                    <constraint firstItem="aMm-VI-fa3" firstAttribute="leading" secondItem="0eL-Le-EPr" secondAttribute="leading" id="m9K-kr-CZB"/>
-                                                    <constraint firstItem="XjV-sp-l2P" firstAttribute="centerY" secondItem="0eL-Le-EPr" secondAttribute="centerY" id="oGs-h4-DJ3"/>
-                                                    <constraint firstItem="owm-4g-Kn8" firstAttribute="centerY" secondItem="0eL-Le-EPr" secondAttribute="centerY" id="v2t-bY-lVD"/>
-                                                </constraints>
-                                            </customView>
-                                        </subviews>
-                                        <constraints>
-                                            <constraint firstAttribute="height" constant="72" id="AS1-sk-oEm"/>
-                                            <constraint firstItem="Dd9-BD-oME" firstAttribute="top" secondItem="fd2-Bv-3ys" secondAttribute="top" id="Ir8-6A-L6X"/>
-                                            <constraint firstItem="0eL-Le-EPr" firstAttribute="leading" secondItem="fd2-Bv-3ys" secondAttribute="leading" id="Pzi-31-QeV"/>
-                                            <constraint firstAttribute="trailing" secondItem="Dd9-BD-oME" secondAttribute="trailing" id="RWq-Kf-eg3"/>
-                                            <constraint firstItem="Dd9-BD-oME" firstAttribute="leading" secondItem="fd2-Bv-3ys" secondAttribute="leading" id="Tbf-FJ-vTS"/>
-                                            <constraint firstAttribute="width" constant="232" id="hLJ-ai-62C"/>
-                                            <constraint firstAttribute="trailing" secondItem="0eL-Le-EPr" secondAttribute="trailing" id="oli-Nk-EVF"/>
-                                            <constraint firstItem="0eL-Le-EPr" firstAttribute="top" secondItem="Dd9-BD-oME" secondAttribute="bottom" id="qf9-bh-lfq"/>
-                                        </constraints>
-                                    </customView>
-                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="PRE-4X-siB">
-                                        <rect key="frame" x="14" y="383" width="232" height="1"/>
-                                        <constraints>
-                                            <constraint firstAttribute="width" constant="232" id="Ru2-Sy-YlA"/>
-                                            <constraint firstAttribute="height" constant="1" id="aJM-Bk-PuB"/>
-                                        </constraints>
-                                    </customView>
-                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="Nf8-0J-0xG" customClass="ComponentButton" customModule="KMComponentLibrary">
-                                        <rect key="frame" x="14" y="335" width="232" height="32"/>
-                                        <constraints>
-                                            <constraint firstAttribute="height" constant="32" id="0cg-zG-UtH"/>
-                                            <constraint firstAttribute="width" constant="232" id="krT-tk-xQM"/>
-                                        </constraints>
-                                    </customView>
-                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="YiM-7W-0QJ" customClass="ComponentButton" customModule="KMComponentLibrary">
-                                        <rect key="frame" x="14" y="239" width="232" height="32"/>
-                                        <constraints>
-                                            <constraint firstAttribute="height" constant="32" id="Qno-cI-38Y"/>
-                                            <constraint firstAttribute="width" constant="232" id="asP-HV-Q2k"/>
-                                        </constraints>
-                                    </customView>
-                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="nk4-Bb-jIJ" customClass="ComponentButton" customModule="KMComponentLibrary">
-                                        <rect key="frame" x="14" y="287" width="232" height="32"/>
-                                        <constraints>
-                                            <constraint firstAttribute="height" constant="32" id="nqE-ox-IP1"/>
-                                            <constraint firstAttribute="width" constant="232" id="sx1-Uj-0EL"/>
-                                        </constraints>
-                                    </customView>
-                                </subviews>
-                                <constraints>
-                                    <constraint firstItem="Nf8-0J-0xG" firstAttribute="top" secondItem="PRE-4X-siB" secondAttribute="bottom" constant="16" id="0Ns-oe-ZM2"/>
-                                    <constraint firstItem="PRE-4X-siB" firstAttribute="centerX" secondItem="dAm-DP-gRn" secondAttribute="centerX" id="32c-1A-Jcn"/>
-                                    <constraint firstItem="fd2-Bv-3ys" firstAttribute="centerX" secondItem="dAm-DP-gRn" secondAttribute="centerX" id="6BY-XK-TLl"/>
-                                    <constraint firstItem="Nf8-0J-0xG" firstAttribute="centerX" secondItem="dAm-DP-gRn" secondAttribute="centerX" id="FgV-dc-gf2"/>
-                                    <constraint firstItem="nk4-Bb-jIJ" firstAttribute="top" secondItem="Nf8-0J-0xG" secondAttribute="bottom" constant="16" id="HvX-ef-Qij"/>
-                                    <constraint firstItem="sZo-gS-dLx" firstAttribute="centerX" secondItem="dAm-DP-gRn" secondAttribute="centerX" id="J0f-0Z-DeH"/>
-                                    <constraint firstItem="fd2-Bv-3ys" firstAttribute="top" secondItem="sZo-gS-dLx" secondAttribute="bottom" constant="16" id="Oi9-f6-7tG"/>
-                                    <constraint firstItem="YiM-7W-0QJ" firstAttribute="centerX" secondItem="dAm-DP-gRn" secondAttribute="centerX" id="V5r-vh-19Y"/>
-                                    <constraint firstItem="YiM-7W-0QJ" firstAttribute="top" secondItem="nk4-Bb-jIJ" secondAttribute="bottom" constant="16" id="eTk-Qa-nyF"/>
-                                    <constraint firstItem="Xo4-CD-UHR" firstAttribute="centerX" secondItem="dAm-DP-gRn" secondAttribute="centerX" id="iOa-VT-FtJ"/>
-                                    <constraint firstItem="Xo4-CD-UHR" firstAttribute="top" secondItem="dAm-DP-gRn" secondAttribute="top" id="lSw-af-D3l"/>
-                                    <constraint firstItem="PRE-4X-siB" firstAttribute="top" secondItem="fd2-Bv-3ys" secondAttribute="bottom" constant="16" id="qf0-tv-QIQ"/>
-                                    <constraint firstItem="nk4-Bb-jIJ" firstAttribute="centerX" secondItem="dAm-DP-gRn" secondAttribute="centerX" id="r2c-IE-Syi"/>
-                                    <constraint firstItem="sZo-gS-dLx" firstAttribute="top" secondItem="Xo4-CD-UHR" secondAttribute="bottom" constant="16" id="xg5-ym-8eW"/>
-                                </constraints>
+                                <rect key="frame" x="0.0" y="68" width="260" height="648"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                             </view>
                         </subviews>
                         <color key="backgroundColor" red="0.96862745100000003" green="0.97254901959999995" blue="0.98039215690000003" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -309,8 +59,286 @@
                         <autoresizingMask key="autoresizingMask"/>
                     </scroller>
                 </scrollView>
+                <view translatesAutoresizingMaskIntoConstraints="NO" id="5d4-9i-VqM">
+                    <rect key="frame" x="0.0" y="0.0" width="255" height="716"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="Pzv-Qn-Qjl">
+                            <rect key="frame" x="12" y="644" width="232" height="72"/>
+                            <subviews>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="3Xa-fV-tFr">
+                                    <rect key="frame" x="0.0" y="32" width="232" height="40"/>
+                                    <subviews>
+                                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4DO-V6-JUJ">
+                                            <rect key="frame" x="-2" y="12" width="30" height="16"/>
+                                            <textFieldCell key="cell" lineBreakMode="clipping" title="Size" id="BYF-9G-Zr2">
+                                                <font key="font" usesAppearanceFont="YES"/>
+                                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                            </textFieldCell>
+                                        </textField>
+                                    </subviews>
+                                    <constraints>
+                                        <constraint firstItem="4DO-V6-JUJ" firstAttribute="centerY" secondItem="3Xa-fV-tFr" secondAttribute="centerY" id="G8s-PP-Byu"/>
+                                        <constraint firstItem="4DO-V6-JUJ" firstAttribute="leading" secondItem="3Xa-fV-tFr" secondAttribute="leading" id="brW-VB-7oC"/>
+                                        <constraint firstAttribute="height" constant="40" id="gAc-ub-qBw"/>
+                                    </constraints>
+                                </customView>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="LY2-Dz-RWD">
+                                    <rect key="frame" x="0.0" y="0.0" width="232" height="32"/>
+                                    <subviews>
+                                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="i3D-eY-uoe" customClass="ComponentInputNumber" customModule="KMComponentLibrary">
+                                            <rect key="frame" x="0.0" y="0.0" width="96" height="32"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="32" id="Utk-Ee-9IM"/>
+                                                <constraint firstAttribute="width" constant="96" id="vbU-48-rja"/>
+                                            </constraints>
+                                        </customView>
+                                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="JQh-Yd-qje" customClass="ComponentButton" customModule="KMComponentLibrary">
+                                            <rect key="frame" x="104" y="4" width="24" height="24"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="24" id="PUw-eN-vkQ"/>
+                                                <constraint firstAttribute="height" constant="24" id="fm5-bj-s6l"/>
+                                            </constraints>
+                                        </customView>
+                                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="pST-7Y-5EX" customClass="ComponentInputNumber" customModule="KMComponentLibrary">
+                                            <rect key="frame" x="136" y="0.0" width="96" height="32"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="32" id="IxF-F1-932"/>
+                                                <constraint firstAttribute="width" constant="96" id="OqW-uy-hXv"/>
+                                            </constraints>
+                                        </customView>
+                                    </subviews>
+                                    <constraints>
+                                        <constraint firstItem="JQh-Yd-qje" firstAttribute="centerY" secondItem="LY2-Dz-RWD" secondAttribute="centerY" id="2c4-tu-Ay5"/>
+                                        <constraint firstItem="i3D-eY-uoe" firstAttribute="top" secondItem="LY2-Dz-RWD" secondAttribute="top" id="6KM-Zs-ey5"/>
+                                        <constraint firstItem="JQh-Yd-qje" firstAttribute="leading" secondItem="i3D-eY-uoe" secondAttribute="trailing" constant="8" id="8i0-ne-64b"/>
+                                        <constraint firstAttribute="height" constant="32" id="JlX-WM-qUd"/>
+                                        <constraint firstItem="pST-7Y-5EX" firstAttribute="leading" secondItem="JQh-Yd-qje" secondAttribute="trailing" constant="8" id="hNT-2P-SeM"/>
+                                        <constraint firstItem="i3D-eY-uoe" firstAttribute="leading" secondItem="LY2-Dz-RWD" secondAttribute="leading" id="vIh-I6-WaC"/>
+                                        <constraint firstItem="pST-7Y-5EX" firstAttribute="top" secondItem="LY2-Dz-RWD" secondAttribute="top" id="xXS-zf-yrA"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="3Xa-fV-tFr" firstAttribute="leading" secondItem="Pzv-Qn-Qjl" secondAttribute="leading" id="7Bb-Ae-s94"/>
+                                <constraint firstAttribute="height" constant="72" id="7DR-6M-wHT"/>
+                                <constraint firstAttribute="trailing" secondItem="3Xa-fV-tFr" secondAttribute="trailing" id="G1X-B0-e7M"/>
+                                <constraint firstItem="LY2-Dz-RWD" firstAttribute="leading" secondItem="Pzv-Qn-Qjl" secondAttribute="leading" id="LBR-eT-Ady"/>
+                                <constraint firstAttribute="trailing" secondItem="LY2-Dz-RWD" secondAttribute="trailing" id="Ucc-Gy-baM"/>
+                                <constraint firstItem="3Xa-fV-tFr" firstAttribute="top" secondItem="Pzv-Qn-Qjl" secondAttribute="top" id="enK-NY-760"/>
+                                <constraint firstAttribute="width" constant="232" id="fVX-d8-Kga"/>
+                                <constraint firstItem="LY2-Dz-RWD" firstAttribute="top" secondItem="3Xa-fV-tFr" secondAttribute="bottom" id="z8D-qT-b8e"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="pRo-Pb-Vwc">
+                            <rect key="frame" x="12" y="556" width="232" height="72"/>
+                            <subviews>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="Sm5-0s-19e">
+                                    <rect key="frame" x="0.0" y="32" width="232" height="40"/>
+                                    <subviews>
+                                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yEz-sB-7uR">
+                                            <rect key="frame" x="-2" y="12" width="82" height="16"/>
+                                            <textFieldCell key="cell" lineBreakMode="clipping" title="Rotate &amp; Flip" id="N6G-fq-qFA">
+                                                <font key="font" usesAppearanceFont="YES"/>
+                                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                            </textFieldCell>
+                                        </textField>
+                                    </subviews>
+                                    <constraints>
+                                        <constraint firstItem="yEz-sB-7uR" firstAttribute="leading" secondItem="Sm5-0s-19e" secondAttribute="leading" id="0du-y5-Okr"/>
+                                        <constraint firstItem="yEz-sB-7uR" firstAttribute="centerY" secondItem="Sm5-0s-19e" secondAttribute="centerY" id="764-Vx-l1K"/>
+                                        <constraint firstAttribute="height" constant="40" id="v5O-xo-KM0"/>
+                                    </constraints>
+                                </customView>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="aif-BO-RTN">
+                                    <rect key="frame" x="0.0" y="0.0" width="232" height="32"/>
+                                    <subviews>
+                                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="Vt5-L8-3oj" customClass="ComponentSelect" customModule="KMComponentLibrary">
+                                            <rect key="frame" x="0.0" y="0.0" width="72" height="32"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="72" id="Ryt-CI-JH7"/>
+                                                <constraint firstAttribute="height" constant="32" id="eBK-V4-kyC"/>
+                                            </constraints>
+                                        </customView>
+                                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="Y8Z-Yy-5Ef" customClass="ComponentButton" customModule="KMComponentLibrary">
+                                            <rect key="frame" x="80" y="0.0" width="32" height="32"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="32" id="Shw-Kk-FwF"/>
+                                                <constraint firstAttribute="height" constant="32" id="oAR-1g-7OK"/>
+                                            </constraints>
+                                        </customView>
+                                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="KeZ-Xp-Vdv" customClass="ComponentButton" customModule="KMComponentLibrary">
+                                            <rect key="frame" x="120" y="0.0" width="32" height="32"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="32" id="Uxb-8a-4hE"/>
+                                                <constraint firstAttribute="height" constant="32" id="pLi-J7-1fm"/>
+                                            </constraints>
+                                        </customView>
+                                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="Gx1-06-lSN" customClass="ComponentButton" customModule="KMComponentLibrary">
+                                            <rect key="frame" x="160" y="0.0" width="32" height="32"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="32" id="6Mc-sF-n0y"/>
+                                                <constraint firstAttribute="height" constant="32" id="ti0-vf-nN5"/>
+                                            </constraints>
+                                        </customView>
+                                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="JYo-PF-eR4" customClass="ComponentButton" customModule="KMComponentLibrary">
+                                            <rect key="frame" x="200" y="0.0" width="32" height="32"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="32" id="14z-qL-w6s"/>
+                                                <constraint firstAttribute="height" constant="32" id="faK-a1-LhC"/>
+                                            </constraints>
+                                        </customView>
+                                    </subviews>
+                                    <constraints>
+                                        <constraint firstItem="Gx1-06-lSN" firstAttribute="centerY" secondItem="aif-BO-RTN" secondAttribute="centerY" id="BU1-hO-VCZ"/>
+                                        <constraint firstItem="Y8Z-Yy-5Ef" firstAttribute="leading" secondItem="Vt5-L8-3oj" secondAttribute="trailing" constant="8" id="EZ9-6e-hqV"/>
+                                        <constraint firstItem="KeZ-Xp-Vdv" firstAttribute="centerY" secondItem="aif-BO-RTN" secondAttribute="centerY" id="EuX-ss-ODb"/>
+                                        <constraint firstItem="Vt5-L8-3oj" firstAttribute="top" secondItem="aif-BO-RTN" secondAttribute="top" id="LId-hq-aTM"/>
+                                        <constraint firstItem="Vt5-L8-3oj" firstAttribute="leading" secondItem="aif-BO-RTN" secondAttribute="leading" id="Ojk-7n-Ia5"/>
+                                        <constraint firstItem="Y8Z-Yy-5Ef" firstAttribute="centerY" secondItem="aif-BO-RTN" secondAttribute="centerY" id="QCf-T8-e6O"/>
+                                        <constraint firstAttribute="height" constant="32" id="Spo-2J-Wfw"/>
+                                        <constraint firstItem="KeZ-Xp-Vdv" firstAttribute="leading" secondItem="Y8Z-Yy-5Ef" secondAttribute="trailing" constant="8" id="WOq-jB-z5Q"/>
+                                        <constraint firstItem="JYo-PF-eR4" firstAttribute="centerY" secondItem="aif-BO-RTN" secondAttribute="centerY" id="Ycv-Mw-9Gz"/>
+                                        <constraint firstItem="Gx1-06-lSN" firstAttribute="leading" secondItem="KeZ-Xp-Vdv" secondAttribute="trailing" constant="8" id="khL-dM-SfH"/>
+                                        <constraint firstItem="JYo-PF-eR4" firstAttribute="leading" secondItem="Gx1-06-lSN" secondAttribute="trailing" constant="8" id="sih-iS-cgT"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="72" id="6lt-xB-6bv"/>
+                                <constraint firstItem="aif-BO-RTN" firstAttribute="leading" secondItem="pRo-Pb-Vwc" secondAttribute="leading" id="NeD-n3-NKF"/>
+                                <constraint firstAttribute="width" constant="232" id="eAx-qh-suI"/>
+                                <constraint firstItem="Sm5-0s-19e" firstAttribute="leading" secondItem="pRo-Pb-Vwc" secondAttribute="leading" id="f5D-xD-SDe"/>
+                                <constraint firstItem="Sm5-0s-19e" firstAttribute="top" secondItem="pRo-Pb-Vwc" secondAttribute="top" id="fps-Qr-auw"/>
+                                <constraint firstAttribute="trailing" secondItem="Sm5-0s-19e" secondAttribute="trailing" id="h1K-De-zap"/>
+                                <constraint firstAttribute="trailing" secondItem="aif-BO-RTN" secondAttribute="trailing" id="jta-F3-cdw"/>
+                                <constraint firstItem="aif-BO-RTN" firstAttribute="top" secondItem="Sm5-0s-19e" secondAttribute="bottom" id="sq6-pG-WT4"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="7ge-14-THB">
+                            <rect key="frame" x="12" y="468" width="232" height="72"/>
+                            <subviews>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="XM6-r1-dTE">
+                                    <rect key="frame" x="0.0" y="32" width="232" height="40"/>
+                                    <subviews>
+                                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nL4-oY-ZBk">
+                                            <rect key="frame" x="-2" y="12" width="51" height="16"/>
+                                            <textFieldCell key="cell" lineBreakMode="clipping" title="Opacity" id="ru5-az-dPn">
+                                                <font key="font" usesAppearanceFont="YES"/>
+                                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                            </textFieldCell>
+                                        </textField>
+                                    </subviews>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="40" id="ELH-sD-fIm"/>
+                                        <constraint firstItem="nL4-oY-ZBk" firstAttribute="centerY" secondItem="XM6-r1-dTE" secondAttribute="centerY" id="iJD-t3-Jby"/>
+                                        <constraint firstItem="nL4-oY-ZBk" firstAttribute="leading" secondItem="XM6-r1-dTE" secondAttribute="leading" id="yJH-rz-Tvo"/>
+                                    </constraints>
+                                </customView>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="6go-mZ-DsC">
+                                    <rect key="frame" x="0.0" y="0.0" width="232" height="32"/>
+                                    <subviews>
+                                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="g2L-6i-iTF">
+                                            <rect key="frame" x="0.0" y="6" width="20" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="20" id="LZK-Ir-yNi"/>
+                                                <constraint firstAttribute="height" constant="20" id="bYh-Ah-hy7"/>
+                                            </constraints>
+                                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="edit_ocapity" id="eCF-8V-TPR"/>
+                                        </imageView>
+                                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="IDn-kE-RRr" customClass="ComponentSlider" customModule="KMComponentLibrary">
+                                            <rect key="frame" x="28" y="10" width="116" height="12"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="12" id="y0D-oD-5FJ"/>
+                                            </constraints>
+                                        </customView>
+                                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="AMT-VE-5Un" customClass="ComponentSelect" customModule="KMComponentLibrary">
+                                            <rect key="frame" x="152" y="0.0" width="80" height="32"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="32" id="P9H-n0-r8I"/>
+                                                <constraint firstAttribute="width" constant="80" id="Zjf-lm-K2V"/>
+                                            </constraints>
+                                        </customView>
+                                    </subviews>
+                                    <constraints>
+                                        <constraint firstItem="g2L-6i-iTF" firstAttribute="centerY" secondItem="6go-mZ-DsC" secondAttribute="centerY" id="Ax3-2q-I7Z"/>
+                                        <constraint firstAttribute="trailing" secondItem="AMT-VE-5Un" secondAttribute="trailing" id="G5x-yf-JJz"/>
+                                        <constraint firstItem="AMT-VE-5Un" firstAttribute="leading" secondItem="IDn-kE-RRr" secondAttribute="trailing" constant="8" id="JKa-qF-R40"/>
+                                        <constraint firstItem="g2L-6i-iTF" firstAttribute="leading" secondItem="6go-mZ-DsC" secondAttribute="leading" id="OaX-DG-Ztf"/>
+                                        <constraint firstItem="AMT-VE-5Un" firstAttribute="centerY" secondItem="6go-mZ-DsC" secondAttribute="centerY" id="dWt-CC-NeG"/>
+                                        <constraint firstAttribute="height" constant="32" id="iQF-Nf-OYZ"/>
+                                        <constraint firstItem="IDn-kE-RRr" firstAttribute="centerY" secondItem="6go-mZ-DsC" secondAttribute="centerY" id="xr8-a8-nKu"/>
+                                        <constraint firstItem="IDn-kE-RRr" firstAttribute="leading" secondItem="6go-mZ-DsC" secondAttribute="leading" constant="28" id="y17-9C-1wO"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="6go-mZ-DsC" firstAttribute="leading" secondItem="7ge-14-THB" secondAttribute="leading" id="DRE-qK-sHS"/>
+                                <constraint firstAttribute="trailing" secondItem="XM6-r1-dTE" secondAttribute="trailing" id="EOi-d5-MTf"/>
+                                <constraint firstItem="XM6-r1-dTE" firstAttribute="top" secondItem="7ge-14-THB" secondAttribute="top" id="YOo-hd-eJI"/>
+                                <constraint firstAttribute="width" constant="232" id="YyD-Zd-MVZ"/>
+                                <constraint firstItem="6go-mZ-DsC" firstAttribute="top" secondItem="XM6-r1-dTE" secondAttribute="bottom" id="Zue-k2-Akv"/>
+                                <constraint firstAttribute="trailing" secondItem="6go-mZ-DsC" secondAttribute="trailing" id="qY6-F1-zVu"/>
+                                <constraint firstAttribute="height" constant="72" id="x5M-zy-vcK"/>
+                                <constraint firstItem="XM6-r1-dTE" firstAttribute="leading" secondItem="7ge-14-THB" secondAttribute="leading" id="zHm-hN-VBq"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="gdP-34-FsW">
+                            <rect key="frame" x="12" y="451" width="232" height="1"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="1" id="FXQ-vd-cHP"/>
+                                <constraint firstAttribute="width" constant="232" id="jyY-sC-Yys"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="V5t-7B-Xe1" customClass="ComponentButton" customModule="KMComponentLibrary">
+                            <rect key="frame" x="12" y="403" width="232" height="32"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="32" id="NTa-TV-NOK"/>
+                                <constraint firstAttribute="width" constant="232" id="S7H-HD-BWs"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="CkA-vp-ac0" customClass="ComponentButton" customModule="KMComponentLibrary">
+                            <rect key="frame" x="12" y="307" width="232" height="32"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="32" id="hLN-Pk-kIN"/>
+                                <constraint firstAttribute="width" constant="232" id="kHb-FV-MRk"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="UTd-IX-9gP" customClass="ComponentButton" customModule="KMComponentLibrary">
+                            <rect key="frame" x="12" y="355" width="232" height="32"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="232" id="CZk-DA-weR"/>
+                                <constraint firstAttribute="height" constant="32" id="WWS-wJ-59r"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="Pzv-Qn-Qjl" firstAttribute="top" secondItem="5d4-9i-VqM" secondAttribute="top" id="5XC-B1-7y4"/>
+                        <constraint firstItem="V5t-7B-Xe1" firstAttribute="centerX" secondItem="5d4-9i-VqM" secondAttribute="centerX" id="BTV-ja-7Uc"/>
+                        <constraint firstItem="7ge-14-THB" firstAttribute="centerX" secondItem="5d4-9i-VqM" secondAttribute="centerX" id="Dyb-ea-rmC"/>
+                        <constraint firstItem="Pzv-Qn-Qjl" firstAttribute="centerX" secondItem="5d4-9i-VqM" secondAttribute="centerX" id="WwA-IT-SmF"/>
+                        <constraint firstItem="gdP-34-FsW" firstAttribute="centerX" secondItem="5d4-9i-VqM" secondAttribute="centerX" id="Xnk-KO-7Bg"/>
+                        <constraint firstItem="CkA-vp-ac0" firstAttribute="top" secondItem="UTd-IX-9gP" secondAttribute="bottom" constant="16" id="e00-zP-hFu"/>
+                        <constraint firstItem="pRo-Pb-Vwc" firstAttribute="top" secondItem="Pzv-Qn-Qjl" secondAttribute="bottom" constant="16" id="ivK-cd-DUh"/>
+                        <constraint firstItem="UTd-IX-9gP" firstAttribute="centerX" secondItem="5d4-9i-VqM" secondAttribute="centerX" id="lAL-Hb-VMQ"/>
+                        <constraint firstItem="pRo-Pb-Vwc" firstAttribute="centerX" secondItem="5d4-9i-VqM" secondAttribute="centerX" id="lEW-2D-6rT"/>
+                        <constraint firstItem="gdP-34-FsW" firstAttribute="top" secondItem="7ge-14-THB" secondAttribute="bottom" constant="16" id="nQL-6l-wIw"/>
+                        <constraint firstItem="UTd-IX-9gP" firstAttribute="top" secondItem="V5t-7B-Xe1" secondAttribute="bottom" constant="16" id="sLr-Lt-Fdp"/>
+                        <constraint firstItem="V5t-7B-Xe1" firstAttribute="top" secondItem="gdP-34-FsW" secondAttribute="bottom" constant="16" id="sZ3-Bm-nOm"/>
+                        <constraint firstItem="7ge-14-THB" firstAttribute="top" secondItem="pRo-Pb-Vwc" secondAttribute="bottom" constant="16" id="u3C-T8-X8Z"/>
+                        <constraint firstItem="CkA-vp-ac0" firstAttribute="centerX" secondItem="5d4-9i-VqM" secondAttribute="centerX" id="uQg-UM-9Al"/>
+                    </constraints>
+                </view>
             </subviews>
-            <point key="canvasLocation" x="94.5" y="107.5"/>
+            <constraints>
+                <constraint firstItem="5d4-9i-VqM" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="Okm-M6-mAX"/>
+                <constraint firstItem="5d4-9i-VqM" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="RRq-iu-RrX"/>
+                <constraint firstAttribute="bottom" secondItem="5d4-9i-VqM" secondAttribute="bottom" id="nOA-LJ-M6J"/>
+                <constraint firstAttribute="trailing" secondItem="5d4-9i-VqM" secondAttribute="trailing" id="uBf-KZ-Ftm"/>
+            </constraints>
+            <point key="canvasLocation" x="94.5" y="187"/>
         </customView>
     </objects>
     <resources>

+ 24 - 9
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/KMEditPDFTextPropertyViewController.swift

@@ -28,11 +28,15 @@ class KMEditPDFTextPropertyViewController: NSViewController {
     @IBOutlet var colorGroup: ComponentCColorGroup!
     @IBOutlet var colorSlider: ComponentSlider!
     @IBOutlet var colorOpacitySelect: ComponentSelect!
-    
-    
+     
     private var familyNames = CPDFFont.familyNames
-    
-    var editingAreas: [CPDFEditTextArea] = []
+     
+    var pdfView: CPDFListView? {
+        didSet {
+            reloadData()
+        }
+    }
+     
     var currentArea: CPDFEditTextArea?
     
     
@@ -146,15 +150,26 @@ class KMEditPDFTextPropertyViewController: NSViewController {
     
     func reloadData() {
         
-        if editingAreas.count == 0 {
+        let areas = pdfView?.km_editingTextAreas() ?? []
+        if areas.count == 0 {
             currentArea = nil
-        } else if editingAreas.count == 1 {
-            currentArea = editingAreas.first
-        } else if editingAreas.count == 2 {
+        } else if areas.count == 1 {
+            currentArea = areas.first
+        } else if areas.count == 2 {
             currentArea = nil
         }
         
-        
+        if let area = currentArea {
+            let fontName = pdfView?.km_editTextAreasFontNames([area])
+            let fontStyle = pdfView?.km_editTextAreasFontStyles([area])
+            let fontSize = pdfView?.km_editTextAreasFontSizes([area])
+            let bold = pdfView?.km_editTextAreasFontBolds([area])
+            let itality = pdfView?.km_editTextAreasFontItalics([area])
+            let alignment = pdfView?.km_editTextAreasTextAlignments([area])
+            let colors = pdfView?.km_editTextAreasFontColors([area])
+            let opacity = pdfView?.km_editAreasOpacitys([area])
+            print("1")
+        }
         
         
     }

+ 197 - 351
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift

@@ -25,6 +25,11 @@ class KMEditPDfHanddler: NSObject {
     
     weak var listView: CPDFListView?
     
+    init(listView: CPDFListView? = nil) {
+        self.listView = listView
+        
+    }
+    
     var annotationType: CAnnotationType {
         get {
             return self.listView?.annotationType ?? .unkown
@@ -97,59 +102,8 @@ class KMEditPDfHanddler: NSObject {
     
     private var startPoint_: NSPoint = .zero
     
-    //MARK: - func
-    func enterEditPDF() {
-        let toolMode = self.listView?.toolMode ?? .none
-//        if toolMode != .editPDFToolMode { // 退出
-//            self.listView?.updateActiveAnnotations([])
-//            self.listView?.setNeedsDisplayForVisiblePages()
-//            self.listView?.commitEditFormText()
-//            self.listView?.commitEditing()
-//            self.listView?.layoutDocumentView()
-//            KMThumbnailCache.shared.clearCache()
-//            NotificationCenter.default.post(name: NSNotification.Name.init(rawValue: "CPDFDocumentPageCountChangedNotification"), object: self.listView?.document)
-//            
-//            self.closeRightPane()
-//            
-//            self.clearData()
-//            return
-//        }
-        
-        self._addNotification()
-        
-        if self.rightSideLastState == .open {
-            self.openRightPane()
-        } else {
-            self.closeRightPane()
-        }
-        
-        self.listView?.updateActiveAnnotations([])
-        self.listView?.setNeedsDisplayForVisiblePages()
-        self.listView?.commitEditFormText()
-        self.listView?.annotationType = .editTextImage
-        
-        // 设置边框颜色
-        self.editingConfig?.editingBorderColor = .clear
  
-        self.editingConfig?.isShowMouseAreaHover = true
-      
-        // 边框颜色
-        self.editingConfig?.mouseHoverBorderColor = NSColor(hex: "#999999")
-        // 边框虚线设置
-        self.editingConfig?.mouseHoverBorderDashPattern = [3,3,3]
-        // 块填充颜色(拖拽中)
-         // 是否显示位置辅助线
-        self.editingConfig?.isShowEditingAreaHover = true
-        // 辅助线颜色
-         // 支持多选
-        self.editingConfig?.isSupportMultipleSelectEditingArea = true
-        // 图片是否显示8个操作点
-        self.editingConfig?.isDrawRectWithDot = true
-        
-         self.editingConfig?.editingMouseSelectionBorderWidth = 1
-        self.editingConfig?.editingMouseSelectionBorderDashPattern = [3, 3, 3]
-    }
-    
+    //MARK: - func
     func commitEditing() {
         let isEdited = self.listView?.isEdited() ?? false
         if isEdited {
@@ -160,14 +114,6 @@ class KMEditPDfHanddler: NSObject {
         self.clearData()
     }
     
-    func openRightPane() {
-        
-    }
-    
-    func closeRightPane() {
-        
-    }
-    
     func showPopWindow(positionRect: NSRect, showGuide: Bool) {
         if self.editAreasIsEmpty() {
             return
@@ -206,13 +152,13 @@ class KMEditPDfHanddler: NSObject {
         win.style = style
         win.model.editingAreas = areas
         win.model.fontColors = fontColors
-        win.model.fontNames = self._editAreasFontNames()
-        win.model.fontSizes = self._editAreasFontSizes()
-        win.model.fontBolds = self._editAreasFontBolds()
-        win.model.fontItalics = self._editAreasFontItalics()
-        win.model.textAlignments = self._editAreasTextAlignments()
-        win.model.rotates = self._editAreasRotates()
-        win.model.opacitys = self._editAreasOpacitys()
+//        win.model.fontNames = self._editAreasFontNames()
+//        win.model.fontSizes = self._editAreasFontSizes()
+//        win.model.fontBolds = self._editAreasFontBolds()
+//        win.model.fontItalics = self._editAreasFontItalics()
+//        win.model.textAlignments = self._editAreasTextAlignments()
+//        win.model.rotates = self._editAreasRotates()
+//        win.model.opacitys = self._editAreasOpacitys()
         
         let area = (self.listView?.editingAreas().first as? CPDFEditArea)
         var areaBounds = (self.listView?.convert(area!.bounds, from: area!.page) as? NSRect) ?? .zero
@@ -507,326 +453,230 @@ extension KMEditPDfHanddler {
     }
     
     func editAreasFontColorIsEqual() -> Bool {
-        if self.editAreasIsEmpty() {
-            return false
-        }
-        let datas = self._editAreasFontColors()
-        if datas.count == 1 {
-            return true
-        }
-        let color = datas.first
-        for (i, d) in datas.enumerated() {
-            if i == 0 {
-                continue
-            }
-            if d != color {
-                return false
-            }
-        }
+//        if self.editAreasIsEmpty() {
+//            return false
+//        }
+//        let datas = self._editAreasFontColors()
+//        if datas.count == 1 {
+//            return true
+//        }
+//        let color = datas.first
+//        for (i, d) in datas.enumerated() {
+//            if i == 0 {
+//                continue
+//            }
+//            if d != color {
+//                return false
+//            }
+//        }
         return true
     }
     
     func editAreasFontNameIsEqual() -> Bool {
-        if self.editAreasIsEmpty() {
-            return false
-        }
-        let datas = self._editAreasFontNames()
-        if datas.count == 1 {
-            return true
-        }
-        let data = datas.first
-        for (i, d) in datas.enumerated() {
-            if i == 0 {
-                continue
-            }
-            if d != data {
-                return false
-            }
-        }
+//        if self.editAreasIsEmpty() {
+//            return false
+//        }
+//        let datas = self._editAreasFontNames()
+//        if datas.count == 1 {
+//            return true
+//        }
+//        let data = datas.first
+//        for (i, d) in datas.enumerated() {
+//            if i == 0 {
+//                continue
+//            }
+//            if d != data {
+//                return false
+//            }
+//        }
         return true
     }
     
     func editAreasFontStyleIsEqual() -> Bool {
-        if self.editAreasIsEmpty() {
-            return false
-        }
-        let datas = self._editAreasFontStyles()
-        if datas.count == 1 {
-            return true
-        }
-        let data = datas.first
-        for (i, d) in datas.enumerated() {
-            if i == 0 {
-                continue
-            }
-            if d != data {
-                return false
-            }
-        }
+//        if self.editAreasIsEmpty() {
+//            return false
+//        }
+//        let datas = self._editAreasFontStyles()
+//        if datas.count == 1 {
+//            return true
+//        }
+//        let data = datas.first
+//        for (i, d) in datas.enumerated() {
+//            if i == 0 {
+//                continue
+//            }
+//            if d != data {
+//                return false
+//            }
+//        }
         return true
     }
     
     func editAreasFontSizeIsEqual() -> Bool {
-        if self.editAreasIsEmpty() {
-            return false
-        }
-        let datas = self._editAreasFontSizes()
-        if datas.count == 1 {
-            return true
-        }
-        let data = datas.first
-        for (i, d) in datas.enumerated() {
-            if i == 0 {
-                continue
-            }
-            if d != data {
-                return false
-            }
-        }
+//        if self.editAreasIsEmpty() {
+//            return false
+//        }
+//        let datas = self._editAreasFontSizes()
+//        if datas.count == 1 {
+//            return true
+//        }
+//        let data = datas.first
+//        for (i, d) in datas.enumerated() {
+//            if i == 0 {
+//                continue
+//            }
+//            if d != data {
+//                return false
+//            }
+//        }
         return true
     }
     
     func editAreasFontBoldIsEqual() -> Bool {
-        if self.editAreasIsEmpty() {
-            return false
-        }
-        let datas = self._editAreasFontBolds()
-        if datas.count == 1 {
-            return true
-        }
-        let data = datas.first
-        for (i, d) in datas.enumerated() {
-            if i == 0 {
-                continue
-            }
-            if d != data {
-                return false
-            }
-        }
+//        if self.editAreasIsEmpty() {
+//            return false
+//        }
+//        let datas = self._editAreasFontBolds()
+//        if datas.count == 1 {
+//            return true
+//        }
+//        let data = datas.first
+//        for (i, d) in datas.enumerated() {
+//            if i == 0 {
+//                continue
+//            }
+//            if d != data {
+//                return false
+//            }
+//        }
         return true
     }
     
     func editAreasFontItalicIsEqual() -> Bool {
-        if self.editAreasIsEmpty() {
-            return false
-        }
-        let datas = self._editAreasFontItalics()
-        if datas.count == 1 {
-            return true
-        }
-        let data = datas.first
-        for (i, d) in datas.enumerated() {
-            if i == 0 {
-                continue
-            }
-            if d != data {
-                return false
-            }
-        }
+//        if self.editAreasIsEmpty() {
+//            return false
+//        }
+//        let datas = self._editAreasFontItalics()
+//        if datas.count == 1 {
+//            return true
+//        }
+//        let data = datas.first
+//        for (i, d) in datas.enumerated() {
+//            if i == 0 {
+//                continue
+//            }
+//            if d != data {
+//                return false
+//            }
+//        }
         return true
     }
     
     func editAreasTextAlignmentIsEqual() -> Bool {
-        if self.editAreasIsEmpty() {
-            return false
-        }
-        let datas = self._editAreasTextAlignments()
-        if datas.count == 1 {
-            return true
-        }
-        let data = datas.first?.rawValue ?? 0
-        for (i, d) in datas.enumerated() {
-            if i == 0 {
-                continue
-            }
-            if d.rawValue != data {
-                return false
-            }
-        }
+//        if self.editAreasIsEmpty() {
+//            return false
+//        }
+//        let datas = self._editAreasTextAlignments()
+//        if datas.count == 1 {
+//            return true
+//        }
+//        let data = datas.first?.rawValue ?? 0
+//        for (i, d) in datas.enumerated() {
+//            if i == 0 {
+//                continue
+//            }
+//            if d.rawValue != data {
+//                return false
+//            }
+//        }
         return true
     }
     
     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 abs(width-rect.size.width) > 0.01 {
-                 return false
-            }
-        }
+//        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 abs(width-rect.size.width) > 0.01 {
+//                 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 abs(height-rect.size.height) > 0.01 {
-                return false
-            }
-        }
+//        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 abs(height-rect.size.height) > 0.01 {
+//                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
-            }
-        }
+//        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
-            }
-        }
+//        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 _editAreasFontColors() -> [NSColor] {
-        var datas: [NSColor] = []
-        for area in self.editingTextAreas {
-            if let data = self.listView?.editingSelectionFontColor(with: area) {
-                 datas.append(data)
-            }
-        }
-        return datas
-    }
-    
-    private func _editAreasFontStyles() -> [String] {
-        var datas: [String] = []
-        for area in self.editingTextAreas {
-            if let data = self.listView?.editingSelectionCFont(byRangeEdit: area)?.styleName {
-                 datas.append(data)
-            }
-        }
-        return datas
-    }
-    
-    private func _editAreasFontNames() -> [String] {
-        var datas: [String] = []
-        for area in self.editingTextAreas {
-            if let data = self.listView?.editingSelectionCFont(byRangeEdit: area)?.familyName {
-                 datas.append(data)
-            }
-        }
-        return datas
-    }
-    
-    private func _editAreasFontSizes() -> [CGFloat] {
-        var datas: [CGFloat] = []
-        for area in self.editingTextAreas {
-            if let data = self.listView?.editingSelectionFontSize(byRangeEdit: area) {
-                datas.append(data)
-            }
-        }
-        return datas
-    }
-    
-    private func _editAreasFontBolds() -> [Bool] {
-        var datas: [Bool] = []
-        for area in self.editingTextAreas {
-            if let data = self.listView?.isBoldCurrentSelection(byRangeEdit: area) {
-                datas.append(data)
-            }
-        }
-        return datas
-    }
-    
-    private func _editAreasFontItalics() -> [Bool] {
-        var datas: [Bool] = []
-        for area in self.editingTextAreas {
-            if let data = self.listView?.isItalicCurrentSelection(byRangeEdit: area) {
-                datas.append(data)
-            }
-        }
-        return datas
-    }
-    
-    private func _editAreasTextAlignments() -> [NSTextAlignment] {
-        var datas: [NSTextAlignment] = []
-        for area in self.editingTextAreas {
-            if let data = self.listView?.currentSelectionAlignment(byRangeEdit: area) {
-                datas.append(data)
-            }
-        }
-        return datas
-    }
-    
-    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?.opacityByRange(for: area) {
-                arr.append(data)
-            }
-        }
-        return arr
-    }
 }
 
 // MARK: - Action
@@ -1383,7 +1233,6 @@ extension KMEditPDfHanddler: CPDFViewDelegate {
                 if self.subViewType == .EditPDFAddImage {
                    
                 }
-                self.openRightPane()
             } else {
              
              }
@@ -1391,8 +1240,7 @@ extension KMEditPDfHanddler: CPDFViewDelegate {
          
             let count = self.listView?.editingSelectionString()?.count ?? 0
  
-        
-            self.openRightPane()
+         
         } else {
             var textsAreas : [CPDFEditTextArea] = []
             var imagesAreas : [CPDFEditImageArea] = []
@@ -1409,11 +1257,9 @@ extension KMEditPDfHanddler: CPDFViewDelegate {
                 }
             }
             if textsAreas.count > 0 && textsAreas.count == areas.count {
-            
-                self.openRightPane()
+             
             } else if imagesAreas.count > 0 {
- 
-                self.openRightPane()
+  
             }
         }
         

+ 8 - 0
PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

@@ -4347,6 +4347,9 @@
 		BB96A0B82AFCE45800559E24 /* WaitingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB96A0B72AFCE45800559E24 /* WaitingView.swift */; };
 		BB96A0B92AFCE45800559E24 /* WaitingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB96A0B72AFCE45800559E24 /* WaitingView.swift */; };
 		BB96A0BA2AFCE45800559E24 /* WaitingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB96A0B72AFCE45800559E24 /* WaitingView.swift */; };
+		BB96C4292CE6DDB2003F3668 /* CPDFListView+Edit.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB96C4282CE6DDB2003F3668 /* CPDFListView+Edit.swift */; };
+		BB96C42A2CE6DDB2003F3668 /* CPDFListView+Edit.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB96C4282CE6DDB2003F3668 /* CPDFListView+Edit.swift */; };
+		BB96C42B2CE6DDB2003F3668 /* CPDFListView+Edit.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB96C4282CE6DDB2003F3668 /* CPDFListView+Edit.swift */; };
 		BB97BE242BC3E02D00BECEA8 /* SKExportAccessoryController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB97BE222BC3E02D00BECEA8 /* SKExportAccessoryController.m */; };
 		BB97BE252BC3E02D00BECEA8 /* SKExportAccessoryController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB97BE222BC3E02D00BECEA8 /* SKExportAccessoryController.m */; };
 		BB97BE262BC3E02D00BECEA8 /* SKExportAccessoryController.m in Sources */ = {isa = PBXBuildFile; fileRef = BB97BE222BC3E02D00BECEA8 /* SKExportAccessoryController.m */; };
@@ -7501,6 +7504,7 @@
 		BB96A0AF2AFCD56100559E24 /* KMToolCompareWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMToolCompareWindowController.swift; sourceTree = "<group>"; };
 		BB96A0B32AFCD56B00559E24 /* KMToolCompareWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMToolCompareWindowController.xib; sourceTree = "<group>"; };
 		BB96A0B72AFCE45800559E24 /* WaitingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WaitingView.swift; sourceTree = "<group>"; };
+		BB96C4282CE6DDB2003F3668 /* CPDFListView+Edit.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFListView+Edit.swift"; sourceTree = "<group>"; };
 		BB97BE212BC3E02D00BECEA8 /* SKExportAccessoryController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SKExportAccessoryController.h; sourceTree = "<group>"; };
 		BB97BE222BC3E02D00BECEA8 /* SKExportAccessoryController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SKExportAccessoryController.m; sourceTree = "<group>"; };
 		BB981E502AD4F637001988CA /* KMCoverButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMCoverButton.swift; sourceTree = "<group>"; };
@@ -13340,6 +13344,7 @@
 				F36AD77629642FE80015AD53 /* CPDFListView+UndoManager.m */,
 				9FF0D0522B6A3EE40018A732 /* CPDFListView+Form.swift */,
 				AD7D5CA82B906E36006562CD /* CPDFListView+Sync.swift */,
+				BB96C4282CE6DDB2003F3668 /* CPDFListView+Edit.swift */,
 			);
 			path = CPDFListViewExtension;
 			sourceTree = "<group>";
@@ -17236,6 +17241,7 @@
 				BBC745EA295F067B0072C2ED /* KMCropSettingWindowController.swift in Sources */,
 				9FCFEC6C2AC3D96800EAD2CB /* CPDFListViewAnimatedBorderlessWindow.swift in Sources */,
 				89752DF62938A236003FF08E /* PublicKey.swift in Sources */,
+				BB96C4292CE6DDB2003F3668 /* CPDFListView+Edit.swift in Sources */,
 				AD7D5CCB2B95728C006562CD /* KMBookmarkOutlineTitleCellView.swift in Sources */,
 				AD867FB329DFBB2700F00440 /* KMAnnotationOutlineSectionView.swift in Sources */,
 				BBEC00A8295BDECF00A26C98 /* KMHeaderFooterContentInfoView.swift in Sources */,
@@ -18914,6 +18920,7 @@
 				9FF0D0612B6A5DCF0018A732 /* KMPDFAnnotationTextWidgetSub.swift in Sources */,
 				AD85D1AE2AF09C79000F4D28 /* KMHomeQuickToolsWindowCollectionViewItem.swift in Sources */,
 				BB19A7582CB7C724008204DC /* KMHistoryFileListItem.swift in Sources */,
+				BB96C42A2CE6DDB2003F3668 /* CPDFListView+Edit.swift in Sources */,
 				BB6719F62AD2C949003D44D5 /* CPDFRedactAnnotation+PDFListView.swift in Sources */,
 				AD055E892B882E7F0035F824 /* SKBookmark.m in Sources */,
 				ADDEEA872AD7805200EF675D /* KMGeneralButton.swift in Sources */,
@@ -20444,6 +20451,7 @@
 				9F53D5492AD664C300CCF9D8 /* CPDFListHoverAnnotationViewController.swift in Sources */,
 				BBB3FF9A2B567D0300145C4A /* KMApplication.swift in Sources */,
 				9FDD0F862952FC9C000C4DAD /* KMAliasLightParser.swift in Sources */,
+				BB96C42B2CE6DDB2003F3668 /* CPDFListView+Edit.swift in Sources */,
 				BB27BF3E2B33E85200A0BAAE /* CPDFView+KMExtension.swift in Sources */,
 				BBDE52BD2BF3676C000545B2 /* KMPresentTableViewCell.swift in Sources */,
 				ADB2D6E8294740F30029D2B3 /* KMPrintPaperSetWindowController.swift in Sources */,

+ 296 - 163
PDF Office/PDF Reader Pro.xcodeproj/xcuserdata/kdanmobile.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -2368,10 +2368,42 @@
             filePath = "PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "922"
-            endingLineNumber = "922"
+            startingLineNumber = "923"
+            endingLineNumber = "923"
             landmarkName = "removePDFWatermark()"
             landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "14EF9D11-330E-4DB1-A4D2-AA533CF55782 - ae5dbea256bda162"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMMainViewController.removePDFWatermark() -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "922"
+                  endingLineNumber = "922"
+                  offsetFromSymbolStart = "1496">
+               </Location>
+               <Location
+                  uuid = "14EF9D11-330E-4DB1-A4D2-AA533CF55782 - ae5dbea256bda105"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMMainViewController.removePDFWatermark() -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "923"
+                  endingLineNumber = "923"
+                  offsetFromSymbolStart = "1496">
+               </Location>
+            </Locations>
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
@@ -2751,43 +2783,28 @@
             filePath = "PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "847"
-            endingLineNumber = "847"
+            startingLineNumber = "697"
+            endingLineNumber = "697"
             landmarkName = "fontStyleAction(fontName:)"
             landmarkType = "7">
             <Locations>
                <Location
-                  uuid = "9747EB20-6548-4349-9F49-A51F152A3948 - d116fb9b70d5c55a"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.fontColorAction(color: Swift.Optional&lt;__C.NSColor&gt;) -&gt; ()"
-                  moduleName = "PDF Reader Pro"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "865"
-                  endingLineNumber = "865"
-                  offsetFromSymbolStart = "140">
-               </Location>
-               <Location
-                  uuid = "9747EB20-6548-4349-9F49-A51F152A3948 - 1dc108dd3fe58c4b"
+                  uuid = "9747EB20-6548-4349-9F49-A51F152A3948 - 620f0da3051df72"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.fontStyleAction(fontName: Swift.Optional&lt;Swift.String&gt;) -&gt; ()"
+                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler._editAreasOpacitys() -&gt; Swift.Array&lt;CoreGraphics.CGFloat&gt;"
                   moduleName = "PDF Reader Pro"
                   usesParentBreakpointCondition = "Yes"
                   urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "864"
-                  endingLineNumber = "864"
-                  offsetFromSymbolStart = "104">
+                  startingLineNumber = "698"
+                  endingLineNumber = "698"
+                  offsetFromSymbolStart = "76">
                </Location>
                <Location
-                  uuid = "9747EB20-6548-4349-9F49-A51F152A3948 - 1dc108dd3fe58f9a"
+                  uuid = "9747EB20-6548-4349-9F49-A51F152A3948 - 1dc108dd3fe47af0"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
@@ -2797,8 +2814,8 @@
                   urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "847"
-                  endingLineNumber = "847"
+                  startingLineNumber = "697"
+                  endingLineNumber = "697"
                   offsetFromSymbolStart = "104">
                </Location>
             </Locations>
@@ -2814,55 +2831,104 @@
             filePath = "PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "836"
-            endingLineNumber = "836"
+            startingLineNumber = "686"
+            endingLineNumber = "686"
             landmarkName = "fontColorAction(color:)"
             landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "065BE60D-F083-4EED-A226-E1582D4A0973"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "733"
+            endingLineNumber = "733"
+            landmarkName = "fontBoldAction()"
+            landmarkType = "7">
             <Locations>
                <Location
-                  uuid = "86F561DC-543F-4374-86F1-2B340E19C220 - 620f0da30502b77"
+                  uuid = "065BE60D-F083-4EED-A226-E1582D4A0973 - c7acb89ecb6c0c9c"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler._editAreasOpacitys() -&gt; Swift.Array&lt;CoreGraphics.CGFloat&gt;"
+                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.fontAddAction() -&gt; ()"
                   moduleName = "PDF Reader Pro"
                   usesParentBreakpointCondition = "Yes"
                   urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "853"
-                  endingLineNumber = "853"
-                  offsetFromSymbolStart = "544">
+                  startingLineNumber = "734"
+                  endingLineNumber = "734"
+                  offsetFromSymbolStart = "88">
                </Location>
                <Location
-                  uuid = "86F561DC-543F-4374-86F1-2B340E19C220 - d116fb9b70d5c7a6"
+                  uuid = "065BE60D-F083-4EED-A226-E1582D4A0973 - a42f8f2f051b7c22"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.fontColorAction(color: Swift.Optional&lt;__C.NSColor&gt;) -&gt; ()"
+                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.fontBoldAction() -&gt; ()"
                   moduleName = "PDF Reader Pro"
                   usesParentBreakpointCondition = "Yes"
                   urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "853"
-                  endingLineNumber = "853"
-                  offsetFromSymbolStart = "88">
+                  startingLineNumber = "733"
+                  endingLineNumber = "733"
+                  offsetFromSymbolStart = "144">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "D61BEEC2-5105-49D7-94AE-19C41A90F069"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "752"
+            endingLineNumber = "752"
+            landmarkName = "fontItalicAction()"
+            landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "D61BEEC2-5105-49D7-94AE-19C41A90F069 - 45672c937b7f66bc"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.fontReduceAction() -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "752"
+                  endingLineNumber = "752"
+                  offsetFromSymbolStart = "696">
                </Location>
                <Location
-                  uuid = "86F561DC-543F-4374-86F1-2B340E19C220 - d116fb9b70d5c195"
+                  uuid = "D61BEEC2-5105-49D7-94AE-19C41A90F069 - c55cef9c5f6288ba"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.fontColorAction(color: Swift.Optional&lt;__C.NSColor&gt;) -&gt; ()"
+                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.fontItalicAction() -&gt; ()"
                   moduleName = "PDF Reader Pro"
                   usesParentBreakpointCondition = "Yes"
                   urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "836"
-                  endingLineNumber = "836"
-                  offsetFromSymbolStart = "88">
+                  startingLineNumber = "752"
+                  endingLineNumber = "752"
+                  offsetFromSymbolStart = "144">
                </Location>
             </Locations>
          </BreakpointContent>
@@ -2870,35 +2936,35 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "065BE60D-F083-4EED-A226-E1582D4A0973"
+            uuid = "D69F6364-3AF1-43FF-A44B-A7E27841FEA0"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "883"
-            endingLineNumber = "883"
-            landmarkName = "fontBoldAction()"
+            startingLineNumber = "770"
+            endingLineNumber = "770"
+            landmarkName = "textAlignmentAction(align:)"
             landmarkType = "7">
             <Locations>
                <Location
-                  uuid = "065BE60D-F083-4EED-A226-E1582D4A0973 - 45672c937b7e95c0"
+                  uuid = "D69F6364-3AF1-43FF-A44B-A7E27841FEA0 - a42f8f2f051b7167"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.fontReduceAction() -&gt; ()"
+                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.fontBoldAction() -&gt; ()"
                   moduleName = "PDF Reader Pro"
                   usesParentBreakpointCondition = "Yes"
                   urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "900"
-                  endingLineNumber = "900"
-                  offsetFromSymbolStart = "524">
+                  startingLineNumber = "770"
+                  endingLineNumber = "770"
+                  offsetFromSymbolStart = "1312">
                </Location>
                <Location
-                  uuid = "065BE60D-F083-4EED-A226-E1582D4A0973 - a42f8f2f051a81a9"
+                  uuid = "D69F6364-3AF1-43FF-A44B-A7E27841FEA0 - a42f8f2f051b7167"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
@@ -2908,24 +2974,24 @@
                   urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "900"
-                  endingLineNumber = "900"
-                  offsetFromSymbolStart = "144">
+                  startingLineNumber = "770"
+                  endingLineNumber = "770"
+                  offsetFromSymbolStart = "1404">
                </Location>
                <Location
-                  uuid = "065BE60D-F083-4EED-A226-E1582D4A0973 - a42f8f2f051a83f8"
+                  uuid = "D69F6364-3AF1-43FF-A44B-A7E27841FEA0 - 1a21d580b3fb9f3b"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.fontBoldAction() -&gt; ()"
+                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.textAlignmentAction(align: __C.NSTextAlignment) -&gt; ()"
                   moduleName = "PDF Reader Pro"
                   usesParentBreakpointCondition = "Yes"
                   urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "883"
-                  endingLineNumber = "883"
-                  offsetFromSymbolStart = "144">
+                  startingLineNumber = "770"
+                  endingLineNumber = "770"
+                  offsetFromSymbolStart = "108">
                </Location>
             </Locations>
          </BreakpointContent>
@@ -2933,77 +2999,95 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "D61BEEC2-5105-49D7-94AE-19C41A90F069"
+            uuid = "E378A308-C290-4212-B943-EEEBCA0494B1"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "902"
-            endingLineNumber = "902"
-            landmarkName = "fontItalicAction()"
+            startingLineNumber = "1284"
+            endingLineNumber = "1284"
+            landmarkName = "pdfViewEditingCropBoundsDidChanged(_:editing:)"
             landmarkType = "7">
             <Locations>
                <Location
-                  uuid = "D61BEEC2-5105-49D7-94AE-19C41A90F069 - a42f8f2f051a845c"
+                  uuid = "E378A308-C290-4212-B943-EEEBCA0494B1 - bd8f0416d669bc17"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.fontBoldAction() -&gt; ()"
+                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.pdfViewEditingAreaDidChanged(Swift.Optional&lt;__C.CPDFView&gt;) -&gt; ()"
                   moduleName = "PDF Reader Pro"
                   usesParentBreakpointCondition = "Yes"
                   urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "919"
-                  endingLineNumber = "919"
-                  offsetFromSymbolStart = "1304">
+                  startingLineNumber = "1284"
+                  endingLineNumber = "1284"
+                  offsetFromSymbolStart = "6052">
                </Location>
                <Location
-                  uuid = "D61BEEC2-5105-49D7-94AE-19C41A90F069 - a42f8f2f051a845c"
+                  uuid = "E378A308-C290-4212-B943-EEEBCA0494B1 - d857f4a8b9c464db"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.fontBoldAction() -&gt; ()"
+                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.pdfViewEditingCropBoundsDidChanged(_: Swift.Optional&lt;__C.CPDFView&gt;, editing: Swift.Optional&lt;__C.CPDFEditArea&gt;) -&gt; ()"
                   moduleName = "PDF Reader Pro"
                   usesParentBreakpointCondition = "Yes"
                   urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "919"
-                  endingLineNumber = "919"
-                  offsetFromSymbolStart = "1540">
+                  startingLineNumber = "1284"
+                  endingLineNumber = "1284"
+                  offsetFromSymbolStart = "80">
                </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "80647B90-A0DE-42AE-91B7-367037BDCED6"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "1290"
+            endingLineNumber = "1290"
+            landmarkName = "pdfViewEditingAddImageArea(_:add:add:)"
+            landmarkType = "7">
+            <Locations>
                <Location
-                  uuid = "D61BEEC2-5105-49D7-94AE-19C41A90F069 - c55cef9c5f637e33"
+                  uuid = "80647B90-A0DE-42AE-91B7-367037BDCED6 - bd8f0416d669bf51"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.fontItalicAction() -&gt; ()"
+                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.pdfViewEditingAreaDidChanged(Swift.Optional&lt;__C.CPDFView&gt;) -&gt; ()"
                   moduleName = "PDF Reader Pro"
                   usesParentBreakpointCondition = "Yes"
                   urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "919"
-                  endingLineNumber = "919"
-                  offsetFromSymbolStart = "144">
+                  startingLineNumber = "1290"
+                  endingLineNumber = "1290"
+                  offsetFromSymbolStart = "6436">
                </Location>
                <Location
-                  uuid = "D61BEEC2-5105-49D7-94AE-19C41A90F069 - c55cef9c5f637c04"
+                  uuid = "80647B90-A0DE-42AE-91B7-367037BDCED6 - 9d05d6f48d680a0e"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.fontItalicAction() -&gt; ()"
+                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.pdfViewEditingAddImageArea(_: Swift.Optional&lt;__C.CPDFView&gt;, add: Swift.Optional&lt;__C.CPDFPage&gt;, add: __C.CGRect) -&gt; ()"
                   moduleName = "PDF Reader Pro"
                   usesParentBreakpointCondition = "Yes"
                   urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "902"
-                  endingLineNumber = "902"
-                  offsetFromSymbolStart = "144">
+                  startingLineNumber = "1290"
+                  endingLineNumber = "1290"
+                  offsetFromSymbolStart = "204">
                </Location>
             </Locations>
          </BreakpointContent>
@@ -3011,62 +3095,47 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "D69F6364-3AF1-43FF-A44B-A7E27841FEA0"
+            uuid = "4BB8D06C-7F05-4DE7-BB46-68B3C14F4050"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "920"
-            endingLineNumber = "920"
-            landmarkName = "textAlignmentAction(align:)"
+            startingLineNumber = "1391"
+            endingLineNumber = "1391"
+            landmarkName = "pdfViewEditingAddTextArea(_:add:add:)"
             landmarkType = "7">
             <Locations>
                <Location
-                  uuid = "D69F6364-3AF1-43FF-A44B-A7E27841FEA0 - c55cef9c5f636081"
+                  uuid = "4BB8D06C-7F05-4DE7-BB46-68B3C14F4050 - 4e5cf8a90023d845"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.fontItalicAction() -&gt; ()"
+                  symbolName = "closure #1 (__C.NSModalResponse) -&gt; () in PDF_Reader_Pro.KMEditPDfHanddler.pdfViewEditingAddImageArea(_: Swift.Optional&lt;__C.CPDFView&gt;, add: Swift.Optional&lt;__C.CPDFPage&gt;, add: __C.CGRect) -&gt; ()"
                   moduleName = "PDF Reader Pro"
                   usesParentBreakpointCondition = "Yes"
                   urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "937"
-                  endingLineNumber = "937"
-                  offsetFromSymbolStart = "1292">
+                  startingLineNumber = "1392"
+                  endingLineNumber = "1392"
+                  offsetFromSymbolStart = "4460">
                </Location>
                <Location
-                  uuid = "D69F6364-3AF1-43FF-A44B-A7E27841FEA0 - 1a21d580b3fa74b2"
+                  uuid = "4BB8D06C-7F05-4DE7-BB46-68B3C14F4050 - 573968b405d89f14"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.textAlignmentAction(align: __C.NSTextAlignment) -&gt; ()"
-                  moduleName = "PDF Reader Pro"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "937"
-                  endingLineNumber = "937"
-                  offsetFromSymbolStart = "108">
-               </Location>
-               <Location
-                  uuid = "D69F6364-3AF1-43FF-A44B-A7E27841FEA0 - 1a21d580b3fa6a61"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.textAlignmentAction(align: __C.NSTextAlignment) -&gt; ()"
+                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.pdfViewEditingAddTextArea(_: Swift.Optional&lt;__C.CPDFView&gt;, add: Swift.Optional&lt;__C.CPDFPage&gt;, add: __C.CGRect) -&gt; ()"
                   moduleName = "PDF Reader Pro"
                   usesParentBreakpointCondition = "Yes"
                   urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "920"
-                  endingLineNumber = "920"
-                  offsetFromSymbolStart = "108">
+                  startingLineNumber = "1391"
+                  endingLineNumber = "1391"
+                  offsetFromSymbolStart = "268">
                </Location>
             </Locations>
          </BreakpointContent>
@@ -3074,95 +3143,159 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "E378A308-C290-4212-B943-EEEBCA0494B1"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1438"
-            endingLineNumber = "1438"
-            landmarkName = "pdfViewEditingCropBoundsDidChanged(_:editing:)"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "80647B90-A0DE-42AE-91B7-367037BDCED6"
+            uuid = "E3A209A5-D1EA-44E7-AEB7-0145B2D71654"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1444"
-            endingLineNumber = "1444"
-            landmarkName = "pdfViewEditingAddImageArea(_:add:add:)"
+            startingLineNumber = "1449"
+            endingLineNumber = "1449"
+            landmarkName = "pdfViewEditingOperationDidChanged(_:)"
             landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "E3A209A5-D1EA-44E7-AEB7-0145B2D71654 - 573968b405d8868e"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.pdfViewEditingAddTextArea(_: Swift.Optional&lt;__C.CPDFView&gt;, add: Swift.Optional&lt;__C.CPDFPage&gt;, add: __C.CGRect) -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1449"
+                  endingLineNumber = "1449"
+                  offsetFromSymbolStart = "2544">
+               </Location>
+               <Location
+                  uuid = "E3A209A5-D1EA-44E7-AEB7-0145B2D71654 - 7f88fb4643a917f5"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.pdfViewEditingOperationDidChanged(Swift.Optional&lt;__C.CPDFView&gt;) -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1449"
+                  endingLineNumber = "1449"
+                  offsetFromSymbolStart = "88">
+               </Location>
+            </Locations>
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "4BB8D06C-7F05-4DE7-BB46-68B3C14F4050"
+            uuid = "8516B689-DE97-4681-8B1F-48328CDD5975"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
+            filePath = "PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1545"
-            endingLineNumber = "1545"
-            landmarkName = "pdfViewEditingAddTextArea(_:add:add:)"
+            startingLineNumber = "1990"
+            endingLineNumber = "1990"
+            landmarkName = "pdfViewEditingCropBoundsDidChanged(_:editing:)"
             landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "8516B689-DE97-4681-8B1F-48328CDD5975 - 4f3bbbeae86e63dc"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMMainViewController.pdfViewEditingCropBoundsDidChanged(_: Swift.Optional&lt;__C.CPDFView&gt;, editing: Swift.Optional&lt;__C.CPDFEditArea&gt;) -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1989"
+                  endingLineNumber = "1989"
+                  offsetFromSymbolStart = "64">
+               </Location>
+               <Location
+                  uuid = "8516B689-DE97-4681-8B1F-48328CDD5975 - 4f3bbbeae86e63fd"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMMainViewController.pdfViewEditingCropBoundsDidChanged(_: Swift.Optional&lt;__C.CPDFView&gt;, editing: Swift.Optional&lt;__C.CPDFEditArea&gt;) -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1990"
+                  endingLineNumber = "1990"
+                  offsetFromSymbolStart = "64">
+               </Location>
+            </Locations>
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "E3A209A5-D1EA-44E7-AEB7-0145B2D71654"
+            uuid = "BD533CE4-36D9-445C-9ABF-895A3F401155"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1603"
-            endingLineNumber = "1603"
-            landmarkName = "pdfViewEditingOperationDidChanged(_:)"
+            startingLineNumber = "1442"
+            endingLineNumber = "1442"
+            landmarkName = "pdfViewEditingSelectionDidChanged(_:)"
             landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "BD533CE4-36D9-445C-9ABF-895A3F401155 - 573968b405d885a7"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.pdfViewEditingAddTextArea(_: Swift.Optional&lt;__C.CPDFView&gt;, add: Swift.Optional&lt;__C.CPDFPage&gt;, add: __C.CGRect) -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1442"
+                  endingLineNumber = "1442"
+                  offsetFromSymbolStart = "2144">
+               </Location>
+               <Location
+                  uuid = "BD533CE4-36D9-445C-9ABF-895A3F401155 - e33b1107b2fdbb07"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Reader_Pro.KMEditPDfHanddler.pdfViewEditingSelectionDidChanged(Swift.Optional&lt;__C.CPDFView&gt;) -&gt; ()"
+                  moduleName = "PDF Reader Pro"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Users/kdanmobile/Documents/Git/PDF_Office/PDF%20Office/PDF%20Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1442"
+                  endingLineNumber = "1442"
+                  offsetFromSymbolStart = "68">
+               </Location>
+            </Locations>
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "8516B689-DE97-4681-8B1F-48328CDD5975"
+            uuid = "A7BE78A6-E828-4C4B-B7C6-B65EE0532C31"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "PDF Master/KMClass/KMPDFViewController/KMMainViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1989"
-            endingLineNumber = "1989"
-            landmarkName = "pdfViewEditingCropBoundsDidChanged(_:editing:)"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "BD533CE4-36D9-445C-9ABF-895A3F401155"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/Manager/KMEditPDfHanddler.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "1596"
-            endingLineNumber = "1596"
+            startingLineNumber = "1981"
+            endingLineNumber = "1981"
             landmarkName = "pdfViewEditingSelectionDidChanged(_:)"
             landmarkType = "7">
          </BreakpointContent>