Browse Source

【综合】线条设置窗口调式

tangchao 10 months ago
parent
commit
213a6b81d3

+ 17 - 0
PDF Office/PDF Master/Class/Common/Category/CPDFKit/CPDFAnnotation+KMExtension.swift

@@ -0,0 +1,17 @@
+//
+//  CPDFAnnotation+KMExtension.swift
+//  PDF Reader Pro
+//
+//  Created by tangchao on 2024/4/21.
+//
+
+import Foundation
+
+@objc extension CPDFAnnotation {
+    static let kSquareType                              = "Square"
+    static let kCircleType                              = "Circle"
+//    static let kDiamondType                             = "Diamond"
+    static let kArrowType                               = "Arrow"
+    static let kLineType                                = "Line"
+//    static let kClosedArrowType                         = "ClosedArrow"
+}

+ 11 - 15
PDF Office/PDF Master/Class/Common/LineInspector/KMLineInspector.swift

@@ -72,6 +72,8 @@ enum KMLineChangeAction: Int {
                 self._lineWidth = newValue
                 self.lineWell?.lineWidth = newValue
                 
+                self.lineWidthField.stringValue = String(format: "%.0f", self.lineWidth)
+                self.lineWidthSlider.doubleValue = self.lineWidth
                 self._notifyChangeAction(.lineWidth)
             }
         }
