Forráskód Böngészése

【工具】自动滚动 设置窗口添加

lizhe 1 éve
szülő
commit
98bc5fba12

+ 113 - 0
PDF Office/PDF Master/Class/PDFTools/AutoFlow/KMAutoFlowOptionsSheetController.swift

@@ -0,0 +1,113 @@
+//
+//  KMAutoFlowOptionsSheetController.swift
+//  PDF Reader Pro
+//
+//  Created by lizhe on 2024/1/16.
+//
+
+import Cocoa
+
+class KMAutoFlowOptionsSheetController: NSWindowController {
+    @IBOutlet weak var timeIntervalLabel: NSTextField!
+    @IBOutlet weak var timeIntervalSlider: NSSlider!
+    @IBOutlet weak var timeIntervalTextField: NSTextField!
+    @IBOutlet weak var secLabel: NSTextField!
+    @IBOutlet weak var jumpSpaceLabel: NSTextField!
+    @IBOutlet weak var jumpSpaceSlider: NSSlider!
+    @IBOutlet weak var jumpSpaceTextField: NSTextField!
+    @IBOutlet weak var pxLabel: NSTextField!
+    
+    @IBOutlet weak var closeButton: NSButton!
+    @IBOutlet weak var okButton: NSButton!
+    
+    var timeInterval: String?
+    var jumpSpace: String?
+    
+    override init(window: NSWindow?) {
+        super.init(window: window)
+    }
+    
+    required init?(coder: NSCoder) {
+        super.init(coder: coder)
+    }
+    
+    override func windowDidLoad() {
+        super.windowDidLoad()
+        
+        self.closeButton.title = NSLocalizedString("Cancel", comment: "")
+        self.okButton.title = NSLocalizedString("OK", comment: "")
+        self.timeIntervalLabel.stringValue = NSLocalizedString("Time Interval", comment: "")
+        self.jumpSpaceLabel.stringValue = NSLocalizedString("Jump Space", comment: "")
+        self.secLabel.stringValue = NSLocalizedString("sec", comment: "")
+        self.pxLabel.stringValue = NSLocalizedString("px", comment: "")
+        
+        self.timeIntervalTextField.delegate = self
+        self.jumpSpaceTextField.delegate = self
+        
+        let timeInterval = KMAutoFlowOptionsSheetController.timeInterval()
+        let jumpSpace = KMAutoFlowOptionsSheetController.jumpSpace()
+        self.timeInterval = String(timeInterval)
+        self.jumpSpace = String(jumpSpace)
+    }
+    
+    @IBAction func closeButtonAction(_ sender: Any) {
+        self.close()
+    }
+    
+    @IBAction func okButtonAction(_ sender: Any) {
+        let sec = self.timeIntervalTextField.stringValue.isEmpty ? "0" : self.timeIntervalTextField.stringValue
+        var jumpSpaceStr = self.jumpSpaceTextField.stringValue.isEmpty ? "0" : self.jumpSpaceTextField.stringValue
+        //替换”,“
+        jumpSpaceStr = jumpSpaceStr.replacingOccurrences(of: ",", with: "")
+        
+        KMAutoFlowOptionsSheetController.setTimeInterval(Float(sec) ?? 0.0)
+        KMAutoFlowOptionsSheetController.setJumpSpace(Float(jumpSpaceStr) ?? 0.0)
+        
+        self.close()
+    }
+    @IBAction func timeIntervalSliderAction(_ sender: NSSlider) {
+        self.timeIntervalTextField.stringValue = sender.stringValue
+    }
+    
+    @IBAction func jumpSpaceSliderAction(_ sender: NSSlider) {
+        self.jumpSpaceTextField.stringValue = sender.stringValue
+    }
+    
+    
+    class func timeInterval() -> Float {
+        if let storedValue = UserDefaults.standard.object(forKey: "km_pdfview_autoflow_timeinterval") as? Float {
+            return storedValue
+        }
+        return 5.0
+    }
+    
+    class func setTimeInterval(_ timeInterval: Float) {
+        UserDefaults.standard.set(timeInterval, forKey: "km_pdfview_autoflow_timeinterval")
+        UserDefaults.standard.synchronize()
+    }
+    
+    class func jumpSpace() -> Float {
+        if let storedValue = UserDefaults.standard.object(forKey: "km_pdfview_autoflow_jumpspace") as? Float {
+            return storedValue
+        }
+        return 40.0
+    }
+    
+    class func setJumpSpace(_ jumpSpace: Float) {
+        UserDefaults.standard.set(jumpSpace, forKey: "km_pdfview_autoflow_jumpspace")
+        UserDefaults.standard.synchronize()
+    }
+}
+
+extension KMAutoFlowOptionsSheetController: NSTextFieldDelegate {
+    func controlTextDidEndEditing(_ obj: Notification) {
+        let textField: NSTextField = obj.object as! NSTextField;
+        if textField == self.timeIntervalTextField {
+            self.timeIntervalSlider.stringValue = self.timeIntervalTextField.stringValue
+            print("参数改变了")
+        } else if textField == self.jumpSpaceTextField {
+            print("参数改变了2")
+            self.jumpSpaceSlider.stringValue = self.jumpSpaceTextField.stringValue
+        }
+    }
+}

