Ver código fonte

【OCToSwift】CPDFChoiceWidgetAnnotation+PDFListView

tangchao 1 ano atrás
pai
commit
690da61ddd

+ 8 - 10
PDF Office/PDF Master.xcodeproj/project.pbxproj

@@ -2941,6 +2941,9 @@
 		BBBB6CCA2AD109F30035AA66 /* CPDFAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBB6CC92AD109F30035AA66 /* CPDFAnnotation+PDFListView.swift */; };
 		BBBB6CCB2AD109F30035AA66 /* CPDFAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBB6CC92AD109F30035AA66 /* CPDFAnnotation+PDFListView.swift */; };
 		BBBB6CCC2AD109F30035AA66 /* CPDFAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBB6CC92AD109F30035AA66 /* CPDFAnnotation+PDFListView.swift */; };
+		BBBB6CCE2AD13E210035AA66 /* CPDFButtonWidgetAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBB6CCD2AD13E210035AA66 /* CPDFButtonWidgetAnnotation+PDFListView.swift */; };
+		BBBB6CCF2AD13E210035AA66 /* CPDFButtonWidgetAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBB6CCD2AD13E210035AA66 /* CPDFButtonWidgetAnnotation+PDFListView.swift */; };
+		BBBB6CD02AD13E210035AA66 /* CPDFButtonWidgetAnnotation+PDFListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBB6CCD2AD13E210035AA66 /* CPDFButtonWidgetAnnotation+PDFListView.swift */; };
 		BBBF68802A3BF17F0058E14E /* KMFilePromiseProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBF687F2A3BF17F0058E14E /* KMFilePromiseProvider.swift */; };
 		BBBF68812A3BF17F0058E14E /* KMFilePromiseProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBF687F2A3BF17F0058E14E /* KMFilePromiseProvider.swift */; };
 		BBBF68822A3BF17F0058E14E /* KMFilePromiseProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBBF687F2A3BF17F0058E14E /* KMFilePromiseProvider.swift */; };
@@ -3294,9 +3297,6 @@
 		F37322ED292DF9410013862C /* CPDFMarkupAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322BD292DF9410013862C /* CPDFMarkupAnnotation+PDFListView.m */; };
 		F37322EE292DF9410013862C /* CPDFMarkupAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322BD292DF9410013862C /* CPDFMarkupAnnotation+PDFListView.m */; };
 		F37322EF292DF9410013862C /* CPDFMarkupAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322BD292DF9410013862C /* CPDFMarkupAnnotation+PDFListView.m */; };
-		F37322F0292DF9410013862C /* CPDFButtonWidgetAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322C2292DF9410013862C /* CPDFButtonWidgetAnnotation+PDFListView.m */; };
-		F37322F1292DF9410013862C /* CPDFButtonWidgetAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322C2292DF9410013862C /* CPDFButtonWidgetAnnotation+PDFListView.m */; };
-		F37322F2292DF9410013862C /* CPDFButtonWidgetAnnotation+PDFListView.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322C2292DF9410013862C /* CPDFButtonWidgetAnnotation+PDFListView.m */; };
 		F37322F3292DF9410013862C /* CSelfSignAnnotationFreeText.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322C8292DF9410013862C /* CSelfSignAnnotationFreeText.m */; };
 		F37322F4292DF9410013862C /* CSelfSignAnnotationFreeText.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322C8292DF9410013862C /* CSelfSignAnnotationFreeText.m */; };
 		F37322F5292DF9410013862C /* CSelfSignAnnotationFreeText.m in Sources */ = {isa = PBXBuildFile; fileRef = F37322C8292DF9410013862C /* CSelfSignAnnotationFreeText.m */; };
