Browse Source

【2025】【Markup】测量设置界面初步串接

niehaoyu 2 months ago
parent
commit
1ff0f95379

+ 5 - 5
PDF Office/PDF Master/KMClass/ImageToPDF/Controller/KMBatchOperateImageToPDFViewController.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<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="21507"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
@@ -35,7 +35,7 @@
             <rect key="frame" x="0.0" y="0.0" width="480" height="566"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
-                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aPB-Pb-64w">
+                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aPB-Pb-64w">
                     <rect key="frame" x="14" y="497" width="42" height="17"/>
                     <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="dr8-xu-eZp">
                         <font key="font" metaFont="systemBold" size="14"/>
@@ -43,7 +43,7 @@
                         <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                     </textFieldCell>
                 </textField>
-                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hyp-2H-elp">
+                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hyp-2H-elp">
                     <rect key="frame" x="14" y="318" width="35" height="17"/>
                     <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="OCR" id="SLY-wg-469">
                         <font key="font" metaFont="systemBold" size="14"/>
@@ -183,7 +183,7 @@
                         <rect key="frame" x="1" y="1" width="478" height="38"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
-                            <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="N3m-4e-rSU">
+                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="N3m-4e-rSU">
                                 <rect key="frame" x="221" y="11" width="37" height="16"/>
                                 <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="Sym-H3-uOC">
                                     <font key="font" usesAppearanceFont="YES"/>

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

@@ -3140,18 +3140,15 @@ struct KMNMWCFlags {
     func refreshMeasureInfo() {
         if distanceMeasureInfoWindowController == nil {
             distanceMeasureInfoWindowController = CDistanceMeasureInfoWindowController()
-            distanceMeasureInfoWindowController?.delegate = self
-        }
+         }
         
         if perimeterMeasureInfoWindowController == nil {
             perimeterMeasureInfoWindowController = CPerimeterMeasureInfoWindowController()
-            perimeterMeasureInfoWindowController?.delegate = self
-        }
+         }
         
         if areaMeasureInfoWindowController == nil {
             areaMeasureInfoWindowController = CAreaMeasureInfoWindowController()
-            areaMeasureInfoWindowController?.delegate = self
-        }
+         }
         
         if let annotation = listView.activeAnnotation {
             if (listView.activeAnnotation.isKind(of: CPDFLineAnnotation.self)) {
@@ -3210,6 +3207,15 @@ struct KMNMWCFlags {
             cancelMeasureType()
         }
     }
+    
+    func showMeasureSettingWindow() {
+        let distanceSettingWC = CDistanceSettingWindowController(perimeterMeasureInfo: self.perimeterMeasureInfoWindowController!.measureInfo)
+        self.distanceMeasureInfoWindowController?.hideFloatingWindow()
+        distanceSettingWC.delegate = self
+        distanceSettingWC.own_beginSheetModal(for: self.view.window) { string in
+            
+        }
+    }
 }
 
 //MARK: Compress
@@ -3960,6 +3966,11 @@ extension KMMainViewController: KMRightSideControllerDelegate {
             self.convertOCR(document: self.listView.document, model: model)
         }
     }
+    
+    //测量设置界面
+    func kmRightSideControllerShowMeasureSetting(_ controller: KMRightSideController) {
+        showMeasureSettingWindow() 
+    }
 }
 
 //MARK: - KMNDisplayViewControllerDelegate代理
@@ -6357,43 +6368,8 @@ extension KMMainViewController: CPDFDocumentDelegate {
     func documentDidEndDocumentFind(_ document: CPDFDocument!) {
     }
 }
-
-//MARK: - 测量代理
-
-// MARK: CDistanceMeasureInfoWindowControllerDelegate
-
-extension KMMainViewController : CDistanceMeasureInfoWindowControllerDelegate {
-    func distanceMeasureInfoWindowControllerSetting(_ distanceMeasureInfoWindowController: CDistanceMeasureInfoWindowController) {
-        let distanceSettingWC = CDistanceSettingWindowController(distanceMeasureInfo: self.distanceMeasureInfoWindowController!.measureInfo)
-        self.distanceMeasureInfoWindowController?.hideFloatingWindow()
-        distanceSettingWC.delegate = self
-        distanceSettingWC.startModal("")
-    }
-}
-
-// MARK: CPerimeterMeasureInfoWindowControllerDelegate
-
-extension KMMainViewController : CPerimeterMeasureInfoWindowControllerDelegate {
-    func perimeterMeasureInfoWindowControllerSetting(_ perimeterMeasureInfoWindowController: CPerimeterMeasureInfoWindowController) {
-        let distanceSettingWC = CDistanceSettingWindowController(perimeterMeasureInfo: self.perimeterMeasureInfoWindowController!.measureInfo)
-        self.distanceMeasureInfoWindowController?.hideFloatingWindow()
-        distanceSettingWC.delegate = self
-        distanceSettingWC.startModal("")
-    }
-}
-
-// MARK: CAreaMeasureInfoWindowControllerDelegate
-
-extension KMMainViewController : CAreaMeasureInfoWindowControllerDelegate {
-    func areaMeasureInfoWindowControllerSetting(_ areaMeasureInfoWindowController: CAreaMeasureInfoWindowController) {
-        let areaSettingWC = CAreaSettingWindowController(measureInfo: self.areaMeasureInfoWindowController!.measureInfo)
-        self.areaMeasureInfoWindowController?.hideFloatingWindow()
-        areaSettingWC.delegate = self
-        areaSettingWC.startModal("")
-    }
-}
-
-// MARK: CDistanceSettingWindowControllerDelegate
+ 
+// MARK: - 测量代理CDistanceSettingWindowControllerDelegate
 
 extension KMMainViewController : CDistanceSettingWindowControllerDelegate {
     func distanceSettingWindowController(_ distanceSettingWindowController: CDistanceSettingWindowController, distanceMeasureInfo: CPDFDistanceMeasureInfo?) {
@@ -6415,7 +6391,7 @@ extension KMMainViewController : CDistanceSettingWindowControllerDelegate {
             }
             
             if let data = self.listView.activeAnnotation {
-             }
+            }
         }
         self.distanceMeasureInfoWindowController?.showWindow(self)
     }
@@ -6436,11 +6412,15 @@ extension KMMainViewController : CDistanceSettingWindowControllerDelegate {
             }
             
             if let data = self.listView.activeAnnotation {
-             }
+            }
         }
         
         self.perimeterMeasureInfoWindowController?.showWindow(self)
     }
+    
+    func distanceSettingWindowController(_ distanceSettingWindowController: CDistanceSettingWindowController, updateMeasureInfo measureInfo: CPDFMeasureInfo?) {
+        
+    }
 }
 
 // MARK: CAreaSettingWindowControllerDelegate

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

@@ -18,6 +18,8 @@ import KMComponentLibrary
     
     @objc func kmRightSideControllerRotateLeft(_ annotations: [CPDFStampAnnotation], withPDFView pdfView: CPDFListView?)
     @objc func kmRightSideControllerRotateRight(_ annotations: [CPDFStampAnnotation], withPDFView pdfView: CPDFListView?)