@@ -159,6 +161,8 @@ enum KMLineChangeAction: Int {
     }
     
     private func _initDefalutValue() {
+        self.window?.title = NSLocalizedString("Lines", comment: "")
+        
         self.styleButton.setHelp(KMLocalizedString("Solid line style", "Tool tip message"), for: CPDFBorderStyle.solid.rawValue)
         self.styleButton.setHelp(KMLocalizedString("Dashed line style", "Tool tip message"), for: CPDFBorderStyle.dashed.rawValue)
         self.styleButton.setHelp(KMLocalizedString("Beveled line style", "Tool tip message"), for: CPDFBorderStyle.beveled.rawValue)
@@ -518,19 +522,15 @@ enum KMLineChangeAction: Int {
 
     func setAnnotationStyle(_ annotation: CPDFAnnotation) {
         let type = annotation.type
-        // SKNLineString
-        if type == SKNFreeTextString || type == SKNCircleString || type == SKNSquareString || type == SKNLine_NoneString || type == SKNInkString {
-            if let border = annotation.border {
-                self.lineWidth = border.lineWidth
-                self.style = border.style.rawValue
-            } else {
-                self.lineWidth = 0.0
-                self.style = 0
+        if type == SKNFreeTextString || type == CPDFAnnotation.kCircleType || type == CPDFAnnotation.kSquareType  || type == CPDFAnnotation.kArrowType || type == CPDFAnnotation.kLineType || type == SKNInkString {
+            if let model = CPDFAnnotationModel(pdfAnnotations: [annotation]) {
+                self.lineWidth = model.lineWidth()
+                self.style = model.style().rawValue
+                self.dashPattern = model.dashPattern() as? [CGFloat] ?? []
             }
-            self.dashPattern = (annotation.border.dashPattern as? [CGFloat]) ?? []
         }
-        // SKNLineString
-        if type == SKNLine_NoneString {
+        
+        if type == CPDFAnnotation.kArrowType || type == CPDFAnnotation.kLineType {
             if let anno = annotation as? CPDFLineAnnotation {
                 self.startLineStyle = anno.startLineStyle.rawValue
                 self.endLineStyle = anno.endLineStyle.rawValue
@@ -542,7 +542,6 @@ enum KMLineChangeAction: Int {
     
     @objc func lineWidthSliderAction(_ sender: NSSlider) {
         self.lineWidth = sender.floatValue.cgFloat
-        self.lineWidthField.stringValue = String(format: "%.0f", sender.floatValue)
     }
     
     @objc func styleAction(_ sender: NSSegmentedControl) {
@@ -612,14 +611,11 @@ extension KMLineInspector: NSTextFieldDelegate {
             let value = self.lineWidthField.doubleValue
             if value < self.lineWidthSlider.minValue {
                 self.lineWidth = self.lineWidthSlider.minValue
-                self.lineWidthField.stringValue = String(format: "%.0f", self.lineWidth)
             } else if value > self.lineWidthSlider.maxValue {
                 self.lineWidth = self.lineWidthSlider.maxValue
-                self.lineWidthField.stringValue = String(format: "%.0f", self.lineWidth)
             } else {
                 self.lineWidth = value
             }
-            self.lineWidthSlider.doubleValue = self.lineWidth
         } else if self.dashPatternField.isEqual(to: obj.object) {
             let cnt = self.dashPatternField.integerValue
             let data = [CGFloat](repeating: 3.0, count: cnt)

+ 4 - 1
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListViewExtension/CPDFListView+Event.m

@@ -610,6 +610,7 @@ static inline CPDFAreaOfInterest CAreaOfInterestForResizeHandle(CRectEdges mask,
         [menu insertItem:[NSMenuItem separatorItem] atIndex:0];
         if(self.activeAnnotations.count == 1) {
             NSMenuItem * lineStyleItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Lines", @"PDFListView") action:@selector(menuItemClick_LineStyle:) keyEquivalent:@""];
+            lineStyleItem.representedObject = self.activeAnnotations.firstObject;
             
             subMenu = [[NSMenu alloc] init];
             NSMenuItem * lineSolidItem = [[NSMenuItem alloc] initWithTitle:NSLocalizedString(@"Solid", @"PDFListView") action:@selector(menuItemClick_LineStyle:) keyEquivalent:@""];
@@ -4276,8 +4277,10 @@ static inline CPDFAreaOfInterest CAreaOfInterestForResizeHandle(CRectEdges mask,
         [self.activeAnnotations removeAllObjects];
         [self.activeAnnotations addObject:annotation];
     }
-    //    [[[SKLineInspector sharedLineInspector] window] orderFront:sender];
     [[[KMLineInspector shared] window] orderFront:sender];
+    if (annotation != nil) {
+        [[KMLineInspector shared] setAnnotationStyle:annotation];
+    }
 }
 
 - (IBAction)menuItemClick_ChangeColor:(id)sender{

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

@@ -3086,9 +3086,9 @@ let LOCKED_KEY  = "locked"
 //                currentMenu.insertItem(self.setSnapshotStype(), at: currentMenu.items.count - 15)
 //                currentMenu.insertItem(self.setCropStype(), at: currentMenu.items.count - 15)
 //                currentMenu.insertItem(self.setTTSStype(), at: currentMenu.items.count - 15)
-                if listView.activeAnnotation.isKind(of: CPDFStampAnnotation.self) {
+                if let anno = self.listView.activeAnnotation, anno.isKind(of: CPDFStampAnnotation.self) {
                     
-                }else {
+                } else {
                     currentMenu.insertItem(NSMenuItem.separator(), at: currentMenu.items.count - 15)
                     currentMenu.insertItem(self.setShareStype(), at: currentMenu.items.count - 15)
                 }

+ 3 - 0
PDF Office/PDF Master/Class/README.md

@@ -100,6 +100,9 @@
 ## 导入 [扫描仪 & 相册]
 * KMDeviceBrowserWindowController
 
+## 线条设置窗口
+* KMLineInspector
+
 ## xxx
 
 [sign in](https://www.baidu.com) the [dashboard](https://www.baidu.com). to [sign up](https://www.baidu.com) 

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

@@ -3778,6 +3778,9 @@
 		BB7648EC29ECEEF400931039 /* KMAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB7648EB29ECEEF400931039 /* KMAppearance.swift */; };
 		BB7648ED29ECEEF400931039 /* KMAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB7648EB29ECEEF400931039 /* KMAppearance.swift */; };
 		BB7648EE29ECEEF400931039 /* KMAppearance.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB7648EB29ECEEF400931039 /* KMAppearance.swift */; };
+		BB77C85F2BD506BE0065AFF2 /* CPDFAnnotation+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB77C85E2BD506BE0065AFF2 /* CPDFAnnotation+KMExtension.swift */; };
+		BB77C8602BD506BE0065AFF2 /* CPDFAnnotation+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB77C85E2BD506BE0065AFF2 /* CPDFAnnotation+KMExtension.swift */; };
+		BB77C8612BD506BE0065AFF2 /* CPDFAnnotation+KMExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB77C85E2BD506BE0065AFF2 /* CPDFAnnotation+KMExtension.swift */; };
 		BB78EAAA2B561F9700121691 /* KMFullScreenWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB78EAA92B561F9700121691 /* KMFullScreenWindow.swift */; };
 		BB78EAAB2B561F9700121691 /* KMFullScreenWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB78EAA92B561F9700121691 /* KMFullScreenWindow.swift */; };
 		BB78EAAC2B561F9700121691 /* KMFullScreenWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB78EAA92B561F9700121691 /* KMFullScreenWindow.swift */; };
@@ -6656,6 +6659,7 @@
 		BB74DA7E2AC42959006EDFE7 /* NSButton+KMExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSButton+KMExtension.swift"; sourceTree = "<group>"; };
 		BB7648E729ECECBF00931039 /* Color.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Color.xcassets; sourceTree = "<group>"; };
 		BB7648EB29ECEEF400931039 /* KMAppearance.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMAppearance.swift; sourceTree = "<group>"; };
+		BB77C85E2BD506BE0065AFF2 /* CPDFAnnotation+KMExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFAnnotation+KMExtension.swift"; sourceTree = "<group>"; };
 		BB78EAA92B561F9700121691 /* KMFullScreenWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMFullScreenWindow.swift; sourceTree = "<group>"; };
 		BB7BC4D72AD3D6B700D6BEE6 /* PDFListView+KMExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PDFListView+KMExtensions.swift"; sourceTree = "<group>"; };
 		BB7E59F52BBA427C0021E63D /* KMBrowserWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBrowserWindow.swift; sourceTree = "<group>"; };
@@ -11120,6 +11124,7 @@
 				BB6D2DA62B674A6300624C24 /* CPDFOutline+KMExtension.swift */,
 				BB6D2DAA2B674D7900624C24 /* CPDFPage+KMExtension.swift */,
 				BBEDC22A2B98407000970C54 /* CPDFAction+KMExtension.swift */,
+				BB77C85E2BD506BE0065AFF2 /* CPDFAnnotation+KMExtension.swift */,
 			);
 			path = CPDFKit;
 			sourceTree = "<group>";
@@ -15340,6 +15345,7 @@
 				9FF0D0582B6A43750018A732 /* KMPDFAnnotationButtonWidgetSub.swift in Sources */,
 				BBBB6CDA2AD15B900035AA66 /* CPDFFreeTextAnnotation+PDFListView.swift in Sources */,
 				BB1B0ABF2B4FC6E900889528 /* KMGuideInfoWindowController.swift in Sources */,
+				BB77C85F2BD506BE0065AFF2 /* CPDFAnnotation+KMExtension.swift in Sources */,
 				BB5DF1F12959C9F00025CDA1 /* KMHeaderFooterPropertyMainController.swift in Sources */,
 				BB853C9D2AF8E436009C20C1 /* KMBatchRemovePasswordOperation.swift in Sources */,
 				AD5999422AD8DC2000412F8B /* KMDynamicStampViewController.swift in Sources */,
@@ -16827,6 +16833,7 @@
 				9FBC489C2996500300CA39D7 /* KMDocumentController.swift in Sources */,
 				F37322F7292DF9410013862C /* CSelfSignAnnotation.m in Sources */,
 				9F1FE4D929406E4700E952CA /* NSString+Utils.m in Sources */,
+				BB77C8602BD506BE0065AFF2 /* CPDFAnnotation+KMExtension.swift in Sources */,
 				BB146FE2299DC0D100784A6A /* GTLRDriveQuery.m in Sources */,
 				AD5999432AD8DC2000412F8B /* KMDynamicStampViewController.swift in Sources */,
 				BBD1F794296FE92500343885 /* KMPageEditSplitSettingView.swift in Sources */,
@@ -17674,6 +17681,7 @@
 				ADFA8F132B60E01C002595A4 /* KMSecureAlertView.swift in Sources */,
 				BBBAECF62B57672200266BD3 /* SKPresentationOptionsSheetController.swift in Sources */,
 				BB88106F2B4F771D00AFA63E /* KMVerificationInfoViewController.m in Sources */,
+				BB77C8612BD506BE0065AFF2 /* CPDFAnnotation+KMExtension.swift in Sources */,
 				BB9E2F752A495BCD000DC68D /* KMConvertSettingLimitTipView.swift in Sources */,
 				9FCFEC8A2AD0EF9900EAD2CB /* KMPopMenuButton.swift in Sources */,
 				BB6DD80E29347F77001F0544 /* KMSecureEncryptWindowController.swift in Sources */,