+ 233 - 0
PDF Office/PDF Master/Class/PDFTools/AutoFlow/KMAutoFlowOptionsSheetController.xib

@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMAutoFlowOptionsSheetController" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <connections>
+                <outlet property="closeButton" destination="s1O-Cd-eCg" id="2C4-z9-4ge"/>
+                <outlet property="jumpSpaceLabel" destination="BGZ-NV-7Bh" id="f2h-td-NQk"/>
+                <outlet property="jumpSpaceSlider" destination="0Ff-dQ-u9k" id="co2-iX-tkz"/>
+                <outlet property="jumpSpaceTextField" destination="SpP-4y-O15" id="qen-pV-9AS"/>
+                <outlet property="okButton" destination="t7J-DK-BGc" id="K7z-Qg-PFO"/>
+                <outlet property="pxLabel" destination="faS-jX-7gc" id="LGl-no-lqQ"/>
+                <outlet property="secLabel" destination="bsL-ML-8TW" id="aMX-DO-45d"/>
+                <outlet property="timeIntervalLabel" destination="ZTj-Z4-wyT" id="E3m-pQ-g35"/>
+                <outlet property="timeIntervalSlider" destination="q9b-Da-zbl" id="lOx-ZG-5Ml"/>
+                <outlet property="timeIntervalTextField" destination="Ljy-jv-DxZ" id="6lW-V7-tMv"/>
+                <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
+            <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
+            <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
+            <rect key="contentRect" x="196" y="240" width="296" height="235"/>
+            <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="296" height="235"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <view wantsLayer="YES" translatesAutoresizingMaskIntoConstraints="NO" id="iww-P7-9I4">
+                        <rect key="frame" x="0.0" y="0.0" width="296" height="235"/>
+                        <subviews>
+                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ZTj-Z4-wyT">
+                                <rect key="frame" x="28" y="199" width="83" height="16"/>
+                                <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Time Interval" id="fgk-GN-2ma">
+                                    <font key="font" metaFont="system"/>
+                                    <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                    <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                                </textFieldCell>
+                            </textField>
+                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="BGZ-NV-7Bh">
+                                <rect key="frame" x="28" y="118" width="79" height="16"/>
+                                <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Jump Space" id="Yzb-NY-UoI">
+                                    <font key="font" metaFont="system"/>
+                                    <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                    <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                                </textFieldCell>
+                            </textField>
+                            <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="t7J-DK-BGc">
+                                <rect key="frame" x="187" y="13" width="96" height="32"/>
+                                <buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="cBI-Qg-Mn4">
+                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                    <font key="font" metaFont="system"/>
+                                    <string key="keyEquivalent" base64-UTF8="YES">
+DQ
+</string>
+                                </buttonCell>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="82" id="MJK-HE-g4o"/>
+                                </constraints>
+                                <connections>
+                                    <action selector="okButtonAction:" target="-2" id="f8G-4o-5cA"/>
+                                </connections>
+                            </button>
+                            <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="s1O-Cd-eCg">
+                                <rect key="frame" x="85" y="13" width="96" height="32"/>
+                                <buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Ci4-jz-FBT">
+                                    <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                    <font key="font" metaFont="system"/>
+                                    <string key="keyEquivalent" base64-UTF8="YES">
+Gw
+</string>
+                                </buttonCell>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="82" id="9Od-Aa-mut"/>
+                                </constraints>
+                                <connections>
+                                    <action selector="closeButtonAction:" target="-2" id="xy0-QC-CQf"/>
+                                </connections>
+                            </button>
+                            <slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="q9b-Da-zbl">
+                                <rect key="frame" x="28" y="158" width="154" height="28"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="150" id="q80-Mu-LDU"/>
+                                </constraints>
+                                <sliderCell key="cell" continuous="YES" state="on" alignment="left" minValue="1" maxValue="100" doubleValue="5" tickMarkPosition="below" numberOfTickMarks="5" sliderType="linear" id="CeB-dF-tZc"/>
+                                <connections>
+                                    <action selector="timeIntervalSliderAction:" target="-2" id="D9h-gr-3S9"/>
+                                </connections>
+                            </slider>
+                            <slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="0Ff-dQ-u9k">
+                                <rect key="frame" x="28" y="77" width="154" height="28"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="150" id="gZ1-J1-Ymn"/>
+                                </constraints>
+                                <sliderCell key="cell" continuous="YES" state="on" alignment="left" minValue="10" maxValue="1000" doubleValue="20" tickMarkPosition="below" numberOfTickMarks="5" sliderType="linear" id="cRs-cv-InS"/>
+                                <connections>
+                                    <action selector="jumpSpaceSliderAction:" target="-2" id="MED-TW-Or6"/>
+                                </connections>
+                            </slider>
+                            <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ljy-jv-DxZ">
+                                <rect key="frame" x="190" y="163" width="60" height="22"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="22" id="cYp-gZ-5xD"/>
+                                    <constraint firstAttribute="width" constant="60" id="kpB-ps-0sB"/>
+                                </constraints>
+                                <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="center" title="5" drawsBackground="YES" id="sMy-0h-gPe">
+                                    <numberFormatter key="formatter" formatterBehavior="custom10_4" positiveFormat="#,##0" numberStyle="decimal" minimumIntegerDigits="1" maximumIntegerDigits="2000000000" id="oDK-Pi-YME">
+                                        <real key="minimum" value="1"/>
+                                        <real key="maximum" value="100"/>
+                                    </numberFormatter>
+                                    <font key="font" metaFont="system"/>
+                                    <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                </textFieldCell>
+                            </textField>
+                            <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="SpP-4y-O15">
+                                <rect key="frame" x="190" y="82" width="60" height="22"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="60" id="JlW-EP-Edi"/>
+                                    <constraint firstAttribute="height" constant="22" id="TsY-SP-z4G"/>
+                                </constraints>
+                                <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="center" title="20" drawsBackground="YES" id="t5U-Er-SkE">
+                                    <numberFormatter key="formatter" formatterBehavior="custom10_4" positiveFormat="#,##0" numberStyle="decimal" minimumIntegerDigits="1" maximumIntegerDigits="2000000000" id="q2a-zO-0NW">
+                                        <real key="minimum" value="10"/>
+                                        <real key="maximum" value="1000"/>
+                                    </numberFormatter>
+                                    <font key="font" metaFont="system"/>
+                                    <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                </textFieldCell>
+                            </textField>
+                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bsL-ML-8TW">
+                                <rect key="frame" x="252" y="166" width="26" height="16"/>
+                                <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="sec" id="LRS-ss-z06">
+                                    <font key="font" metaFont="system"/>
+                                    <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                    <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                                </textFieldCell>
+                            </textField>
+                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="faS-jX-7gc">
+                                <rect key="frame" x="252" y="85" width="19" height="16"/>
+                                <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="px" id="qjn-si-P37">
+                                    <font key="font" metaFont="system"/>
+                                    <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                    <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                                </textFieldCell>
+                            </textField>
+                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ZeY-Qw-sjb">
+                                <rect key="frame" x="28" y="150" width="10" height="14"/>
+                                <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="1" id="a6y-aZ-lDi">
+                                    <font key="font" metaFont="smallSystem"/>
+                                    <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                    <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                                </textFieldCell>
+                            </textField>
+                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aNf-cL-SfA">
+                                <rect key="frame" x="158" y="150" width="24" height="14"/>
+                                <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="100" id="bU9-jb-ZfS">
+                                    <font key="font" metaFont="smallSystem"/>
+                                    <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                    <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                                </textFieldCell>
+                            </textField>
+                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="DFB-ri-xLo">
+                                <rect key="frame" x="28" y="69" width="17" height="14"/>
+                                <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="10" id="ioz-Vc-g7V">
+                                    <font key="font" metaFont="smallSystem"/>
+                                    <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                    <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                                </textFieldCell>
+                            </textField>
+                            <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Pl1-K2-RSE">
+                                <rect key="frame" x="151" y="69" width="31" height="14"/>
+                                <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="1000" id="W6k-3X-Zne">
+                                    <font key="font" metaFont="smallSystem"/>
+                                    <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                    <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                                </textFieldCell>
+                            </textField>
+                        </subviews>
+                        <constraints>
+                            <constraint firstItem="q9b-Da-zbl" firstAttribute="top" secondItem="ZTj-Z4-wyT" secondAttribute="bottom" constant="15" id="1zd-wg-4Zl"/>
+                            <constraint firstAttribute="trailing" secondItem="t7J-DK-BGc" secondAttribute="trailing" constant="20" id="4Zd-Xh-3R6"/>
+                            <constraint firstItem="aNf-cL-SfA" firstAttribute="trailing" secondItem="q9b-Da-zbl" secondAttribute="trailing" id="5qJ-n2-F8K"/>
+                            <constraint firstItem="ZeY-Qw-sjb" firstAttribute="top" secondItem="q9b-Da-zbl" secondAttribute="bottom" id="6Ab-eX-brR"/>
+                            <constraint firstItem="BGZ-NV-7Bh" firstAttribute="leading" secondItem="ZTj-Z4-wyT" secondAttribute="leading" id="74v-1j-0VX"/>
+                            <constraint firstItem="DFB-ri-xLo" firstAttribute="leading" secondItem="0Ff-dQ-u9k" secondAttribute="leading" id="7dM-wY-HNa"/>
+                            <constraint firstItem="Ljy-jv-DxZ" firstAttribute="leading" secondItem="q9b-Da-zbl" secondAttribute="trailing" constant="10" id="AEr-NC-Qut"/>
+                            <constraint firstAttribute="bottom" secondItem="t7J-DK-BGc" secondAttribute="bottom" constant="20" id="CHt-Hv-Jxq"/>
+                            <constraint firstItem="SpP-4y-O15" firstAttribute="centerY" secondItem="0Ff-dQ-u9k" secondAttribute="centerY" id="CbW-Db-hgD"/>
+                            <constraint firstItem="Ljy-jv-DxZ" firstAttribute="centerY" secondItem="q9b-Da-zbl" secondAttribute="centerY" id="G53-jg-6yM"/>
+                            <constraint firstItem="aNf-cL-SfA" firstAttribute="top" secondItem="q9b-Da-zbl" secondAttribute="bottom" id="LKt-XV-CM7"/>
+                            <constraint firstAttribute="bottom" secondItem="s1O-Cd-eCg" secondAttribute="bottom" constant="20" id="OZA-aO-8yk"/>
+                            <constraint firstItem="SpP-4y-O15" firstAttribute="leading" secondItem="0Ff-dQ-u9k" secondAttribute="trailing" constant="10" id="Soz-f2-xFN"/>
+                            <constraint firstItem="Pl1-K2-RSE" firstAttribute="top" secondItem="0Ff-dQ-u9k" secondAttribute="bottom" id="Trk-9M-eLR"/>
+                            <constraint firstItem="ZTj-Z4-wyT" firstAttribute="top" secondItem="iww-P7-9I4" secondAttribute="top" constant="20" id="Xbf-gp-yao"/>
+                            <constraint firstItem="q9b-Da-zbl" firstAttribute="leading" secondItem="ZTj-Z4-wyT" secondAttribute="leading" id="bGp-uE-uyb"/>
+                            <constraint firstItem="faS-jX-7gc" firstAttribute="leading" secondItem="SpP-4y-O15" secondAttribute="trailing" constant="4" id="eeI-7k-blX"/>
+                            <constraint firstItem="bsL-ML-8TW" firstAttribute="centerY" secondItem="Ljy-jv-DxZ" secondAttribute="centerY" id="gao-fH-bBh"/>
+                            <constraint firstItem="Pl1-K2-RSE" firstAttribute="trailing" secondItem="0Ff-dQ-u9k" secondAttribute="trailing" id="iDD-Pj-Jlu"/>
+                            <constraint firstItem="0Ff-dQ-u9k" firstAttribute="top" secondItem="BGZ-NV-7Bh" secondAttribute="bottom" constant="15" id="iLu-r5-JFP"/>
+                            <constraint firstItem="t7J-DK-BGc" firstAttribute="leading" secondItem="s1O-Cd-eCg" secondAttribute="trailing" constant="20" id="js6-II-lzY"/>
+                            <constraint firstItem="0Ff-dQ-u9k" firstAttribute="leading" secondItem="BGZ-NV-7Bh" secondAttribute="leading" id="lwF-q9-Ksn"/>
+                            <constraint firstItem="bsL-ML-8TW" firstAttribute="leading" secondItem="Ljy-jv-DxZ" secondAttribute="trailing" constant="4" id="nbA-o3-Tzl"/>
+                            <constraint firstItem="DFB-ri-xLo" firstAttribute="top" secondItem="0Ff-dQ-u9k" secondAttribute="bottom" id="ojF-p5-JZH"/>
+                            <constraint firstItem="ZTj-Z4-wyT" firstAttribute="leading" secondItem="iww-P7-9I4" secondAttribute="leading" constant="30" id="v18-T9-1n4"/>
+                            <constraint firstItem="faS-jX-7gc" firstAttribute="centerY" secondItem="SpP-4y-O15" secondAttribute="centerY" id="wA2-t2-gqD"/>
+                            <constraint firstItem="BGZ-NV-7Bh" firstAttribute="top" secondItem="q9b-Da-zbl" secondAttribute="bottom" constant="30" id="xqw-uV-Syq"/>
+                            <constraint firstItem="ZeY-Qw-sjb" firstAttribute="leading" secondItem="q9b-Da-zbl" secondAttribute="leading" id="yYt-Xh-Vir"/>
+                        </constraints>
+                    </view>
+                </subviews>
+                <constraints>
+                    <constraint firstAttribute="trailing" secondItem="iww-P7-9I4" secondAttribute="trailing" id="8hN-kR-6qj"/>
+                    <constraint firstAttribute="bottom" secondItem="iww-P7-9I4" secondAttribute="bottom" id="Evb-c0-rAc"/>
+                    <constraint firstItem="iww-P7-9I4" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" id="GNK-ck-c7W"/>
+                    <constraint firstItem="iww-P7-9I4" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" id="apa-fO-HMx"/>
+                </constraints>
+            </view>
+            <connections>
+                <outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
+            </connections>
+            <point key="canvasLocation" x="47" y="86.5"/>
+        </window>
+        <userDefaultsController representsSharedInstance="YES" id="sBo-hf-3Wk"/>
+    </objects>
+</document>