+    
+    @objc func kmRightSideControllerShowMeasureSetting(_ controller: KMRightSideController)
 }
 
 class KMRightSideController: NSViewController {
@@ -591,6 +593,9 @@ class KMRightSideController: NSViewController {
             headerRightButton.isHidden = false
             headerRightButton.properties = ComponentButtonProperty(type: .text_gray, size: .xxs, onlyIcon: true, icon: NSImage(named: "tools_report"), keepPressState: false)
             headerRightButton.toolTip = KMLocalizedString("If you have any feedback or suggestions for improvements to the OCR feature, please contact us.")
+        } else if contentViewController is KMMeasureController {
+            headerRightButton.isHidden = false
+            headerRightButton.properties = ComponentButtonProperty(type: .text_gray, size: .xxs, onlyIcon: true, icon: NSImage(named: "stampDynamic_Setting"), keepPressState: false)
         }
         headerRightButton.setTarget(self, action: #selector(headerRightButtonClicked(_:)))
 
@@ -726,6 +731,9 @@ class KMRightSideController: NSViewController {
             let vc = contentViewController as! KMSignatureListController
             vc.createCustomStamp()
             
+        } else if contentViewController is KMMeasureController {
+            delegate?.kmRightSideControllerShowMeasureSetting(self)
+            
         }
     }
     

+ 1 - 7
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Measure/Window/CAreaMeasureInfoWindowController.swift

@@ -9,10 +9,6 @@ import Cocoa
 import ComPDFKit
 import KMComponentLibrary
 
-@objc protocol CAreaMeasureInfoWindowControllerDelegate: AnyObject {
-    @objc optional func areaMeasureInfoWindowControllerSetting(_ areaMeasureInfoWindowController: CAreaMeasureInfoWindowController)
-}
-
 class CAreaMeasureInfoWindowController: NSWindowController {
     @IBOutlet weak var titleLabel: NSTextField!
     @IBOutlet weak var scaleTitleLabel: NSTextField!
@@ -24,9 +20,7 @@ class CAreaMeasureInfoWindowController: NSWindowController {
     @IBOutlet weak var areaLabel: NSTextField!
     @IBOutlet weak var precisionLabel: NSTextField!
     @IBOutlet weak var angleLabel: NSTextField!
-
-    weak var delegate: CAreaMeasureInfoWindowControllerDelegate?
-
+ 
     var measureInfo: CPDFAreaMeasureInfo = CPDFAreaMeasureInfo()
     
     convenience init() {

+ 2 - 8
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Measure/Window/CDistanceMeasureInfoWindowController.swift

@@ -7,11 +7,7 @@
 
 import Cocoa
 import KMComponentLibrary
-
-protocol CDistanceMeasureInfoWindowControllerDelegate: AnyObject {
-    
-}
-
+ 
 @objcMembers
 class CDistanceMeasureInfoWindowController: NSWindowController {
     
@@ -29,9 +25,7 @@ class CDistanceMeasureInfoWindowController: NSWindowController {
     @IBOutlet weak var angleLabel: NSTextField!
     @IBOutlet weak var xLabel: NSTextField!
     @IBOutlet weak var yLabel: NSTextField!
-
-    weak var delegate: CDistanceMeasureInfoWindowControllerDelegate?
-    
+ 
     var measureInfo: CPDFDistanceMeasureInfo = CPDFDistanceMeasureInfo()
     
     convenience init() {

+ 270 - 177
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Measure/Window/CDistanceSettingWindowController.swift

@@ -6,30 +6,38 @@
 //
 
 import Cocoa
+import KMComponentLibrary
 
 @objc protocol CDistanceSettingWindowControllerDelegate: AnyObject {
     @objc optional func distanceSettingWindowController(_ distanceSettingWindowController: CDistanceSettingWindowController, distanceMeasureInfo: CPDFDistanceMeasureInfo?)
     @objc optional func distanceSettingWindowController(_ distanceSettingWindowController: CDistanceSettingWindowController, perimeterMeasureInfo: CPDFPerimeterMeasureInfo?)
+    
+    @objc optional func distanceSettingWindowController(_ distanceSettingWindowController: CDistanceSettingWindowController, updateMeasureInfo measureInfo: CPDFMeasureInfo?)
 }
 
-@objc class CDistanceSettingWindowController: NSWindowController, NSTextFieldDelegate {
-
-    @IBOutlet weak var rulerBaseTexField: NSTextField!
-    @IBOutlet weak var rulerBasePopButton: NSPopUpButton!
-    @IBOutlet weak var rulerTranslateTextField: NSTextField!
-    @IBOutlet weak var rulerTranslatePopButton: NSPopUpButton!
-    @IBOutlet weak var precisionPopButton: NSPopUpButton!
-    @IBOutlet weak var doneButton: NSButton!
-    @IBOutlet weak var cancelButton: NSButton!
+@objc class CDistanceSettingWindowController: KMNBaseWindowController {
 
+    @IBOutlet var titleLabel: NSTextField!
+    
     @IBOutlet weak var customLabel: NSTextField!
-    @IBOutlet weak var drawingLabel: NSTextField!
+    
+    @IBOutlet var rulerBaseInput: ComponentInput!
+    @IBOutlet var rulerBaseSelect: ComponentSelect!
+    
+    @IBOutlet var rulerTranslateInput: ComponentInput!
+    @IBOutlet var rulerTranslateSelect: ComponentSelect!
+     
     @IBOutlet weak var precisionLabel: NSTextField!
+    @IBOutlet var precisionSelect: ComponentSelect!
+    
+    @IBOutlet var cancelButton: ComponentButton!
+    @IBOutlet var doneButton: ComponentButton!
     
     @objc weak var delegate: CDistanceSettingWindowControllerDelegate?
     
     var distanceMeasureInfo: CPDFDistanceMeasureInfo?
     var perimeterMeasureInfo: CPDFPerimeterMeasureInfo?
+    var measureInfo: CPDFMeasureInfo?
     
     var modalSession: NSApplication.ModalSession?
     var isDistance: Bool = false
@@ -41,6 +49,7 @@ import Cocoa
         Bundle.main.loadNibNamed("CDistanceSettingWindowController", owner: self, topLevelObjects: nil)
         commonInit()
         configurationLanguage()
+        setupProperty()
     }
     
     @objc init(perimeterMeasureInfo: CPDFPerimeterMeasureInfo) {
@@ -50,26 +59,106 @@ import Cocoa
         Bundle.main.loadNibNamed("CDistanceSettingWindowController", owner: self, topLevelObjects: nil)
         commonInit()
         configurationLanguage()
+        setupProperty()
+    }
+    
+    @objc init(measureInfo: CPDFMeasureInfo) {
+        super.init(window: nil)
+        
+        self.measureInfo = measureInfo
+        
+        self.isDistance = false
+        
+        Bundle.main.loadNibNamed("CDistanceSettingWindowController", owner: self, topLevelObjects: nil)
+        commonInit()
+        configurationLanguage()
+        setupProperty()
     }
     
+    
     required init?(coder: NSCoder) {
         super.init(coder: coder)
     }
     
     override func windowDidLoad() {
         super.windowDidLoad()
-
-//        commonInit()
+ 
     }
     
     private func configurationLanguage() {
-        self.window?.title = NSLocalizedString("Measure Settings", comment: "")
-        customLabel.stringValue = NSLocalizedString("Custom Scale", comment: "")
-        drawingLabel.stringValue = NSLocalizedString("Drawing Dimensions: Actual Size", comment: "")
-        precisionLabel.stringValue = NSLocalizedString("Precision Setting", comment: "")
-        doneButton.title = NSLocalizedString("Done", comment: "")
-        cancelButton.title = NSLocalizedString("Cancel", comment: "")
-
+         
+        customLabel.stringValue = KMLocalizedString("Scale")
+        precisionLabel.stringValue = KMLocalizedString("Precision Setting")
+ 
+    }
+    
+    
+    func setupProperty() {
+          
+        rulerBaseInput.properties = ComponentInputProperty(size: .s, text: "", regexString: "0123456789")
+        rulerBaseInput.delegate = self
+        
+        rulerBaseSelect.properties = ComponentSelectProperties(size: .s,
+                                                              state: .normal,
+                                                              creatable: false,
+                                                              text: "cm")
+        if true {
+            var sizeItemArr: [ComponentMenuitemProperty] = []
+            for string in ["in", "cm", "mm"] {
+                let item = ComponentMenuitemProperty(type: .normal, text: string, identifier: string)
+                sizeItemArr.append(item)
+            }
+            rulerBaseSelect.updateMenuItemsArr(sizeItemArr)
+        }
+        rulerBaseSelect.delegate = self
+        
+      rulerTranslateInput.properties = ComponentInputProperty(size: .s, text: "", regexString: "0123456789")
+        rulerTranslateInput.delegate = self
+        
+        rulerTranslateSelect.properties = ComponentSelectProperties(size: .s,
+                                                              state: .normal,
+                                                              creatable: false,
+                                                              text: "cm")
+        if true {
+            var sizeItemArr: [ComponentMenuitemProperty] = []
+            for string in ["pt", "cm", "in", "mm", "m", "km", "ft", "yd", "mi"] {
+                let item = ComponentMenuitemProperty(type: .normal, text: string, identifier: string)
+                sizeItemArr.append(item)
+            }
+            rulerTranslateSelect.updateMenuItemsArr(sizeItemArr)
+        }
+        rulerTranslateSelect.delegate = self
+         
+        
+        precisionSelect.properties = ComponentSelectProperties(size: .s,
+                                                              state: .normal,
+                                                              creatable: false,
+                                                              text: "0.01")
+        if true {
+            var sizeItemArr: [ComponentMenuitemProperty] = []
+            for string in ["1", "0.1", "0.01", "0.001", "0.0001"] {
+                let item = ComponentMenuitemProperty(type: .normal, text: string, identifier: string)
+                sizeItemArr.append(item)
+            }
+            precisionSelect.updateMenuItemsArr(sizeItemArr)
+        }
+        precisionSelect.delegate = self
+        
+        
+        cancelButton.properties = ComponentButtonProperty(type: .default_tertiary,
+                                                          size: .s,
+                                                          buttonText: KMLocalizedString("Cancel"),
+                                                          keepPressState: false)
+        cancelButton.setTarget(self, action: #selector(buttonItemClick_Cancel(_:)))
+        
+        doneButton.properties = ComponentButtonProperty(type: .primary,
+                                                        size: .s,
+                                                        buttonText: KMLocalizedString("OK"),
+                                                        keepPressState: false)
+        doneButton.setTarget(self, action: #selector(buttonItemClick_Done(_:)))
+        
+        
+        
     }
     
     private func commonInit() {
@@ -80,63 +169,58 @@ import Cocoa
             measureInfo = perimeterMeasureInfo!
         }
         
-        rulerBaseTexField.stringValue = String(format: "%0.0f", measureInfo.rulerBase)
-        rulerTranslateTextField.stringValue = String(format: "%0.0f", measureInfo.rulerTranslate)
-        
-        rulerBasePopButton.removeAllItems()
-        rulerBasePopButton.addItems(withTitles: ["in", "cm", "mm"])
-        
+        rulerBaseInput.properties.text = String(format: "%0.0f", measureInfo.rulerBase)
+        rulerBaseInput.reloadData()
+         
         if measureInfo.rulerBaseUnit == CPDFMeasureConstants.sharedInstance().cpdfIn {
-            rulerBasePopButton.selectItem(withTitle: "in")
+            rulerBaseSelect.selectItemAtIndex(0)
         } else if measureInfo.rulerBaseUnit == CPDFMeasureConstants.sharedInstance().cpdfCm {
-            rulerBasePopButton.selectItem(withTitle: "cm")
+            rulerBaseSelect.selectItemAtIndex(1)
         } else if measureInfo.rulerBaseUnit == CPDFMeasureConstants.sharedInstance().cpdfMm {
-            rulerBasePopButton.selectItem(withTitle: "mm")
+            rulerBaseSelect.selectItemAtIndex(2)
         }
+        rulerBaseSelect.reloadData()
         
-        rulerTranslatePopButton.removeAllItems()
-        rulerTranslatePopButton.addItems(withTitles: ["pt", "cm", "in", "mm", "m", "km", "ft", "yd", "mi"])
+        rulerTranslateInput.properties.text = String(format: "%0.0f", measureInfo.rulerTranslate)
+        rulerTranslateInput.reloadData()
         
         if measureInfo.rulerTranslateUnit == CPDFMeasureConstants.sharedInstance().cpdfPt {
-            rulerTranslatePopButton.selectItem(withTitle: "pt")
+            rulerTranslateSelect.selectItemAtIndex(0)
         } else if measureInfo.rulerTranslateUnit == CPDFMeasureConstants.sharedInstance().cpdfIn {
-            rulerTranslatePopButton.selectItem(withTitle: "in")
+            rulerTranslateSelect.selectItemAtIndex(1)
         } else if measureInfo.rulerTranslateUnit == CPDFMeasureConstants.sharedInstance().cpdfCm {
-            rulerTranslatePopButton.selectItem(withTitle: "cm")
+            rulerTranslateSelect.selectItemAtIndex(2)
         } else if measureInfo.rulerTranslateUnit == CPDFMeasureConstants.sharedInstance().cpdfMm {
-            rulerTranslatePopButton.selectItem(withTitle: "mm")
+            rulerTranslateSelect.selectItemAtIndex(3)
         } else if measureInfo.rulerTranslateUnit == CPDFMeasureConstants.sharedInstance().cpdfM {
-            rulerTranslatePopButton.selectItem(withTitle: "m")
+            rulerTranslateSelect.selectItemAtIndex(4)
         } else if measureInfo.rulerTranslateUnit == CPDFMeasureConstants.sharedInstance().cpdfKm {
-            rulerTranslatePopButton.selectItem(withTitle: "km")
+            rulerTranslateSelect.selectItemAtIndex(5)
         } else if measureInfo.rulerTranslateUnit == CPDFMeasureConstants.sharedInstance().cpdfFt {
-            rulerTranslatePopButton.selectItem(withTitle: "ft")
+            rulerTranslateSelect.selectItemAtIndex(6)
         } else if measureInfo.rulerTranslateUnit == CPDFMeasureConstants.sharedInstance().cpdfYd {
-            rulerTranslatePopButton.selectItem(withTitle: "yd")
+            rulerTranslateSelect.selectItemAtIndex(7)
         } else if measureInfo.rulerTranslateUnit == CPDFMeasureConstants.sharedInstance().cpdfMi {
-            rulerTranslatePopButton.selectItem(withTitle: "mi")
+            rulerTranslateSelect.selectItemAtIndex(8)
         }
-        
-        precisionPopButton.removeAllItems()
-        precisionPopButton.addItems(withTitles: ["1", "0.1", "0.01", "0.001", "0.0001"])
+        rulerTranslateSelect.reloadData()
         
         switch measureInfo.precision {
         case 1:
-            precisionPopButton.selectItem(withTitle: "1")
+            precisionSelect.selectItemAtIndex(0)
         case 10:
-            precisionPopButton.selectItem(withTitle: "0.1")
+            precisionSelect.selectItemAtIndex(1)
         case 100:
-            precisionPopButton.selectItem(withTitle: "0.01")
+            precisionSelect.selectItemAtIndex(2)
         case 1000:
-            precisionPopButton.selectItem(withTitle: "0.001")
+            precisionSelect.selectItemAtIndex(3)
         case 10000:
-            precisionPopButton.selectItem(withTitle: "0.0001")
+            precisionSelect.selectItemAtIndex(4)
         default:
             break
         }
-        
-        rulerBaseTexField.delegate = self
-        rulerTranslateTextField.delegate = self
+        precisionSelect.reloadData()
+         
     }
     
     @IBAction func startModal(_ sender: Any) {
@@ -155,16 +239,142 @@ import Cocoa
             self.window?.orderOut(self)
         }
     }
+     
+     
+   @objc func buttonItemClick_Cancel(_ sender: Any) {
+        if isDistance {
+            delegate?.distanceSettingWindowController?(self, distanceMeasureInfo: nil)
+        } else {
+            delegate?.distanceSettingWindowController?(self, perimeterMeasureInfo: nil)
+        }
+        endModal("")
+    }
     
-    func controlTextDidChange(_ obj: Notification) {
-        if rulerBaseTexField.stringValue.count > 6 {
-            rulerBaseTexField.stringValue = String(rulerBaseTexField.stringValue.prefix(6))
-        } else if rulerTranslateTextField.stringValue.count > 6 {
-            rulerTranslateTextField.stringValue = String(rulerTranslateTextField.stringValue.prefix(6))
+    @objc func buttonItemClick_Done(_ sender: Any) {
+//        if isDistance {
+//            if let distanceMeasureInfo = distanceMeasureInfo {
+//                distanceMeasureInfo.rulerBase = CGFloat(Float(rulerBaseTexField.stringValue) ?? 0)
+//                distanceMeasureInfo.rulerTranslate = CGFloat(Float(rulerTranslateTextField.stringValue) ?? 0)
+//                delegate?.distanceSettingWindowController?(self, distanceMeasureInfo: distanceMeasureInfo)
+//            }
+//        } else {
+//            if let perimeterMeasureInfo = perimeterMeasureInfo {
+//                perimeterMeasureInfo.rulerBase = CGFloat(Float(rulerBaseTexField.stringValue) ?? 0)
+//                perimeterMeasureInfo.rulerTranslate = CGFloat(Float(rulerTranslateTextField.stringValue) ?? 0)
+//                delegate?.distanceSettingWindowController?(self, perimeterMeasureInfo: perimeterMeasureInfo)
+//            }
+//        }
+        endModal("")
+    }
+
+}
+
+//MARK: - ComponentSelectDelegate
+extension CDistanceSettingWindowController: ComponentSelectDelegate {
+    func componentSelectDidSelect(view: ComponentSelect?, menuItemProperty: ComponentMenuitemProperty?) {
+        if view == rulerBaseSelect {
+            let selectIndex = rulerBaseSelect.indexOfSelect()
+            var rulerBaseUnit = ""
+            switch selectIndex {
+            case 0:
+                rulerBaseUnit = CPDFMeasureConstants.sharedInstance().cpdfIn
+            case 1:
+                rulerBaseUnit = CPDFMeasureConstants.sharedInstance().cpdfCm
+            case 2:
+                rulerBaseUnit = CPDFMeasureConstants.sharedInstance().cpdfMm
+            default:
+                break
+            }
+            
+            if isDistance {
+                distanceMeasureInfo?.rulerBaseUnit = rulerBaseUnit
+            } else {
+                perimeterMeasureInfo?.rulerBaseUnit = rulerBaseUnit
+            }
+        } else if view == rulerTranslateSelect {
+            let selectIndex = rulerTranslateSelect.indexOfSelect()
+            var rulerTranslateUnit = ""
+            var factor: CGFloat = 0
+            switch selectIndex {
+            case 0:
+                rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfPt
+                factor = CPDFMeasureConstants.sharedInstance().ptPt
+            case 1:
+                rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfCm
+                factor = CPDFMeasureConstants.sharedInstance().ptCm
+            case 2:
+                rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfIn
+                factor = CPDFMeasureConstants.sharedInstance().ptIn
+            case 3:
+                rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfMm
+                factor = CPDFMeasureConstants.sharedInstance().ptMm
+            case 4:
+                rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfM
+                factor = CPDFMeasureConstants.sharedInstance().ptM
+            case 5:
+                rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfKm
+                factor = CPDFMeasureConstants.sharedInstance().ptKm
+            case 6:
+                rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfFt
+                factor = CPDFMeasureConstants.sharedInstance().ptFt
+            case 7:
+                rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfYd
+                factor = CPDFMeasureConstants.sharedInstance().ptYd
+            case 8:
+                rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfMi
+                factor = CPDFMeasureConstants.sharedInstance().ptMi
+            default:
+                break
+            }
+            
+            if isDistance {
+                distanceMeasureInfo?.rulerTranslateUnit = rulerTranslateUnit
+                distanceMeasureInfo?.factor = factor
+            } else {
+                perimeterMeasureInfo?.rulerTranslateUnit = rulerTranslateUnit
+                perimeterMeasureInfo?.factor = factor
+            }
+        } else if view == precisionSelect {
+            let selectIndex = precisionSelect.indexOfSelect()
+             
+            var precision: Int = 0
+            switch selectIndex {
+            case 0:
+                precision = CPDFMeasureConstants.sharedInstance().precisionValueZero
+            case 1:
+                precision = CPDFMeasureConstants.sharedInstance().precisionValueOne
+            case 2:
+                precision = CPDFMeasureConstants.sharedInstance().precisionValueTwo
+            case 3:
+                precision = CPDFMeasureConstants.sharedInstance().precisionValueThree
+            case 4:
+                precision = CPDFMeasureConstants.sharedInstance().precisionValueFour
+            default:
+                break
+            }
+            
+            if isDistance {
+                distanceMeasureInfo?.precision = precision
+            } else {
+                perimeterMeasureInfo?.precision = precision
+            }
+            
+        }
+    }
+}
+ 
+//MARK: - ComponentInputDelegate
+extension CDistanceSettingWindowController: ComponentInputDelegate {
+    func componentSelectTextDidChange(_ view: ComponentSelect) {
+        if rulerBaseInput.properties.text.count > 6 {
+            rulerBaseInput.properties.text = String(rulerBaseInput.properties.text.prefix(6))
+            rulerBaseInput.reloadData()
+        } else if rulerTranslateInput.properties.text.count > 6 {
+            rulerTranslateInput.properties.text = String(rulerTranslateInput.properties.text.prefix(6))
         }
         
-        let rulerBaseText = rulerBaseTexField.stringValue
-        let rulerTranslateText = rulerTranslateTextField.stringValue
+        let rulerBaseText = rulerBaseInput.properties.text
+        let rulerTranslateText = rulerTranslateInput.properties.text
         let nonDigits = CharacterSet.decimalDigits.inverted
         if rulerBaseText.rangeOfCharacter(from: nonDigits) != nil ||
             rulerTranslateText.rangeOfCharacter(from: nonDigits) != nil ||
@@ -172,127 +382,10 @@ import Cocoa
             rulerTranslateText.isEmpty ||
             rulerBaseText == "0" ||
             rulerTranslateText == "0" {
-            doneButton.isEnabled = false
-        } else {
-            doneButton.isEnabled = true
-        }
-    }
-    
-    @IBAction func buttonItemClick_Rulerbase(_ sender: NSPopUpButton) {
-        let selectIndex = sender.indexOfSelectedItem
-        var rulerBaseUnit = ""
-        switch selectIndex {
-        case 0:
-            rulerBaseUnit = CPDFMeasureConstants.sharedInstance().cpdfIn
-        case 1:
-            rulerBaseUnit = CPDFMeasureConstants.sharedInstance().cpdfCm
-        case 2:
-            rulerBaseUnit = CPDFMeasureConstants.sharedInstance().cpdfMm
-        default:
-            break
-        }
-        
-        if isDistance {
-            distanceMeasureInfo?.rulerBaseUnit = rulerBaseUnit
-        } else {
-            perimeterMeasureInfo?.rulerBaseUnit = rulerBaseUnit
-        }
-    }
-    
-    @IBAction func buttonItemClick_Rulertranslate(_ sender: NSPopUpButton) {
-        let selectIndex = sender.indexOfSelectedItem
-        var rulerTranslateUnit = ""
-        var factor: CGFloat = 0
-        switch selectIndex {
-        case 0:
-            rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfPt
-            factor = CPDFMeasureConstants.sharedInstance().ptPt
-        case 1:
-            rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfCm
-            factor = CPDFMeasureConstants.sharedInstance().ptCm
-        case 2:
-            rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfIn
-            factor = CPDFMeasureConstants.sharedInstance().ptIn
-        case 3:
-            rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfMm
-            factor = CPDFMeasureConstants.sharedInstance().ptMm
-        case 4:
-            rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfM
-            factor = CPDFMeasureConstants.sharedInstance().ptM
-        case 5:
-            rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfKm
-            factor = CPDFMeasureConstants.sharedInstance().ptKm
-        case 6:
-            rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfFt
-            factor = CPDFMeasureConstants.sharedInstance().ptFt
-        case 7:
-            rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfYd
-            factor = CPDFMeasureConstants.sharedInstance().ptYd
-        case 8:
-            rulerTranslateUnit = CPDFMeasureConstants.sharedInstance().cpdfMi
-            factor = CPDFMeasureConstants.sharedInstance().ptMi
-        default:
-            break
-        }
-        
-        if isDistance {
-            distanceMeasureInfo?.rulerTranslateUnit = rulerTranslateUnit
-            distanceMeasureInfo?.factor = factor
+            doneButton.properties.isDisabled = true
         } else {
-            perimeterMeasureInfo?.rulerTranslateUnit = rulerTranslateUnit
-            perimeterMeasureInfo?.factor = factor
+            doneButton.properties.isDisabled = false
         }
+        doneButton.reloadData()
     }
-    
-    @IBAction func buttonItemClick_Precision(_ sender: NSPopUpButton) {
-        let selectIndex = sender.indexOfSelectedItem
-        var precision: Int = 0
-        switch selectIndex {
-        case 0:
-            precision = CPDFMeasureConstants.sharedInstance().precisionValueZero
-        case 1:
-            precision = CPDFMeasureConstants.sharedInstance().precisionValueOne
-        case 2:
-            precision = CPDFMeasureConstants.sharedInstance().precisionValueTwo
-        case 3:
-            precision = CPDFMeasureConstants.sharedInstance().precisionValueThree
-        case 4:
-            precision = CPDFMeasureConstants.sharedInstance().precisionValueFour
-        default:
-            break
-        }
-        
-        if isDistance {
-            distanceMeasureInfo?.precision = precision
-        } else {
-            perimeterMeasureInfo?.precision = precision
-        }
-    }
-    
-    @IBAction func buttonItemClick_Cancel(_ sender: Any) {
-        if isDistance {
-            delegate?.distanceSettingWindowController?(self, distanceMeasureInfo: nil)
-        } else {
-            delegate?.distanceSettingWindowController?(self, perimeterMeasureInfo: nil)
-        }
-        endModal("")
-    }
-    
-    @IBAction func buttonItemClick_Done(_ sender: Any) {
-        if isDistance {
-            if let distanceMeasureInfo = distanceMeasureInfo {
-                distanceMeasureInfo.rulerBase = CGFloat(Float(rulerBaseTexField.stringValue) ?? 0)
-                distanceMeasureInfo.rulerTranslate = CGFloat(Float(rulerTranslateTextField.stringValue) ?? 0)
-                delegate?.distanceSettingWindowController?(self, distanceMeasureInfo: distanceMeasureInfo)
-            }
-        } else {
-            if let perimeterMeasureInfo = perimeterMeasureInfo {
-                perimeterMeasureInfo.rulerBase = CGFloat(Float(rulerBaseTexField.stringValue) ?? 0)
-                perimeterMeasureInfo.rulerTranslate = CGFloat(Float(rulerTranslateTextField.stringValue) ?? 0)
-                delegate?.distanceSettingWindowController?(self, perimeterMeasureInfo: perimeterMeasureInfo)
-            }
-        }
-        endModal("")
-    }
-
 }

+ 151 - 189
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Measure/Window/CDistanceSettingWindowController.xib

@@ -8,219 +8,181 @@
     <objects>
         <customObject id="-2" userLabel="File's Owner" customClass="CDistanceSettingWindowController" customModule="PDF_Reader_Pro" customModuleProvider="target">
             <connections>
-                <outlet property="cancelButton" destination="cJq-ui-HiL" id="Bfj-AF-1CV"/>
+                <outlet property="cancelButton" destination="1TU-ca-ZdC" id="g5h-rS-bzv"/>
                 <outlet property="customLabel" destination="h9T-Pd-UEN" id="cdQ-iN-efe"/>
-                <outlet property="doneButton" destination="EVQ-Zh-Ylt" id="C5x-pN-BuG"/>
-                <outlet property="drawingLabel" destination="ifc-1X-uWI" id="aOj-km-12g"/>
+                <outlet property="doneButton" destination="WpX-82-vuT" id="sdz-im-6Ch"/>
                 <outlet property="precisionLabel" destination="dgV-rp-Kc2" id="NU4-Fq-JaH"/>
-                <outlet property="precisionPopButton" destination="vYM-aM-foH" id="Rxw-pg-AKv"/>
-                <outlet property="rulerBasePopButton" destination="Hfp-Ed-1Rd" id="HJK-ex-s8x"/>
-                <outlet property="rulerBaseTexField" destination="NYx-KX-5nc" id="sv7-nh-6zI"/>
-                <outlet property="rulerTranslatePopButton" destination="X7J-Io-mk3" id="Qev-hb-V4K"/>
-                <outlet property="rulerTranslateTextField" destination="Zar-Su-mMY" id="h1e-AU-6No"/>
+                <outlet property="precisionSelect" destination="rgw-cu-Lsa" id="Cuf-uZ-FWt"/>
+                <outlet property="rulerBaseInput" destination="PvF-HZ-WVz" id="Ucr-Rh-qRg"/>
+                <outlet property="rulerBaseSelect" destination="l8i-gW-MHD" id="pob-Xj-Kn0"/>
+                <outlet property="rulerTranslateInput" destination="s8s-Cj-mM0" id="h0Z-FK-XGI"/>
+                <outlet property="rulerTranslateSelect" destination="djz-C4-5q8" id="qqE-s7-pln"/>
+                <outlet property="titleLabel" destination="Igc-pr-zlG" id="SU3-T1-VWn"/>
                 <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
             </connections>
         </customObject>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
-        <window title="Measure Settings" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="F0z-JX-Cv5">
-            <windowStyleMask key="styleMask" titled="YES"/>
+        <window title="Measure Settings" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" titlebarAppearsTransparent="YES" titleVisibility="hidden" id="F0z-JX-Cv5">
+            <windowStyleMask key="styleMask" titled="YES" fullSizeContentView="YES"/>
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
-            <rect key="contentRect" x="532" y="664" width="520" height="280"/>
+            <rect key="contentRect" x="532" y="664" width="480" height="284"/>
             <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1055"/>
-            <view key="contentView" misplaced="YES" id="se5-gp-TjO">
-                <rect key="frame" x="0.0" y="0.0" width="520" height="280"/>
+            <value key="minSize" type="size" width="480" height="284"/>
+            <value key="maxSize" type="size" width="480" height="284"/>
+            <view key="contentView" id="se5-gp-TjO">
+                <rect key="frame" x="0.0" y="0.0" width="480" height="284"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
-                    <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="h9T-Pd-UEN">
-                        <rect key="frame" x="18" y="214" width="124" height="16"/>
-                        <constraints>
-                            <constraint firstAttribute="width" constant="120" id="AGF-7q-apH"/>
-                        </constraints>
-                        <textFieldCell key="cell" lineBreakMode="truncatingTail" title="Custom Scale" id="YP3-s5-GUl">
-                            <font key="font" metaFont="system"/>
-                            <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                        </textFieldCell>
-                    </textField>
-                    <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="NYx-KX-5nc">
-                        <rect key="frame" x="20" y="160" width="96" height="21"/>
-                        <constraints>
-                            <constraint firstAttribute="height" constant="21" id="I8J-EV-9Ki"/>
-                            <constraint firstAttribute="width" constant="96" id="Mmr-ny-zJn"/>
-                        </constraints>
-                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" alignment="left" usesSingleLineMode="YES" bezelStyle="round" id="8Uu-d8-4wk">
-                            <font key="font" metaFont="system"/>
-                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
-                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                        </textFieldCell>
-                    </textField>
-                    <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ifc-1X-uWI">
-                        <rect key="frame" x="18" y="186" width="244" height="16"/>
-                        <constraints>
-                            <constraint firstAttribute="width" constant="240" id="W4q-cc-8q7"/>
-                        </constraints>
-                        <textFieldCell key="cell" lineBreakMode="clipping" title="Drawing dimensions: Actual size" id="4Dl-mx-Xk6">
-                            <font key="font" metaFont="system"/>
-                            <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                        </textFieldCell>
-                    </textField>
-                    <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Hfp-Ed-1Rd">
-                        <rect key="frame" x="117" y="156" width="103" height="26"/>
-                        <popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="g7D-v3-mZB" id="uio-Bj-abC">
-                            <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
-                            <font key="font" metaFont="menu"/>
-                            <menu key="menu" id="jdv-51-jMe">
-                                <items>
-                                    <menuItem title="Item 1" state="on" id="g7D-v3-mZB"/>
-                                    <menuItem title="Item 2" id="WsR-7a-91s"/>
-                                    <menuItem title="Item 3" id="ipy-eG-1jz"/>
-                                </items>
-                            </menu>
-                        </popUpButtonCell>
-                        <constraints>
-                            <constraint firstAttribute="width" constant="96" id="iB1-nY-Fkr"/>
-                            <constraint firstAttribute="height" constant="21" id="lWZ-nE-bUn"/>
-                        </constraints>
-                        <connections>
-                            <action selector="buttonItemClick_Rulerbase:" target="-2" id="Imf-jy-Bjr"/>
-                        </connections>
-                    </popUpButton>
-                    <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hSH-Ae-f5L">
-                        <rect key="frame" x="218" y="164" width="13" height="17"/>
-                        <constraints>
-                            <constraint firstAttribute="width" constant="9" id="18v-K9-L2B"/>
-                            <constraint firstAttribute="height" constant="17" id="lMs-ME-sEc"/>
-                        </constraints>
-                        <textFieldCell key="cell" lineBreakMode="clipping" title="=" id="nNU-FG-mB2">
-                            <font key="font" metaFont="system" size="14"/>
-                            <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                        </textFieldCell>
-                    </textField>
-                    <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Zar-Su-mMY">
-                        <rect key="frame" x="233" y="162" width="96" height="21"/>
-                        <constraints>
-                            <constraint firstAttribute="width" constant="96" id="MvG-eZ-SW9"/>
-                            <constraint firstAttribute="height" constant="21" id="fQR-WL-Yj2"/>
-                        </constraints>
-                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" bezelStyle="round" id="W6J-uf-Luw">
-                            <font key="font" metaFont="system"/>
-                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
-                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                        </textFieldCell>
-                    </textField>
-                    <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="X7J-Io-mk3">
-                        <rect key="frame" x="330" y="158" width="103" height="26"/>
-                        <popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="Trm-KH-Lc4" id="ao6-O7-r0g">
-                            <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
-                            <font key="font" metaFont="menu"/>
-                            <menu key="menu" id="QOv-qv-gCd">
-                                <items>
-                                    <menuItem title="Item 1" state="on" id="Trm-KH-Lc4"/>
-                                    <menuItem title="Item 2" id="plQ-72-g9k"/>
-                                    <menuItem title="Item 3" id="BsK-nv-pWB"/>
-                                </items>
-                            </menu>
-                        </popUpButtonCell>
-                        <constraints>
-                            <constraint firstAttribute="width" constant="96" id="YVV-uc-2Cg"/>
-                            <constraint firstAttribute="height" constant="21" id="udS-qv-jxV"/>
-                        </constraints>
-                        <connections>
-                            <action selector="buttonItemClick_Rulertranslate:" target="-2" id="Z1c-fD-SZM"/>
-                        </connections>
-                    </popUpButton>
-                    <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dgV-rp-Kc2">
-                        <rect key="frame" x="18" y="132" width="107" height="16"/>
-                        <textFieldCell key="cell" lineBreakMode="clipping" title="Precision Setting" id="diY-LZ-tRy">
+                    <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Igc-pr-zlG">
+                        <rect key="frame" x="22" y="252" width="110" height="16"/>
+                        <textFieldCell key="cell" lineBreakMode="truncatingTail" title="Measure Settings" id="yhi-Rd-IX7">
                             <font key="font" metaFont="system"/>
                             <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
                             <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                         </textFieldCell>
                     </textField>
-                    <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vYM-aM-foH">
-                        <rect key="frame" x="17" y="102" width="103" height="26"/>
-                        <popUpButtonCell key="cell" type="push" title="Item 1" bezelStyle="rounded" alignment="left" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="bo5-QF-n4T" id="QBP-F9-7EV">
-                            <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
-                            <font key="font" metaFont="menu"/>
-                            <menu key="menu" id="QcM-k3-K3F">
-                                <items>
-                                    <menuItem title="Item 1" state="on" id="bo5-QF-n4T"/>
-                                    <menuItem title="Item 2" id="26d-4e-bjb"/>
-                                    <menuItem title="Item 3" id="ndW-j5-exo"/>
-                                </items>
-                            </menu>
-                        </popUpButtonCell>
+                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="qJC-WS-n4b">
+                        <rect key="frame" x="24" y="72" width="432" height="160"/>
+                        <subviews>
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="Iyl-Vn-oU3">
+                                <rect key="frame" x="0.0" y="120" width="432" height="40"/>
+                                <subviews>
+                                    <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="h9T-Pd-UEN">
+                                        <rect key="frame" x="-2" y="12" width="88" height="16"/>
+                                        <textFieldCell key="cell" lineBreakMode="truncatingTail" title="Custom Scale" id="YP3-s5-GUl">
+                                            <font key="font" metaFont="system"/>
+                                            <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                        </textFieldCell>
+                                    </textField>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstItem="h9T-Pd-UEN" firstAttribute="leading" secondItem="Iyl-Vn-oU3" secondAttribute="leading" id="Mds-iR-vEL"/>
+                                    <constraint firstItem="h9T-Pd-UEN" firstAttribute="centerY" secondItem="Iyl-Vn-oU3" secondAttribute="centerY" id="ale-Rx-hpL"/>
+                                    <constraint firstAttribute="height" constant="40" id="bAa-EE-7rg"/>
+                                </constraints>
+                            </customView>
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="Lmr-6l-MRE">
+                                <rect key="frame" x="0.0" y="88" width="432" height="32"/>
+                                <subviews>
+                                    <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hSH-Ae-f5L">
+                                        <rect key="frame" x="210" y="8" width="13" height="17"/>
+                                        <textFieldCell key="cell" lineBreakMode="clipping" title="=" id="nNU-FG-mB2">
+                                            <font key="font" metaFont="system" size="14"/>
+                                            <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                        </textFieldCell>
+                                    </textField>
+                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="PvF-HZ-WVz" customClass="ComponentInput" customModule="KMComponentLibrary">
+                                        <rect key="frame" x="0.0" y="0.0" width="98" height="32"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="98" id="71L-r0-JNC"/>
+                                            <constraint firstAttribute="height" constant="32" id="Nhp-m8-c7c"/>
+                                        </constraints>
+                                    </customView>
+                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="l8i-gW-MHD" customClass="ComponentSelect" customModule="KMComponentLibrary">
+                                        <rect key="frame" x="106" y="0.0" width="98" height="32"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="98" id="aM3-IT-E6C"/>
+                                            <constraint firstAttribute="height" constant="32" id="vPA-KA-e0y"/>
+                                        </constraints>
+                                    </customView>
+                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="s8s-Cj-mM0" customClass="ComponentInput" customModule="KMComponentLibrary">
+                                        <rect key="frame" x="228" y="0.0" width="98" height="32"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="32" id="O9G-K7-3cu"/>
+                                            <constraint firstAttribute="width" constant="98" id="kJb-WL-Uyj"/>
+                                        </constraints>
+                                    </customView>
+                                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="djz-C4-5q8" customClass="ComponentSelect" customModule="KMComponentLibrary">
+                                        <rect key="frame" x="334" y="0.0" width="98" height="32"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="32" id="KMK-HT-it0"/>
+                                            <constraint firstAttribute="width" constant="98" id="QP2-Sc-kOc"/>
+                                        </constraints>
+                                    </customView>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstItem="hSH-Ae-f5L" firstAttribute="centerX" secondItem="Lmr-6l-MRE" secondAttribute="centerX" id="1ws-O2-uGo"/>
+                                    <constraint firstItem="l8i-gW-MHD" firstAttribute="leading" secondItem="PvF-HZ-WVz" secondAttribute="trailing" constant="8" id="45Z-SF-r47"/>
+                                    <constraint firstAttribute="height" constant="32" id="Grg-gK-J1W"/>
+                                    <constraint firstItem="djz-C4-5q8" firstAttribute="leading" secondItem="s8s-Cj-mM0" secondAttribute="trailing" constant="8" id="JLQ-dZ-mri"/>
+                                    <constraint firstItem="PvF-HZ-WVz" firstAttribute="leading" secondItem="Lmr-6l-MRE" secondAttribute="leading" id="KNg-Iz-wPg"/>
+                                    <constraint firstItem="s8s-Cj-mM0" firstAttribute="centerY" secondItem="Lmr-6l-MRE" secondAttribute="centerY" id="WBJ-LB-BoR"/>
+                                    <constraint firstItem="djz-C4-5q8" firstAttribute="centerY" secondItem="Lmr-6l-MRE" secondAttribute="centerY" id="g0c-KX-QCH"/>
+                                    <constraint firstItem="l8i-gW-MHD" firstAttribute="centerY" secondItem="Lmr-6l-MRE" secondAttribute="centerY" id="qHZ-6q-f5Q"/>
+                                    <constraint firstItem="PvF-HZ-WVz" firstAttribute="centerY" secondItem="Lmr-6l-MRE" secondAttribute="centerY" id="qc3-8r-L2i"/>
+                                    <constraint firstAttribute="trailing" secondItem="djz-C4-5q8" secondAttribute="trailing" id="vcJ-je-mK2"/>
+                                    <constraint firstItem="hSH-Ae-f5L" firstAttribute="centerY" secondItem="Lmr-6l-MRE" secondAttribute="centerY" id="yDw-WP-24E"/>
+                                </constraints>
+                            </customView>
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="601-4h-OmQ">
+                                <rect key="frame" x="0.0" y="32" width="432" height="40"/>
+                                <subviews>
+                                    <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dgV-rp-Kc2">
+                                        <rect key="frame" x="-2" y="12" width="107" height="16"/>
+                                        <textFieldCell key="cell" lineBreakMode="clipping" title="Precision Setting" id="diY-LZ-tRy">
+                                            <font key="font" metaFont="system"/>
+                                            <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                        </textFieldCell>
+                                    </textField>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstItem="dgV-rp-Kc2" firstAttribute="centerY" secondItem="601-4h-OmQ" secondAttribute="centerY" id="VIn-ub-EE9"/>
+                                    <constraint firstAttribute="height" constant="40" id="mQz-DP-bgh"/>
+                                    <constraint firstItem="dgV-rp-Kc2" firstAttribute="leading" secondItem="601-4h-OmQ" secondAttribute="leading" id="ydX-a2-8s4"/>
+                                </constraints>
+                            </customView>
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="rgw-cu-Lsa" customClass="ComponentSelect" customModule="KMComponentLibrary">
+                                <rect key="frame" x="0.0" y="0.0" width="432" height="32"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="32" id="QFh-mi-Za9"/>
+                                </constraints>
+                            </customView>
+                        </subviews>
                         <constraints>
-                            <constraint firstAttribute="width" constant="96" id="1sb-BY-AzL"/>
-                            <constraint firstAttribute="height" constant="21" id="caY-60-dKM"/>
+                            <constraint firstItem="601-4h-OmQ" firstAttribute="top" secondItem="Iyl-Vn-oU3" secondAttribute="bottom" constant="48" id="53m-Xi-bmI"/>
+                            <constraint firstAttribute="height" constant="160" id="ACQ-Bg-9ds"/>
+                            <constraint firstAttribute="trailing" secondItem="rgw-cu-Lsa" secondAttribute="trailing" id="BkX-Vn-o67"/>
+                            <constraint firstItem="rgw-cu-Lsa" firstAttribute="top" secondItem="601-4h-OmQ" secondAttribute="bottom" id="EtS-SB-SZt"/>
+                            <constraint firstAttribute="trailing" secondItem="Lmr-6l-MRE" secondAttribute="trailing" id="Fqc-44-hz3"/>
+                            <constraint firstItem="Lmr-6l-MRE" firstAttribute="leading" secondItem="qJC-WS-n4b" secondAttribute="leading" id="IR7-ZH-WBG"/>
+                            <constraint firstAttribute="trailing" secondItem="601-4h-OmQ" secondAttribute="trailing" id="Nap-vd-ksJ"/>
+                            <constraint firstAttribute="width" constant="432" id="Rdt-5Z-Duu"/>
+                            <constraint firstItem="601-4h-OmQ" firstAttribute="leading" secondItem="qJC-WS-n4b" secondAttribute="leading" id="Sha-lY-fCJ"/>
+                            <constraint firstAttribute="trailing" secondItem="Iyl-Vn-oU3" secondAttribute="trailing" id="TwY-LZ-JHy"/>
+                            <constraint firstItem="Iyl-Vn-oU3" firstAttribute="leading" secondItem="qJC-WS-n4b" secondAttribute="leading" id="VOw-9p-9cb"/>
+                            <constraint firstItem="rgw-cu-Lsa" firstAttribute="leading" secondItem="qJC-WS-n4b" secondAttribute="leading" id="dfa-vb-XXg"/>
+                            <constraint firstItem="Iyl-Vn-oU3" firstAttribute="top" secondItem="qJC-WS-n4b" secondAttribute="top" id="oPY-1X-tp4"/>
+                            <constraint firstItem="Lmr-6l-MRE" firstAttribute="top" secondItem="Iyl-Vn-oU3" secondAttribute="bottom" id="uEl-5W-fG3"/>
                         </constraints>
-                        <connections>
-                            <action selector="buttonItemClick_Precision:" target="-2" id="T79-uG-oIh"/>
-                        </connections>
-                    </popUpButton>
-                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="cJq-ui-HiL">
-                        <rect key="frame" x="335" y="16" width="92" height="52"/>
-                        <buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="avT-PE-okH">
-                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                            <font key="font" metaFont="system"/>
-                            <string key="keyEquivalent" base64-UTF8="YES">
-Gw
-</string>
-                        </buttonCell>
+                    </customView>
+                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="1TU-ca-ZdC" customClass="ComponentButton" customModule="KMComponentLibrary">
+                        <rect key="frame" x="333" y="16" width="70" height="32"/>
                         <constraints>
-                            <constraint firstAttribute="width" constant="80" id="M9i-bX-p6z"/>
-                            <constraint firstAttribute="height" constant="40" id="mIb-FM-gdg"/>
+                            <constraint firstAttribute="height" constant="32" id="UYK-5O-gly"/>
+                            <constraint firstAttribute="width" constant="70" id="gcf-sU-mdZ"/>
                         </constraints>
-                        <connections>
-                            <action selector="buttonItemClick_Cancel:" target="-2" id="URn-WW-cIy"/>
-                        </connections>
-                    </button>
-                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="EVQ-Zh-Ylt">
-                        <rect key="frame" x="423" y="16" width="92" height="52"/>
-                        <buttonCell key="cell" type="push" title="Done" bezelStyle="rounded" alignment="center" controlSize="large" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="ZLg-3n-eRK">
-                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                            <font key="font" metaFont="system"/>
-                            <string key="keyEquivalent" base64-UTF8="YES">
-DQ
-</string>
-                        </buttonCell>
+                    </customView>
+                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="WpX-82-vuT" customClass="ComponentButton" customModule="KMComponentLibrary">
+                        <rect key="frame" x="411" y="16" width="45" height="32"/>
                         <constraints>
-                            <constraint firstAttribute="width" constant="80" id="gEu-dD-bBb"/>
-                            <constraint firstAttribute="height" constant="40" id="yoL-uy-CwJ"/>
+                            <constraint firstAttribute="height" constant="32" id="ifb-yT-OUr"/>
+                            <constraint firstAttribute="width" constant="45" id="mSh-8h-J7f"/>
                         </constraints>
-                        <connections>
-                            <action selector="buttonItemClick_Done:" target="-2" id="aKK-gr-Lfq"/>
-                        </connections>
-                    </button>
+                    </customView>
                 </subviews>
                 <constraints>
-                    <constraint firstItem="Zar-Su-mMY" firstAttribute="leading" secondItem="hSH-Ae-f5L" secondAttribute="trailing" constant="4" id="2iW-do-EhK"/>
-                    <constraint firstItem="NYx-KX-5nc" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="20" symbolic="YES" id="5xT-0n-tFS"/>
-                    <constraint firstItem="h9T-Pd-UEN" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="20" id="APe-hg-UfZ"/>
-                    <constraint firstAttribute="bottom" secondItem="cJq-ui-HiL" secondAttribute="bottom" constant="22" id="Csk-mr-Egh"/>
-                    <constraint firstItem="ifc-1X-uWI" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="20" symbolic="YES" id="DCP-ZT-w65"/>
-                    <constraint firstItem="dgV-rp-Kc2" firstAttribute="top" secondItem="NYx-KX-5nc" secondAttribute="bottom" constant="12" id="DY8-4A-qLE"/>
-                    <constraint firstItem="vYM-aM-foH" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="20" symbolic="YES" id="Iu5-C6-vSw"/>
-                    <constraint firstItem="X7J-Io-mk3" firstAttribute="leading" secondItem="Zar-Su-mMY" secondAttribute="trailing" constant="4" id="JbI-4x-wsf"/>
-                    <constraint firstAttribute="trailing" secondItem="EVQ-Zh-Ylt" secondAttribute="trailing" constant="11" id="Klg-Vt-Ajs"/>
-                    <constraint firstItem="EVQ-Zh-Ylt" firstAttribute="leading" secondItem="cJq-ui-HiL" secondAttribute="trailing" constant="8" id="MN7-zb-oV3"/>
-                    <constraint firstItem="dgV-rp-Kc2" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="20" symbolic="YES" id="Mpj-2w-tiH"/>
-                    <constraint firstItem="h9T-Pd-UEN" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" constant="13" id="Nlq-gh-Z1M"/>
-                    <constraint firstItem="EVQ-Zh-Ylt" firstAttribute="centerY" secondItem="cJq-ui-HiL" secondAttribute="centerY" id="OL4-5R-qHH"/>
-                    <constraint firstItem="vYM-aM-foH" firstAttribute="top" secondItem="dgV-rp-Kc2" secondAttribute="bottom" constant="5" id="YMd-jQ-QC8"/>
-                    <constraint firstItem="ifc-1X-uWI" firstAttribute="top" secondItem="h9T-Pd-UEN" secondAttribute="bottom" constant="12" id="e5V-Re-GBl"/>
-                    <constraint firstItem="Zar-Su-mMY" firstAttribute="centerY" secondItem="hSH-Ae-f5L" secondAttribute="centerY" id="h8x-02-5CV"/>
-                    <constraint firstItem="h9T-Pd-UEN" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="20" symbolic="YES" id="pAB-Zz-Zts"/>
-                    <constraint firstItem="NYx-KX-5nc" firstAttribute="top" secondItem="ifc-1X-uWI" secondAttribute="bottom" constant="5" id="qNh-2T-6BQ"/>
-                    <constraint firstItem="Hfp-Ed-1Rd" firstAttribute="leading" secondItem="NYx-KX-5nc" secondAttribute="trailing" constant="4" id="rKn-4Z-J5V"/>
-                    <constraint firstItem="hSH-Ae-f5L" firstAttribute="leading" secondItem="Hfp-Ed-1Rd" secondAttribute="trailing" constant="4" id="tXO-YR-3vc"/>
-                    <constraint firstItem="hSH-Ae-f5L" firstAttribute="top" secondItem="ifc-1X-uWI" secondAttribute="bottom" constant="5" id="ttb-Yn-hf1"/>
-                    <constraint firstItem="cJq-ui-HiL" firstAttribute="top" secondItem="Zar-Su-mMY" secondAttribute="bottom" constant="100" id="vMo-Rm-2x3"/>
-                    <constraint firstItem="X7J-Io-mk3" firstAttribute="centerY" secondItem="Zar-Su-mMY" secondAttribute="centerY" id="vy4-fx-09D"/>
-                    <constraint firstItem="Hfp-Ed-1Rd" firstAttribute="top" secondItem="ifc-1X-uWI" secondAttribute="bottom" constant="5" id="wIg-bl-sa7"/>
+                    <constraint firstItem="WpX-82-vuT" firstAttribute="leading" secondItem="1TU-ca-ZdC" secondAttribute="trailing" constant="8" id="AQT-CF-1r6"/>
+                    <constraint firstItem="qJC-WS-n4b" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" constant="52" id="ARa-8r-YIy"/>
+                    <constraint firstItem="qJC-WS-n4b" firstAttribute="centerX" secondItem="se5-gp-TjO" secondAttribute="centerX" id="O0t-1A-tQ2"/>
+                    <constraint firstItem="Igc-pr-zlG" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="24" id="Qso-Bh-0ae"/>
+                    <constraint firstAttribute="bottom" secondItem="WpX-82-vuT" secondAttribute="bottom" constant="16" id="XPb-Ls-D3q"/>
+                    <constraint firstAttribute="trailing" secondItem="WpX-82-vuT" secondAttribute="trailing" constant="24" id="a4X-29-ojH"/>
+                    <constraint firstItem="Igc-pr-zlG" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" constant="16" id="d0A-0g-X09"/>
+                    <constraint firstAttribute="bottom" secondItem="1TU-ca-ZdC" secondAttribute="bottom" constant="16" id="t2M-wx-ygm"/>
                 </constraints>
             </view>
             <connections>

+ 3 - 12
PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/Measure/Window/CPerimeterMeasureInfoWindowController.swift

@@ -7,11 +7,7 @@
 
 import Cocoa
 import KMComponentLibrary
-
-protocol CPerimeterMeasureInfoWindowControllerDelegate: AnyObject {
-    func perimeterMeasureInfoWindowControllerSetting(_ perimeterMeasureInfoWindowController: CPerimeterMeasureInfoWindowController)
-}
-
+ 
 @objcMembers
 class CPerimeterMeasureInfoWindowController: NSWindowController {
     @IBOutlet weak var titleLabel: NSTextField!
@@ -25,8 +21,7 @@ class CPerimeterMeasureInfoWindowController: NSWindowController {
     @IBOutlet weak var precisionLabel: NSTextField!
     @IBOutlet weak var angleLabel: NSTextField!
  
-    weak var delegate: CPerimeterMeasureInfoWindowControllerDelegate?
-    var measureInfo: CPDFPerimeterMeasureInfo = CPDFPerimeterMeasureInfo()
+     var measureInfo: CPDFPerimeterMeasureInfo = CPDFPerimeterMeasureInfo()
     
     convenience init() {
         self.init(windowNibName: "CPerimeterMeasureInfoWindowController")
@@ -114,9 +109,5 @@ class CPerimeterMeasureInfoWindowController: NSWindowController {
             break
         }
     }
-    
-    @IBAction func buttonItemClick_Setting(_ sender: Any) {
-        delegate?.perimeterMeasureInfoWindowControllerSetting(self)
-    }
-
+     
 }