Browse Source

Merge branch 'develop_PDFReaderProNew' of git.kdan.cc:Mac_PDF/PDF_Office into develop_PDFReaderProNew

tangchao 1 year ago
parent
commit
4bdeddaa4e

+ 4 - 4
PDF Office/PDF Master/Class/ChromiumTabs/KMBrowserWindowController.swift

@@ -512,20 +512,20 @@ extension KMBrowserWindowController {
     @IBAction func openBlankPage(_ sender: Any) {
         let document: KMMainDocument = self.browser.activeTabContents() as! KMMainDocument
         if (document.isHome) {
-            document.homeViewController?.openBlankPage(sender)
+            document.homeViewController?.openBlankPage()
         } else {
             self.homeVC = KMHomeViewController()
-            self.homeVC?.openBlankPage(sender)
+            self.homeVC?.openBlankPage()
         }
     }
     
     @IBAction func importFromScanner(_ sender: Any) {
         let document: KMMainDocument = self.browser.activeTabContents() as! KMMainDocument
         if (document.isHome) {
-            document.homeViewController?.importFromScanner(sender)
+            document.homeViewController?.importFromScanner()
         } else {
             self.homeVC = KMHomeViewController()
-            self.homeVC?.importFromScanner(sender)
+            self.homeVC?.importFromScanner()
         }
     }
     

+ 56 - 41
PDF Office/PDF Master/Class/Home/View/CreatPDFView/KMCreatPDFView.swift

@@ -7,13 +7,17 @@
 
 import Cocoa
 
+typealias KMCreatPDFViewOpenPDFAction = (_ view: KMCreatPDFView, _ sender: KMBox) -> Void
+typealias KMCreatPDFViewCreatAction = (_ view: KMCreatPDFView, _ sender: KMBox) -> Void
 class KMCreatPDFView: KMBaseXibView {
-    @IBOutlet weak var openPDFButton: NSButton!
-    @IBOutlet weak var creatPDFButton: NSButton!
+    @IBOutlet weak var openBox: KMBox!
+    @IBOutlet weak var openLabel: NSTextField!
+    @IBOutlet weak var creatBox: KMBox!
+    @IBOutlet weak var creatLabel: NSTextField!
     
+    var openPDFAction: KMCreatPDFViewOpenPDFAction?
+    var creatPDFAction: KMCreatPDFViewCreatAction?
     
-    var openPDFButtonVC: KMDesignButton!
-    var createPDFButtonVC: KMDesignButton!
     
     override func draw(_ dirtyRect: NSRect) {
         super.draw(dirtyRect)
@@ -22,52 +26,63 @@ class KMCreatPDFView: KMBaseXibView {
     }
     
     override func setup() {
-        openPDFButtonVC = KMDesignButton.init(withType: .Text)
-        openPDFButton.addSubview(openPDFButtonVC.view)
-        openPDFButtonVC.view.frame = openPDFButton.bounds
-        openPDFButtonVC.view.autoresizingMask = [.width, .height]
-        openPDFButtonVC.target = self
-        openPDFButtonVC.action = #selector(openPDFButtonAction)
-        openPDFButtonVC.button(type: .Brand, size: .l)
-        openPDFButtonVC.stringValue = NSLocalizedString("Open File", comment: "")
-        openPDFButtonVC.updateUI()
+        self.openLabel.stringValue = NSLocalizedString("Open File", comment: "")
+        self.openLabel.textColor = KMAppearance.Layout.w0Color()
+        self.creatLabel.stringValue = NSLocalizedString("Create PDF", comment: "")
+        self.creatLabel.textColor = KMAppearance.Layout.m_1Color()
         
-        createPDFButtonVC = KMDesignButton.init(withType: .Text)
-        creatPDFButton.addSubview(createPDFButtonVC.view)
-        createPDFButtonVC.view.frame = creatPDFButton.bounds
-        createPDFButtonVC.view.autoresizingMask = [.width, .height]
-        createPDFButtonVC.target = self
-        createPDFButtonVC.action = #selector(createPDFButtonAction)
-        createPDFButtonVC.button(type: .Sec, size: .l)
-//        createPDFButtonVC.textButtonBox.move =  { [unowned self](mouseEntered: Bool) -> Void in
-//            if mouseEntered {
-//                if self.createPDFButtonVC.state != .Sel && self.createPDFButtonVC.canHover {
-//                    self.createPDFButtonVC.state = .Hov
-//                    self.createPDFButtonVC.updateUI()
-//                    self.createPDFImage.state = .Hov
-//                    self.createPDFImage.updateUI()
-//                    self.createPDFImage.canHover = false
-//                }
-//            } else {
-//                if self.createPDFButtonVC.state != .Sel && self.createPDFButtonVC.canHover {
-//                    self.createPDFButtonVC.state = .Norm
-//                    self.createPDFButtonVC.updateUI()
-//                    self.createPDFImage.state = .Norm
-//                    self.createPDFImage.updateUI()
-//                    self.createPDFImage.canHover = true
-//                }
-//            }
-//        }
-        createPDFButtonVC.stringValue = NSLocalizedString("Create PDF", comment: "")
-        createPDFButtonVC.updateUI()
+        self.openBox.fillColor = KMAppearance.Interactive.m0Color()
+        self.openBox.toolTip = NSLocalizedString("Open PDF", comment: "")
+        self.openBox.downCallback = { [unowned self] downEntered, mouseBox, event in
+            if (downEntered) {
+                self.openBox.fillColor = KMAppearance.Interactive.m_1Color()
+                self.openPDFButtonAction()
+            } else {
+                self.openBox.fillColor = KMAppearance.Interactive.m0Color()
+            }
+        };
+        
+        self.openBox.moveCallback = { [unowned self] mouseEntered, mouseBox in
+            if (mouseEntered) {
+                self.openBox.fillColor = KMAppearance.Interactive.m1Color()
+            } else {
+                self.openBox.fillColor = KMAppearance.Interactive.m0Color()
+            }
+        };
+        
+        self.creatBox.toolTip = NSLocalizedString("Create PDF", comment: "")
+        self.creatBox.fillColor = KMAppearance.Layout.l0Color()
+        self.creatBox.borderWidth = 1.0;
+        self.creatBox.borderColor = KMAppearance.Interactive.m0Color()
+        self.creatBox.downCallback = { [unowned self] downEntered, mouseBox, event in
+            if (downEntered) {
+                self.creatBox.fillColor = KMAppearance.Status.preColor()
+                self.createPDFButtonAction()
+            } else {
+                self.creatBox.fillColor = KMAppearance.Layout.l0Color()
+            }
+        };
+        
+        self.creatBox.moveCallback = { [unowned self] mouseEntered, mouseBox in
+            if (mouseEntered) {
+                self.creatBox.fillColor = KMAppearance.Status.hovColor()
+            } else {
+                self.creatBox.fillColor = KMAppearance.Layout.l0Color()
+            }
+        };
+
     }
     
     @objc func openPDFButtonAction() {
+        guard let callBack = openPDFAction else { return }
         
+        callBack(self, self.openBox)
     }
     
     @objc func createPDFButtonAction() {
+        guard let callBack = creatPDFAction else { return }
         
+        callBack(self, self.creatBox)
     }
     
 }

+ 145 - 27
PDF Office/PDF Master/Class/Home/View/CreatPDFView/KMCreatPDFView.xib

@@ -3,13 +3,16 @@
     <dependencies>
         <deployment identifier="macosx"/>
         <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
+        <capability name="Named colors" minToolsVersion="9.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>
         <customObject id="-2" userLabel="File's Owner" customClass="KMCreatPDFView" customModule="PDF_Master" customModuleProvider="target">
             <connections>
-                <outlet property="creatPDFButton" destination="3AX-n1-18y" id="cia-dh-yCv"/>
-                <outlet property="openPDFButton" destination="SZK-WO-5uz" id="S6Z-s9-Bu1"/>
+                <outlet property="creatBox" destination="Vti-iD-u9k" id="vT4-20-HTW"/>
+                <outlet property="creatLabel" destination="Olj-cQ-f0O" id="gSh-sd-zkf"/>
+                <outlet property="openBox" destination="OeJ-LB-1ap" id="nOb-dC-iS1"/>
+                <outlet property="openLabel" destination="qds-xE-Fcm" id="qUo-Mc-DrK"/>
             </connections>
         </customObject>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
@@ -18,37 +21,152 @@
             <rect key="frame" x="0.0" y="0.0" width="264" height="111"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
-                <button translatesAutoresizingMaskIntoConstraints="NO" id="SZK-WO-5uz">
-                    <rect key="frame" x="0.0" y="63" width="264" height="48"/>
-                    <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="Xcz-ci-eJv">
-                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                        <font key="font" size="13" name=".PingFangSC-Regular"/>
-                    </buttonCell>
+                <view translatesAutoresizingMaskIntoConstraints="NO" id="yL2-Zs-ryZ">
+                    <rect key="frame" x="0.0" y="0.0" width="264" height="111"/>
+                    <subviews>
+                        <box boxType="custom" cornerRadius="1" translatesAutoresizingMaskIntoConstraints="NO" id="Vti-iD-u9k" customClass="KMBox" customModule="PDF_Master" customModuleProvider="target">
+                            <rect key="frame" x="0.0" y="0.0" width="264" height="48"/>
+                            <view key="contentView" id="gdX-gO-RS9">
+                                <rect key="frame" x="1" y="1" width="262" height="46"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <subviews>
+                                    <box boxType="custom" borderWidth="0.0" cornerRadius="4" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="KOh-3q-duh" customClass="KMBox" customModule="PDF_Master" customModuleProvider="target">
+                                        <rect key="frame" x="81" y="13" width="100" height="20"/>
+                                        <view key="contentView" id="ynC-Yp-Rnv">
+                                            <rect key="frame" x="0.0" y="0.0" width="100" height="20"/>
+                                            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                            <subviews>
+                                                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="DqF-AX-qBg">
+                                                    <rect key="frame" x="0.0" y="2" width="16" height="16"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" constant="16" id="Yi7-CW-rTg"/>
+                                                        <constraint firstAttribute="height" constant="16" id="uJh-TZ-AfO"/>
+                                                    </constraints>
+                                                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="KMImageNameUXIconHomeCreat" id="XU9-pp-nBe"/>
+                                                </imageView>
+                                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Olj-cQ-f0O">
+                                                    <rect key="frame" x="22" y="0.0" width="78" height="20"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="20" id="B90-4D-ERP"/>
+                                                    </constraints>
+                                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Create PDF" id="aBP-nQ-0jc">
+                                                        <font key="font" metaFont="system" size="14"/>
+                                                        <color key="textColor" name="KMMainColor"/>
+                                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                    </textFieldCell>
+                                                </textField>
+                                            </subviews>
+                                            <constraints>
+                                                <constraint firstItem="Olj-cQ-f0O" firstAttribute="leading" secondItem="DqF-AX-qBg" secondAttribute="trailing" constant="8" id="YzH-JB-nCq"/>
+                                                <constraint firstItem="DqF-AX-qBg" firstAttribute="leading" secondItem="ynC-Yp-Rnv" secondAttribute="leading" id="usz-HE-PLd"/>
+                                            </constraints>
+                                        </view>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="20" id="0P0-Uf-7Sd"/>
+                                            <constraint firstItem="Olj-cQ-f0O" firstAttribute="centerY" secondItem="KOh-3q-duh" secondAttribute="centerY" id="KHw-Lo-Cp3"/>
+                                            <constraint firstAttribute="width" constant="100" id="RjJ-VU-H4Z"/>
+                                            <constraint firstItem="DqF-AX-qBg" firstAttribute="centerY" secondItem="KOh-3q-duh" secondAttribute="centerY" id="kDp-4n-XSk"/>
+                                        </constraints>
+                                    </box>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstItem="KOh-3q-duh" firstAttribute="centerY" secondItem="gdX-gO-RS9" secondAttribute="centerY" id="Plt-1X-mO2"/>
+                                    <constraint firstItem="KOh-3q-duh" firstAttribute="centerX" secondItem="gdX-gO-RS9" secondAttribute="centerX" id="XLN-Rg-zLn"/>
+                                </constraints>
+                            </view>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="48" id="VN2-AK-KQD"/>
+                            </constraints>
+                            <color key="borderColor" name="KMMainColor"/>
+                            <color key="fillColor" name="KMGray1Color"/>
+                        </box>
+                        <box boxType="custom" cornerRadius="1" translatesAutoresizingMaskIntoConstraints="NO" id="OeJ-LB-1ap" customClass="KMBox" customModule="PDF_Master" customModuleProvider="target">
+                            <rect key="frame" x="0.0" y="63" width="264" height="48"/>
+                            <view key="contentView" id="duq-hz-9tP">
+                                <rect key="frame" x="1" y="1" width="262" height="46"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <subviews>
+                                    <box boxType="custom" borderWidth="0.0" cornerRadius="4" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="7Av-Ws-uiE" customClass="KMBox" customModule="PDF_Master" customModuleProvider="target">
+                                        <rect key="frame" x="81" y="13" width="100" height="20"/>
+                                        <view key="contentView" id="omc-32-Ugy">
+                                            <rect key="frame" x="0.0" y="0.0" width="100" height="20"/>
+                                            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                            <subviews>
+                                                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="SiE-jD-UiH">
+                                                    <rect key="frame" x="0.0" y="2" width="16" height="16"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="16" id="lkT-Dc-NQf"/>
+                                                        <constraint firstAttribute="width" constant="16" id="x7w-2n-8QR"/>
+                                                    </constraints>
+                                                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="KMImageNameUXIconHomeOpen" id="JPt-by-dBN"/>
+                                                </imageView>
+                                                <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="qds-xE-Fcm">
+                                                    <rect key="frame" x="22" y="0.0" width="70" height="20"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="20" id="nj0-lx-g2B"/>
+                                                    </constraints>
+                                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Open PDF" id="6EN-Y0-PYa">
+                                                        <font key="font" metaFont="system" size="14"/>
+                                                        <color key="textColor" name="KMWhiteColor"/>
+                                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                    </textFieldCell>
+                                                </textField>
+                                            </subviews>
+                                            <constraints>
+                                                <constraint firstItem="SiE-jD-UiH" firstAttribute="leading" secondItem="omc-32-Ugy" secondAttribute="leading" id="j64-5p-f05"/>
+                                                <constraint firstItem="qds-xE-Fcm" firstAttribute="leading" secondItem="SiE-jD-UiH" secondAttribute="trailing" constant="8" id="mQa-ZT-qYW"/>
+                                            </constraints>
+                                        </view>
+                                        <constraints>
+                                            <constraint firstItem="SiE-jD-UiH" firstAttribute="centerY" secondItem="7Av-Ws-uiE" secondAttribute="centerY" id="0bc-iR-1qB"/>
+                                            <constraint firstItem="qds-xE-Fcm" firstAttribute="centerY" secondItem="7Av-Ws-uiE" secondAttribute="centerY" id="1Xk-r3-Epe"/>
+                                            <constraint firstAttribute="height" constant="20" id="ZCt-iJ-0oc"/>
+                                            <constraint firstAttribute="width" constant="100" id="sSV-xC-7xx"/>
+                                        </constraints>
+                                    </box>
+                                </subviews>
+                                <constraints>
+                                    <constraint firstItem="7Av-Ws-uiE" firstAttribute="centerX" secondItem="duq-hz-9tP" secondAttribute="centerX" id="R1g-fh-sD5"/>
+                                    <constraint firstItem="7Av-Ws-uiE" firstAttribute="centerY" secondItem="duq-hz-9tP" secondAttribute="centerY" id="hGg-xc-GuA"/>
+                                </constraints>
+                            </view>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="48" id="xL4-kK-xXT"/>
+                            </constraints>
+                            <color key="borderColor" name="KMMainColor"/>
+                            <color key="fillColor" name="KMMainColor"/>
+                        </box>
+                    </subviews>
                     <constraints>
-                        <constraint firstAttribute="height" constant="48" id="Avi-Xu-IH7"/>
+                        <constraint firstItem="OeJ-LB-1ap" firstAttribute="leading" secondItem="yL2-Zs-ryZ" secondAttribute="leading" id="7sl-eo-q7F"/>
+                        <constraint firstAttribute="trailing" secondItem="Vti-iD-u9k" secondAttribute="trailing" id="De8-yp-eCF"/>
+                        <constraint firstItem="OeJ-LB-1ap" firstAttribute="top" secondItem="yL2-Zs-ryZ" secondAttribute="top" id="LUY-V2-o7w"/>
+                        <constraint firstAttribute="bottom" secondItem="Vti-iD-u9k" secondAttribute="bottom" id="faF-sy-OTS"/>
+                        <constraint firstAttribute="trailing" secondItem="OeJ-LB-1ap" secondAttribute="trailing" id="g5k-GP-Lvt"/>
+                        <constraint firstItem="Vti-iD-u9k" firstAttribute="leading" secondItem="yL2-Zs-ryZ" secondAttribute="leading" id="lxE-UJ-6WD"/>
                     </constraints>
-                </button>
-                <button translatesAutoresizingMaskIntoConstraints="NO" id="3AX-n1-18y">
-                    <rect key="frame" x="0.0" y="-1" width="264" height="48"/>
-                    <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="Mdt-UZ-QxA">
-                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                        <font key="font" size="13" name=".PingFangSC-Regular"/>
-                    </buttonCell>
-                    <constraints>
-                        <constraint firstAttribute="height" constant="48" id="8ro-dY-RsO"/>
-                    </constraints>
-                </button>
+                </view>
             </subviews>
             <constraints>
-                <constraint firstAttribute="trailing" secondItem="3AX-n1-18y" secondAttribute="trailing" id="3xk-a9-naR"/>
-                <constraint firstItem="SZK-WO-5uz" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="DD0-ET-DKb"/>
-                <constraint firstItem="SZK-WO-5uz" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="SqE-q7-HPl"/>
-                <constraint firstItem="SZK-WO-5uz" firstAttribute="centerX" secondItem="c22-O7-iKe" secondAttribute="centerX" id="VHl-m6-hBH"/>
-                <constraint firstItem="3AX-n1-18y" firstAttribute="top" secondItem="SZK-WO-5uz" secondAttribute="bottom" constant="16" id="vHl-b2-a6Z"/>
-                <constraint firstItem="3AX-n1-18y" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="w4T-Rp-Eey"/>
-                <constraint firstAttribute="trailing" secondItem="SZK-WO-5uz" secondAttribute="trailing" id="y6h-FR-Fjd"/>
+                <constraint firstItem="yL2-Zs-ryZ" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="Pyd-d5-aek"/>
+                <constraint firstAttribute="bottom" secondItem="yL2-Zs-ryZ" secondAttribute="bottom" id="ZZ8-e5-Frp"/>
+                <constraint firstAttribute="trailing" secondItem="yL2-Zs-ryZ" secondAttribute="trailing" id="fGG-Aj-OS3"/>
+                <constraint firstItem="yL2-Zs-ryZ" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="ogg-YZ-VWL"/>
             </constraints>
             <point key="canvasLocation" x="-64" y="186.5"/>
         </customView>
     </objects>
+    <resources>
+        <image name="KMImageNameUXIconHomeCreat" width="16" height="16"/>
+        <image name="KMImageNameUXIconHomeOpen" width="16" height="16"/>
+        <namedColor name="KMGray1Color">
+            <color red="0.32899999618530273" green="0.32400000095367432" blue="0.4779999852180481" alpha="0.33000001311302185" colorSpace="custom" customColorSpace="sRGB"/>
+        </namedColor>
+        <namedColor name="KMMainColor">
+            <color red="0.15294117647058825" green="0.23529411764705882" blue="0.3843137254901961" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+        </namedColor>
+        <namedColor name="KMWhiteColor">
+            <color red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+        </namedColor>
+    </resources>
 </document>

+ 2 - 2
PDF Office/PDF Master/Class/Home/View/KMStepperView.swift

@@ -54,8 +54,8 @@ class KMStepperView: NSViewController {
     var borderWidth: Float = 0.0
     var borderColor: NSColor = .clear
     var cornerRadius: Float = 0.0
-    var upImage: NSImage = NSImage(named: "btn_arrow_gray_up_s_norm_on")!
-    var downImage: NSImage = NSImage(named: "btn_arrow_gray_down_s_norm_on")!
+    var upImage: NSImage = NSImage(named: "btn_arrow_gray_up_s_norm_on") ?? NSImage()
+    var downImage: NSImage = NSImage(named: "btn_arrow_gray_down_s_norm_on") ?? NSImage()
     open weak var delete: KMStepperViewDelegate?
     var enabled: Bool = true // 是否可点击
 

+ 1 - 65
PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController+Action.swift

@@ -61,7 +61,7 @@ extension KMHomeViewController {
             openPDFButtonAction()
             break
         case .CreatePDF:
-            createPDFButtonAction()
+            
             break
         case .Home:
             homeButtonAction()
@@ -226,13 +226,6 @@ extension KMHomeViewController {
         }
     }
     
-    func createPDFButtonAction() {
-        let popViewDataArr = [NSLocalizedString("New Blank Page", comment: ""),
-//                              NSLocalizedString("New From Web Page", comment: ""),
-                              NSLocalizedString("Import From Scanner", comment: "")]
-        createPopoverAction(popViewDataArr)
-    }
-    
     func homeButtonAction() {
         refreshRightBoxUI(.Home)
     }
@@ -1208,18 +1201,6 @@ extension KMHomeViewController {
         }
     }
     
-    // MARK: MenuItem Action & PopoverItem Action
-    
-    func popoverItemAction(_ count: String) {
-        if count == NSLocalizedString("New Blank Page", comment: "") {
-            openBlankPage("")
-        } else if count == NSLocalizedString("New From Web Page", comment: "") {
-            importFromWebPage("")
-        } else if count == NSLocalizedString("Import From Scanner", comment: "") {
-            importFromScanner("")
-        }
-    }
-    
     @IBAction func escButtonAction(_ sender: Any) {
 //        self.historyFileViewController.selectFiles.removeAll()
 //        if self.historyFileViewController.showMode == .Thumbnail {
@@ -1234,51 +1215,6 @@ extension KMHomeViewController {
         self.openSupportPDFButtonAction()
     }
     
-    @IBAction func openBlankPage(_ sender: Any) {
-        let fileName: NSString = String(format: "%@.pdf", NSLocalizedString("Untitled", comment: "")) as NSString
-        let savePath = fetchUniquePath(fileName.kUrlToPDFFolderPath() as String)
-        let pdfDocument = CPDFDocument()
-        pdfDocument?.insertPage(CGSize(width: 595, height: 842), at: 0)
-        pdfDocument?.write(to: URL(fileURLWithPath: savePath))
-        NSDocumentController.shared.openDocument(withContentsOf: URL(fileURLWithPath: savePath), display: true) { document, documentWasAlreadyOpen, error in
-            if error != nil {
-                NSApp.presentError(error!)
-            } else {
-                if document is KMMainDocument {
-                    let newDocument = document
-                    (newDocument as! KMMainDocument).isNewCreated = true
-                }
-            }
-        }
-    }
-    
-    @IBAction func importFromWebPage(_ sender: Any) {
-        self.urlToPDFWindowController = KMURLToPDFWindowController.init(windowNibName: NSNib.Name("KMURLToPDFWindowController"))
-        
-        self.urlToPDFWindowController!.beginSheetModal(for: NSApp.mainWindow!) { filePath in
-            if filePath != nil && FileManager.default.fileExists(atPath: filePath) {
-                NSDocumentController.shared.openDocument(withContentsOf: URL(fileURLWithPath: filePath), display: true) { document, documentWasAlreadyOpen, error in
-                    if error != nil {
-                        NSApp.presentError(error!)
-                    } else {
-                        if document is KMMainDocument {
-                            (document as! KMMainDocument).isNewCreated = true
-                        }
-                    }
-                }
-            }
-        }
-    }
-    
-    @IBAction func importFromScanner(_ sender: Any) {
-        deviceBrowserWC = KMDeviceBrowserWindowController.shared
-        deviceBrowserWC?.type = .scanner
-        deviceBrowserWC?.importScannerFileCallback = { [weak self](url: NSURL) -> Void in
-            self?.openFile(withFilePath: url as URL)
-        }
-        deviceBrowserWC?.showWindow(NSApp.mainWindow)
-    }
-    
     @IBAction func menuItemClick_mergePDF(_ sender: Any) {
         fastTool_MergePDF()
     }

+ 150 - 71
PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController.swift

@@ -145,6 +145,7 @@ import KMAdvertisement
 //        self.initializeUI()
         self.initializeUI_DMG()
         
+        self.setup()
 //        refreshUI()
         
         NotificationCenter.default.addObserver(self, selector: #selector(homeFileRectChange(_:)), name: Notification.Name("KMHomeFileRectChange"), object: nil)
@@ -201,58 +202,19 @@ import KMAdvertisement
         }
     }
     
+    func setup() {
+        self.creatPDFView.openPDFAction = { [unowned self] view, sender in
+            self.openPDFAction(sender)
+        }
+        
+        self.creatPDFView.creatPDFAction = { [unowned self] view, sender in
+            self.creatPDFAction(sender)
+        }
+    }
+    
     // MARK: Init
     
     func initializeUI() {
-//        openPDFBox.fillColor = .clear
-//        openPDFBox.contentView = openPDFButtonVC.view
-//        
-//        openPDFButtonVC.target = self
-//        openPDFButtonVC.action = #selector(self.homeToolAction(_:))
-//        openPDFButtonVC.button(type: .Brand, size: .l, height: openPDFBoxHeight)
-//
-//        createPDFBox.fillColor = .clear
-//        createPDFBox.contentView = createPDFButtonVC.view
-//        createPDFButtonVC.target = self
-//        createPDFButtonVC.action = #selector(self.homeToolAction(_:))
-//        createPDFButtonVC.button(type: .Sec, size: .l, height: createPDFBoxHeight)
-//        createPDFButtonVC.textButtonBox.move =  { [unowned self](mouseEntered: Bool) -> Void in
-//            if mouseEntered {
-//                if self.createPDFButtonVC.state != .Sel && self.createPDFButtonVC.canHover {
-//                    self.createPDFButtonVC.state = .Hov
-//                    self.createPDFButtonVC.updateUI()
-//                    self.createPDFImage.state = .Hov
-//                    self.createPDFImage.updateUI()
-//                    self.createPDFImage.canHover = false
-//                }
-//            } else {
-//                if self.createPDFButtonVC.state != .Sel && self.createPDFButtonVC.canHover {
-//                    self.createPDFButtonVC.state = .Norm
-//                    self.createPDFButtonVC.updateUI()
-//                    self.createPDFImage.state = .Norm
-//                    self.createPDFImage.updateUI()
-//                    self.createPDFImage.canHover = true
-//                }
-//            }
-//        }
-        
-//        createPDFView.contentView = createPDFImage.view
-//        createPDFImage.image = NSImage(named: "icon_btn_arrow_gray_down_s_norm_false")!
-//        createPDFImage.target = self
-//        createPDFImage.action = #selector(self.homeToolAction(_:))
-//        createPDFImage.button(type: .Icon_Fill, size: .m, height: createPDFViewHeight)
-//
-//        homeBox.fillColor = .clear
-//        homeBox.contentView = homeButtonVC.view
-//        homeButtonVC.target = self
-//        homeButtonVC.action = #selector(self.homeToolAction(_:))
-//        homeButtonVC.image = NSImage(named: "icon_home_sidebar_home_false")!
-//        homeButtonVC.image_hover = NSImage(named: "icon_home_sidebar_home_false")!
-//        homeButtonVC.image_click = NSImage(named: "icon_home_sidebar_home_true")!
-//        homeButtonVC.navMenu(bg: "navmenu.has-icon.m.bg.norm", text: "navmenu.win-text.def", height: homeBoxHeight)
-//        homeButtonVC.navMenu(bg: "navmenu.has-icon.m.bg.hov", text: "navmenu.win-text.def", state:.Hov)
-//        homeButtonVC.navMenu(bg: "navmenu.has-icon.m.bg.sel", text: "navmenu.win-text.sel", state:.Sel)
-//
 //        pdfToolsBox.fillColor = .clear
 //        pdfToolsBox.contentView = pdfToolsButtonVC.view
 //        pdfToolsButtonVC.target = self
@@ -676,29 +638,146 @@ import KMAdvertisement
             tWorkSpace.open(httpUrl as URL)
         }
     }
+}
+
+//MARK: Open Creat PDF
+extension KMHomeViewController: NSPopoverDelegate {
+}
+
+extension KMHomeViewController {
+    func openPDFAction(_ sender: KMBox) {
+        let openPanel = NSOpenPanel()
+        openPanel.allowedFileTypes = ["pdf", "PDF"]
+        openPanel.allowsMultipleSelection = false
+        openPanel.beginSheetModal(for: self.view.window!) { (result) in
+            if result == NSApplication.ModalResponse.OK {
+                NSDocumentController.shared.openDocument(withContentsOf: openPanel.url!, display: true) { (document, documentWasAlreadyOpen, error) in
+                    if let error = error {
+                        NSApp.presentError(error)
+                    } else {
+                        self.view.window?.windowController?.close()
+                    }
+                }
+            }
+        }
+    }
     
-    func createPopoverAction(_ data: [String]) {
-//        if (self.popover != nil && self.popover!.isShown) {
-//            self.popover?.close()
-//            self.popover = nil
-//            return
-//        }
-//        let vc: KMHomePopViewController = KMHomePopViewController().initWithPopViewDataArr(data)
-//        let createFilePopover: NSPopover = NSPopover.init()
-//        self.popover = createFilePopover
-//        createFilePopover.contentViewController = vc
-//        createFilePopover.animates = true
-//        createFilePopover.behavior = .semitransient
-//        createFilePopover.setValue(true, forKey: "shouldHideAnchor")
-//        createFilePopover.show(relativeTo: CGRect(x: createPDFBox.bounds.origin.x, y: 10, width: createPDFBox.bounds.size.width, height: createPDFBox.bounds.size.height), of: createPDFBox, preferredEdge: .minY)
-//        
-//        vc.customBoxWidthLayoutConstraint.constant = createPDFBox.frame.width
-//        vc.downCallback = { [weak self] (downEntered: Bool, count: String) -> Void in
-//            if downEntered {
-//                self?.popover?.close()
-//                self?.popover = nil
-//                self?.popoverItemAction(count)
-//            }
+    func creatPDFAction(_ sender: KMBox) {
+        let popViewDataArr: [String] = [NSLocalizedString("New Blank Page", comment: ""),
+                                        NSLocalizedString("New From Images", comment: ""),
+                                        NSLocalizedString("New From Web Page", comment: ""),
+                                        NSLocalizedString("Import From Camera", comment: ""),
+                                        NSLocalizedString("Import From Scanner", comment: "")]
+        let vc: KMHomePopViewController = KMHomePopViewController().initWithPopViewDataArr(popViewDataArr)
+        let createFilePopover: NSPopover = NSPopover.init()
+        createFilePopover.contentViewController = vc
+        createFilePopover.delegate = self
+        createFilePopover.animates = true
+        createFilePopover.behavior = .semitransient
+        createFilePopover.setValue(true, forKey: "shouldHideAnchor")
+        createFilePopover.show(relativeTo: CGRect(x: sender.bounds.origin.x, y: 10, width: sender.bounds.size.width, height: sender.bounds.size.height), of: sender, preferredEdge: .minY)
+        
+        vc.downCallback = { [unowned self] (downEntered: Bool, count: String) -> Void in
+            if count == NSLocalizedString("New Blank Page", comment: "") {
+                self.openBlankPage()
+            } else if count == NSLocalizedString("Import From Camera", comment: "") {
+                self.importFromCamera()
+            }  else if count == NSLocalizedString("Import From Scanner", comment: "") {
+                self.importFromScanner()
+            }  else if count == NSLocalizedString("New From Web Page", comment: "") {
+                self.importFromWebPage()
+            } else if count == NSLocalizedString("Import From Scanner", comment: "") {
+                self.newFromImages()
+            }
+            createFilePopover.close()
+        }
+    }
+    
+    func openBlankPage() {
+        let fileName: NSString = String(format: "%@.pdf", NSLocalizedString("Untitled", comment: "")) as NSString
+        let savePath = fetchUniquePath(fileName.kUrlToPDFFolderPath() as String)
+        let pdfDocument = CPDFDocument()
+        pdfDocument?.insertPage(CGSize(width: 595, height: 842), at: 0)
+        pdfDocument?.write(to: URL(fileURLWithPath: savePath))
+        NSDocumentController.shared.openDocument(withContentsOf: URL(fileURLWithPath: savePath), display: true) { document, documentWasAlreadyOpen, error in
+            if error != nil {
+                NSApp.presentError(error!)
+            } else {
+                if document is KMMainDocument {
+                    let newDocument = document
+                    (newDocument as! KMMainDocument).isNewCreated = true
+                }
+            }
+        }
+    }
+    
+    func importFromWebPage() {
+        self.urlToPDFWindowController = KMURLToPDFWindowController.init(windowNibName: NSNib.Name("KMURLToPDFWindowController"))
+        
+        self.urlToPDFWindowController!.beginSheetModal(for: NSApp.mainWindow!) { filePath in
+            if filePath != nil && FileManager.default.fileExists(atPath: filePath) {
+                NSDocumentController.shared.openDocument(withContentsOf: URL(fileURLWithPath: filePath), display: true) { document, documentWasAlreadyOpen, error in
+                    if error != nil {
+                        NSApp.presentError(error!)
+                    } else {
+                        if document is KMMainDocument {
+                            (document as! KMMainDocument).isNewCreated = true
+                        }
+                    }
+                }
+            }
+        }
+    }
+    
+    func importFromScanner() {
+        let vc = KMDeviceBrowserWindowController.shared
+        vc.type = .scanner
+        vc.importScannerFileCallback = { [weak self](url: NSURL) -> Void in
+            self?.openFile(withFilePath: url as URL)
+        }
+        vc.showWindow(NSApp.mainWindow)
+    }
+    
+    func importFromCamera() {
+        let vc = KMDeviceBrowserWindowController.shared
+        vc.type = .camera
+        vc.importCameraFileCallback = { [weak self] (url: NSURL) -> Void in
+            self?.openFile(withFilePath: url as URL)
+        }
+        vc.showWindow(NSApp.mainWindow)
+    }
+    
+    func newFromImages() {
+        let openPanel = NSOpenPanel()
+        openPanel.allowedFileTypes = KMImageAccessoryController.supportedImageTypes()
+//        if IAPProductsManager.defaultManager().isAvailableAllFunction {
+//            openPanel.allowsMultipleSelection = true
+//        } else {
+//            openPanel.allowsMultipleSelection = false
 //        }
+        openPanel.message = NSLocalizedString("Select images to create a new document. To select multiple files press cmd ⌘ button on the keyboard and click on the target files one by one.", comment: "")
+        openPanel.beginSheetModal(for: NSApp.mainWindow!) { result in
+            if result == .OK {
+                DispatchQueue.main.asyncAfter(deadline: .now() + 0.25) {
+                    debugPrint("缺少图片转PDF")
+//                    let baseWindowController = KMBatchOperateBaseWindowController(windowNibName: "KMBatchOperateBaseWindowController")
+//                    var arr: [KMBatchOperateFile] = []
+//                    for url in openPanel.urls {
+//                        let file = KMBatchOperateFile(filePath: url.path, type: .createPDF)
+//                        arr.append(file)
+//                    }
+//                   
+//                    if #available(macOS 10.13, *) {
+//                        baseWindowController.window?.makeKeyAndOrderFront(nil)
+//                    } else {
+//                        baseWindowController.showWindow(nil)
+//                    }
+//                    baseWindowController.checkNeedPasswordSwitch(toOperateType: .createPDF, files: arr)
+//                    if #available(macOS 10.13, *) {
+//                        baseWindowController.release()
+//                    }
+                }
+            }
+        }
     }
 }

+ 3 - 3
PDF Office/PDF Master/Class/Home/ViewController/KMHomeViewController.xib

@@ -267,16 +267,16 @@ Gw
                                         </constraints>
                                     </customView>
                                     <customView translatesAutoresizingMaskIntoConstraints="NO" id="xMk-8H-B64" customClass="KMCreatPDFView" customModule="PDF_Master" customModuleProvider="target">
-                                        <rect key="frame" x="16" y="704" width="238" height="100"/>
+                                        <rect key="frame" x="16" y="668" width="238" height="112"/>
                                         <constraints>
-                                            <constraint firstAttribute="height" constant="100" id="b2w-2J-Q98"/>
+                                            <constraint firstAttribute="height" constant="112" id="b2w-2J-Q98"/>
                                         </constraints>
                                     </customView>
                                 </subviews>
                                 <constraints>
                                     <constraint firstAttribute="trailing" secondItem="xMk-8H-B64" secondAttribute="trailing" constant="16" id="0Y5-Y0-JAP"/>
                                     <constraint firstAttribute="bottom" secondItem="3io-Hj-Kiz" secondAttribute="bottom" id="8hH-Nz-14P"/>
-                                    <constraint firstItem="xMk-8H-B64" firstAttribute="top" secondItem="2gJ-MM-ZrB" secondAttribute="top" constant="16" id="BmM-pK-ELG"/>
+                                    <constraint firstItem="xMk-8H-B64" firstAttribute="top" secondItem="2gJ-MM-ZrB" secondAttribute="top" constant="40" id="BmM-pK-ELG"/>
                                     <constraint firstItem="3io-Hj-Kiz" firstAttribute="top" secondItem="2gJ-MM-ZrB" secondAttribute="top" id="OUk-vQ-edJ"/>
                                     <constraint firstItem="3io-Hj-Kiz" firstAttribute="leading" secondItem="2gJ-MM-ZrB" secondAttribute="leading" id="eTW-ob-qK1"/>
                                     <constraint firstAttribute="trailing" secondItem="3io-Hj-Kiz" secondAttribute="trailing" id="kZa-Sb-BLN"/>

+ 25 - 26
PDF Office/PDF Master/Class/Home/WindowController/KMDeviceBrowserWindowController.swift

@@ -35,11 +35,18 @@ class KMDeviceBrowserWindowController: NSWindowController {
     
     override func windowDidLoad() {
         super.windowDidLoad()
+
+        if (self.type == .camera) {
+            self.deviceBrowserView.displaysLocalScanners = false;
+            self.deviceBrowserView.displaysNetworkScanners = false;
+        } else if (self.type == .scanner) {
+            self.deviceBrowserView.displaysLocalCameras = false;
+            self.deviceBrowserView.displaysNetworkCameras = false;
+        }
         
-        self.deviceBrowserView.displaysLocalCameras = false
-        self.deviceBrowserView.displaysNetworkCameras = false
-        
-        self.splitView.setPosition(300.0, ofDividerAt: 0)
+        self.cameraDeviceView.downloadSelectedControlLabel = NSLocalizedString("Import", comment: "")
+        self.cameraDeviceView.downloadAllControlLabel = NSLocalizedString("Import All", comment: "")
+        self.window!.title = NSLocalizedString("Import", comment: "")
     }
     
 }
@@ -56,22 +63,17 @@ extension KMDeviceBrowserWindowController: NSSplitViewDelegate {
 
 extension KMDeviceBrowserWindowController: IKDeviceBrowserViewDelegate {
     func deviceBrowserView(_ deviceBrowserView: IKDeviceBrowserView!, selectionDidChange device: ICDevice!) {
-//        if (device.type == .camera) {
-//            cameraDeviceView.cameraDevice = (device as! ICCameraDevice)
-//            cameraDeviceView.isHidden = false
-//            cameraDeviceView.isHidden = true
-//        } else if (device.type == .scanner) {
-//            scannerDeviceView.scannerDevice = (device as! ICScannerDevice)
-//            scannerDeviceView.isHidden = false
-//            scannerDeviceView.isHidden = true
-//        } else {
-//            scannerDeviceView.isHidden = true
-//            scannerDeviceView.isHidden = true
-//        }
-        if device != nil {
-            scannerDeviceView.scannerDevice = (device as! ICScannerDevice)
+        if (device.type == .camera) {
+            cameraDeviceView.cameraDevice = (device as! ICCameraDevice)
             cameraDeviceView.isHidden = false
             cameraDeviceView.isHidden = true
+        } else if (device.type == .scanner) {
+            scannerDeviceView.scannerDevice = (device as! ICScannerDevice)
+            scannerDeviceView.isHidden = false
+            scannerDeviceView.isHidden = true
+        } else {
+            scannerDeviceView.isHidden = true
+            scannerDeviceView.isHidden = true
         }
     }
     
@@ -81,14 +83,11 @@ extension KMDeviceBrowserWindowController: IKDeviceBrowserViewDelegate {
 }
 
 extension KMDeviceBrowserWindowController: IKCameraDeviceViewDelegate {
-    func cameraDeviceView(_ cameraDeviceView: IKCameraDeviceView!, didDownloadFile file: ICCameraFile!, location url: URL!, fileData data: Data!, error: Error!) {
-//        if (!error &&
-//            [file.UTI isEqualToString:(NSString *)kUTTypeImage]) {
-//            if (self.importCameraFileCallback) {
-//                self.importCameraFileCallback(url);
-//            }
-//        }
-        KMPrint("获取图片完成")
+    func cameraDeviceView(_ cameraDeviceView: IKCameraDeviceView, didDownloadFile file: ICCameraFile, location url: URL, fileData data: Data?, error: Error?) {
+        file.imageRepresentationType()
+        if error == nil {
+            importCameraFileCallback?(url as NSURL)
+        }
     }
 }
 

+ 4 - 3
PDF Office/PDF Master/Class/Home/WindowController/KMDeviceBrowserWindowController.xib

@@ -1,8 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22155" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
-        <plugIn identifier="com.apple.imagekit.ibplugin" version="21507"/>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
+        <plugIn identifier="com.apple.imagekit.ibplugin" version="22155"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>

+ 3 - 2
PDF Office/PDF Master/Class/Home/WindowController/KMHomeWindowController.xib

@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21701" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22155" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21701"/>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>

+ 2 - 2
PDF Office/PDF Master/Class/Home/WindowController/KMURLToPDFWindowController.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22146" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22155" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22146"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22155"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>