@@ -4703,6 +4703,7 @@
 		BBB9B306299A5D6C004F3235 /* GTMAppAuthFetcherAuthorization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMAppAuthFetcherAuthorization.m; sourceTree = "<group>"; };
 		BBB9B335299A5F35004F3235 /* ObjectiveDropboxOfficial.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = ObjectiveDropboxOfficial.framework; sourceTree = "<group>"; };
 		BBBB6CC92AD109F30035AA66 /* CPDFAnnotation+PDFListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFAnnotation+PDFListView.swift"; sourceTree = "<group>"; };
+		BBBB6CCD2AD13E210035AA66 /* CPDFButtonWidgetAnnotation+PDFListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CPDFButtonWidgetAnnotation+PDFListView.swift"; sourceTree = "<group>"; };
 		BBBF687F2A3BF17F0058E14E /* KMFilePromiseProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMFilePromiseProvider.swift; sourceTree = "<group>"; };
 		BBBF68832A3C3AF10058E14E /* NSDocumentController+KMExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSDocumentController+KMExtension.swift"; sourceTree = "<group>"; };
 		BBC2BCC4295DA8F30036B983 /* KMCropPreviewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMCropPreviewController.swift; sourceTree = "<group>"; };
@@ -4866,7 +4867,6 @@
 		F37322BF292DF9410013862C /* CPDFAnnotationHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CPDFAnnotationHeader.h; sourceTree = "<group>"; };
 		F37322C0292DF9410013862C /* CPDFSignatureWidgetAnnotation+PDFListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CPDFSignatureWidgetAnnotation+PDFListView.h"; sourceTree = "<group>"; };
 		F37322C1292DF9410013862C /* CPDFInkAnnotation+PDFListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CPDFInkAnnotation+PDFListView.h"; sourceTree = "<group>"; };
-		F37322C2292DF9410013862C /* CPDFButtonWidgetAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFButtonWidgetAnnotation+PDFListView.m"; sourceTree = "<group>"; };
 		F37322C3292DF9410013862C /* CPDFTextWidgetAnnotation+PDFListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CPDFTextWidgetAnnotation+PDFListView.h"; sourceTree = "<group>"; };
 		F37322C4292DF9410013862C /* CPDFLineAnnotation+PDFListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CPDFLineAnnotation+PDFListView.h"; sourceTree = "<group>"; };
 		F37322C5292DF9410013862C /* CPDFFreeTextAnnotation+PDFListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CPDFFreeTextAnnotation+PDFListView.h"; sourceTree = "<group>"; };
@@ -4886,7 +4886,6 @@
 		F37322D5292DF9410013862C /* CPDFLineAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFLineAnnotation+PDFListView.m"; sourceTree = "<group>"; };
 		F37322D6292DF9410013862C /* CPDFTextWidgetAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFTextWidgetAnnotation+PDFListView.m"; sourceTree = "<group>"; };
 		F37322D7292DF9410013862C /* CPDFInkAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFInkAnnotation+PDFListView.m"; sourceTree = "<group>"; };
-		F37322D8292DF9410013862C /* CPDFButtonWidgetAnnotation+PDFListView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CPDFButtonWidgetAnnotation+PDFListView.h"; sourceTree = "<group>"; };
 		F37322D9292DF9410013862C /* CPDFSignatureWidgetAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFSignatureWidgetAnnotation+PDFListView.m"; sourceTree = "<group>"; };
 		F37322DA292DF9410013862C /* CPDFTextAnnotation+PDFListView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CPDFTextAnnotation+PDFListView.m"; sourceTree = "<group>"; };
 		F3732321292DFFFE0013862C /* CPDFListView+Extension.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CPDFListView+Extension.h"; sourceTree = "<group>"; };
@@ -9202,8 +9201,7 @@
 				BBBB6CC92AD109F30035AA66 /* CPDFAnnotation+PDFListView.swift */,
 				F37322CC292DF9410013862C /* CPDFAnnotationModel.h */,
 				F37322B8292DF9410013862C /* CPDFAnnotationModel.m */,
-				F37322D8292DF9410013862C /* CPDFButtonWidgetAnnotation+PDFListView.h */,
-				F37322C2292DF9410013862C /* CPDFButtonWidgetAnnotation+PDFListView.m */,
+				BBBB6CCD2AD13E210035AA66 /* CPDFButtonWidgetAnnotation+PDFListView.swift */,
 				F37322CE292DF9410013862C /* CPDFChoiceWidgetAnnotation+PDFListView.h */,
 				F37322B6292DF9410013862C /* CPDFChoiceWidgetAnnotation+PDFListView.m */,
 				F37322CD292DF9410013862C /* CPDFCircleAnnotation+PDFListView.h */,
