Browse Source

【2025】【压缩】设置组件库接入完善

lizhe 2 months ago
parent
commit
95b5ba008b
19 changed files with 420 additions and 349 deletions
  1. 1 1
      PDF Office/KMComponentLibrary/KMComponentLibrary/View/CheckBox/ComponentCheckBox.swift
  2. 4 4
      PDF Office/KMComponentLibrary/KMComponentLibrary/View/Input/ComponentPasswordView/ComponentPasswordView.xib
  3. 1 0
      PDF Office/KMComponentLibrary/KMComponentLibrary/View/InputNumber/ComponentInputNumber.swift
  4. 6 3
      PDF Office/KMComponentLibrary/KMComponentLibrary/View/InputNumber/ComponentInputNumberProperty.swift
  5. 1 1
      PDF Office/KMComponentLibrary/KMComponentLibrary/View/Radio/ComponentRadio.swift
  6. 16 6
      PDF Office/PDF Master/Class/PDFTools/Compress/Controller/KMCompressSettingViewController.swift
  7. 33 34
      PDF Office/PDF Master/Class/PDFTools/Compress/Controller/KMCompressSettingViewController.xib
  8. 13 5
      PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/Cell/KMCompressDiscardPanelTableCellView.swift
  9. 2 2
      PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/Cell/KMCompressDiscardPanelTableCellView.xib
  10. 11 6
      PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/Cell/KMCompressFontsPanelTableCellView.swift
  11. 34 29
      PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/Cell/KMCompressFontsPanelTableCellView.xib
  12. 111 65
      PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/Cell/KMCompressImagesPanelTableCellView.swift
  13. 172 176
      PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/Cell/KMCompressImagesPanelTableCellView.xib
  14. 5 5
      PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/Cell/KMCompressModesTableCellView.xib
  15. 2 2
      PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/KMCompressSettingTableView.swift
  16. 1 1
      PDF Office/PDF Master/KMClass/KMNPDFPageEdit/KMNPDFSplit/KMNSplitPDFWindowController.xib
  17. 1 3
      PDF Office/PDF Master/KMClass/KMPDFViewController/EditTool/Bates/Views/KMBatesPropertyController.swift
  18. 3 3
      PDF Office/PDF Master/KMClass/KMPDFViewController/RightSideController/Views/EditPDF/KMEditImageController.swift
  19. 3 3
      PDF Office/PDF Master/KMClass/Settings/SettingsGeneralView.swift

+ 1 - 1
PDF Office/KMComponentLibrary/KMComponentLibrary/View/CheckBox/ComponentCheckBox.swift

@@ -161,7 +161,7 @@ public class ComponentCheckBox: ComponentBaseXibView {
     }
     
     public override func mouseDown(with event: NSEvent) {
-        super.mouseDown(with: event)
+//        super.mouseDown(with: event)
     
     }
     

+ 4 - 4
PDF Office/KMComponentLibrary/KMComponentLibrary/View/Input/ComponentPasswordView/ComponentPasswordView.xib

@@ -6,7 +6,7 @@
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
-        <customObject id="-2" userLabel="File's Owner" customClass="ComponentPasswordView" customModule="WComponentLibrary" customModuleProvider="target">
+        <customObject id="-2" userLabel="File's Owner" customClass="ComponentPasswordView" customModule="KMComponentLibrary" customModuleProvider="target">
             <connections>
                 <outlet property="contendBox" destination="VfT-ax-fZ0" id="6xl-O3-Pv1"/>
                 <outlet property="contendBoxBottomConst" destination="ol1-Cb-4GE" id="AbZ-U4-BRj"/>
@@ -28,7 +28,7 @@
                         <rect key="frame" x="1" y="1" width="318" height="36"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
-                            <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="EKR-wD-emr" customClass="ComponentTextField" customModule="WComponentLibrary" customModuleProvider="target">
+                            <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="EKR-wD-emr" customClass="ComponentTextField" customModule="KMComponentLibrary" customModuleProvider="target">
                                 <rect key="frame" x="6" y="8" width="282" height="20"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="20" id="sRW-sl-rZY"/>
@@ -39,7 +39,7 @@
                                     <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                 </textFieldCell>
                             </textField>
-                            <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Oy7-bI-fh5" customClass="ComponentSecureTextField" customModule="WComponentLibrary" customModuleProvider="target">
+                            <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Oy7-bI-fh5" customClass="ComponentSecureTextField" customModule="KMComponentLibrary" customModuleProvider="target">
                                 <rect key="frame" x="6" y="8" width="282" height="20"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="20" id="m7g-md-Uak"/>
@@ -50,7 +50,7 @@
                                     <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                 </textFieldCell>
                             </textField>
-                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="FKO-v4-5xR" customClass="ComponentButton" customModule="WComponentLibrary" customModuleProvider="target">
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="FKO-v4-5xR" customClass="ComponentButton" customModule="KMComponentLibrary" customModuleProvider="target">
                                 <rect key="frame" x="294" y="10" width="16" height="16"/>
                                 <constraints>
                                     <constraint firstAttribute="width" secondItem="FKO-v4-5xR" secondAttribute="height" multiplier="1:1" id="7wm-eC-4gF"/>

+ 1 - 0
PDF Office/KMComponentLibrary/KMComponentLibrary/View/InputNumber/ComponentInputNumber.swift