+ 5 - 0
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+MenuAction.swift

@@ -434,6 +434,11 @@ extension KMMainViewController {
     }
     @IBAction func chooseAutoFlowSetting(_ sender: Any?) {
         KMPrint("chooseAutoFlowSetting")
+        autoFlowOptionsSheetController = KMAutoFlowOptionsSheetController(windowNibName: "KMAutoFlowOptionsSheetController")
+        
+        NSWindow.currentWindow().beginSheet((autoFlowOptionsSheetController?.window)!) { responce in
+            
+        }
     }
     
     @IBAction func toggleReadingBar(_ sender: Any?) {

+ 3 - 0
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController.swift

@@ -53,6 +53,9 @@ import Cocoa
     @IBOutlet weak var pageNumberDisplayView: KMPageNumberDisplayView!
     @IBOutlet weak var tipCurrentPageBoxWidthConstraint: NSLayoutConstraint!
     
+    //自动滚动
+    var autoFlowOptionsSheetController: KMAutoFlowOptionsSheetController?
+    
     private var _needSave = false
     var needSave: Bool {
         set {

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

@@ -2374,6 +2374,12 @@
 		ADF9ED3329A850D200C4A943 /* KMAccountInfoView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADF9ED3229A850D200C4A943 /* KMAccountInfoView.xib */; };
 		ADF9ED3429A850D200C4A943 /* KMAccountInfoView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADF9ED3229A850D200C4A943 /* KMAccountInfoView.xib */; };
 		ADF9ED3529A850D200C4A943 /* KMAccountInfoView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADF9ED3229A850D200C4A943 /* KMAccountInfoView.xib */; };