@@ -10608,7 +10606,6 @@
 				BB2EDF76296ECE17003BCF58 /* KMPageEditInsertPageSizeItemView.swift in Sources */,
 				ADBC2D3F299F70A8006280C8 /* KMBatchManager.swift in Sources */,
 				9F1FE49F29406E4700E952CA /* HoverButton.m in Sources */,
-				F37322F0292DF9410013862C /* CPDFButtonWidgetAnnotation+PDFListView.m in Sources */,
 				F34BF93029530559002C25A2 /* NSBitmapImageRep+PDFListView.m in Sources */,
 				ADB1FE482970264500ED072D /* KMBatchCollectionViewPrensenter.swift in Sources */,
 				BB1CA5CB298E5F540059E31C /* KMMergeTools.swift in Sources */,
@@ -11206,6 +11203,7 @@
 				9F1FE4F029406E4700E952CA /* BackgroundGradientView.m in Sources */,
 				BB2EDF70296ECE17003BCF58 /* KMPageEditThumbnailView.swift in Sources */,
 				9FD0FA2929CD3ED400F2AB0D /* KMRightSideEmptyVC.swift in Sources */,
+				BBBB6CCE2AD13E210035AA66 /* CPDFButtonWidgetAnnotation+PDFListView.swift in Sources */,
 				ADC075CF29875F49006C752F /* KMBatchConverPDFExcelView.swift in Sources */,
 				ADE3C1ED29A5AFB100793B13 /* KMRequestServerManager.swift in Sources */,
 				9F1FE4A229406E4700E952CA /* CTToolbarController.m in Sources */,
@@ -11556,7 +11554,6 @@
 				F305A2B529D03D0D00463590 /* CPDFSignatureAnnotation+PDFListView.m in Sources */,
 				89752E1A2941FD48003FF08E /* KMSearchCellView.swift in Sources */,
 				9F0CB50A2986563300007028 /* KMDesignToken+BorderBottom.swift in Sources */,
-				F37322F1292DF9410013862C /* CPDFButtonWidgetAnnotation+PDFListView.m in Sources */,
 				BBA5429D29F13A140041BAD0 /* KMMemorandumPattern.swift in Sources */,
 				BB3A81AD2AC2A4E4006FC66C /* NSTextView+KMExtension.swift in Sources */,
 				BB49ED0F293F462E00C82CA2 /* KMConvertImageWindowController.swift in Sources */,
@@ -11983,6 +11980,7 @@
 				BB5F8A1229BB04F000365ADB /* GBDeviceInfo_Common.m in Sources */,
 				BBAFC83D2985194800D0648E /* KMPDFEditAppendWindow.m in Sources */,
 				89E4E6F62963D1E9002DBA6F /* KMAnnotationPropertiesColorManager.m in Sources */,
+				BBBB6CCF2AD13E210035AA66 /* CPDFButtonWidgetAnnotation+PDFListView.swift in Sources */,
 				F359916A29261F0E000D25DE /* CPDFListView+Tool.m in Sources */,
 				BBD7FE072A1323F500F96075 /* KMCustomTableRowView.swift in Sources */,
 				9F1FE4F729406E4700E952CA /* CTFloatingBarBackingView.m in Sources */,
@@ -12319,7 +12317,6 @@
 				BB003011298CA383002DD1A0 /* KMPreferenceSegementControl.swift in Sources */,
 				9F8539D82943180000DF644E /* KMTabAppearance.swift in Sources */,
 				9FDD0F6D294AD12C000C4DAD /* KMMainViewController+UI.swift in Sources */,
-				F37322F2292DF9410013862C /* CPDFButtonWidgetAnnotation+PDFListView.m in Sources */,
 				F34BF95029531213002C25A2 /* NSGraphics+PDFListView.m in Sources */,
 				BBCE571A2A72723600508EFC /* NSResponder+KMExtension.swift in Sources */,
 				BB146FDA299DC0D100784A6A /* GTLRFramework.m in Sources */,
