Browse Source

【2025】【Bates】贝茨码模块优化

niehaoyu 3 months ago
parent
commit
f7d916fbdf

+ 8 - 0
PDF Office/KMComponentLibrary/KMComponentLibrary.xcodeproj/project.pbxproj

@@ -7,6 +7,8 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		BB1554722CEAE80300938A06 /* ComponentCPositionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB1554712CEAE80300938A06 /* ComponentCPositionItem.swift */; };
+		BB1554742CEAE80D00938A06 /* ComponentCPositionItem.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB1554732CEAE80D00938A06 /* ComponentCPositionItem.xib */; };
 		BB5A9B922CB64CE800F64C1F /* KMComponentLibrary.docc in Sources */ = {isa = PBXBuildFile; fileRef = BB5A9B912CB64CE800F64C1F /* KMComponentLibrary.docc */; };
 		BB5A9B932CB64CE800F64C1F /* KMComponentLibrary.h in Headers */ = {isa = PBXBuildFile; fileRef = BB5A9B902CB64CE800F64C1F /* KMComponentLibrary.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		BB5A9C752CB64D4800F64C1F /* app-variables.json in Resources */ = {isa = PBXBuildFile; fileRef = BB5A9B992CB64D4700F64C1F /* app-variables.json */; };
@@ -185,6 +187,8 @@
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
+		BB1554712CEAE80300938A06 /* ComponentCPositionItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComponentCPositionItem.swift; sourceTree = "<group>"; };
+		BB1554732CEAE80D00938A06 /* ComponentCPositionItem.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = ComponentCPositionItem.xib; sourceTree = "<group>"; };
 		BB5A9B8D2CB64CE800F64C1F /* KMComponentLibrary.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = KMComponentLibrary.framework; sourceTree = BUILT_PRODUCTS_DIR; };
 		BB5A9B902CB64CE800F64C1F /* KMComponentLibrary.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KMComponentLibrary.h; sourceTree = "<group>"; };
 		BB5A9B912CB64CE800F64C1F /* KMComponentLibrary.docc */ = {isa = PBXFileReference; lastKnownFileType = folder.documentationcatalog; path = KMComponentLibrary.docc; sourceTree = "<group>"; };
@@ -845,6 +849,8 @@
 				BB5A9C302CB64D4700F64C1F /* ComponentCPositionProperty.swift */,
 				BB5A9C2F2CB64D4700F64C1F /* ComponentCPosition.swift */,
 				BB5A9C312CB64D4700F64C1F /* ComponentCPosition.xib */,
+				BB1554712CEAE80300938A06 /* ComponentCPositionItem.swift */,
+				BB1554732CEAE80D00938A06 /* ComponentCPositionItem.xib */,
 			);
 			path = Position;
 			sourceTree = "<group>";
@@ -1096,6 +1102,7 @@
 				BB5A9CDD2CB64D4800F64C1F /* ComponentInputNumber.xib in Resources */,
 				BB5A9CEE2CB64D4800F64C1F /* ComponentCSelector.xib in Resources */,
 				BB5A9CA12CB64D4800F64C1F /* ComponentCardStamp.xib in Resources */,
+				BB1554742CEAE80D00938A06 /* ComponentCPositionItem.xib in Resources */,
 				BB5A9CEA2CB64D4800F64C1F /* ComponentCColorItem.xib in Resources */,
 				BB5A9CB62CB64D4800F64C1F /* ComponentInputAddon.xib in Resources */,
 				BB5A9C8E2CB64D4800F64C1F /* ComponentPagination.xib in Resources */,
@@ -1146,6 +1153,7 @@
 				BB5A9CFF2CB64D4800F64C1F /* ComponentSecureTextField.swift in Sources */,
 				BB5A9CE42CB64D4800F64C1F /* ComponentCPosition.swift in Sources */,
 				BB7221562CD1E3B500331DEA /* ComponentManager.swift in Sources */,
+				BB1554722CEAE80300938A06 /* ComponentCPositionItem.swift in Sources */,
 				BB5A9C892CB64D4800F64C1F /* ComponentDropdownToolProperty.swift in Sources */,
 				BB5A9D032CB64D4800F64C1F /* ComponentSelectProperty.swift in Sources */,
 				BB5A9CA52CB64D4800F64C1F /* ComponentEmptyProperty.swift in Sources */,

+ 4 - 2
PDF Office/KMComponentLibrary/KMComponentLibrary/View/Card/ComponentCardWatermark/ComponentCardWatermark.swift