+		ADFA8EFD2B5649AE002595A4 /* KMAutoFlowOptionsSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFA8EFB2B5649AE002595A4 /* KMAutoFlowOptionsSheetController.swift */; };
+		ADFA8EFE2B5649AE002595A4 /* KMAutoFlowOptionsSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFA8EFB2B5649AE002595A4 /* KMAutoFlowOptionsSheetController.swift */; };
+		ADFA8EFF2B5649AE002595A4 /* KMAutoFlowOptionsSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFA8EFB2B5649AE002595A4 /* KMAutoFlowOptionsSheetController.swift */; };
+		ADFA8F002B5649AE002595A4 /* KMAutoFlowOptionsSheetController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADFA8EFC2B5649AE002595A4 /* KMAutoFlowOptionsSheetController.xib */; };
+		ADFA8F012B5649AE002595A4 /* KMAutoFlowOptionsSheetController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADFA8EFC2B5649AE002595A4 /* KMAutoFlowOptionsSheetController.xib */; };
+		ADFA8F022B5649AE002595A4 /* KMAutoFlowOptionsSheetController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADFA8EFC2B5649AE002595A4 /* KMAutoFlowOptionsSheetController.xib */; };
 		ADFCEB322B4F78150001EBAF /* KMFileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFCEB312B4F78150001EBAF /* KMFileManager.swift */; };
 		ADFCEB332B4F78150001EBAF /* KMFileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFCEB312B4F78150001EBAF /* KMFileManager.swift */; };
 		ADFCEB342B4F78150001EBAF /* KMFileManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADFCEB312B4F78150001EBAF /* KMFileManager.swift */; };