@@ -12385,6 +12382,7 @@
 				BB2C6ACF28F41BA000478A33 /* CPDFListView.m in Sources */,
 				BB2EDF6C296ECE17003BCF58 /* KMPageEditInsertTypeItemView.swift in Sources */,
 				BBD7FE052A1323A400F96075 /* KMEditImagePropertyViewController.swift in Sources */,
+				BBBB6CD02AD13E210035AA66 /* CPDFButtonWidgetAnnotation+PDFListView.swift in Sources */,
 				ADF6B8802A485A8F0090CB78 /* KMComparativeViewCollectionItemItem.swift in Sources */,
 				9F1FE4D729406E4700E952CA /* NSPasteboard+Utils.m in Sources */,
 				BBB9B30F299A5D6D004F3235 /* KMCloudUploadOperationQueue.m in Sources */,

+ 0 - 4
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFAnnotation+PDFListView.swift

@@ -126,10 +126,6 @@ import Foundation
 }
 
 @objc extension CPDFAnnotation {
-    convenience init(PDFListViewNoteWithDocument document: CPDFDocument) {
-        self.init(PDFListViewNoteWith: document)
-    }
-    
     func borderRecctForView(_ pdfView: CPDFListView) -> CGRect {
         return self.borderRecct(for: pdfView)
     }

+ 0 - 21
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFButtonWidgetAnnotation+PDFListView.h

@@ -1,21 +0,0 @@
-//
-//  CPDFButtonWidgetAnnotation+PDFListView.h
-//  ComPDFKit
-//
-//  Copyright © 2014-2022 PDF Technologies, Inc. All Rights Reserved.
-//
-//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
-//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
-//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
-//  This notice may not be removed from this file.
-//
-
-#import <ComPDFKit/ComPDFKit.h>
-
-@interface CPDFButtonWidgetAnnotation (PDFListView)
-
-- (instancetype)initPDFListViewNoteWithDocument:(CPDFDocument *)document controlType:(CPDFWidgetControlType)controlType;
-
-- (NSSet *)keysForValuesToObserveForUndo;
-
-@end

+ 0 - 113
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFButtonWidgetAnnotation+PDFListView.m

@@ -1,113 +0,0 @@
-//
-//  CPDFButtonWidgetAnnotation+PDFListView.m
-//  ComPDFKit
-//
-//  Copyright © 2014-2022 PDF Technologies, Inc. All Rights Reserved.
-//
-//  THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
-//  AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
-//  UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
-//  This notice may not be removed from this file.
-//
-
-#import "CPDFButtonWidgetAnnotation+PDFListView.h"
-#import "NSGraphics+PDFListView.h"
-#import "NSGeometry+PDFListView.h"
-#import "CPDFListView+Private.h"
-#import "CPDFListView+Tool.h"
-#import "CPDFAnnotationModel.h"
-#import "CPDFListViewConfig.h"
-#import <PDF_Master-Swift.h>
-
-@implementation CPDFButtonWidgetAnnotation (PDFListView)
-
-- (instancetype)initPDFListViewNoteWithDocument:(CPDFDocument *)document controlType:(CPDFWidgetControlType)controlType {
-    self = [self initWithDocument:document controlType:controlType];
-    if (self) {
-        if (CPDFWidgetRadioButtonControl == controlType) {
-            CPDFAnnotationModel *annotationModel = [[CPDFAnnotationModel alloc] initWithAnnotationType:CAnnotationTypeRadioButton];
-            [self setBackgroundColor:annotationModel.backgroundColor];
-            [self setBackgroundOpacity:annotationModel.backgroundOpacity];
-            self.border = [[CPDFBorder alloc] initWithStyle:annotationModel.style lineWidth:annotationModel.lineWidth dashPattern:annotationModel.dashPattern];
-
-            [self setFieldName:[NSString stringWithFormat:@"%@%@",@"Radio Button_",[CPDFAnnotationModel tagString]]];
-        } else if(CPDFWidgetCheckBoxControl == controlType) {
-            CPDFAnnotationModel *annotationModel = [[CPDFAnnotationModel alloc] initWithAnnotationType:CAnnotationTypeCheckBox];
-            [self setBackgroundColor:annotationModel.backgroundColor];
-            [self setBackgroundOpacity:annotationModel.backgroundOpacity];
-            self.border = [[CPDFBorder alloc] initWithStyle:annotationModel.style lineWidth:annotationModel.lineWidth dashPattern:annotationModel.dashPattern];
-
-            [self setFieldName:[NSString stringWithFormat:@"%@%@",@"Check Box_",[CPDFAnnotationModel tagString]]];
-        } else if(CPDFWidgetPushButtonControl == controlType) {
-            CPDFAnnotationModel *annotationModel = [[CPDFAnnotationModel alloc] initWithAnnotationType:CAnnotationTypeActionButton];
-            [self setBackgroundColor:annotationModel.backgroundColor];
-            [self setBackgroundOpacity:annotationModel.backgroundOpacity];
-            [self setFontColor:annotationModel.fontColor];
-            self.border = [[CPDFBorder alloc] initWithStyle:annotationModel.style lineWidth:annotationModel.lineWidth dashPattern:annotationModel.dashPattern];
-            
-            [self setFont:[NSFont fontWithName:annotationModel.fontName size:annotationModel.fontSize]];
-            [self setCaption:NSLocalizedString(@"Print", nil)];
-            CPDFNamedAction *action = [[CPDFNamedAction alloc] initWithName:CPDFNamedActionPrint];
-            [self setAction:action];
-            [self setFieldName:[NSString stringWithFormat:@"%@%@",@"Button_",[CPDFAnnotationModel tagString]]];
-        }
-    }
-    return self;
-}
-
-- (void)drawSelectionHighlightForView:(CPDFListView *)pdfView inContext:(CGContextRef)context isHover:(BOOL)isHover {
-    if (NSIsEmptyRect([self bounds]))
-        return;
-    
-    if (CFormToolMode != pdfView.toolMode) {
-        return;
-    }
-    NSRect rect = [self borderRecctForView:pdfView];
-    CGFloat lineWidth = [pdfView unitWidthOnPage:[self page]];
-    CGContextSaveGState(context);
-    CGColorRef color = [CPDFListViewConfig defaultManager].annotationBorderColor.CGColor;
-    CGContextSetStrokeColorWithColor(context, color);
-    if(isHover) {
-        CGFloat length[] = {5,5};
-        CGContextSetLineDash(context, 0, length, 2);
-        CGContextStrokeRectWithWidth(context, CGRectInset(NSRectToCGRect(rect), 0,0), lineWidth);
-    } else {
-        CGContextStrokeRectWithWidth(context, CGRectInset(NSRectToCGRect(rect), 0,0), lineWidth);
-    }
-    CGContextRestoreGState(context);
-    CGContextSaveGState(context);
-    if ((pdfView.activeAnnotations.count == 1 || pdfView.selectAnnotations.count > 0) && !isHover)
-        CPDFListViewDrawResizeHandles(context, rect, 4.0 * lineWidth, YES);
-    CGContextRestoreGState(context);
-}
-
-- (CGRect)borderRecctForView:(CPDFListView *)pdfView{
-    NSRect rect = [pdfView integralRect:[self bounds] onPage:[self page]];
-    return rect;
-}
-
-- (CRectEdges)resizeHandleForPoint:(NSPoint)point scaleFactor:(CGFloat)scaleFactor {
-    NSRect rect = NSRectFromCGRect(CGRectInset(NSRectToCGRect([self bounds]), 0, 0));
-    return [self isResizable] ? CPDFListViewResizeHandleForPointFromRect(point, rect, 8.0 / scaleFactor) : 0;
-}
-
-- (BOOL)isMovable {
-    return YES;
-}
-
-- (BOOL)isResizable {
-    return YES;
-}
-
-- (NSSet *)keysForValuesToObserveForUndo {
-    static NSSet *circleKeys = nil;
-    if (circleKeys == nil) {
-        NSMutableSet *mutableKeys = [[super keysForValuesToObserveForUndo] mutableCopy];
-        [mutableKeys addObjectsFromArray:@[CPDFAnnotationStateKey,
-                                           CPDFAnnotationNameKey]];
-        circleKeys = mutableKeys;
-    }
-    return circleKeys;
-}
-
-@end

+ 101 - 0
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFButtonWidgetAnnotation+PDFListView.swift

@@ -0,0 +1,101 @@
+//
+//  CPDFButtonWidgetAnnotation+PDFListView.swift
+//  PDF Master
+//
+//  Created by tangchao on 2023/10/7.
+//
+
+import Foundation
+
+@objc extension CPDFButtonWidgetAnnotation {
+    convenience init(PDFListViewNoteWith  document: CPDFDocument, controlType: CPDFWidgetControlType) {
+        self.init(document: document)
+        
+        if (controlType == .radioButtonControl) {
+            if let annotationModel = CPDFAnnotationModel(annotationType: .radioButton) {
+                self.backgroundColor = annotationModel.backgroundColor()
+                self.backgroundOpacity = annotationModel.backgroundOpacity()
+                self.border = CPDFBorder(style: annotationModel.style(), lineWidth: annotationModel.lineWidth(), dashPattern: annotationModel.dashPattern())
+                self.setFieldName(String(format: "%@%@", "Radio Button_",CPDFAnnotationModel.tagString()!))
+            }
+        } else if (controlType == .checkBoxControl) {
+            if let annotationModel = CPDFAnnotationModel(annotationType: .checkBox) {
+                self.backgroundColor = annotationModel.backgroundColor()
+                self.backgroundOpacity = annotationModel.backgroundOpacity()
+                self.border = CPDFBorder(style: annotationModel.style(), lineWidth: annotationModel.lineWidth(), dashPattern: annotationModel.dashPattern())
+                self.setFieldName(String(format: "%@%@", "Check Box_",CPDFAnnotationModel.tagString()!))
+            }
+        } else if (controlType == .pushButtonControl) {
+            if let annotationModel = CPDFAnnotationModel(annotationType: .actionButton) {
+                self.backgroundColor = annotationModel.backgroundColor()
+                self.backgroundOpacity = annotationModel.backgroundOpacity()
+                self.fontColor = annotationModel.fontColor()
+                self.border = CPDFBorder(style: annotationModel.style(), lineWidth: annotationModel.lineWidth(), dashPattern: annotationModel.dashPattern())
+                
+                self.font = NSFont(name: annotationModel.fontName(), size: annotationModel.fontSize())
+                self.setCaption(NSLocalizedString("Print", comment: ""))
+                let action = CPDFNamedAction(name: .print)
+                self.setAction(action)
+                
+                self.setFieldName(String(format: "%@%@", "Button_",CPDFAnnotationModel.tagString()!))
+            }
+        }
+    }
+    
+    override func drawSelectionHighlightForView(_ pdfView: CPDFListView, inContext context: CGContext, isHover: Bool) {
+        if (NSIsEmptyRect(self.bounds)) {
+            return
+        }
+        if (pdfView.toolMode != .formToolMode) {
+            return
+        }
+        
+        let rect = self.borderRecct(for: pdfView)
+        
+        let lineWidth = pdfView.unitWidth(on: self.page)
+        context.saveGState()
+        let color = CPDFListViewConfig.defaultManager().annotationBorderColor.cgColor
+        context.setStrokeColor(color)
+        if (isHover) {
+            let lengths: [CGFloat] = [5.0, 5.0]
+            context.setLineDash(phase: 0.0, lengths: lengths)
+            context.stroke(CGRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
+        } else {
+            context.stroke(CGRectInset(NSRectToCGRect(rect), 0,0), width: lineWidth)
+        }
+        context.restoreGState()
+        context.saveGState()
+        if ((pdfView.activeAnnotations.count == 1 || pdfView.selectAnnotations.count > 0) && !isHover) {
+            CPDFListViewDrawResizeHandles(context, rect, 4.0 * lineWidth, true)
+        }
+        context.restoreGState()
+    }
+    
+    override func borderRecct(for pdfView: CPDFListView) -> CGRect {
+        let rect = pdfView.integralRect(self.bounds, on: self.page)
+        return rect
+    }
+    
+    override func resizeHandleForPoint(_ point: NSPoint, scaleFactor: CGFloat) -> CRectEdges {
+        let rect = NSRectFromCGRect(CGRectInset(NSRectToCGRect(self.bounds), 0.0, 0.0))
+        return self.isResizable() ? CPDFListViewResizeHandleForPointFromRect(point, rect, 8.0 / scaleFactor) : CRectEdges(rawValue: 0)
+    }
+    
+    override func isMovable() -> Bool {
+        return true
+    }
+    
+    override func isResizable() -> Bool {
+        return true
+    }
+    
+    private static var _bw_keys: Set<AnyHashable>?
+    override func keysForValuesToObserveForUndo() -> Set<AnyHashable>! {
+        if (CPDFButtonWidgetAnnotation._bw_keys == nil) {
+            CPDFButtonWidgetAnnotation._bw_keys = super.keysForValuesToObserveForUndo()
+            _ = CPDFButtonWidgetAnnotation._bw_keys?.insert(CPDFAnnotationStateKey)
+            _ = CPDFButtonWidgetAnnotation._bw_keys?.insert(CPDFAnnotationNameKey)
+        }
+        return CPDFButtonWidgetAnnotation._bw_keys
+    }
+}

+ 3 - 4
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListView.m

@@ -29,7 +29,6 @@
 #import "NSCursor+PDFListView.h"
 
 #import "CPDFMarkupAnnotation+PDFListView.h"
-#import "CPDFButtonWidgetAnnotation+PDFListView.h"
 #import "CPDFTextWidgetAnnotation+PDFListView.h"
 #import "CPDFChoiceWidgetAnnotation+PDFListView.h"
 #import "CPDFChoiceWidgetAnnotation+PDFListView.h"
@@ -384,11 +383,11 @@ NSNotificationName const CPDFListViewAnnotationsAttributeHasChangeNotification =
                 annotation.bounds = bounds;
                 break;
             case CAnnotationTypeCheckBox:
-                annotation = [[CPDFButtonWidgetAnnotation alloc] initPDFListViewNoteWithDocument:self.document controlType:CPDFWidgetCheckBoxControl];
+                annotation = [[CPDFButtonWidgetAnnotation alloc] initWithPDFListViewNoteWith:self.document controlType:CPDFWidgetCheckBoxControl];
                 annotation.bounds = bounds;
                 break;
             case CAnnotationTypeRadioButton:
-                annotation = [[CPDFButtonWidgetAnnotation alloc] initPDFListViewNoteWithDocument:self.document controlType:CPDFWidgetRadioButtonControl];
+                annotation = [[CPDFButtonWidgetAnnotation alloc] initWithPDFListViewNoteWith:self.document controlType:CPDFWidgetRadioButtonControl];
                 annotation.bounds = bounds;
                 break;
             case CAnnotationTypeListMenu:
@@ -404,7 +403,7 @@ NSNotificationName const CPDFListViewAnnotationsAttributeHasChangeNotification =
                 annotation.bounds = bounds;
                 break;
             case CAnnotationTypeActionButton:
-                annotation = [[CPDFButtonWidgetAnnotation alloc] initPDFListViewNoteWithDocument:self.document controlType:CPDFWidgetPushButtonControl];
+                annotation = [[CPDFButtonWidgetAnnotation alloc] initWithPDFListViewNoteWith:self.document controlType:CPDFWidgetPushButtonControl];
                 annotation.bounds = bounds;
                 break;
             case CAnnotationTypeSignFalse:

+ 0 - 1
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/ComPDFUIKit.h

@@ -29,6 +29,5 @@
 #import "CPDFSquareAnnotation+PDFListView.h"
 #import "CPDFWidgetAnnotation+PDFListView.h"
 #import "CPDFTextWidgetAnnotation+PDFListView.h"
-#import "CPDFButtonWidgetAnnotation+PDFListView.h"
 #import "CPDFChoiceWidgetAnnotation+PDFListView.h"
 #import "CPDFSignatureWidgetAnnotation+PDFListView.h"