瀏覽代碼

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

tangchao 1 年之前
父節點
當前提交
a4255d5227

+ 1 - 0
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListView.m

@@ -263,6 +263,7 @@ NSNotificationName const CPDFListViewAnnotationsAttributeHasChangeNotification =
         CPDFPage *page = [self.document pageAtIndex:i];
         for (CPDFAnnotation *annotation in page.annotations) {
             [annotation setAnnotationShouldDisplay:!self.hideNotes];
+            [annotation setHidden: self.hideNotes];
         }
     }
     [self setNeedsDisplayAnnotationViewForVisiblePages];

+ 1 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/Thumbnail/KMPDFThumbnailItem.swift

@@ -79,6 +79,7 @@ class KMPDFThumbnailItem: NSCollectionViewItem {
                     if annotation.annotationShouldDisplay() == false {
                         annotation.setHidden(true)
                     }
+
                 }
             } else {
                 for annotation in self.page.annotations {

+ 43 - 15
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/EditPDF/KMEditImagePropertyViewController.swift

@@ -27,6 +27,7 @@ class KMEditImagePropertyViewController: NSViewController {
     @IBOutlet weak var opacitySlider: NSSlider!
     @IBOutlet weak var opacityBox: NSBox!
     @IBOutlet weak var opacityBoxBottomMaginConstraint: NSLayoutConstraint!
+    @IBOutlet weak var opacityBoxTopConstraint: NSLayoutConstraint!
     
     @IBOutlet weak var cropBox: NSBox!
     @IBOutlet weak var confirmBox: NSBox!
@@ -44,6 +45,9 @@ class KMEditImagePropertyViewController: NSViewController {
     @IBOutlet weak var flipHorizontalBox: NSBox!
     @IBOutlet weak var flipVerticalBox: NSBox!
     
+    @IBOutlet weak var alignmentView: KMEditPropertyAlignmentView!
+    @IBOutlet weak var alignmentViewTopConstraint: NSLayoutConstraint!
+    
     var rotateLeftVC: KMDesignPropertySelector?
     var rotateRightVC: KMDesignPropertySelector?
     var flipHorizontalVC: KMDesignPropertySelector?
@@ -56,7 +60,6 @@ class KMEditImagePropertyViewController: NSViewController {
     var replaceVC: KMDesignButton?
     var exportVC: KMDesignButton?
     
-    @IBOutlet weak var alignmentView: KMEditPropertyAlignmentView!
     var imagesAreas : [CPDFEditImageArea] = []
     var listView : CPDFListView!
     
@@ -164,6 +167,7 @@ class KMEditImagePropertyViewController: NSViewController {
         confirmVC?.button(type: .Cta, size: .m)
         confirmVC?.stringValue = NSLocalizedString("Confirm Cut", comment: "")
         confirmVC?.updateUI()
+        confirmVC?.button.keyEquivalent = KMKeyEquivalent.enter
         
         cancelVC = KMDesignButton.init(withType: .Text)
         cancelBox.contentView = cancelVC?.view
@@ -193,8 +197,14 @@ class KMEditImagePropertyViewController: NSViewController {
         exportVC?.updateUI()
     }
     
-    func updateLanguage(){
-        self.titleLabel.stringValue = NSLocalizedString("Image", comment: "")
+    func updateLanguage() {
+        let areas = self.editingAreas
+        if imagesAreas.count > 0 && imagesAreas.count != areas.count { //多选图片跟文字
+            self.titleLabel.stringValue = NSLocalizedString("General Properties", comment: "")
+        } else {
+            self.titleLabel.stringValue = NSLocalizedString("Image", comment: "")
+        }
+        
         self.opacityTitleLabel.stringValue = NSLocalizedString("Opacity", comment: "")
         self.cropVC?.stringValue = NSLocalizedString("Crop", comment: "")
         self.confirmVC?.stringValue = NSLocalizedString("Confirm Cut", comment: "")
@@ -224,12 +234,14 @@ class KMEditImagePropertyViewController: NSViewController {
                 self.opacityBox.isHidden = false
                 self.opacityBoxHeight.constant = 56
                 self.opacityBoxBottomMaginConstraint.constant = 16
+                self.opacityBoxTopConstraint.constant = 16
                 self.buttonBox.isHidden = false
                 self.cropBox.isHidden = false
                 self.cancelBox.isHidden = false
                 self.replaceBox.isHidden = false
                 self.buttonBoxHeight.constant = 112
                 self.editImageView.image = self.listView.selectImageAreas.thumbnailImage
+                self.alignmentViewTopConstraint.constant = 16
 
                 let opacity: CGFloat = self.listView.opacity(for: imagesAreas.first)
                 self.updateImageAreasOpacity(opacity: opacity, state: .ended, needListView: false)
@@ -242,11 +254,13 @@ class KMEditImagePropertyViewController: NSViewController {
                 self.opacityBox.isHidden = false
                 self.opacityBoxHeight.constant = 56
                 self.opacityBoxBottomMaginConstraint.constant = 0
+                self.opacityBoxTopConstraint.constant = 0
                 self.buttonBox.isHidden = false
                 self.cropBox.isHidden = true
                 self.cancelBox.isHidden = true
                 self.replaceBox.isHidden = true
                 self.buttonBoxHeight.constant = 0
+                self.alignmentViewTopConstraint.constant = 16
                 var opacity = self.listView.opacity(for: imagesAreas.first)
                 for area in imagesAreas {
                     let newOpacity = self.listView.opacity(for: area)
@@ -256,8 +270,12 @@ class KMEditImagePropertyViewController: NSViewController {
                 }
                 self.updateImageAreasOpacity(opacity: opacity, state: .ended, needListView: false)
             } else if imagesAreas.count > 0 && imagesAreas.count != areas.count { //多选图片跟文字
-                self.headerBox.isHidden = true
-                self.headerBoxHeight.constant = 0
+                self.opacityBoxBottomMaginConstraint.constant = 0
+                self.headerBoxMaginWidthConstraint.constant = 0
+                self.alignmentViewTopConstraint.constant = 0
+                self.opacityBoxTopConstraint.constant = 0
+//                self.headerBox.isHidden = true
+                self.headerBoxHeight.constant = 48
                 self.imageBox.isHidden = true
                 self.imageBoxHeight.constant = 0
                 self.opacityBox.isHidden = true
@@ -265,6 +283,7 @@ class KMEditImagePropertyViewController: NSViewController {
                 self.buttonBox.isHidden = true
                 self.buttonBoxHeight.constant = 0
             }
+            self.updateLanguage()
         }
     }
     
@@ -457,6 +476,7 @@ extension KMEditImagePropertyViewController {
         }
         
         self.listView.cropEditImageArea(self.listView.selectImageAreas, withBounds: self.listView.cropAreas.cropRect)
+        self.cancelCutImageAction(cancelVC?.button as Any)
     }
     
     @IBAction func cancelCutImageAction(_ sender: Any) {
@@ -469,6 +489,13 @@ extension KMEditImagePropertyViewController {
         self.updateButtonState(hidden: true)
     }
     
+    @IBAction func restoreCutImageAction(_ sender: Any) {
+        if self.listView.selectImageAreas == nil {
+            return
+        }
+        self.listView.resetCrop(with: self.listView.selectImageAreas)
+    }
+    
     @IBAction func replaceImageAction(_ sender: NSButton) {
         if self.listView.selectImageAreas == nil {
             return
@@ -495,21 +522,22 @@ extension KMEditImagePropertyViewController {
         }
         if imagesAreas.count == 1 {
             let panel = NSSavePanel()
-            panel.nameFieldStringValue = "\(NSLocalizedString("Untitled", comment: "")).png"
-            let button = NSButton.init(checkboxWithTitle: NSLocalizedString("Open the document after saving", comment: ""), target: nil, action: nil)
-            button.state = .on
-            panel.accessoryView = button
+            panel.nameFieldStringValue = "\(NSLocalizedString("Untitled", comment: "")).jpg"
+//            let button = NSButton.init(checkboxWithTitle: NSLocalizedString("Open the document after saving", comment: ""), target: nil, action: nil)
+//            button.state = .on
+//            panel.accessoryView = button
             panel.isExtensionHidden = true
             let response = panel.runModal()
             if response == .OK {
                 let url = panel.url
                 let result = self.listView.extractImage(with: self.listView.selectImageAreas, toImagePath: url!.path)
                 if result {
-                    if button.state == .on { /// 开启文档
-                        NSWorkspace.shared.openFile(url!.path)
-                    } else {
-                        
-                    }
+//                    if button.state == .on { /// 开启文档
+//                        NSWorkspace.shared.openFile(url!.path)
+                    NSWorkspace.shared.activateFileViewerSelecting([url!])
+//                    } else {
+//
+//                    }
                 }
             }
         } else if imagesAreas.count > 1 {
@@ -538,7 +566,7 @@ extension KMEditImagePropertyViewController {
                         var outPath = filePath!
                         outPath = outPath.stringByAppendingPathComponent(documentFileName)
                         outPath = outPath + "page \(j+1)"
-                        outPath = outPath.stringByAppendingPathExtension("png")
+                        outPath = outPath.stringByAppendingPathExtension("jpg")
                         let result = self.listView.extractImage(with: self.imagesAreas[j], toImagePath: outPath)
                         if result {
                             saveURLs.append(URL(fileURLWithPath: outPath))

+ 2 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/EditPDF/KMEditImagePropertyViewController.xib

@@ -8,6 +8,7 @@
         <customObject id="-2" userLabel="File's Owner" customClass="KMEditImagePropertyViewController" customModule="PDF_Master" customModuleProvider="target">
             <connections>
                 <outlet property="alignmentView" destination="3AP-7h-Nfc" id="loc-yn-FkQ"/>
+                <outlet property="alignmentViewTopConstraint" destination="Vog-68-6WN" id="Qqk-9Z-zrD"/>
                 <outlet property="buttonBox" destination="9za-vG-ihA" id="m1z-pN-ORp"/>
                 <outlet property="buttonBoxHeight" destination="q4K-hM-hqe" id="4Tg-z0-d6c"/>
                 <outlet property="cancelBox" destination="vr8-ml-OC0" id="kUB-8H-yo0"/>
@@ -25,6 +26,7 @@
                 <outlet property="opacityBox" destination="9ig-7b-xDq" id="Nlc-yf-4BI"/>
                 <outlet property="opacityBoxBottomMaginConstraint" destination="agw-2V-YyY" id="rjO-EG-goy"/>
                 <outlet property="opacityBoxHeight" destination="pQN-DI-xiY" id="xvF-Br-Df7"/>
+                <outlet property="opacityBoxTopConstraint" destination="pMH-jX-v3E" id="0oh-Dc-ukD"/>
                 <outlet property="opacitySlider" destination="Z0O-zt-cBQ" id="lW1-SW-S3f"/>
                 <outlet property="opacityTitleLabel" destination="XPI-yz-g9u" id="NH7-jW-9Vn"/>
                 <outlet property="replaceBox" destination="dSf-T8-3R3" id="WIv-EB-D9V"/>

+ 75 - 19
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/EditPDF/KMEditPDFTextPropertyViewController.swift

@@ -35,13 +35,17 @@ class KMEditPDFTextPropertyViewController: NSViewController {
     @IBOutlet weak var propertyTitle: NSTextField!
     @IBOutlet weak var preImageView: NSImageView!
     
+    @IBOutlet weak var textPresuppositionContentView: NSView!
     @IBOutlet weak var textPresuppositionBox: NSBox!
     @IBOutlet weak var resetTextPresuppositionBox: NSBox!
     @IBOutlet weak var textPresuppositionTopContstraint: NSLayoutConstraint!
+    @IBOutlet weak var textPresuppositionHeightContstraint: NSLayoutConstraint!
     
     @IBOutlet weak var fontContentView: NSView!
     @IBOutlet weak var fontTitleLabel: NSTextField!
     @IBOutlet weak var fontImageView: NSButton!
+    @IBOutlet weak var fontContentViewHeightConstraint: NSLayoutConstraint!
+    @IBOutlet weak var fontContentViewTopConstraint: NSLayoutConstraint!
     
     @IBOutlet weak var fontNameBox: NSBox!
     @IBOutlet weak var fontStyleBox: NSBox!
@@ -55,6 +59,7 @@ class KMEditPDFTextPropertyViewController: NSViewController {
     @IBOutlet weak var fontColorButton: NSButton!
     @IBOutlet weak var fontCustomColorButton: NSButton!
     
+    @IBOutlet weak var alignmentTopConstraint: NSLayoutConstraint!
     @IBOutlet weak var alignmentView: KMEditPropertyAlignmentView!
     
     var textPresuppositionVC: KMDesignSelect?
@@ -79,7 +84,13 @@ class KMEditPDFTextPropertyViewController: NSViewController {
     var alignment : NSTextAlignment = .center
     var fontName: String = "Helvetica" {
         didSet {
-            self.fontNameVC?.stringValue = fontName
+            if self.fontNameVC != nil {
+                if self.fontNameVC!.items.contains(fontName) {
+                    self.fontNameVC?.stringValue = fontName
+                } else {
+                    self.fontNameVC?.stringValue = "Helvetica"
+                }
+            }
         }
     }
     
@@ -99,6 +110,8 @@ class KMEditPDFTextPropertyViewController: NSViewController {
         self.setup()
         self.initData()
         self.reloadData()
+        self.updateLanguage()
+        self.listView.isEditImage = true
     }
     
     func setup() {
@@ -222,7 +235,14 @@ class KMEditPDFTextPropertyViewController: NSViewController {
     }
     
     func updateLanguage() {
+        let areas = self.listView.editingAreas() ?? []
+        if textsAreas.count > 0 && textsAreas.count != areas.count { //多选图片跟文字
+            self.propertyTitle.stringValue = NSLocalizedString("General Properties", comment: "")
+        } else {
+            self.propertyTitle.stringValue = NSLocalizedString("Text", comment: "")
+        }
         
+        self.fontTitleLabel.stringValue = NSLocalizedString("Font", comment: "")
     }
     
     func reloadData() {
@@ -230,25 +250,44 @@ class KMEditPDFTextPropertyViewController: NSViewController {
             self.listView.editingAreas().count > 0 {
             textsAreas = []
             
-            let areas = self.listView.editingAreas()
-            self.alignmentView.editingAreas = areas ?? []
-            
-            for i in 0 ... areas!.count-1 {
-                if areas![i] is CPDFEditTextArea {
-                    textsAreas.append(areas![i] as! CPDFEditTextArea)
+            let areas = self.listView.editingAreas() ?? []
+            self.alignmentView.editingAreas = areas
+            for i in 0 ... areas.count-1 {
+                if areas[i] is CPDFEditTextArea {
+                    textsAreas.append(areas[i] as! CPDFEditTextArea)
                 }
             }
-            if textsAreas.count == 1 {
+            if textsAreas.count == 1 && textsAreas.count == areas.count {
                 self.headerBox.isHidden = false
+                self.fontContentView.isHidden = false
+                self.textPresuppositionContentView.isHidden = false
                 self.imageViewHeightConstraint.constant = 88
                 self.textPresuppositionTopContstraint.constant = 152
-            } else if textsAreas.count > 1 {
+                self.fontContentViewHeightConstraint.constant = 153
+                self.alignmentTopConstraint.constant = 16
+                self.fontContentViewTopConstraint.constant = 8
+            } else if textsAreas.count > 1 && textsAreas.count == areas.count {
                 self.headerBox.isHidden = true
+                self.fontContentView.isHidden = false
+                self.textPresuppositionContentView.isHidden = false
                 self.imageViewHeightConstraint.constant = 0
                 self.textPresuppositionTopContstraint.constant = 50
+                self.fontContentViewHeightConstraint.constant = 153
+                self.alignmentTopConstraint.constant = 16
+                self.fontContentViewTopConstraint.constant = 8
+            } else if textsAreas.count > 0 && textsAreas.count != areas.count { //多选图片跟文字
+                self.headerBox.isHidden = true
+                self.fontContentView.isHidden = true
+                self.textPresuppositionContentView.isHidden = true
+                self.fontContentViewHeightConstraint.constant = 0
+                self.textPresuppositionTopContstraint.constant = 16
+                self.imageViewHeightConstraint.constant = 0
+                self.alignmentTopConstraint.constant = 0
+                self.fontContentViewTopConstraint.constant = 0
             }
             
             self.refreshSelectAreaProperty()
+            self.updateLanguage()
         }
     }
     
@@ -257,10 +296,18 @@ class KMEditPDFTextPropertyViewController: NSViewController {
             let areas = self.listView.editingAreas().first
             if areas is CPDFEditTextArea  {
                 let sizeString = "\(abs(self.listView.editingSelectionFontSize()))"
-                let fontName: String = self.listView.editingSelectionFontName() ?? "Helvetica"
+                var fontName: String = self.listView.editingSelectionFontName() ?? "Helvetica"
                 let alignment = self.listView.editingSelectionAlignment()
                 var color = self.listView.editingSelectionFontColor() ?? NSColor.black
                 
+                if self.fontNameVC != nil {
+                    if self.fontNameVC!.items.contains(fontName) {
+                        
+                    } else {
+                        fontName = "Helvetica"
+                    }
+                }
+                
                 self.updateTextPresupposition(fontName: fontName, size: CGFloat(Float(sizeString)!), needChangeListView: false)
                 
                 self.currentColor = color
@@ -563,8 +610,11 @@ extension KMEditPDFTextPropertyViewController {
     func updateFontNameAndStyle(name: String, style: String, needChangeListView: Bool = true) {
         if fontName != name || fontStyle != style {
             let styleArray = self.fetchFontStyleWithFontName(fontName: name)
-            
-            let fontName = "\(name)-\(style)"
+            var styleString = self.checkFontStyle(style: style)
+            var fontName = "\(name)-\(styleString)"
+            if styleString.count == 0 {
+                fontName = name
+            }
             
             if self.listView.editingAreas()?.count ?? 0 > 0 {
                 if needChangeListView {
@@ -636,14 +686,12 @@ extension KMEditPDFTextPropertyViewController {
     //MARK: 刷新预览图片
     private func updatePreviewImage() {
         let alignment = self.alignment
-        let fontSize = Float((self.fontSizeVC?.stringValue.replacingOccurrences(of: "pt", with: ""))!)
+        var fontSize = Float((self.fontSizeVC?.stringValue.replacingOccurrences(of: "pt", with: ""))!) ?? 1.0
         let fontName = self.fontNameVC?.stringValue
-        var fontStyle = self.fontStyleVC?.stringValue
+        var fontStyle = self.checkFontStyle(style: self.fontStyleVC?.stringValue ?? "")
         let fontCurrentColor = self.currentColor
         
-        if fontStyle == "Regular" || fontStyle == "Roman" {
-            fontStyle = ""
-        }
+        fontSize = max(fontSize, 8)
         
         let editringareas = self.listView.editingAreas()
         let count = self.listView.editingAreas()?.count
@@ -662,7 +710,7 @@ extension KMEditPDFTextPropertyViewController {
             }
         }
         var attributeFontDescriptor = NSFontDescriptor.init(fontAttributes: [NSFontDescriptor.AttributeName.family : fontName,NSFontDescriptor.AttributeName.face: fontStyle])
-        var font = NSFont.init(descriptor: attributeFontDescriptor, size: CGFloat(fontSize!))
+        var font = NSFont.init(descriptor: attributeFontDescriptor, size: CGFloat(fontSize))
         var red : CGFloat = 0.0
         var green : CGFloat = 0.0
         var blue : CGFloat = 0.0
@@ -676,7 +724,7 @@ extension KMEditPDFTextPropertyViewController {
             self.fontName = ""
             self.fontStyle = ""
             attributeFontDescriptor = NSFontDescriptor.init(fontAttributes: [NSFontDescriptor.AttributeName.family : fontName ?? "Helvetica",NSFontDescriptor.AttributeName.face : fontStyle ?? "Bold"])
-            font = NSFont.init(descriptor: attributeFontDescriptor, size: CGFloat(fontSize!))
+            font = NSFont.init(descriptor: attributeFontDescriptor, size: CGFloat(fontSize))
         }
         
         let attributes = [NSAttributedString.Key.font:font,NSAttributedString.Key.foregroundColor:color,NSAttributedString.Key.paragraphStyle:style]
@@ -693,6 +741,14 @@ extension KMEditPDFTextPropertyViewController {
         self.preImageView.image = image
     }
     
+    func checkFontStyle(style: String) -> String {
+        var result = style
+        if style == "Regular" || style == "Roman" {
+            result = ""
+        }
+        return result
+    }
+    
     func supportFontSize() -> [String] {
         return ["8pt", "9pt", "10pt", "11pt", "12pt", "14pt", "16pt", "18pt", "20pt", "22pt", "24pt", "26pt", "28pt", "36pt", "48pt", "72pt"]
     }

+ 6 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/EditPDF/KMEditPDFTextPropertyViewController.xib

@@ -8,12 +8,15 @@
     <objects>
         <customObject id="-2" userLabel="File's Owner" customClass="KMEditPDFTextPropertyViewController" customModule="PDF_Master" customModuleProvider="target">
             <connections>
+                <outlet property="alignmentTopConstraint" destination="UEJ-wK-qqM" id="L36-e1-XfJ"/>
                 <outlet property="alignmentView" destination="Oi3-L1-ffT" id="rBC-Tk-pG6"/>
                 <outlet property="centerAlignmentBox" destination="rXF-2b-cRj" id="fi9-sF-XfO"/>
                 <outlet property="colorBox" destination="Dcy-0U-AoP" id="ADd-OX-dJd"/>
                 <outlet property="contentView" destination="dAY-3A-lfL" id="mu3-cD-1Tc"/>
                 <outlet property="fontColorButton" destination="KRu-kj-Nkf" id="Jpy-RT-33W"/>
                 <outlet property="fontContentView" destination="LHG-XG-Y6G" id="Jjo-I3-Qjb"/>
+                <outlet property="fontContentViewHeightConstraint" destination="C7Q-H9-QI3" id="WlD-J7-HJN"/>
+                <outlet property="fontContentViewTopConstraint" destination="hQa-vT-vVO" id="DCi-0F-9gd"/>
                 <outlet property="fontCustomColorButton" destination="Rrw-k0-Lul" id="GpU-DA-0uw"/>
                 <outlet property="fontImageView" destination="Ae7-Z5-hap" id="7eg-xn-7T2"/>
                 <outlet property="fontNameBox" destination="UTw-eO-Jvo" id="Azp-fI-lGq"/>
@@ -29,6 +32,8 @@
                 <outlet property="resetTextPresuppositionBox" destination="cZ0-Lb-7rt" id="NTl-SG-HeT"/>
                 <outlet property="rightAlignmentBox" destination="LB3-jb-9Hl" id="fLg-Cb-V6u"/>
                 <outlet property="textPresuppositionBox" destination="Pd8-gf-nbc" id="sMR-ru-581"/>
+                <outlet property="textPresuppositionContentView" destination="c0i-e8-xpM" id="Ki0-0n-7IM"/>
+                <outlet property="textPresuppositionHeightContstraint" destination="4Db-zz-MLg" id="93s-uo-67s"/>
                 <outlet property="textPresuppositionTopContstraint" destination="eXm-YW-Pwj" id="pUO-ce-FC5"/>
                 <outlet property="view" destination="4mG-P9-QH2" id="rSY-kX-3d6"/>
             </connections>
@@ -222,6 +227,7 @@
                                     <constraint firstItem="2gN-hL-7Ez" firstAttribute="leading" secondItem="LHG-XG-Y6G" secondAttribute="leading" id="9RC-zj-BJv"/>
                                     <constraint firstItem="2gN-hL-7Ez" firstAttribute="top" secondItem="LHG-XG-Y6G" secondAttribute="top" constant="8" id="9fv-Yt-Hkh"/>
                                     <constraint firstItem="Ae7-Z5-hap" firstAttribute="centerY" secondItem="2gN-hL-7Ez" secondAttribute="centerY" id="BTJ-rI-dsN"/>
+                                    <constraint firstAttribute="height" constant="153" id="C7Q-H9-QI3"/>
                                     <constraint firstAttribute="bottom" secondItem="LB3-jb-9Hl" secondAttribute="bottom" constant="5" id="Cn1-DH-y8f"/>
                                     <constraint firstItem="1Xr-1z-9Ud" firstAttribute="width" secondItem="AHN-i5-WYB" secondAttribute="width" id="FpD-Fa-wDR"/>
                                     <constraint firstItem="LB3-jb-9Hl" firstAttribute="leading" secondItem="rXF-2b-cRj" secondAttribute="trailing" constant="8" id="Hf9-Ha-1nV"/>

+ 1 - 1
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/Signature/KMSignatureAnnotationViewController.m

@@ -61,7 +61,7 @@ KMSigntureViewItemDelegate>
 - (void)updateLanguage {
     self.signatureLabel.stringValue = NSLocalizedString(@"Signature", nil);
     self.emptyTipLabel.stringValue = NSLocalizedString(@"No Signatures", nil);
-    self.emptyMinTipLabel.stringValue = NSLocalizedString(@"Click \"Add\" in the upper right corner to create a new signature.", nil);
+    self.emptyMinTipLabel.stringValue = NSLocalizedString(@"Click the Add button in the upper right corner to create a new signature.", nil);
     
     NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
     paragraphStyle.lineHeightMultiple = 1.32;

+ 1 - 1
PDF Office/PDF Master/Class/PDFWindowController/Toolbar/KMToolbarController.swift

@@ -312,7 +312,7 @@ class KMToolbarController: NSViewController {
         return nil
     }
     
-    private func findChildItem(_ identifier: String) -> KMToolBoxItem? {
+    func findChildItem(_ identifier: String) -> KMToolBoxItem? {
         if (self.childToolBarView?.toolbarItems == nil || self.childToolBarView!.toolbarItems.count == 0) {
             return nil
         }

+ 48 - 13
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+Action.swift

@@ -96,12 +96,17 @@ extension KMMainViewController {
     }
     
     func corpImageMenuItem()->NSMenuItem {
-        var corpImageItem = NSMenuItem(title: NSLocalizedString("Sure Crop", comment: ""), action: #selector(menuItemEditingClick_CropImage), target: self)!
+        var corpImageItem = NSMenuItem(title: NSLocalizedString("Confirm Crop", comment: ""), action: #selector(menuItemEditingClick_CropImage), target: self)!
         return corpImageItem
     }
     
     func cancelCorpImageMenuItem()->NSMenuItem {
-        let cancelCorpImageItem = NSMenuItem(title: NSLocalizedString("NoApplyCrop", comment: ""), action: #selector(menuItemEditingClick_CancelCrop), target: self)!
+        let cancelCorpImageItem = NSMenuItem(title: NSLocalizedString("Cancel Crop", comment: ""), action: #selector(menuItemEditingClick_CancelCrop), target: self)!
+        return cancelCorpImageItem
+    }
+    
+    func restoreCorpImageMenuItem()->NSMenuItem {
+        let cancelCorpImageItem = NSMenuItem(title: NSLocalizedString(" Restore Crop", comment: ""), action: #selector(menuItemEditingClick_RestoreCrop), target: self)!
         return cancelCorpImageItem
     }
     
@@ -370,18 +375,39 @@ extension KMMainViewController {
     }
     
     @objc func addImageText(sender: NSMenuItem) {
+        let event = NSApp.currentEvent
+        let clickLocation = event?.locationInWindow
+        var point = self.listView.convert(clickLocation!, from: NSApp.mainWindow?.contentView)
+        var point2 = self.listView.convert(point, to: self.listView.currentPage())
+        point2 = CGPoint(x: self.listView.bounds.width - point2.x, y: self.listView.bounds.height - point2.y)
+        point = point2
         if sender.tag == 0 {
             print("添加文字")
+            let isSelect = self.toolbarController.findChildItem(KMToolbarAddTextEditPDFItemIdentifier)?.isSelected ?? false
+            if !isSelect {
+                self.toolbarController.selectItem(KMToolbarAddTextEditPDFItemIdentifier)
+            }
+            
+//            self.pdfViewEditingAddTextArea(self.listView, add: CGRectMake(point.x, point.y, 0, 0))
         } else if sender.tag == 1 {
             print("添加图片")
+            let isSelect = self.toolbarController.findChildItem(KMToolbarAddImageEditPDFItemIdentifier)?.isSelected ?? false
+            if !isSelect {
+                self.toolbarController.selectItem(KMToolbarAddImageEditPDFItemIdentifier)
+            }
+//            self.pdfViewEditingAddImageArea(self.listView, add: CGRectMake(point.x, point.y, 0, 0))
         } else if sender.tag == 2 {
             print("粘贴")
         }
     }
     
     @objc func menuItemEditingClick_CropImage(sender: NSMenuItem) {
-        if self.listView.cropAreas != nil && self.listView.selectImageAreas != nil{
-            self.listView.cropEditImageArea(self.listView.selectImageAreas, withBounds: self.listView.cropAreas.cropRect)
+        if self.rightSideViewController.eidtPDFImageProperty != nil {
+            self.rightSideViewController.eidtPDFImageProperty.confirmVCImageAction((Any).self)
+        } else {
+            if self.listView.cropAreas != nil && self.listView.selectImageAreas != nil{
+                self.listView.cropEditImageArea(self.listView.selectImageAreas, withBounds: self.listView.cropAreas.cropRect)
+            }
         }
     }
     
@@ -395,6 +421,14 @@ extension KMMainViewController {
         }
     }
     
+    @objc func menuItemEditingClick_RestoreCrop(sender: NSMenuItem) {
+        if self.rightSideViewController.eidtPDFImageProperty != nil {
+            self.rightSideViewController.eidtPDFImageProperty?.restoreCutImageAction("")
+        } else {
+            self.listView.resetCrop(with: self.listView.selectImageAreas)
+        }
+    }
+    
     @objc func menuItemEditingClick_CutImage(sender: NSMenuItem) {
       if self.listView.selectImageAreas != nil {
             self.listView.isEditImage = true
@@ -425,21 +459,22 @@ extension KMMainViewController {
             return
         }
         let panel = NSSavePanel()
-        panel.nameFieldStringValue = "[新文件].png"
-        let button = NSButton.init(checkboxWithTitle: "保存后打开文档", target: nil, action: nil)
-        button.state = .on
-        panel.accessoryView = button
+//        panel.nameFieldStringValue = "[新文件].png"
+//        let button = NSButton.init(checkboxWithTitle: "保存后打开文档", target: nil, action: nil)
+//        button.state = .on
+//        panel.accessoryView = button
         panel.isExtensionHidden = true
         let response = panel.runModal()
         if response == .OK {
             let url = panel.url
             let result = self.listView.extractImage(with: self.listView.selectImageAreas, toImagePath: url!.path)
             if result {
-                if button.state == .on { /// 开启文档
-                    NSWorkspace.shared.openFile(url!.path)
-                } else {
-                    
-                }
+                NSWorkspace.shared.activateFileViewerSelecting([url!])
+//                if button.state == .on { /// 开启文档
+//                    NSWorkspace.shared.openFile(url!.path)
+//                } else {
+//
+//                }
             }
         }
     }

+ 5 - 1
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController+UI.swift

@@ -169,6 +169,7 @@ extension KMMainViewController: KMToolbarControllerDelegate {
 //                self.rightSideViewController.view.isHidden = true
                 self.rightSideViewController.isHidden = true
                 self.listView.setShouAddEdit([])
+                self.listView.change([.text, .image])
                 self.listView.annotationType = .unkown
                 self.closeRightPane()
             } else if self.listView.annotationType == .addText {
@@ -176,13 +177,16 @@ extension KMMainViewController: KMToolbarControllerDelegate {
                 self.rightSideViewController.isHidden = false
                 self.openRightPane()
                 self.rightSideViewController.subViewType = .EditPDFAddText
+                
                 self.listView.setShouAddEdit(.text)
+                self.listView.change(.text)
             } else if self.listView.annotationType == .addImage {
                 self.rightSideViewController.isHidden = false
                 self.openRightPane()
                 
                 self.rightSideViewController.subViewType = .EditPDFAddImage
                 self.listView.setShouAddEdit(.image)
+                self.listView.change(.image)
             }
         } else {
 //            self.rightSideViewController.view.isHidden = true
@@ -221,7 +225,7 @@ extension KMMainViewController: KMToolbarControllerDelegate {
             self.listView.editingConfig().editingBorderColor = NSColor.init(red: 0, green: 0, blue: 0, alpha: 0.4)
             self.listView.editingConfig().addEditAreaColor = NSColor.init(red: 23.0/255.0, green: 112.0/255.0, blue: 244.0/255.0, alpha: 0.5)
             self.listView.editingConfig().editAreaMoveFillColor = NSColor.init(red: 23.0/255.0, green: 112.0/255.0, blue: 244.0/255.0, alpha: 0.1)
-
+            self.listView.setShouAddEdit([])
         }else if self.toolbarController.toolbarType == .LeftPanel {
             self.toggleLeftPane()
             self.leftSideViewController.showPanelView(show: true)

+ 62 - 41
PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController.swift

@@ -1221,12 +1221,19 @@ import Cocoa
     func pdfViewEditingAreaDidChanged(_ pdfView: CPDFView!) {
         print("pdfViewEditingAreaDidChanged")
         let areas = self.listView.editingAreas()
-        if areas == nil || areas?.count ?? 0 == 0{
-//            self.rightSideViewController.view.isHidden = true
-            self.rightSideViewController.isHidden = true
-            self.closeRightPane()
-            if self.rightSideViewController != nil && self.rightSideViewController.subViewType == .EditPDFAddText && self.listView.annotationType == .addText {
-                self.rightSideViewController.eidtPDFTextProperty.initData()
+        if areas == nil || areas?.count ?? 0 == 0 {
+            if self.listView.toolMode == .editPDFToolMode {
+                if self.listView.annotationType == .addImage || self.listView.annotationType == .addText {
+                    self.openRightPane()
+                } else {
+                    self.closeRightPane()
+                }
+            } else {
+                self.rightSideViewController.isHidden = true
+                self.closeRightPane()
+                if self.rightSideViewController != nil && self.rightSideViewController.subViewType == .EditPDFAddText && self.listView.annotationType == .addText {
+                    self.rightSideViewController.eidtPDFTextProperty.initData()
+                }
             }
             return
         }
@@ -1249,7 +1256,7 @@ import Cocoa
                 self.rightSideViewController.isHidden = true
                 self.closeRightPane()
             }
-        } else if self.rightSideViewController != nil && self.rightSideViewController.subViewType == .EditPDFAddText && self.listView.annotationType == .addText{
+        } else if self.rightSideViewController != nil && self.rightSideViewController.subViewType == .EditPDFAddText && self.listView.annotationType == .addText {
 //            self.rightSideViewController.view.isHidden = false
             self.rightSideViewController.isHidden = false
             self.rightSideViewController.eidtPDFTextProperty.reloadData()
@@ -1292,45 +1299,51 @@ import Cocoa
     
     //编辑PDF 创建图片区域回调
     func pdfViewEditingAddImageArea(_ pdfView: CPDFView!, add rect: CGRect) {
-        let panel = NSOpenPanel()
-        panel.allowsMultipleSelection = false
-        panel.allowedFileTypes = ["png","jpg"]
-        panel.beginSheetModal(for: NSApp.mainWindow!) { response in
-            if response == .OK {
-                let openPath = panel.url?.path
-                let image = NSImage.init(contentsOf: panel.url!)
-                //图片自适应范围
-                if image != nil {
-                    var imageRect = rect
-                    let imageSize = image!.size
-                    var previewSize = rect.size
-                    var isChangeSize = false
-                    if previewSize.width == 0 && previewSize.height == 0 {
-                        previewSize = CGSize(width: 500, height: 500)
-                        isChangeSize = true
-                    }
-                    
-                    let scale = min(previewSize.width / imageSize.width, previewSize.height / imageSize.height)
-                    let newSize = CGSize(width: imageSize.width * scale, height: imageSize.height * scale)
-                    
-                    if isChangeSize {
-                        imageRect.origin.x = imageRect.origin.x - newSize.width / 2
-                        imageRect.origin.y = imageRect.origin.y - newSize.height / 2
-                    } else {
-                        imageRect.origin.x = imageRect.origin.x + imageRect.width / 2 - newSize.width / 2
-                        imageRect.origin.y = imageRect.origin.y + imageRect.height / 2 - newSize.height / 2
+        if self.listView.isEditImage {
+            self.menuItemEditingClick_CropImage(sender: NSMenuItem())
+        } else {
+            let panel = NSOpenPanel()
+            panel.allowsMultipleSelection = false
+            panel.allowedFileTypes = ["png","jpg"]
+            panel.beginSheetModal(for: NSApp.mainWindow!) { response in
+                if response == .OK {
+                    let openPath = panel.url?.path
+                    let image = NSImage.init(contentsOf: panel.url!)
+                    //图片自适应范围
+                    if image != nil {
+                        var imageRect = rect
+                        let imageSize = image!.size
+                        var previewSize = rect.size
+                        var isChangeSize = false
+                        if previewSize.width == 0 && previewSize.height == 0 {
+                            previewSize = CGSize(width: 500, height: 500)
+                            isChangeSize = true
+                        }
+                        
+                        let scale = min(previewSize.width / imageSize.width, previewSize.height / imageSize.height)
+                        let newSize = CGSize(width: imageSize.width * scale, height: imageSize.height * scale)
+                        
+                        if isChangeSize {
+                            imageRect.origin.x = imageRect.origin.x - newSize.width / 2
+                            imageRect.origin.y = imageRect.origin.y - newSize.height / 2
+                        } else {
+                            imageRect.origin.x = imageRect.origin.x + imageRect.width / 2 - newSize.width / 2
+                            imageRect.origin.y = imageRect.origin.y + imageRect.height / 2 - newSize.height / 2
+                        }
+                        
+                        imageRect.size = newSize
+                        
+                        self.listView.createImagePath(openPath!, rect: imageRect, page: pdfView.currentPage())
                     }
-                    
-                    imageRect.size = newSize
-                    
-                    self.listView.createImagePath(openPath!, rect: imageRect, page: pdfView.currentPage())
                 }
             }
         }
+        
     }
     
     func pdfViewEditingAddTextArea(_ pdfView: CPDFView!, add rect: CGRect) {
         print("pdfViewEditingAddTextArea")
+        print(rect)
         var newrect = CGRect(x: rect.origin.x, y: rect.origin.y, width: rect.size.width, height: rect.size.height)
         if __CGSizeEqualToSize(rect.size, CGSize.zero) {
             newrect = CGRect(x: rect.origin.x, y: rect.origin.y - 12, width: 20, height: 12)
@@ -1518,9 +1531,17 @@ import Cocoa
             if fristAreas is CPDFEditImageArea {
                 self.listView.selectImageAreas = fristAreas as! CPDFEditImageArea
                 if self.listView.isEditImage {
-                    tMenuItems?.removeAll()
-                    tMenuItems?.append(self.corpImageMenuItem())
-                    tMenuItems?.append(self.cancelCorpImageMenuItem())
+                    if self.listView.isEditImage {
+                        tMenuItems?.removeAll()
+                        tMenuItems?.append(self.corpImageMenuItem())
+                        tMenuItems?.append(self.cancelCorpImageMenuItem())
+                        tMenuItems?.append(self.restoreCorpImageMenuItem())
+                    } else {
+                        tMenuItems?.append(NSMenuItem.separator())
+                        tMenuItems?.append(self.cutImageArea())
+                        tMenuItems?.append(self.replaceImageArea())
+                        tMenuItems?.append(self.exportImageArea())
+                    }
                 } else {
                     tMenuItems?.append(NSMenuItem.separator())
                     tMenuItems?.append(self.cutImageArea())

+ 1 - 1
PDF Office/PDF Master/Strings/en.lproj/Localizable.strings

@@ -129,7 +129,7 @@
 "Style" = "Style";
 //MARK: 签名
 "No Signatures" = "No Signatures";
-"Click \"Add\" in the upper right corner to create a new signature." = "Click \"Add\" in the upper right corner to create a new signature.";
+"Click the Add button in the upper right corner to create a new signature." = "Click the Add button in the upper right corner to create a new signature.";
 "Create Signature" = "Create Signature";
 "Keyboard" = "Keyboard";
 "Trackpad" = "Trackpad";