@@ -39,14 +39,16 @@ public class ComponentCardWatermark: ComponentBaseXibView {
                                                                                       state: .normal,
                                                                                       onlyIcon: true,
                                                                                       showLeftIcon: false,
-                                                                                      showRightIcon: false)
+                                                                                      showRightIcon: false,
+                                                                                      keepPressState: false)
     
     private var deleteButtonProperty: ComponentButtonProperty = ComponentButtonProperty(type: .default_tertiary,
                                                                                         size: .xxs,
                                                                                         state: .normal,
                                                                                         onlyIcon: true,
                                                                                         showLeftIcon: false,
-                                                                                        showRightIcon: false)
+                                                                                        showRightIcon: false,
+                                                                                        keepPressState: false)
     
     weak open var delegate: ComponentCardWatermarkDelegate?
 

+ 100 - 41
PDF Office/KMComponentLibrary/KMComponentLibrary/View/Controller/Position/ComponentCPosition.swift

@@ -17,7 +17,6 @@ import AppKit
 public class ComponentCPosition: ComponentBaseXibView {
     
     @IBOutlet var contendBox: NSBox!
-    @IBOutlet var itemBox: NSBox!
     
     // MARK: Private Property
     private var _properties : ComponentCPositionProperty = ComponentCPositionProperty()
@@ -44,7 +43,7 @@ public class ComponentCPosition: ComponentBaseXibView {
         var lineYValue: CGFloat = 0
         var lineXValue: CGFloat = 0
         if rows > 1 {
-            for row in 1...rows-1 {
+            for _ in 1...rows-1 {
                 lineYValue += lineWidth
                 lineYValue += rowHeight
                 
@@ -63,7 +62,7 @@ public class ComponentCPosition: ComponentBaseXibView {
         }
         
         if columns > 1 {
-            for column in 1...columns-1 {
+            for _ in 1...columns-1 {
                 lineXValue += lineWidth
                 lineXValue += columnWidth
                 
@@ -99,11 +98,7 @@ public class ComponentCPosition: ComponentBaseXibView {
     
     public override func awakeFromNib() {
         super.awakeFromNib()
-        
-        contendBox.fillColor = NSColor.clear
-        
-        itemBox.borderWidth = 0
-        
+         
     }
     
     // MARK: - Set & Get
@@ -116,38 +111,57 @@ public class ComponentCPosition: ComponentBaseXibView {
             
             ComponentLibrary.shared.configCPositionComponent(properties: _properties)
             
-            reloadData()
-            
+            resetData()
         }
     }
     
     //MARK: - SetupUI
     func setupUI() {
+         
+        self.wantsLayer = true
+        layer?.backgroundColor = ComponentLibrary.shared.getComponentColorFromKey("comp-field/colorFill-nor").cgColor
+        layer?.borderWidth = properties.propertyInfo.borderWidth
+        layer?.cornerRadius = properties.propertyInfo.cornerRadius
+        layer?.borderColor = properties.propertyInfo.borderColor_nor.cgColor
         
-        contendBox.borderWidth = properties.propertyInfo.borderWidth
-        contendBox.cornerRadius = properties.propertyInfo.cornerRadius
-        contendBox.borderColor = properties.propertyInfo.borderColor_nor
-        
-        itemBox.fillColor = properties.propertyInfo.itemFillColor
-        
-        if properties.selColumn >= 0 && properties.selRow >= 0 {
-            var itemRect = itemBox.frame
-            itemRect.origin.x = CGFloat(properties.selColumn) * itemWidth + CGFloat(properties.selColumn)
-            itemRect.origin.y = CGFloat(properties.selRow) * itemHeight + CGFloat(properties.selRow)
-            itemRect.size.width = itemWidth
-            itemRect.size.height = itemHeight
-            itemBox.frame = itemRect
-        } else {
-            itemBox.frame = CGRectZero
-        }
     }
     
-    public func reloadData() {
+    func resetData() {
         let rows = properties.rowCount
         let columns = properties.columnCount
         
-        itemHeight = (bounds.size.height-CGFloat(rows)-1)/CGFloat(rows)
-        itemWidth = (bounds.size.width-CGFloat(columns)-1)/CGFloat(columns)
+        itemHeight = (bounds.size.height-CGFloat(rows)+1)/CGFloat(rows)
+        itemWidth = (bounds.size.width-CGFloat(columns)+1)/CGFloat(columns)
+
+        if let subviews = contendBox.contentView?.subviews {
+            for view in subviews {
+                if view is ComponentCPositionItem {
+                    view.removeFromSuperview()
+                }
+            }
+        }
+        
+        for row in 0...properties.rowCount-1 {
+            var xValue: CGFloat = 1
+            for column in 0...properties.columnCount-1 {
+                var yValue: CGFloat = 1
+                
+                let item = ComponentCPositionItem()
+                item.frame = CGRectMake(xValue + CGFloat(column)*itemWidth, CGFloat(row)*itemHeight + yValue, itemWidth, itemHeight)
+                item.row = row
+                item.column = column
+                item.state = .normal
+                item.infoString = ""
+                item.isDisabled = properties.isDisabled
+                item.delegate = self
+                item.autoresizingMask = [.maxXMargin, .maxYMargin]
+                
+                contendBox.contentView?.addSubview(item)
+                
+                xValue += 1
+                yValue += 1
+            }
+        }
         
         display()
         
@@ -155,6 +169,39 @@ public class ComponentCPosition: ComponentBaseXibView {
         
     }
     
+    public func reloadData() {
+        if let subviews = contendBox.contentView?.subviews {
+            for view in subviews {
+                if view is ComponentCPositionItem {
+                    let item = view as! ComponentCPositionItem
+                    if item.row == properties.selRow && item.column == properties.selColumn {
+                        item.state = .pressed
+                    } else {
+                        item.state = .normal
+                    }
+                    item.reloadData()
+                    
+                    item.refresh() 
+                }
+            }
+        }
+    }
+    
+    public func setString(_ string: String, to row: Int, _ column: Int) {
+        if let subviews = contendBox.contentView?.subviews {
+            for view in subviews {
+                if view is ComponentCPositionItem {
+                    let item = view as! ComponentCPositionItem
+                    
+                    if item.row == row && item.column == column {
+                        item.infoString = string
+                        break
+                    }
+                }
+            }
+        }
+    }
+    
     //MARK: - MouseEvent
     public override func mouseEntered(with event: NSEvent) {
         super.mouseEntered(with: event)
@@ -173,18 +220,7 @@ public class ComponentCPosition: ComponentBaseXibView {
     
     public override func mouseDown(with event: NSEvent) {
         super.mouseDown(with: event)
-        
-        if properties.isDisabled == false {
-            let point = convert(event.locationInWindow, from: nil)
-            
-            let widthCount = floor(point.x / itemWidth)
-            let heightCount = floor(point.y / itemHeight)
-            
-            properties.selRow = Int(heightCount)
-            properties.selColumn = Int(widthCount)
-            
-            setupUI()
-        }
+  
     }
     
     public override func mouseUp(with event: NSEvent) {
@@ -196,3 +232,26 @@ public class ComponentCPosition: ComponentBaseXibView {
     }
     
 }
+
+extension ComponentCPosition: ComponentCPositionItemDelegate {
+    public func componentCPositionItemDidChoose(_ view: ComponentCPositionItem) {
+        
+        if let subviews = contendBox.contentView?.subviews {
+            for subview in subviews {
+                if subview is ComponentCPositionItem {
+                    let item = subview as! ComponentCPositionItem
+                    if item != view {
+                        item.state = .normal
+                    }
+                }
+            }
+        }
+        
+        if properties.isDisabled == false {
+            properties.selRow = view.row
+            properties.selColumn = view.column
+            
+            delegate?.componentCPositionDidChoose?(self, properties.selRow, properties.selColumn)
+        }
+    }
+}

+ 1 - 12
PDF Office/KMComponentLibrary/KMComponentLibrary/View/Controller/Position/ComponentCPosition.xib

@@ -6,10 +6,9 @@
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="ComponentCPosition" customModule="WComponentLibrary" customModuleProvider="target">
+        <customObject id="-2" userLabel="File's Owner" customClass="ComponentCPosition" customModule="KMComponentLibrary" customModuleProvider="target">
             <connections>
                 <outlet property="contendBox" destination="r1g-sL-1hy" id="H9x-aM-EV3"/>
-                <outlet property="itemBox" destination="b6W-tM-INR" id="itv-6B-xi5"/>
             </connections>
         </customObject>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
@@ -23,16 +22,6 @@
                     <view key="contentView" id="3WJ-34-q1Z">
                         <rect key="frame" x="0.0" y="0.0" width="157" height="141"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <subviews>
-                            <box fixedFrame="YES" boxType="custom" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="b6W-tM-INR">
-                                <rect key="frame" x="11" y="11" width="24" height="24"/>
-                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
-                                <view key="contentView" id="eO1-6m-zjZ">
-                                    <rect key="frame" x="1" y="1" width="22" height="22"/>
-                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                </view>
-                            </box>
-                        </subviews>
                     </view>
                 </box>
             </subviews>

+ 128 - 0
PDF Office/KMComponentLibrary/KMComponentLibrary/View/Controller/Position/ComponentCPositionItem.swift

@@ -0,0 +1,128 @@
+//
+//  ComponentCPositionItem.swift
+//  KMComponentLibrary
+//
+//  Created by Niehaoyu on 2024/11/18.
+//
+
+import Cocoa
+
+@objc public protocol ComponentCPositionItemDelegate: AnyObject {
+    
+    @objc optional func componentCPositionItemDidChoose(_ view: ComponentCPositionItem)
+    
+}
+
+public class ComponentCPositionItem: ComponentBaseXibView {
+
+    @IBOutlet var contendView: NSView!
+    @IBOutlet var titleLabel: NSTextField!
+    
+    weak open var delegate: ComponentCPositionItemDelegate?
+    
+    public var state: ComponentState = .normal
+     public var isDisabled: Bool = false //禁用状态
+    var row: Int = 0 //选中行
+    var column: Int = 0 //选中列
+    var infoString: String = "" {
+        didSet {
+            reloadData()
+        }
+    }
+     
+    public override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    public required init?(coder decoder: NSCoder) {
+        super.init(coder: decoder)
+        
+    }
+    
+    override init(frame frameRect: NSRect) {
+        super.init(frame: frameRect)
+        
+    }
+    
+    public override func awakeFromNib() {
+        super.awakeFromNib()
+         
+        contendView.wantsLayer = true
+    }
+    
+    func reloadData() {
+        if infoString.count > 0 {
+            titleLabel.isHidden = false
+            titleLabel.stringValue = infoString
+        } else {
+            titleLabel.isHidden = true
+        }
+    }
+    
+    func refresh() {
+        
+        if infoString.count > 0 {
+            if state == .normal {
+                contendView.layer?.backgroundColor = ComponentLibrary.shared.getComponentColorFromKey("colorPrimary/bg").cgColor
+            } else if state == .hover {
+                contendView.layer?.backgroundColor = ComponentLibrary.shared.getComponentColorFromKey("colorPrimary/bg-active").cgColor
+            } else if state == .pressed {
+                contendView.layer?.backgroundColor = ComponentLibrary.shared.getComponentColorFromKey("colorPrimary/base").cgColor
+            }
+        } else {
+            if state == .normal {
+                // contendView.layer?.backgroundColor = ComponentLibrary.shared.getComponentColorFromKey("colorFill/hight").cgColor
+                contendView.layer?.backgroundColor = NSColor.clear.cgColor
+            } else if state == .hover {
+                contendView.layer?.backgroundColor = ComponentLibrary.shared.getComponentColorFromKey("colorFill/hov").cgColor
+            } else if state == .pressed {
+                contendView.layer?.backgroundColor = ComponentLibrary.shared.getComponentColorFromKey("colorPrimary/base").cgColor
+            }
+        }
+    }
+    
+    //MARK: - MouseEvent
+    public override func mouseEntered(with event: NSEvent) {
+        super.mouseEntered(with: event)
+        
+        if self.isDisabled == false {
+            if self.state != .pressed {
+                self.state = .hover
+                
+                refresh()
+            }
+            
+        }
+    }
+    
+    public override func mouseMoved(with event: NSEvent) {
+        super.mouseMoved(with: event)
+        
+    }
+    
+    public override func mouseExited(with event: NSEvent) {
+        super.mouseExited(with: event)
+        if self.isDisabled == false {
+            if self.state != .pressed {
+                self.state = .normal
+                
+                refresh()
+            }
+        }
+    }
+    
+    public override func mouseDown(with event: NSEvent) {
+        super.mouseDown(with: event)
+        
+        if self.isDisabled == false {
+            state = .pressed
+            
+            refresh()
+            
+            delegate?.componentCPositionItemDidChoose?(self)
+        }
+    }
+    
+}

+ 49 - 0
PDF Office/KMComponentLibrary/KMComponentLibrary/View/Controller/Position/ComponentCPositionItem.xib

@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="ComponentCPositionItem" customModule="KMComponentLibrary" customModuleProvider="target">
+            <connections>
+                <outlet property="contendView" destination="iup-0a-wc9" id="JS7-zN-Wbx"/>
+                <outlet property="titleLabel" destination="lBU-lv-R9m" id="O5Z-wg-Cmm"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="171" height="41"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="iup-0a-wc9">
+                    <rect key="frame" x="0.0" y="0.0" width="171" height="41"/>
+                    <subviews>
+                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lBU-lv-R9m">
+                            <rect key="frame" x="2" y="13" width="167" height="16"/>
+                            <textFieldCell key="cell" lineBreakMode="truncatingTail" title="Label" id="aPc-qz-q7w">
+                                <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="trailing" secondItem="lBU-lv-R9m" secondAttribute="trailing" constant="4" id="L4j-o1-kTF"/>
+                        <constraint firstItem="lBU-lv-R9m" firstAttribute="leading" secondItem="iup-0a-wc9" secondAttribute="leading" constant="4" id="LJW-Nq-cGN"/>
+                        <constraint firstItem="lBU-lv-R9m" firstAttribute="centerY" secondItem="iup-0a-wc9" secondAttribute="centerY" id="Nl6-KI-UTW"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="iup-0a-wc9" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="0hE-79-6zm"/>
+                <constraint firstAttribute="bottom" secondItem="iup-0a-wc9" secondAttribute="bottom" id="0vo-SZ-hcO"/>
+                <constraint firstItem="iup-0a-wc9" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="3Wq-pg-CM7"/>
+                <constraint firstAttribute="trailing" secondItem="iup-0a-wc9" secondAttribute="trailing" id="aOe-VY-c2q"/>
+            </constraints>
+            <point key="canvasLocation" x="-11" y="196"/>
+        </customView>
+    </objects>
+</document>

+ 1 - 0
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Bates/KMBatesManager.swift

@@ -31,6 +31,7 @@ class KMBatesManager: NSObject {
                 let modelDict: NSDictionary = dataDict?.object(forKey: key) as! NSDictionary
                 
                 let model = parseDictionary(dict: modelDict)
+                model.tag = key
                 self.datas.append(model)
             }
             

+ 2 - 1
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Bates/KMBatesModel.swift

@@ -33,12 +33,13 @@ import Cocoa
     
     var name: String = ""
     
-    var tag: String = NSString.tagString()
+    var tag: String = ""
     
     override init() {
         super.init()
         
         self.name = "Bates Number"
+        self.tag = NSString.tagString()
     }
     
     required init?(coder: NSCoder) {

+ 10 - 1
PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Bates/Views/KMBatesPropertyController.swift

@@ -331,7 +331,7 @@ class KMBatesPropertyController: NSViewController {
     }
     
     func updateTextAreaText() {
-         if positionSelRow == 0 && positionSelColumn == 0 {
+        if positionSelRow == 0 && positionSelColumn == 0 {
             //左下角
             layoutTextarea.properties.text = batesModel.bottomLeftString
         } else if positionSelRow == 0 && positionSelColumn == 1 {
@@ -346,6 +346,15 @@ class KMBatesPropertyController: NSViewController {
             layoutTextarea.properties.text = batesModel.topRightString
         }
         layoutTextarea.reloadData()
+        
+        layoutPosition.setString(batesModel.bottomLeftString, to: 0, 0)
+        layoutPosition.setString(batesModel.bottomCenterString, to: 0, 1)
+        layoutPosition.setString(batesModel.bottomRightString, to: 0, 2)
+        layoutPosition.setString(batesModel.topLeftString, to: 1, 0)
+        layoutPosition.setString(batesModel.topCenterString, to: 1, 1)
+        layoutPosition.setString(batesModel.topRightString, to: 1, 2)
+        
+        
     }
     
     //MARK: - Action

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

@@ -3300,5 +3300,53 @@
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "035FC83E-1BC7-4E8D-BB99-80BC5969CA25"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/KMClass/KMPDFViewController/EditTool/Bates/KMBatesManager.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "237"
+            endingLineNumber = "237"
+            landmarkName = "parseModel(model:)"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "57930CBD-2805-46CB-922C-2FE1DA77F585"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/KMClass/KMPDFViewController/EditTool/Bates/KMBatesManager.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "211"
+            endingLineNumber = "211"
+            landmarkName = "parseModel(model:)"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "5034D0A4-DF2C-40C8-9F5A-ABCD21CF72F0"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/KMClass/KMPDFViewController/EditTool/Bates/KMBatesManager.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "69"
+            endingLineNumber = "69"
+            landmarkName = "addTemplate(_:)"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>