@@ -130,6 +130,7 @@ public class ComponentInputNumber: ComponentBaseXibView {
         formatter.minSize = properties.minSize
         formatter.maxSize = properties.maxSize
         
+        stepperView.isHidden = !properties.isShowStep
     }
     
     func refreshUI() {

+ 6 - 3
PDF Office/KMComponentLibrary/KMComponentLibrary/View/InputNumber/ComponentInputNumberProperty.swift

@@ -29,9 +29,10 @@ public class ComponentInputNumberProperty: NSObject {
     public var rightIcon: NSImage? = nil
     public var minSize: Int = 0 //最小值
     public var maxSize: Int = 10 //最大值
-    public var text: String? = nil //当前值
+    public var text: String = "" //当前值
     public var multiState: Bool = false
     public var valueType: inputNumberValueType = .intType
+    public var isShowStep: Bool = true
     
     public var propertyInfo = InputNumberPropertyInfo()
     
@@ -47,9 +48,10 @@ public class ComponentInputNumberProperty: NSObject {
                 rightIcon: NSImage? = nil,
                 minSize: Int = 0,
                 maxSize: Int = 10,
-                text: String? = nil,
+                text: String = "",
                 multiState: Bool = false,
-                valueType: inputNumberValueType = .intType) {
+                valueType: inputNumberValueType = .intType,
+                isShowStep: Bool = true) {
         
         self.size = size
         self.state = state
@@ -66,6 +68,7 @@ public class ComponentInputNumberProperty: NSObject {
         self.text = text
         self.multiState = multiState
         self.valueType = valueType
+        self.isShowStep = isShowStep
         
     }
 }

+ 1 - 1
PDF Office/KMComponentLibrary/KMComponentLibrary/View/Radio/ComponentRadio.swift

@@ -153,7 +153,7 @@ public class ComponentRadio: ComponentBaseXibView {
     }
     
     public override func mouseDown(with event: NSEvent) {
-        super.mouseDown(with: event)
+//        super.mouseDown(with: event)
     
     }
     

+ 16 - 6
PDF Office/PDF Master/Class/PDFTools/Compress/Controller/KMCompressSettingViewController.swift

@@ -12,8 +12,8 @@ typealias KMCompressSettingViewControllerCancelAction = (_ controller: KMCompres
 typealias KMCompressSettingViewControllerDoneAction = (_ controller: KMCompressSettingViewController ) -> Void
 
 class KMCompressSettingViewController: KMBaseViewController {
-    @IBOutlet weak var doneButton: KMButton!
-    @IBOutlet weak var cancelButton: KMButton!
+    @IBOutlet weak var doneButton: ComponentButton!
+    @IBOutlet weak var cancelButton: ComponentButton!
     @IBOutlet weak var settingView: KMCompressSettingTableView!
     @IBOutlet weak var titleLabel: NSTextField!
     
@@ -48,11 +48,21 @@ class KMCompressSettingViewController: KMBaseViewController {
 //        DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
 //            self.showAlert("Less than 7 items selected; compression quality may be affected")
 //        }
+        
+        self.updateUI()
     }
     
     func updateUI() {
-        self.titleLabel.stringValue = KMLocalizedString("Advanced Compress Settings", comment: "")
-        self.titleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/1")
+        doneButton.properties = ComponentButtonProperty(type: .primary, size: .xs, buttonText: KMLocalizedString("Compress"), keepPressState: false)
+        doneButton.setTarget(self, action: #selector(doneButtonAction(_:)))
+        doneButton.reloadData()
+        
+        cancelButton.properties = ComponentButtonProperty(type: .default_tertiary, size: .xs, buttonText: KMLocalizedString("Cancel"), keepPressState: false)
+        cancelButton.setTarget(self, action: #selector(cancelButtonAction(_:)))
+        cancelButton.reloadData()
+        
+        titleLabel.stringValue = KMLocalizedString("Advanced Compress Settings", comment: "")
+        titleLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("colorText/1")
         //ComponentLibrary.shared.getFontFromKey("mac/body-s-medium")
     }
     
@@ -111,13 +121,13 @@ class KMCompressSettingViewController: KMBaseViewController {
 }
 
 extension KMCompressSettingViewController {
-    @IBAction func cancelButtonAction(_ sender: Any) {
+    @objc func cancelButtonAction(_ sender: Any) {
         guard let callBack = cancelAction else { return }
         
         callBack(self)
     }
     
-    @IBAction func doneButtonAction(_ sender: Any) {
+    @objc func doneButtonAction(_ sender: Any) {
         guard let callBack = doneAction else { return }
         
         callBack(self)

+ 33 - 34
PDF Office/PDF Master/Class/PDFTools/Compress/Controller/KMCompressSettingViewController.xib

@@ -8,8 +8,8 @@
     <objects>
         <customObject id="-2" userLabel="File's Owner" customClass="KMCompressSettingViewController" customModule="PDF_Reader_Pro" customModuleProvider="target">
             <connections>
-                <outlet property="cancelButton" destination="sVB-3V-Y0k" id="WuD-aB-uY1"/>
-                <outlet property="doneButton" destination="eVt-ve-VmB" id="6fM-1p-W9A"/>
+                <outlet property="cancelButton" destination="SD8-YF-epz" id="n68-lh-Vss"/>
+                <outlet property="doneButton" destination="4Tt-0L-UrO" id="U9a-pP-Kf5"/>
                 <outlet property="settingView" destination="fbx-YC-qHs" id="vb6-gh-2ej"/>
                 <outlet property="titleLabel" destination="G5g-e3-dep" id="Wld-A7-Ihl"/>
                 <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
@@ -24,39 +24,13 @@
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="fbx-YC-qHs" customClass="KMCompressSettingTableView" customModule="PDF_Reader_Pro" customModuleProvider="target">
                     <rect key="frame" x="8" y="64" width="608" height="405"/>
                 </customView>
-                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="sVB-3V-Y0k" customClass="KMButton" customModule="PDF_Reader_Pro" customModuleProvider="target">
-                    <rect key="frame" x="386" y="13" width="76" height="32"/>
-                    <buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="EYu-9c-4mc">
-                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                        <font key="font" metaFont="system"/>
-                        <string key="keyEquivalent" base64-UTF8="YES">
-Gw
-</string>
-                    </buttonCell>
-                    <connections>
-                        <action selector="cancelButtonAction:" target="-2" id="upk-fU-fOC"/>
-                    </connections>
-                </button>
-                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eVt-ve-VmB" customClass="KMButton" customModule="PDF_Reader_Pro" customModuleProvider="target">
-                    <rect key="frame" x="456" y="13" width="155" height="32"/>
-                    <buttonCell key="cell" type="push" title="Save and Compress" bezelStyle="rounded" alignment="center" borderStyle="border" inset="2" id="pnh-3j-SVd">
-                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                        <font key="font" metaFont="system"/>
-                        <string key="keyEquivalent" base64-UTF8="YES">
-DQ
-</string>
-                        <connections>
-                            <action selector="doneButtonAction:" target="-2" id="f06-fj-C04"/>
-                        </connections>
-                    </buttonCell>
-                </button>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="piB-Gy-QCa">
                     <rect key="frame" x="0.0" y="469" width="624" height="44"/>
                     <subviews>
                         <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="G5g-e3-dep">
-                            <rect key="frame" x="22" y="14" width="195" height="17"/>
+                            <rect key="frame" x="22" y="14" width="200" height="17"/>
                             <textFieldCell key="cell" lineBreakMode="clipping" title="Advanced Compress Settings" id="W7u-OP-0l7">
-                                <font key="font" metaFont="system" size="14"/>
+                                <font key="font" metaFont="systemMedium" size="14"/>
                                 <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
                                 <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                             </textFieldCell>
@@ -68,19 +42,44 @@ DQ
                         <constraint firstItem="G5g-e3-dep" firstAttribute="leading" secondItem="piB-Gy-QCa" secondAttribute="leading" constant="24" id="tj2-Eu-hQt"/>
                     </constraints>
                 </customView>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="ahr-sZ-Pyx">
+                    <rect key="frame" x="0.0" y="0.0" width="624" height="64"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="SD8-YF-epz" customClass="ComponentButton" customModule="KMComponentLibrary">
+                            <rect key="frame" x="431" y="16" width="70" height="32"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="70" id="hWJ-Vj-ae0"/>
+                                <constraint firstAttribute="height" constant="32" id="hjK-e9-5cz"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="4Tt-0L-UrO" customClass="ComponentButton" customModule="KMComponentLibrary">
+                            <rect key="frame" x="509" y="16" width="91" height="32"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="32" id="MPZ-IE-H3I"/>
+                                <constraint firstAttribute="width" constant="91" id="Z6H-Ty-33k"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="64" id="9CW-hq-QyJ"/>
+                        <constraint firstItem="4Tt-0L-UrO" firstAttribute="centerY" secondItem="SD8-YF-epz" secondAttribute="centerY" id="M6Q-v8-FQk"/>
+                        <constraint firstItem="4Tt-0L-UrO" firstAttribute="leading" secondItem="SD8-YF-epz" secondAttribute="trailing" constant="8" id="OwD-3M-Rhz"/>
+                        <constraint firstItem="SD8-YF-epz" firstAttribute="centerY" secondItem="ahr-sZ-Pyx" secondAttribute="centerY" id="bXW-gc-oLq"/>
+                        <constraint firstAttribute="trailing" secondItem="4Tt-0L-UrO" secondAttribute="trailing" constant="24" id="i1s-Oz-5RH"/>
+                    </constraints>
+                </customView>
             </subviews>
             <constraints>
                 <constraint firstItem="piB-Gy-QCa" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="3q3-Vc-eDr"/>
                 <constraint firstAttribute="trailing" secondItem="fbx-YC-qHs" secondAttribute="trailing" constant="8" id="A1Z-3W-rxf"/>
+                <constraint firstItem="ahr-sZ-Pyx" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="GZW-UU-Wkh"/>
                 <constraint firstAttribute="trailing" secondItem="piB-Gy-QCa" secondAttribute="trailing" id="Htf-hL-aJj"/>
                 <constraint firstAttribute="bottom" secondItem="fbx-YC-qHs" secondAttribute="bottom" constant="64" id="J3x-rf-L9f"/>
-                <constraint firstAttribute="bottom" secondItem="eVt-ve-VmB" secondAttribute="bottom" constant="20" id="KCi-BI-FJQ"/>
-                <constraint firstAttribute="trailing" secondItem="eVt-ve-VmB" secondAttribute="trailing" constant="20" id="L0M-fU-M18"/>
                 <constraint firstItem="fbx-YC-qHs" firstAttribute="top" secondItem="piB-Gy-QCa" secondAttribute="bottom" id="L4B-cj-XJS"/>
-                <constraint firstItem="eVt-ve-VmB" firstAttribute="leading" secondItem="sVB-3V-Y0k" secondAttribute="trailing" constant="8" id="Okp-Tv-xiQ"/>
+                <constraint firstAttribute="trailing" secondItem="ahr-sZ-Pyx" secondAttribute="trailing" id="Wxa-9q-i1u"/>
                 <constraint firstItem="piB-Gy-QCa" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="dEZ-w3-4Bg"/>
                 <constraint firstItem="fbx-YC-qHs" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="8" id="mLG-xd-Co3"/>
-                <constraint firstItem="sVB-3V-Y0k" firstAttribute="centerY" secondItem="eVt-ve-VmB" secondAttribute="centerY" id="t0w-fU-UlE"/>
+                <constraint firstAttribute="bottom" secondItem="ahr-sZ-Pyx" secondAttribute="bottom" id="uxW-YB-VBX"/>
             </constraints>
             <point key="canvasLocation" x="122" y="121.5"/>
         </customView>

+ 13 - 5
PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/Cell/KMCompressDiscardPanelTableCellView.swift

@@ -41,10 +41,11 @@ class KMCompressDiscardPanelTableCellView: KMBaseCompressTableCellView, NibLoada
         
         for button in self.buttonConetntView.subviews {
             (button as? ComponentCheckBox)?.properties.checkboxType = .normal // 重置所有按钮状态
+            (button as? ComponentCheckBox)?.reloadData()
         }
 
         // 定义选项与按钮标签的映射关系
-        let optionsMap: [KMCompressSettingPanelType: [Int: Any]] = [
+        let optionsMap: [KMCompressSettingPanelType: [Int: Bool]] = [
             .discardObject: [
                 0: data.objectOptions.contains(.formAndAction),
                 1: data.objectOptions.contains(.javaScript),
@@ -69,10 +70,17 @@ class KMCompressDiscardPanelTableCellView: KMBaseCompressTableCellView, NibLoada
         
         // 更新按钮状态
         if let options = optionsMap[model.type] {
-            for (tag, isSelected) in options where isSelected as? Bool == true {
-                if let button = self.buttonConetntView.viewWithTag(tag) as? ComponentCheckBox {
-                    button.properties.checkboxType = .selected
-                    button.reloadData()
+            for (tag, isSelected) in options {
+                for button in buttonConetntView.subviews {
+                    guard let checkBox: ComponentCheckBox =  button as? ComponentCheckBox else { return }
+                    if checkBox.viewTag == tag {
+                        if isSelected {
+                            checkBox.properties.checkboxType = .selected
+                        } else {
+                            checkBox.properties.checkboxType = .normal
+                        }
+                        checkBox.reloadData()
+                    }
                 }
             }
         }

+ 2 - 2
PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/Cell/KMCompressDiscardPanelTableCellView.xib

@@ -20,9 +20,9 @@
                     <rect key="frame" x="0.0" y="136" width="480" height="40"/>
                     <subviews>
                         <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0bg-Yr-4UM">
-                            <rect key="frame" x="-2" y="12" width="142" height="16"/>
+                            <rect key="frame" x="-2" y="12" width="145" height="16"/>
                             <textFieldCell key="cell" lineBreakMode="clipping" title="Discard Objects Panel:" id="5l1-4d-VTL">
-                                <font key="font" usesAppearanceFont="YES"/>
+                                <font key="font" metaFont="systemMedium" size="13"/>
                                 <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
                                 <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                             </textFieldCell>

+ 11 - 6
PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/Cell/KMCompressFontsPanelTableCellView.swift

@@ -6,13 +6,14 @@
 //
 
 import Cocoa
+import KMComponentLibrary
 
 typealias KMCompressFontsPanelTableCellViewSelectBlcok = (_ view: KMCompressFontsPanelTableCellView, _ isSelect: Bool) -> Void
 
 class KMCompressFontsPanelTableCellView: KMBaseCompressTableCellView, NibLoadable {
 
     @IBOutlet weak var titleLabel: NSTextField!
-    @IBOutlet weak var fontButton: NSButton!
+    @IBOutlet weak var fontButton: ComponentRadio!
     
     var isSelect: Bool = false
     
@@ -42,22 +43,26 @@ class KMCompressFontsPanelTableCellView: KMBaseCompressTableCellView, NibLoadabl
         guard let model = model else { return }
         
         self.titleLabel.stringValue = KMLocalizedString(model.title, comment: "")
-        self.fontButton.stringValue = KMLocalizedString(model.content as? String ?? "", comment: "")
+        fontButton.properties = ComponentCheckBoxProperty(size: .s, text: KMLocalizedString(model.content as? String ?? "", comment: ""), checkboxType: .normal)
+        fontButton.setTarget(self, action: #selector(fontButtonAction(_:)))
     }
     
     override func reloadData() {
         guard let data = data else { return }
         
         isSelect = data.fontUnembed
-        self.fontButton.state = isSelect ? .on:.off
+        fontButton.properties.checkboxType = isSelect ? .selected:.normal
+        fontButton.reloadData()
     }
     
-    @IBAction func fontButtonAction(_ sender: NSButton) {
+    @objc func fontButtonAction(_ sender: ComponentRadio) {
         if (isSelect) {
-            sender.state = .off
+            sender.properties.checkboxType = .normal
         } else {
-            sender.state = .on
+            sender.properties.checkboxType = .selected
         }
+        sender.reloadData()
+        
         isSelect = !isSelect
         
         guard let callBack = selectAction else { return }

+ 34 - 29
PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/Cell/KMCompressFontsPanelTableCellView.xib

@@ -10,54 +10,59 @@
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="c22-O7-iKe" customClass="KMCompressFontsPanelTableCellView" customModule="PDF_Reader_Pro" customModuleProvider="target">
-            <rect key="frame" x="0.0" y="0.0" width="480" height="100"/>
+            <rect key="frame" x="0.0" y="0.0" width="480" height="104"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
-                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fpb-rb-lmX">
-                    <rect key="frame" x="-2" y="80" width="82" height="16"/>
-                    <textFieldCell key="cell" lineBreakMode="clipping" title="Fonts Panel:" id="LzU-xF-YBf">
-                        <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>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="sqs-WM-2DO">
-                    <rect key="frame" x="0.0" y="24" width="480" height="50"/>
+                    <rect key="frame" x="0.0" y="32" width="480" height="32"/>
                     <subviews>
-                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yAw-Tu-dup">
-                            <rect key="frame" x="14" y="16.5" width="135" height="18"/>
-                            <buttonCell key="cell" type="radio" title="Unembed Any Font" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="KTe-0S-w7D">
-                                <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
-                                <font key="font" metaFont="cellTitle"/>
-                            </buttonCell>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="q56-4e-oUR" customClass="ComponentRadio" customModule="KMComponentLibrary">
+                            <rect key="frame" x="0.0" y="0.0" width="480" height="32"/>
                             <constraints>
-                                <constraint firstAttribute="height" constant="15" id="7dL-nU-pYa"/>
+                                <constraint firstAttribute="height" constant="32" id="u57-OJ-UGY"/>
                             </constraints>
-                            <connections>
-                                <action selector="fontButtonAction:" target="c22-O7-iKe" id="iPr-fV-9C3"/>
-                            </connections>
-                        </button>
+                        </customView>
                     </subviews>
                     <constraints>
-                        <constraint firstItem="yAw-Tu-dup" firstAttribute="centerY" secondItem="sqs-WM-2DO" secondAttribute="centerY" id="0Ow-RC-MPG"/>
-                        <constraint firstItem="yAw-Tu-dup" firstAttribute="leading" secondItem="sqs-WM-2DO" secondAttribute="leading" constant="16" id="Omy-bP-1bS"/>
-                        <constraint firstAttribute="height" constant="50" id="YyV-rq-IJe"/>
+                        <constraint firstItem="q56-4e-oUR" firstAttribute="centerY" secondItem="sqs-WM-2DO" secondAttribute="centerY" id="Wgz-Cg-bUq"/>
+                        <constraint firstAttribute="height" constant="32" id="YyV-rq-IJe"/>
+                        <constraint firstItem="q56-4e-oUR" firstAttribute="leading" secondItem="sqs-WM-2DO" secondAttribute="leading" id="aCH-W8-Umd"/>
+                        <constraint firstAttribute="trailing" secondItem="q56-4e-oUR" secondAttribute="trailing" id="fmE-j2-sCF"/>
+                    </constraints>
+                </customView>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="YTP-uf-OcE">
+                    <rect key="frame" x="0.0" y="64" width="480" height="40"/>
+                    <subviews>
+                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fpb-rb-lmX">
+                            <rect key="frame" x="-2" y="12" width="83" height="16"/>
+                            <textFieldCell key="cell" lineBreakMode="clipping" title="Fonts Panel:" id="LzU-xF-YBf">
+                                <font key="font" metaFont="systemMedium" size="13"/>
+                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                            </textFieldCell>
+                        </textField>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="fpb-rb-lmX" firstAttribute="centerY" secondItem="YTP-uf-OcE" secondAttribute="centerY" id="D78-Hy-dcA"/>
+                        <constraint firstItem="fpb-rb-lmX" firstAttribute="leading" secondItem="YTP-uf-OcE" secondAttribute="leading" id="IfV-dI-c5b"/>
+                        <constraint firstAttribute="height" constant="40" id="wnj-I1-Jbo"/>
                     </constraints>
                 </customView>
             </subviews>
             <constraints>
-                <constraint firstItem="fpb-rb-lmX" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" constant="4" id="0Vb-Hk-hgC"/>
-                <constraint firstItem="sqs-WM-2DO" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" constant="26" id="I7i-Ro-u3i"/>
+                <constraint firstItem="sqs-WM-2DO" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" constant="40" id="I7i-Ro-u3i"/>
                 <constraint firstAttribute="trailing" secondItem="sqs-WM-2DO" secondAttribute="trailing" id="LzV-GD-5nC"/>
+                <constraint firstItem="YTP-uf-OcE" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="bhV-Fg-xzK"/>
                 <constraint firstItem="sqs-WM-2DO" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="c7r-g0-6QK"/>
-                <constraint firstItem="fpb-rb-lmX" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="om6-KN-al7"/>
+                <constraint firstAttribute="trailing" secondItem="YTP-uf-OcE" secondAttribute="trailing" id="f7N-zQ-OFW"/>
+                <constraint firstItem="YTP-uf-OcE" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="vWH-KR-wxf"/>
             </constraints>
             <connections>
                 <outlet property="buttonConetntView" destination="sqs-WM-2DO" id="x3z-oV-IHf"/>
-                <outlet property="fontButton" destination="yAw-Tu-dup" id="yRa-vY-Dv6"/>
+                <outlet property="fontButton" destination="q56-4e-oUR" id="T5t-lA-IBh"/>
                 <outlet property="titleLabel" destination="fpb-rb-lmX" id="zSp-ex-yDG"/>
             </connections>
-            <point key="canvasLocation" x="132" y="-152.5"/>
+            <point key="canvasLocation" x="132" y="-151"/>
         </customView>
     </objects>
 </document>

+ 111 - 65
PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/Cell/KMCompressImagesPanelTableCellView.swift

@@ -6,12 +6,19 @@
 //
 
 import Cocoa
+import KMComponentLibrary
 
 class KMCompressImagesPanelTableCellView: KMBaseCompressTableCellView, NibLoadable, NSTextFieldDelegate {
     @IBOutlet weak var titleLabel: NSTextField!
-    @IBOutlet weak var imagePPITextField: NSTextField!
-    @IBOutlet weak var imageAbovePPITextField: NSTextField!
-    @IBOutlet weak var comboBox: NSComboBox!
+    @IBOutlet weak var imageLabel: NSTextField!
+    @IBOutlet weak var imagePPILabel: NSTextField!
+    @IBOutlet weak var imageTextField: ComponentInputNumber!
+    @IBOutlet weak var imageAboveLabel: NSTextField!
+    @IBOutlet weak var imageAbovePPILabel: NSTextField!
+    @IBOutlet weak var imageAboveTextField: ComponentInputNumber!
+    @IBOutlet weak var qualityLabel: NSTextField!
+    @IBOutlet weak var qualityCombox: ComponentSelect!
+    
     @IBOutlet weak var imagePPIAlertLabel: NSTextField!
     @IBOutlet weak var imageAbovePPIAlertLabel: NSTextField!
     
@@ -34,10 +41,7 @@ class KMCompressImagesPanelTableCellView: KMBaseCompressTableCellView, NibLoadab
     }
     
     override func setup() {
-        guard let  imagePPITextField = imagePPITextField else { return }
         
-        imagePPITextField.delegate = self
-        imageAbovePPITextField.delegate = self
     }
     
     override func updateUI() {
@@ -45,99 +49,141 @@ class KMCompressImagesPanelTableCellView: KMBaseCompressTableCellView, NibLoadab
         
         guard let model = model else { return }
         
-        guard let  imagePPITextField = imagePPITextField else { return }
-        // 设置 NumberFormatter
-        var formatter = NumberFormatter()
-        formatter.numberStyle = .decimal
-        imagePPITextField.formatter = formatter
-        
-        formatter = NumberFormatter()
-        formatter.numberStyle = .decimal
-        self.imageAbovePPITextField.formatter = formatter
+//        guard let  imagePPITextField = imagePPITextField else { return }
+//        // 设置 NumberFormatter
+//        var formatter = NumberFormatter()
+//        formatter.numberStyle = .decimal
+//        imagePPITextField.formatter = formatter
+//        
+//        formatter = NumberFormatter()
+//        formatter.numberStyle = .decimal
+//        self.imageAbovePPITextField.formatter = formatter
+//
+        imageTextField.properties = ComponentInputNumberProperty(
+                                                                 size: .s,
+                                                                 state: .normal,
+                                                                 minSize: 1,
+                                                                 maxSize: 10000000,
+                                                                 text:"10",
+                                                                 valueType: .intType,
+                                                                 isShowStep: false)
+        imageTextField.delegate = self
+        imageTextField.reloadData()
         
-        self.imagePPIAlertLabel.textColor = NSColor(hex: "#E73861");
-        self.imageAbovePPIAlertLabel.textColor = NSColor(hex: "#E73861");
+        imageAboveTextField.properties = ComponentInputNumberProperty(
+                                                                 size: .s,
+                                                                 state: .normal,
+                                                                 minSize: 1,
+                                                                 maxSize: 10000000,
+                                                                 text:"100",
+                                                                 valueType: .intType,
+                                                                 isShowStep: false)
+        imageAboveTextField.delegate = self
+        imageAboveTextField.reloadData()
         
-        self.comboBox.backgroundColor(NSColor(hex: "#6E6D70"))
+        qualityCombox.properties = ComponentSelectProperties(size: .s,
+                                                           state: .normal)
+        var rotateItems: [ComponentMenuitemProperty] = []
+        for string in ["Hight", "Medium", "Low"] {
+            let item = ComponentMenuitemProperty(type: .normal, text: string)
+            rotateItems.append(item)
+        }
+        qualityCombox.updateMenuItemsArr(rotateItems)
+        qualityCombox.delegate = self
+        qualityCombox.reloadData()
         
         self.hiddenPPIAlert()
         self.hiddenAbovePPIAlert()
         
-        self.comboBox.selectItem(at: 0)
         self.titleLabel.stringValue = KMLocalizedString(model.title, comment: "")
+        
+        imagePPIAlertLabel.textColor  = ComponentLibrary.shared.getComponentColorFromKey("comp-field/colorText-error")
+        imageAbovePPIAlertLabel.textColor = ComponentLibrary.shared.getComponentColorFromKey("comp-field/colorText-error")
     }
     
     override func reloadData() {
         guard let data = data else { return }
         
-        self.imagePPITextField.stringValue = "\(data.ppi)"
-        self.imageAbovePPITextField.stringValue = "\(data.maxPpi)"
-        self.comboBox.selectItem(at: data.imageQualityType.rawValue)
+        imageTextField.properties.text = "\(data.ppi)"
+        imageAboveTextField.properties.text = "\(data.maxPpi)"
+        qualityCombox.selectItemAtIndex(data.imageQualityType.rawValue)
+        
+        imageTextField.reloadData()
+        imageAboveTextField.reloadData()
     }
 }
 
 extension KMCompressImagesPanelTableCellView {
-    // 实时过滤输入,限制为数字
-    func controlTextDidChange(_ obj: Notification) {
-        guard let textField = obj.object as? NSTextField else { return }
+    func showPPIAlert() {
+        self.imagePPIAlertLabel.stringValue = KMLocalizedString("Limit 10-2400", comment: "")
+        self.imagePPIAlertLabel.isHidden = false
+    }
+    
+    func hiddenPPIAlert() {
+        self.imagePPIAlertLabel.isHidden = true
+    }
+    
+    func showAbovePPIAlert() {
+        let tempValue = Int(imageTextField.properties.text) ?? 10
+        self.imageAbovePPIAlertLabel.stringValue = NSLocalizedString("Limit \(tempValue)-\(tempValue * 10)", comment: "")
+        self.imageAbovePPIAlertLabel.isHidden = false
+    }
+    
+    func hiddenAbovePPIAlert() {
+        self.imageAbovePPIAlertLabel.isHidden = true
+    }
+}
 
-        // 仅保留数字字符
-        let filtered = textField.stringValue.filter { $0.isNumber }
-        textField.stringValue = filtered
+extension KMCompressImagesPanelTableCellView: ComponentSelectDelegate {
+    func componentSelectDidSelect(view: ComponentSelect?, menuItemProperty: ComponentMenuitemProperty?) {
+        if view == qualityCombox {
+            guard let callBack = actionBlock else { return }
+            
+            let data = KMCompressSettingModel(modelsType: KMCompressModelsType(rawValue: qualityCombox.indexOfSelect()) ?? .standard)
+            callBack(self, data)
+        }
+    }
+    
+    func componentSelectTextDidChange(_ view: ComponentSelect) {
         
-        if textField == imagePPITextField {
+    }
+    
+    func componentSelectTextDidEndEditing(_ view: ComponentSelect) {
+
+        
+    }
+}
+
+//MARK: - ComponentInputNumberDelegate
+extension KMCompressImagesPanelTableCellView: ComponentInputNumberDelegate {
+    func componentInputNumberDidValueChanged(inputNumber: ComponentInputNumber?) {
+        if inputNumber == imageTextField {
             self.hiddenPPIAlert()
-        } else if textField == imageAbovePPITextField {
+        } else if inputNumber == imageAboveTextField {
             self.hiddenAbovePPIAlert()
         }
     }
-
-    // 检查输入范围并提示
-    func controlTextDidEndEditing(_ obj: Notification) {
-        guard let textField = obj.object as? NSTextField,
-              let value = Int(textField.stringValue) else { return }
-
-        // 检查是否超出范围
-        
-        if textField == imagePPITextField {
+    
+    func componentInputNumberDidFinishEditing(inputNumber: ComponentInputNumber?) {
+        var value = Int(imageTextField.properties.text) ?? 10
+        if inputNumber == imageTextField {
             if value < 10 || value > 2400 {
                 self.showPPIAlert()
             }
         }
         
-        let tempValue = Int(self.imagePPITextField.stringValue) ?? 10
+        let tempValue = Int(imageTextField.properties.text) ?? 10
+        value = Int(imageAboveTextField.properties.text) ?? 10
         if value < tempValue || value > tempValue * 10 {
             self.showAbovePPIAlert()
         }
     }
-}
-
-extension KMCompressImagesPanelTableCellView {
-    func showPPIAlert() {
-        self.imagePPIAlertLabel.stringValue = NSLocalizedString("Limit 10-2400", comment: "")
-        self.imagePPIAlertLabel.isHidden = false
-        self.imagePPITextField.layer?.borderColor = NSColor(hex: "#E73861").cgColor;
-        self.imagePPITextField.backgroundColor(NSColor(hex: "#393C3E"))
-    }
     
-    func hiddenPPIAlert() {
-        self.imagePPIAlertLabel.isHidden = true
-        self.imagePPITextField.layer?.borderColor = NSColor(hex: "#FFFFFF").withAlphaComponent(0.08).cgColor;
-        self.imagePPITextField.backgroundColor(NSColor(hex: "#6E6D70"))
-
-    }
+    func componentInputNumberDidIncrease(inputNumber: ComponentInputNumber?) {
     
-    func showAbovePPIAlert() {
-        let tempValue = Int(self.imagePPITextField.stringValue) ?? 10
-        self.imageAbovePPIAlertLabel.stringValue = NSLocalizedString("Limit \(tempValue)-\(tempValue * 10)", comment: "")
-        self.imageAbovePPIAlertLabel.isHidden = false
-        self.imageAbovePPITextField.layer?.borderColor = NSColor(hex: "#E73861").cgColor;
-        self.imageAbovePPITextField.backgroundColor(NSColor(hex: "#393C3E"))
     }
     
-    func hiddenAbovePPIAlert() {
-        self.imageAbovePPIAlertLabel.isHidden = true
-        self.imageAbovePPITextField.layer?.borderColor = NSColor(hex: "#FFFFFF").withAlphaComponent(0.08).cgColor;
-        self.imageAbovePPITextField.backgroundColor(NSColor(hex: "#6E6D70"))
+    func componentInputNumberDidDecrease(inputNumber: ComponentInputNumber?) {
+    
     }
 }

+ 172 - 176
PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/Cell/KMCompressImagesPanelTableCellView.xib

@@ -10,216 +10,212 @@
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="c22-O7-iKe" customClass="KMCompressImagesPanelTableCellView" customModule="PDF_Reader_Pro" customModuleProvider="target">
-            <rect key="frame" x="0.0" y="0.0" width="584" height="100"/>
+            <rect key="frame" x="0.0" y="0.0" width="576" height="144"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="Znx-Wg-LS4">
-                    <rect key="frame" x="0.0" y="24" width="584" height="76"/>
+                    <rect key="frame" x="0.0" y="16" width="576" height="128"/>
                     <subviews>
-                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ht4-BQ-Ga8">
-                            <rect key="frame" x="-2" y="56" width="81" height="16"/>
-                            <textFieldCell key="cell" lineBreakMode="clipping" title="ImagePanel:" id="Xy5-1R-n9e">
-                                <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>
                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="Yqh-YR-NAF">
-                            <rect key="frame" x="0.0" y="0.0" width="584" height="50"/>
+                            <rect key="frame" x="0.0" y="0.0" width="576" height="88"/>
                             <subviews>
-                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="92j-6E-enx">
-                                    <rect key="frame" x="2" y="17" width="89" height="16"/>
-                                    <textFieldCell key="cell" lineBreakMode="clipping" title="PPI for Image:" id="6hD-5C-hjn">
-                                        <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>
-                                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="rRb-W1-BeU">
-                                    <rect key="frame" x="95" y="15" width="50" height="20"/>
-                                    <view key="contentView" id="ADh-6q-unE">
-                                        <rect key="frame" x="0.0" y="0.0" width="50" height="20"/>
-                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                        <subviews>
-                                            <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="YEb-Wo-gCO">
-                                                <rect key="frame" x="0.0" y="0.0" width="50" height="20"/>
-                                                <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="iE6-OF-SCe">
-                                                    <font key="font" usesAppearanceFont="YES"/>
-                                                    <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
-                                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                                </textFieldCell>
-                                            </textField>
-                                        </subviews>
-                                        <constraints>
-                                            <constraint firstAttribute="bottom" secondItem="YEb-Wo-gCO" secondAttribute="bottom" id="471-q4-tno"/>
-                                            <constraint firstItem="YEb-Wo-gCO" firstAttribute="top" secondItem="ADh-6q-unE" secondAttribute="top" id="L2k-hm-JXd"/>
-                                            <constraint firstItem="YEb-Wo-gCO" firstAttribute="leading" secondItem="ADh-6q-unE" secondAttribute="leading" id="P0n-SG-rsj"/>
-                                            <constraint firstAttribute="trailing" secondItem="YEb-Wo-gCO" secondAttribute="trailing" id="SWZ-gr-ACH"/>
-                                        </constraints>
-                                    </view>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="el0-jU-5GK">
+                                    <rect key="frame" x="0.0" y="40" width="576" height="48"/>
+                                    <subviews>
+                                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="jwZ-kI-Wr2">
+                                            <rect key="frame" x="0.0" y="16" width="576" height="32"/>
+                                            <subviews>
+                                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="92j-6E-enx">
+                                                    <rect key="frame" x="-2" y="8" width="89" height="16"/>
+                                                    <textFieldCell key="cell" lineBreakMode="clipping" title="PPI for Image:" id="6hD-5C-hjn">
+                                                        <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>
+                                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="Mel-Y9-GUU" customClass="ComponentInputNumber" customModule="KMComponentLibrary">
+                                                    <rect key="frame" x="93" y="0.0" width="166" height="32"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" constant="166" id="72q-9H-b1c"/>
+                                                        <constraint firstAttribute="height" constant="32" id="zJU-TA-4ec"/>
+                                                    </constraints>
+                                                </customView>
+                                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="taM-CD-cQz">
+                                                    <rect key="frame" x="261" y="8" width="24" height="16"/>
+                                                    <textFieldCell key="cell" lineBreakMode="clipping" title="PPI" id="DYQ-so-WNA">
+                                                        <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" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nPY-8Y-8dL">
+                                                    <rect key="frame" x="297" y="8" width="137" height="16"/>
+                                                    <textFieldCell key="cell" lineBreakMode="clipping" title="PPI For Image Above:" id="YvU-Bd-LdU">
+                                                        <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>
+                                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vte-w4-cRw">
+                                                    <rect key="frame" x="543" y="8" width="24" height="16"/>
+                                                    <textFieldCell key="cell" lineBreakMode="clipping" title="PPI" id="BP0-6O-ISf">
+                                                        <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>
+                                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="Do5-Pt-nCk" customClass="ComponentInputNumber" customModule="KMComponentLibrary">
+                                                    <rect key="frame" x="440" y="0.0" width="101" height="32"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" constant="101" id="agV-zj-32A"/>
+                                                        <constraint firstAttribute="height" constant="32" id="jps-41-egA"/>
+                                                    </constraints>
+                                                </customView>
+                                            </subviews>
+                                            <constraints>
+                                                <constraint firstItem="nPY-8Y-8dL" firstAttribute="leading" secondItem="taM-CD-cQz" secondAttribute="trailing" constant="16" id="16E-9r-Kef"/>
+                                                <constraint firstItem="vte-w4-cRw" firstAttribute="leading" secondItem="Do5-Pt-nCk" secondAttribute="trailing" constant="4" id="GDg-dE-83m"/>
+                                                <constraint firstItem="Mel-Y9-GUU" firstAttribute="leading" secondItem="92j-6E-enx" secondAttribute="trailing" constant="8" id="Mxt-JF-Lud"/>
+                                                <constraint firstItem="vte-w4-cRw" firstAttribute="centerY" secondItem="jwZ-kI-Wr2" secondAttribute="centerY" id="Y8S-zZ-6pd"/>
+                                                <constraint firstItem="Do5-Pt-nCk" firstAttribute="centerY" secondItem="jwZ-kI-Wr2" secondAttribute="centerY" id="cLF-p7-M0O"/>
+                                                <constraint firstItem="Mel-Y9-GUU" firstAttribute="centerY" secondItem="92j-6E-enx" secondAttribute="centerY" id="di7-L8-diC"/>
+                                                <constraint firstItem="taM-CD-cQz" firstAttribute="centerY" secondItem="Mel-Y9-GUU" secondAttribute="centerY" id="doB-3e-R5I"/>
+                                                <constraint firstItem="nPY-8Y-8dL" firstAttribute="centerY" secondItem="jwZ-kI-Wr2" secondAttribute="centerY" id="j95-hs-cyI"/>
+                                                <constraint firstItem="92j-6E-enx" firstAttribute="leading" secondItem="jwZ-kI-Wr2" secondAttribute="leading" id="mG5-4R-W2z"/>
+                                                <constraint firstItem="92j-6E-enx" firstAttribute="leading" secondItem="jwZ-kI-Wr2" secondAttribute="leading" id="pwV-sG-ZwQ"/>
+                                                <constraint firstItem="92j-6E-enx" firstAttribute="centerY" secondItem="jwZ-kI-Wr2" secondAttribute="centerY" id="q3o-9e-rFd"/>
+                                                <constraint firstItem="Do5-Pt-nCk" firstAttribute="leading" secondItem="nPY-8Y-8dL" secondAttribute="trailing" constant="8" id="thg-92-v0T"/>
+                                                <constraint firstItem="taM-CD-cQz" firstAttribute="leading" secondItem="Mel-Y9-GUU" secondAttribute="trailing" constant="4" id="vmF-Xx-UMJ"/>
+                                                <constraint firstAttribute="height" constant="32" id="vpm-AI-5gW"/>
+                                            </constraints>
+                                        </customView>
+                                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="7oL-Wy-HH6">
+                                            <rect key="frame" x="0.0" y="0.0" width="576" height="16"/>
+                                            <subviews>
+                                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="a8H-z1-aAi">
+                                                    <rect key="frame" x="91" y="0.0" width="37" height="16"/>
+                                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="KGH-MJ-NZa">
+                                                        <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>
+                                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="s1O-eM-yjI">
+                                                    <rect key="frame" x="438" y="0.0" width="37" height="16"/>
+                                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="p3L-Ps-J7G">
+                                                        <font key="font" usesAppearanceFont="YES"/>
+                                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                    </textFieldCell>
+                                                </textField>
+                                            </subviews>
+                                            <constraints>
+                                                <constraint firstItem="a8H-z1-aAi" firstAttribute="centerY" secondItem="7oL-Wy-HH6" secondAttribute="centerY" id="D0K-EU-FIH"/>
+                                                <constraint firstItem="s1O-eM-yjI" firstAttribute="centerY" secondItem="7oL-Wy-HH6" secondAttribute="centerY" id="PoC-qM-nkQ"/>
+                                            </constraints>
+                                        </customView>
+                                    </subviews>
                                     <constraints>
-                                        <constraint firstAttribute="height" constant="20" id="AZ4-sb-4TZ"/>
-                                        <constraint firstAttribute="width" constant="50" id="jZL-ix-Q12"/>
+                                        <constraint firstItem="a8H-z1-aAi" firstAttribute="leading" secondItem="Mel-Y9-GUU" secondAttribute="leading" id="FIX-sl-zOW"/>
+                                        <constraint firstItem="jwZ-kI-Wr2" firstAttribute="top" secondItem="el0-jU-5GK" secondAttribute="top" id="Hnd-ca-kMm"/>
+                                        <constraint firstAttribute="bottom" secondItem="7oL-Wy-HH6" secondAttribute="bottom" id="K77-tJ-FHG"/>
+                                        <constraint firstAttribute="height" constant="48" id="LAJ-Yz-n6V"/>
+                                        <constraint firstItem="7oL-Wy-HH6" firstAttribute="leading" secondItem="el0-jU-5GK" secondAttribute="leading" id="U1i-xL-PGF"/>
+                                        <constraint firstAttribute="trailing" secondItem="7oL-Wy-HH6" secondAttribute="trailing" id="Wlm-C5-Sc7"/>
+                                        <constraint firstAttribute="trailing" secondItem="jwZ-kI-Wr2" secondAttribute="trailing" id="hlr-rq-IcS"/>
+                                        <constraint firstItem="7oL-Wy-HH6" firstAttribute="top" secondItem="jwZ-kI-Wr2" secondAttribute="bottom" id="nQo-jN-ykf"/>
+                                        <constraint firstItem="s1O-eM-yjI" firstAttribute="leading" secondItem="Do5-Pt-nCk" secondAttribute="leading" id="p7D-29-QTE"/>
+                                        <constraint firstItem="jwZ-kI-Wr2" firstAttribute="leading" secondItem="el0-jU-5GK" secondAttribute="leading" id="siL-Gh-Wid"/>
                                     </constraints>
-                                </box>
-                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="taM-CD-cQz">
-                                    <rect key="frame" x="147" y="17" width="24" height="16"/>
-                                    <textFieldCell key="cell" lineBreakMode="clipping" title="PPI" id="DYQ-so-WNA">
-                                        <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" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nPY-8Y-8dL">
-                                    <rect key="frame" x="187" y="17" width="137" height="16"/>
-                                    <textFieldCell key="cell" lineBreakMode="clipping" title="PPI For Image Above:" id="YvU-Bd-LdU">
-                                        <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>
-                                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="T1Q-4g-yfg">
-                                    <rect key="frame" x="328" y="15" width="50" height="20"/>
-                                    <view key="contentView" id="yLL-Y6-iJB">
-                                        <rect key="frame" x="0.0" y="0.0" width="50" height="20"/>
-                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                        <subviews>
-                                            <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="iP8-Kl-ohG">
-                                                <rect key="frame" x="0.0" y="0.0" width="50" height="20"/>
-                                                <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="LxG-T2-nGg">
-                                                    <font key="font" usesAppearanceFont="YES"/>
-                                                    <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
-                                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                                </textFieldCell>
-                                            </textField>
-                                        </subviews>
-                                        <constraints>
-                                            <constraint firstAttribute="trailing" secondItem="iP8-Kl-ohG" secondAttribute="trailing" id="VZA-lh-a0K"/>
-                                            <constraint firstItem="iP8-Kl-ohG" firstAttribute="leading" secondItem="yLL-Y6-iJB" secondAttribute="leading" id="bm8-Fi-Ylh"/>
-                                            <constraint firstItem="iP8-Kl-ohG" firstAttribute="top" secondItem="yLL-Y6-iJB" secondAttribute="top" id="lsd-zB-sGA"/>
-                                            <constraint firstAttribute="bottom" secondItem="iP8-Kl-ohG" secondAttribute="bottom" id="sb7-i0-laX"/>
-                                        </constraints>
-                                    </view>
+                                </customView>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="tgJ-wy-Tor">
+                                    <rect key="frame" x="0.0" y="0.0" width="576" height="32"/>
+                                    <subviews>
+                                        <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="gUI-3C-QkZ">
+                                            <rect key="frame" x="-2" y="8" width="54" height="16"/>
+                                            <textFieldCell key="cell" lineBreakMode="clipping" title="Quality:" id="DEu-Gw-mlz">
+                                                <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>
+                                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="jtD-qC-uj5" customClass="ComponentSelect" customModule="KMComponentLibrary">
+                                            <rect key="frame" x="58" y="0.0" width="320" height="32"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="32" id="5zo-Sk-Ifp"/>
+                                                <constraint firstAttribute="width" constant="320" id="ca6-Oq-VIU"/>
+                                            </constraints>
+                                        </customView>
+                                    </subviews>
                                     <constraints>
-                                        <constraint firstAttribute="height" constant="20" id="PCm-5n-mSf"/>
-                                        <constraint firstAttribute="width" constant="50" id="raH-h1-YEU"/>
+                                        <constraint firstItem="jtD-qC-uj5" firstAttribute="centerY" secondItem="tgJ-wy-Tor" secondAttribute="centerY" id="1pL-JF-6Ty"/>
+                                        <constraint firstItem="gUI-3C-QkZ" firstAttribute="centerY" secondItem="tgJ-wy-Tor" secondAttribute="centerY" id="36d-kL-tIC"/>
+                                        <constraint firstAttribute="height" constant="32" id="K01-vu-uf6"/>
+                                        <constraint firstItem="gUI-3C-QkZ" firstAttribute="leading" secondItem="tgJ-wy-Tor" secondAttribute="leading" id="fJX-3c-et8"/>
+                                        <constraint firstItem="jtD-qC-uj5" firstAttribute="leading" secondItem="gUI-3C-QkZ" secondAttribute="trailing" constant="8" id="ss3-sg-Atz"/>
                                     </constraints>
-                                </box>
-                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vte-w4-cRw">
-                                    <rect key="frame" x="380" y="17" width="24" height="16"/>
-                                    <textFieldCell key="cell" lineBreakMode="clipping" title="PPI" id="BP0-6O-ISf">
-                                        <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" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lD6-Gr-28s">
-                                    <rect key="frame" x="420" y="17" width="54" height="16"/>
-                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Quality:" id="uTB-CU-JNM">
-                                        <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>
-                                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="XUj-mR-Ka0">
-                                    <rect key="frame" x="478" y="15" width="76" height="20"/>
-                                    <view key="contentView" id="xbz-NL-sTL">
-                                        <rect key="frame" x="0.0" y="0.0" width="76" height="20"/>
-                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                        <subviews>
-                                            <comboBox focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="05O-ID-Yh1">
-                                                <rect key="frame" x="-1" y="-2" width="80" height="23"/>
-                                                <comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="jEM-6s-eQ3">
-                                                    <font key="font" metaFont="system"/>
-                                                    <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
-                                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                                    <objectValues>
-                                                        <string>Low</string>
-                                                        <string>Medium</string>
-                                                        <string>Hight</string>
-                                                    </objectValues>
-                                                </comboBoxCell>
-                                            </comboBox>
-                                        </subviews>
-                                        <constraints>
-                                            <constraint firstItem="05O-ID-Yh1" firstAttribute="leading" secondItem="xbz-NL-sTL" secondAttribute="leading" id="0R5-uC-NfT"/>
-                                            <constraint firstItem="05O-ID-Yh1" firstAttribute="top" secondItem="xbz-NL-sTL" secondAttribute="top" id="6IJ-Am-u7u"/>
-                                            <constraint firstAttribute="trailing" secondItem="05O-ID-Yh1" secondAttribute="trailing" id="Cgz-ve-0ad"/>
-                                            <constraint firstAttribute="bottom" secondItem="05O-ID-Yh1" secondAttribute="bottom" id="tDi-cZ-uBN"/>
-                                        </constraints>
-                                    </view>
-                                    <constraints>
-                                        <constraint firstAttribute="height" constant="20" id="gKI-Vf-5GK"/>
-                                        <constraint firstAttribute="width" constant="76" id="gOn-AM-2mB"/>
-                                    </constraints>
-                                </box>
-                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="cyX-jp-tkC">
-                                    <rect key="frame" x="93" y="2" width="66" height="11"/>
-                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Limit 10-2400" id="vSd-hr-wUA">
-                                        <font key="font" metaFont="miniSystem"/>
-                                        <color key="textColor" name="labelColor" 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="iix-Ff-Ic1">
-                                    <rect key="frame" x="326" y="2" width="28" height="11"/>
-                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="2Cb-0L-wwu">
-                                        <font key="font" metaFont="miniSystem"/>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="88" id="JuA-Pt-tsa"/>
+                                <constraint firstItem="tgJ-wy-Tor" firstAttribute="leading" secondItem="Yqh-YR-NAF" secondAttribute="leading" id="KUp-i9-L5T"/>
+                                <constraint firstAttribute="trailing" secondItem="tgJ-wy-Tor" secondAttribute="trailing" id="dwE-8r-CbR"/>
+                                <constraint firstAttribute="trailing" secondItem="el0-jU-5GK" secondAttribute="trailing" id="f4X-El-C3P"/>
+                                <constraint firstItem="el0-jU-5GK" firstAttribute="top" secondItem="Yqh-YR-NAF" secondAttribute="top" id="k49-nQ-hFN"/>
+                                <constraint firstItem="el0-jU-5GK" firstAttribute="leading" secondItem="Yqh-YR-NAF" secondAttribute="leading" id="qu3-tL-55i"/>
+                                <constraint firstItem="tgJ-wy-Tor" firstAttribute="top" secondItem="el0-jU-5GK" secondAttribute="bottom" constant="8" id="zS4-he-qS6"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="P3R-cJ-HcS">
+                            <rect key="frame" x="0.0" y="88" width="576" height="40"/>
+                            <subviews>
+                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ht4-BQ-Ga8">
+                                    <rect key="frame" x="-2" y="12" width="83" height="16"/>
+                                    <textFieldCell key="cell" lineBreakMode="clipping" title="ImagePanel:" id="Xy5-1R-n9e">
+                                        <font key="font" metaFont="systemMedium" size="13"/>
                                         <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
                                         <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                     </textFieldCell>
                                 </textField>
                             </subviews>
                             <constraints>
-                                <constraint firstItem="rRb-W1-BeU" firstAttribute="centerY" secondItem="92j-6E-enx" secondAttribute="centerY" id="0Kh-iM-7yU"/>
-                                <constraint firstItem="rRb-W1-BeU" firstAttribute="leading" secondItem="92j-6E-enx" secondAttribute="trailing" constant="6" id="0LY-Tq-yaR"/>
-                                <constraint firstItem="nPY-8Y-8dL" firstAttribute="leading" secondItem="taM-CD-cQz" secondAttribute="trailing" constant="20" id="1ON-Qs-o55"/>
-                                <constraint firstItem="T1Q-4g-yfg" firstAttribute="centerY" secondItem="nPY-8Y-8dL" secondAttribute="centerY" id="38W-YI-Fcx"/>
-                                <constraint firstItem="taM-CD-cQz" firstAttribute="leading" secondItem="rRb-W1-BeU" secondAttribute="trailing" constant="4" id="8kn-nb-9Qk"/>
-                                <constraint firstItem="cyX-jp-tkC" firstAttribute="leading" secondItem="YEb-Wo-gCO" secondAttribute="leading" id="GHN-8T-NsA"/>
-                                <constraint firstItem="XUj-mR-Ka0" firstAttribute="centerY" secondItem="lD6-Gr-28s" secondAttribute="centerY" id="Isv-dU-i1U"/>
-                                <constraint firstAttribute="height" constant="50" id="JuA-Pt-tsa"/>
-                                <constraint firstItem="lD6-Gr-28s" firstAttribute="centerY" secondItem="nPY-8Y-8dL" secondAttribute="centerY" id="K1h-vk-sqB"/>
-                                <constraint firstItem="T1Q-4g-yfg" firstAttribute="leading" secondItem="nPY-8Y-8dL" secondAttribute="trailing" constant="6" id="L3z-gh-VTs"/>
-                                <constraint firstItem="vte-w4-cRw" firstAttribute="centerY" secondItem="yLL-Y6-iJB" secondAttribute="centerY" id="LVA-JK-tKF"/>
-                                <constraint firstItem="iix-Ff-Ic1" firstAttribute="leading" secondItem="iP8-Kl-ohG" secondAttribute="leading" id="QbC-LR-vrD"/>
-                                <constraint firstItem="iix-Ff-Ic1" firstAttribute="top" secondItem="T1Q-4g-yfg" secondAttribute="bottom" constant="2" id="RuS-hc-dD0"/>
-                                <constraint firstItem="vte-w4-cRw" firstAttribute="leading" secondItem="T1Q-4g-yfg" secondAttribute="trailing" constant="4" id="TtN-pV-9N3"/>
-                                <constraint firstItem="XUj-mR-Ka0" firstAttribute="leading" secondItem="lD6-Gr-28s" secondAttribute="trailing" constant="6" id="aIk-QQ-rRS"/>
-                                <constraint firstItem="cyX-jp-tkC" firstAttribute="top" secondItem="rRb-W1-BeU" secondAttribute="bottom" constant="2" id="aNF-Jv-iBY"/>
-                                <constraint firstItem="lD6-Gr-28s" firstAttribute="leading" secondItem="vte-w4-cRw" secondAttribute="trailing" constant="20" id="bLS-M9-Pkx"/>
-                                <constraint firstItem="92j-6E-enx" firstAttribute="centerY" secondItem="Yqh-YR-NAF" secondAttribute="centerY" id="bLw-t6-z4J"/>
-                                <constraint firstItem="taM-CD-cQz" firstAttribute="centerY" secondItem="ADh-6q-unE" secondAttribute="centerY" id="j8x-tn-IrT"/>
-                                <constraint firstItem="92j-6E-enx" firstAttribute="leading" secondItem="Yqh-YR-NAF" secondAttribute="leading" constant="4" id="qc9-ig-RLY"/>
-                                <constraint firstItem="nPY-8Y-8dL" firstAttribute="centerY" secondItem="92j-6E-enx" secondAttribute="centerY" id="tRw-yA-9wX"/>
+                                <constraint firstItem="Ht4-BQ-Ga8" firstAttribute="leading" secondItem="P3R-cJ-HcS" secondAttribute="leading" id="5bR-U0-FD9"/>
+                                <constraint firstItem="Ht4-BQ-Ga8" firstAttribute="centerY" secondItem="P3R-cJ-HcS" secondAttribute="centerY" id="Id8-Jc-xdW"/>
+                                <constraint firstAttribute="height" constant="40" id="IrG-tD-RlZ"/>
                             </constraints>
                         </customView>
                     </subviews>
                     <constraints>
-                        <constraint firstItem="Ht4-BQ-Ga8" firstAttribute="top" secondItem="Znx-Wg-LS4" secondAttribute="top" constant="4" id="1Eq-Fo-xoY"/>
-                        <constraint firstItem="Ht4-BQ-Ga8" firstAttribute="leading" secondItem="Znx-Wg-LS4" secondAttribute="leading" id="1I6-uj-g4E"/>
-                        <constraint firstItem="Yqh-YR-NAF" firstAttribute="top" secondItem="Znx-Wg-LS4" secondAttribute="top" constant="26" id="2i2-LS-fTz"/>
+                        <constraint firstItem="Yqh-YR-NAF" firstAttribute="top" secondItem="Znx-Wg-LS4" secondAttribute="top" constant="40" id="2i2-LS-fTz"/>
                         <constraint firstAttribute="trailing" secondItem="Yqh-YR-NAF" secondAttribute="trailing" id="4AL-Eb-1TM"/>
+                        <constraint firstItem="P3R-cJ-HcS" firstAttribute="top" secondItem="Znx-Wg-LS4" secondAttribute="top" id="Zr4-wG-4mE"/>
+                        <constraint firstItem="P3R-cJ-HcS" firstAttribute="leading" secondItem="Znx-Wg-LS4" secondAttribute="leading" id="f2T-CB-ZBh"/>
                         <constraint firstItem="Yqh-YR-NAF" firstAttribute="leading" secondItem="Znx-Wg-LS4" secondAttribute="leading" id="jil-nP-La5"/>
+                        <constraint firstAttribute="trailing" secondItem="P3R-cJ-HcS" secondAttribute="trailing" id="nbh-wQ-5yh"/>
                     </constraints>
                 </customView>
             </subviews>
             <constraints>
                 <constraint firstAttribute="trailing" secondItem="Znx-Wg-LS4" secondAttribute="trailing" id="6DD-r7-yc2"/>
                 <constraint firstItem="Znx-Wg-LS4" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="KxN-yh-Qat"/>
-                <constraint firstAttribute="bottom" secondItem="Znx-Wg-LS4" secondAttribute="bottom" constant="24" id="Ugn-mD-3Sd"/>
+                <constraint firstAttribute="bottom" secondItem="Znx-Wg-LS4" secondAttribute="bottom" constant="16" id="Ugn-mD-3Sd"/>
                 <constraint firstItem="Znx-Wg-LS4" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="sm8-Ad-wck"/>
             </constraints>
             <connections>
                 <outlet property="buttonConetntView" destination="Yqh-YR-NAF" id="UP5-Yj-8FY"/>
-                <outlet property="comboBox" destination="05O-ID-Yh1" id="Pih-F9-7qe"/>
-                <outlet property="imageAbovePPIAlertLabel" destination="iix-Ff-Ic1" id="NSX-Ip-VEB"/>
-                <outlet property="imageAbovePPITextField" destination="iP8-Kl-ohG" id="OCs-YY-RhH"/>
-                <outlet property="imagePPIAlertLabel" destination="cyX-jp-tkC" id="ruN-Je-bBV"/>
-                <outlet property="imagePPITextField" destination="YEb-Wo-gCO" id="B1C-AV-pdz"/>
+                <outlet property="imageAboveLabel" destination="nPY-8Y-8dL" id="gh7-3w-4c7"/>
+                <outlet property="imageAbovePPIAlertLabel" destination="s1O-eM-yjI" id="KQw-dH-5Q8"/>
+                <outlet property="imageAbovePPILabel" destination="vte-w4-cRw" id="CTf-Q0-wMP"/>
+                <outlet property="imageAboveTextField" destination="Do5-Pt-nCk" id="ms4-bE-a4O"/>
+                <outlet property="imageLabel" destination="92j-6E-enx" id="MVD-lQ-uKK"/>
+                <outlet property="imagePPIAlertLabel" destination="a8H-z1-aAi" id="JaC-AL-yrj"/>
+                <outlet property="imagePPILabel" destination="taM-CD-cQz" id="Yqn-94-C5K"/>
+                <outlet property="imageTextField" destination="Mel-Y9-GUU" id="Hs4-n0-sKo"/>
+                <outlet property="qualityCombox" destination="jtD-qC-uj5" id="uh2-qm-o0S"/>
+                <outlet property="qualityLabel" destination="gUI-3C-QkZ" id="SKm-Fd-yiD"/>
                 <outlet property="titleLabel" destination="Ht4-BQ-Ga8" id="qMg-MO-MFT"/>
             </connections>
-            <point key="canvasLocation" x="100" y="5"/>
+            <point key="canvasLocation" x="96" y="32"/>
         </customView>
     </objects>
 </document>

+ 5 - 5
PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/Cell/KMCompressModesTableCellView.xib

@@ -10,14 +10,14 @@
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="c22-O7-iKe" customClass="KMCompressModesTableCellView" customModule="PDF_Reader_Pro" customModuleProvider="target">
-            <rect key="frame" x="0.0" y="0.0" width="480" height="52"/>
+            <rect key="frame" x="0.0" y="0.0" width="480" height="48"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="yHv-cb-JkX">
-                    <rect key="frame" x="0.0" y="16" width="480" height="28"/>
+                    <rect key="frame" x="0.0" y="16" width="480" height="32"/>
                     <subviews>
                         <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Odo-EZ-jmE">
-                            <rect key="frame" x="-2" y="6" width="52" height="16"/>
+                            <rect key="frame" x="-2" y="8" width="52" height="16"/>
                             <textFieldCell key="cell" lineBreakMode="clipping" title="Modes:" id="AoX-wh-vIK">
                                 <font key="font" usesAppearanceFont="YES"/>
                                 <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -25,7 +25,7 @@
                             </textFieldCell>
                         </textField>
                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="4La-y1-wWt" customClass="ComponentSelect" customModule="KMComponentLibrary">
-                            <rect key="frame" x="56" y="-2" width="314" height="32"/>
+                            <rect key="frame" x="56" y="0.0" width="314" height="32"/>
                             <constraints>
                                 <constraint firstAttribute="width" constant="314" id="3ga-2o-Fu7"/>
                                 <constraint firstAttribute="height" constant="32" id="Qcw-Fb-wDj"/>
@@ -43,7 +43,7 @@
             <constraints>
                 <constraint firstItem="yHv-cb-JkX" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="CgS-3w-uEB"/>
                 <constraint firstAttribute="trailing" secondItem="yHv-cb-JkX" secondAttribute="trailing" id="e08-YC-A6t"/>
-                <constraint firstItem="yHv-cb-JkX" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" constant="8" id="ee5-SS-cOo"/>
+                <constraint firstItem="yHv-cb-JkX" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="ee5-SS-cOo"/>
                 <constraint firstAttribute="bottom" secondItem="yHv-cb-JkX" secondAttribute="bottom" constant="16" id="vjT-XX-HY8"/>
             </constraints>
             <connections>

+ 2 - 2
PDF Office/PDF Master/Class/PDFTools/Compress/View/SettingView/View/Tableview/KMCompressSettingTableView.swift

@@ -36,13 +36,13 @@ class KMCompressSettingTableView: BaseXibView {
         
         var cellModel = KMCompressSettingCellModel()
         cellModel.title = KMLocalizedString("Models", comment: "")
-        cellModel.heightOfRow = 56
+        cellModel.heightOfRow = 48
         self.datas.append(cellModel)
         
         cellModel = KMCompressSettingCellModel()
         cellModel.type = .images
         cellModel.title = KMLocalizedString("Image Panel", comment: "")
-        cellModel.heightOfRow = 128
+        cellModel.heightOfRow = 144
         self.datas.append(cellModel)
         
         cellModel = KMCompressSettingCellModel()

+ 1 - 1
PDF Office/PDF Master/KMClass/KMNPDFPageEdit/KMNPDFSplit/KMNSplitPDFWindowController.xib

@@ -45,7 +45,7 @@
             <windowStyleMask key="styleMask" titled="YES" fullSizeContentView="YES"/>
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
             <rect key="contentRect" x="196" y="240" width="480" height="270"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1055"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
             <view key="contentView" id="se5-gp-TjO">
                 <rect key="frame" x="0.0" y="0.0" width="480" height="502"/>
                 <autoresizingMask key="autoresizingMask"/>

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

@@ -507,9 +507,7 @@ extension KMBatesPropertyController: ComponentSelectDelegate {
 extension KMBatesPropertyController: ComponentGroupDelegate {
     func componentGroupDidSelect(group: ComponentGroup?, menuItemProperty: ComponentMenuitemProperty?) {
         if menuItemProperty?.identifier == "InsertBatesKey" {
-            guard let digitsText = digitsInputNumber.properties.text else {
-                return
-            }
+            let digitsText = digitsInputNumber.properties.text
             guard let startPageText = startPageSelect.properties.text else {
                 return
             }

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

@@ -434,7 +434,7 @@ extension KMEditImageController: ComponentInputNumberDelegate {
             return
         }
         
-        var textValue = inputNumber?.properties.text?.stringToCGFloat() ?? 0
+        var textValue = inputNumber?.properties.text.stringToCGFloat() ?? 0
         if inputNumber == sizeWidthInput {
             let areas = self.pdfView?.km_editingImageAreas() ?? []
             for area in areas {
@@ -454,7 +454,7 @@ extension KMEditImageController: ComponentInputNumberDelegate {
             return
         }
         //只处理多选状态
-        var textValue = inputNumber?.properties.text?.stringToCGFloat() ?? 0
+        var textValue = inputNumber?.properties.text.stringToCGFloat() ?? 0
         if inputNumber == sizeWidthInput {
             let areas = self.pdfView?.km_editingImageAreas() ?? []
             for area in areas {
@@ -476,7 +476,7 @@ extension KMEditImageController: ComponentInputNumberDelegate {
             return
         }
         //只处理多选状态
-        var textValue = inputNumber?.properties.text?.stringToCGFloat() ?? 0
+        var textValue = inputNumber?.properties.text.stringToCGFloat() ?? 0
         if inputNumber == sizeWidthInput {
             let areas = self.pdfView?.km_editingImageAreas() ?? []
             for area in areas {

+ 3 - 3
PDF Office/PDF Master/KMClass/Settings/SettingsGeneralView.swift

@@ -350,9 +350,9 @@ extension SettingsGeneralView: ComponentInputNumberDelegate {
         if inputNumber == autosaveInputNumberView {
             SettingsManager.sharedInstance.autoSaveMinutes = autosaveInputNumberView.properties.text ?? "5"
         } else if inputNumber == filelistInputNumberView {
-            if let text: String = filelistInputNumberView.properties.text {
-                SettingsManager.sharedInstance.fileListCount = Int(text)!
-            }
+            let text: String = filelistInputNumberView.properties.text
+            SettingsManager.sharedInstance.fileListCount = Int(text)!
+            
         }
         self.reloadData()
     }