@@ -5721,6 +5727,8 @@
 		ADF6B87D2A485A8F0090CB78 /* KMComparativeViewCollectionItemItem.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMComparativeViewCollectionItemItem.xib; sourceTree = "<group>"; };
 		ADF9ED2E29A8507400C4A943 /* KMAccountInfoView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KMAccountInfoView.swift; sourceTree = "<group>"; };
 		ADF9ED3229A850D200C4A943 /* KMAccountInfoView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMAccountInfoView.xib; sourceTree = "<group>"; };
+		ADFA8EFB2B5649AE002595A4 /* KMAutoFlowOptionsSheetController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMAutoFlowOptionsSheetController.swift; sourceTree = "<group>"; };
+		ADFA8EFC2B5649AE002595A4 /* KMAutoFlowOptionsSheetController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMAutoFlowOptionsSheetController.xib; sourceTree = "<group>"; };
 		ADFCEB312B4F78150001EBAF /* KMFileManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMFileManager.swift; sourceTree = "<group>"; };
 		ADFCEB352B4F78220001EBAF /* KMFile.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMFile.swift; sourceTree = "<group>"; };
 		ADFCEB3A2B4FB8C80001EBAF /* FirebaseRemoteConfig.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = FirebaseRemoteConfig.framework; sourceTree = "<group>"; };
@@ -7332,6 +7340,7 @@
 		9F1F82C6292F631A0092C4B4 /* PDFTools */ = {
 			isa = PBXGroup;
 			children = (
+				AD2BF23B2B5647C80029F03F /* AutoFlow */,
 				BBD922282B50D43800DB9585 /* Rate */,
 				BB24FFDA2B28576500A59054 /* TTS */,
 				BB1969D42B28429A00922736 /* Snapshot */,
@@ -8038,6 +8047,15 @@
 			path = "Preview Content";
 			sourceTree = "<group>";
 		};
+		AD2BF23B2B5647C80029F03F /* AutoFlow */ = {
+			isa = PBXGroup;
+			children = (
+				ADFA8EFB2B5649AE002595A4 /* KMAutoFlowOptionsSheetController.swift */,
+				ADFA8EFC2B5649AE002595A4 /* KMAutoFlowOptionsSheetController.xib */,
+			);
+			path = AutoFlow;
+			sourceTree = "<group>";
+		};
 		AD2D74AA29F0CE8500EDC5E4 /* Cancellation */ = {
 			isa = PBXGroup;
 			children = (
@@ -12774,6 +12792,7 @@
 				9F78EFBE28F7C1CC001E66F4 /* KMHomeViewController.xib in Resources */,
 				9F3D818A29A0A9A70087B5AD /* KMDesignButton.xib in Resources */,
 				9F512CD22B469A7700EC0BC3 /* KMPageDisplayThemeCollectionViewItem.xib in Resources */,
+				ADFA8F002B5649AE002595A4 /* KMAutoFlowOptionsSheetController.xib in Resources */,
 				9FDD0F9F2952FF4D000C4DAD /* global.json in Resources */,
 				BB8810972B4F7CD100AFA63E /* KMVerificationTrialViewController.xib in Resources */,
 				ADE614B129779C6D00F62ED7 /* KMImageTitleButton.xib in Resources */,
@@ -13277,6 +13296,7 @@
 				AD8810B629A846B100178CA1 /* KMVerficationCodeWindowController.xib in Resources */,
 				BB2EDF74296ECE17003BCF58 /* KMPageEditThumbnailItem.xib in Resources */,
 				BB897232294B08DE0045787C /* KMWatermarkViewController.xib in Resources */,
+				ADFA8F012B5649AE002595A4 /* KMAutoFlowOptionsSheetController.xib in Resources */,
 				9FBA0EE528FEC253001117AF /* KMProductPromotionViewController.xib in Resources */,
 				BB5BE4F22B060EB500D51BF2 /* KMLanguageViewController.xib in Resources */,
 				BBA2109129ACBFDB00E6B346 /* nosign.pdf in Resources */,
@@ -13742,6 +13762,7 @@
 				BB5DF1EE2959C5CB0025CDA1 /* KMHeaderFooterPreviewController.xib in Resources */,
 				ADBC2D17299CCD10006280C8 /* KMTextfieldButton.xib in Resources */,
 				9F512CD42B469A7700EC0BC3 /* KMPageDisplayThemeCollectionViewItem.xib in Resources */,
+				ADFA8F022B5649AE002595A4 /* KMAutoFlowOptionsSheetController.xib in Resources */,
 				BB1BFF6F2AEA030F003EB179 /* KMBatchOperateSplitViewController.xib in Resources */,
 				BB8810992B4F7CD100AFA63E /* KMVerificationTrialViewController.xib in Resources */,
 				BBC348382955A118008D2CD1 /* KMCreateBackgroundController.xib in Resources */,
@@ -14466,6 +14487,7 @@
 				9F0CB52D298656D900007028 /* KMDesignToken+BorderWidthRight.swift in Sources */,
 				BBCE57142A72713A00508EFC /* NSViewController+KMExtension.swift in Sources */,
 				8997011F28F41AB8009AF911 /* KMLeftSideViewController.swift in Sources */,
+				ADFA8EFD2B5649AE002595A4 /* KMAutoFlowOptionsSheetController.swift in Sources */,
 				BB162E97295062CD0088E9D1 /* KMPageRangeTools.swift in Sources */,
 				BB24FFDD2B28578C00A59054 /* KMTTSWindowController.swift in Sources */,
 				ADD1B6EC2946C04C00C3FFF7 /* KMPrintChoosePageSizePamphletView.swift in Sources */,
@@ -15854,6 +15876,7 @@
 				9F8810862B564E9700F69815 /* KMAnnotationButtonWidgetOptionsViewController.swift in Sources */,
 				AD88109729A78ADC00178CA1 /* KMVerificationCodeView.swift in Sources */,
 				BBC347FE295448DE008D2CD1 /* KMWatermarkTemplateModel.swift in Sources */,
+				ADFA8EFE2B5649AE002595A4 /* KMAutoFlowOptionsSheetController.swift in Sources */,
 				9FB220F82B186C9800A5B208 /* KMAnnotationGeneralViewController.swift in Sources */,
 				BB88107D2B4F7A1F00AFA63E /* KMActivityALertViewController.m in Sources */,
 				BB6B436C2A04935000E02B54 /* KMPDFThumbViewBaseController.swift in Sources */,
@@ -16525,6 +16548,7 @@
 				BB1331502AD78DC0008F6791 /* KMPDFMergeSizeTabelViewCell.swift in Sources */,
 				ADDDCE232B43A32A005B4AB5 /* AppSandboxFileAccessPersist.m in Sources */,
 				AD199DFA2B26A36500D56FEE /* KMPrintPosterPreviewView.swift in Sources */,
+				ADFA8EFF2B5649AE002595A4 /* KMAutoFlowOptionsSheetController.swift in Sources */,
 				BB88109C2B4F7CD100AFA63E /* KMVerificationTrialViewController.m in Sources */,
 				BB2EDF6C296ECE17003BCF58 /* KMPageEditInsertTypeItemView.swift in Sources */,
 				BBD7FE052A1323A400F96075 /* KMEditImagePropertyViewController.swift in Sources */,