Browse Source

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

tangchao 1 year ago
parent
commit
b8155fc30b
25 changed files with 988 additions and 162 deletions
  1. 62 6
      PDF Office/PDF Master.xcodeproj/project.pbxproj
  2. 268 19
      PDF Office/PDF Master.xcodeproj/xcuserdata/lizhe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  3. 54 45
      PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/KMComparativeTableViewController.swift
  4. 5 13
      PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/KMComparativeTableViewController.xib
  5. 21 0
      PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/Source/KMCompatative.xcassets/Frame 1081.imageset/Contents.json
  6. 153 0
      PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/Source/KMCompatative.xcassets/Frame 1081.imageset/Frame 1081.pdf
  7. 7 7
      PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeTableView.xib
  8. 48 18
      PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/KMComparativeView.swift
  9. 19 18
      PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/KMComparativeView.xib
  10. 62 14
      PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/View/KMComparativeViewCollectionItem.swift
  11. 37 15
      PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/View/KMComparativeViewCollectionItem.xib
  12. 10 2
      PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/View/KMComparativeViewCollectionItemItem.swift
  13. 6 5
      PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/View/KMComparativeViewCollectionItemItem.xib
  14. 1 0
      PDF Office/PDF Master/Class/KMLightMember/Controller/Login&Register/View/KMLightNoNetworkView.xib
  15. 56 0
      PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/SubscribeSuccess/KMSubscribeSuccessWindowController.swift
  16. 43 0
      PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/SubscribeSuccess/KMSubscribeSuccessWindowController.xib
  17. 49 0
      PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/SubscribeSuccess/View/KMSubscribeSuccessView.swift
  18. 77 0
      PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/SubscribeSuccess/View/KMSubscribeSuccessView.xib
  19. 0 0
      PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/WaterMark/KMSubscribeWaterMarkWindowController.swift
  20. 0 0
      PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/WaterMark/KMSubscribeWaterMarkWindowController.xib
  21. 0 0
      PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/WaterMark/View/KMSubscribeWaterMarkView.swift
  22. 0 0
      PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/WaterMark/View/KMSubscribeWaterMarkView.xib
  23. 3 0
      PDF Office/PDF Master/Class/PDFWindowController/ViewController/KMMainViewController.swift
  24. 1 0
      PDF Office/PDF Master/Third Pard Library/Sparkle.framework/Modules
  25. 6 0
      PDF Office/PDF Master/Third Pard Library/Sparkle.framework/Versions/A/Modules/module.modulemap

+ 62 - 6
PDF Office/PDF Master.xcodeproj/project.pbxproj

@@ -1675,6 +1675,18 @@
 		ADC31FAC2A0E0C3900ED44A2 /* KMEditPropertyAlignmentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC31FAB2A0E0C3900ED44A2 /* KMEditPropertyAlignmentView.xib */; };
 		ADC31FAD2A0E0C3900ED44A2 /* KMEditPropertyAlignmentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC31FAB2A0E0C3900ED44A2 /* KMEditPropertyAlignmentView.xib */; };
 		ADC31FAE2A0E0C3900ED44A2 /* KMEditPropertyAlignmentView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC31FAB2A0E0C3900ED44A2 /* KMEditPropertyAlignmentView.xib */; };
+		ADC63E372A49813E00854E02 /* KMSubscribeSuccessWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC63E352A49813E00854E02 /* KMSubscribeSuccessWindowController.swift */; };
+		ADC63E382A49813E00854E02 /* KMSubscribeSuccessWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC63E352A49813E00854E02 /* KMSubscribeSuccessWindowController.swift */; };
+		ADC63E392A49813E00854E02 /* KMSubscribeSuccessWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC63E352A49813E00854E02 /* KMSubscribeSuccessWindowController.swift */; };
+		ADC63E3A2A49813E00854E02 /* KMSubscribeSuccessWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC63E362A49813E00854E02 /* KMSubscribeSuccessWindowController.xib */; };
+		ADC63E3B2A49813E00854E02 /* KMSubscribeSuccessWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC63E362A49813E00854E02 /* KMSubscribeSuccessWindowController.xib */; };
+		ADC63E3C2A49813E00854E02 /* KMSubscribeSuccessWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC63E362A49813E00854E02 /* KMSubscribeSuccessWindowController.xib */; };
+		ADC63E3F2A49816900854E02 /* KMSubscribeSuccessView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC63E3E2A49816900854E02 /* KMSubscribeSuccessView.swift */; };
+		ADC63E402A49816900854E02 /* KMSubscribeSuccessView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC63E3E2A49816900854E02 /* KMSubscribeSuccessView.swift */; };
+		ADC63E412A49816900854E02 /* KMSubscribeSuccessView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC63E3E2A49816900854E02 /* KMSubscribeSuccessView.swift */; };
+		ADC63E432A49817400854E02 /* KMSubscribeSuccessView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC63E422A49817400854E02 /* KMSubscribeSuccessView.xib */; };
+		ADC63E442A49817400854E02 /* KMSubscribeSuccessView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC63E422A49817400854E02 /* KMSubscribeSuccessView.xib */; };
+		ADC63E452A49817400854E02 /* KMSubscribeSuccessView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADC63E422A49817400854E02 /* KMSubscribeSuccessView.xib */; };
 		ADC6FC19297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC6FC18297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift */; };
 		ADC6FC1A297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC6FC18297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift */; };
 		ADC6FC1B297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADC6FC18297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift */; };
@@ -4178,6 +4190,10 @@
 		ADC25DF82923BA710080A3F6 /* KMImageToPDFWindowController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMImageToPDFWindowController.xib; sourceTree = "<group>"; };
 		ADC31FA52A0E0C1A00ED44A2 /* KMEditPropertyAlignmentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMEditPropertyAlignmentView.swift; sourceTree = "<group>"; };
 		ADC31FAB2A0E0C3900ED44A2 /* KMEditPropertyAlignmentView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMEditPropertyAlignmentView.xib; sourceTree = "<group>"; };
+		ADC63E352A49813E00854E02 /* KMSubscribeSuccessWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMSubscribeSuccessWindowController.swift; sourceTree = "<group>"; };
+		ADC63E362A49813E00854E02 /* KMSubscribeSuccessWindowController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMSubscribeSuccessWindowController.xib; sourceTree = "<group>"; };
+		ADC63E3E2A49816900854E02 /* KMSubscribeSuccessView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMSubscribeSuccessView.swift; sourceTree = "<group>"; };
+		ADC63E422A49817400854E02 /* KMSubscribeSuccessView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMSubscribeSuccessView.xib; sourceTree = "<group>"; };
 		ADC6FC18297630BA00D7C274 /* KMBatchProcessingColumnHeaderCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchProcessingColumnHeaderCell.swift; sourceTree = "<group>"; };
 		ADC6FC582976953900D7C274 /* Batch.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Batch.xcassets; sourceTree = "<group>"; };
 		ADCB98C0292472F200B51A03 /* KMBatchProcessingTableViewPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBatchProcessingTableViewPresenter.swift; sourceTree = "<group>"; };
@@ -6684,14 +6700,13 @@
 			path = KMTextFieldStepperView;
 			sourceTree = "<group>";
 		};
-		ADB5E50F2A3710C1007110A8 /* WaterMark */ = {
+		ADB5E50F2A3710C1007110A8 /* SubscriptionView */ = {
 			isa = PBXGroup;
 			children = (
-				ADB5E51C2A3711D0007110A8 /* View */,
-				ADB5E5102A371131007110A8 /* KMSubscribeWaterMarkWindowController.swift */,
-				ADB5E5112A371131007110A8 /* KMSubscribeWaterMarkWindowController.xib */,
+				ADC63E342A49806500854E02 /* SubscribeSuccess */,
+				ADC63E332A49805000854E02 /* WaterMark */,
 			);
-			path = WaterMark;
+			path = SubscriptionView;
 			sourceTree = "<group>";
 		};
 		ADB5E51C2A3711D0007110A8 /* View */ = {
@@ -7041,6 +7056,35 @@
 			path = AlignmentView;
 			sourceTree = "<group>";
 		};
+		ADC63E332A49805000854E02 /* WaterMark */ = {
+			isa = PBXGroup;
+			children = (
+				ADB5E51C2A3711D0007110A8 /* View */,
+				ADB5E5102A371131007110A8 /* KMSubscribeWaterMarkWindowController.swift */,
+				ADB5E5112A371131007110A8 /* KMSubscribeWaterMarkWindowController.xib */,
+			);
+			path = WaterMark;
+			sourceTree = "<group>";
+		};
+		ADC63E342A49806500854E02 /* SubscribeSuccess */ = {
+			isa = PBXGroup;
+			children = (
+				ADC63E3D2A49815000854E02 /* View */,
+				ADC63E352A49813E00854E02 /* KMSubscribeSuccessWindowController.swift */,
+				ADC63E362A49813E00854E02 /* KMSubscribeSuccessWindowController.xib */,
+			);
+			path = SubscribeSuccess;
+			sourceTree = "<group>";
+		};
+		ADC63E3D2A49815000854E02 /* View */ = {
+			isa = PBXGroup;
+			children = (
+				ADC63E3E2A49816900854E02 /* KMSubscribeSuccessView.swift */,
+				ADC63E422A49817400854E02 /* KMSubscribeSuccessView.xib */,
+			);
+			path = View;
+			sourceTree = "<group>";
+		};
 		ADCB98FA29274B8D00B51A03 /* Views */ = {
 			isa = PBXGroup;
 			children = (
@@ -7323,7 +7367,7 @@
 		ADE3C1E129A5AB8B00793B13 /* Controller */ = {
 			isa = PBXGroup;
 			children = (
-				ADB5E50F2A3710C1007110A8 /* WaterMark */,
+				ADB5E50F2A3710C1007110A8 /* SubscriptionView */,
 				AD2D74AA29F0CE8500EDC5E4 /* Cancellation */,
 				AD8810AF29A8467100178CA1 /* VerificationCode */,
 				AD8810A629A845E600178CA1 /* AccountInfo */,
@@ -9550,6 +9594,7 @@
 				ADB2D6E9294740F30029D2B3 /* KMPrintPaperSetWindowController.xib in Resources */,
 				BBA2109029ACBFDB00E6B346 /* nosign.pdf in Resources */,
 				8997012228F41AB8009AF911 /* KMLeftSideViewController.xib in Resources */,
+				ADC63E3A2A49813E00854E02 /* KMSubscribeSuccessWindowController.xib in Resources */,
 				AD2D74B029F0CEB300EDC5E4 /* KMCancellationWindowController.xib in Resources */,
 				ADD1B6F02946C06C00C3FFF7 /* KMPrintChoosePageSizeSizeView.xib in Resources */,
 				BBFE6E602930809A00142C01 /* KMMergeCollectionPageViewItem.xib in Resources */,
@@ -9630,6 +9675,7 @@
 				BB8F455A295AA1270037EA22 /* KMHeaderFooterPropertyInfoController.xib in Resources */,
 				BB52372A29C313CA00663BD7 /* KMAnnotationPropertyBaseController.xib in Resources */,
 				AD8810AC29A8463600178CA1 /* KMAccountInfoWindowController.xib in Resources */,
+				ADC63E432A49817400854E02 /* KMSubscribeSuccessView.xib in Resources */,
 				ADEC7A84299397F8009A8256 /* SF-Pro-Text-Semibold.otf in Resources */,
 				AD1CA4342A0640FC0070541F /* KMAnnotationScreenHeadView.xib in Resources */,
 				ADB1FE8229752F3200ED072D /* KMBatchSecurityView.xib in Resources */,
@@ -9944,6 +9990,7 @@
 				BB5DF1ED2959C5CB0025CDA1 /* KMHeaderFooterPreviewController.xib in Resources */,
 				ADB1FE622975189600ED072D /* KMBatchProcessingDeleteTableCell.xib in Resources */,
 				ADEC7A82299397F8009A8256 /* SF-Pro-Text-Regular.otf in Resources */,
+				ADC63E442A49817400854E02 /* KMSubscribeSuccessView.xib in Resources */,
 				ADB1FEB3297543CF00ED072D /* KMBatchSettingView.xib in Resources */,
 				89E4E77D2967B370002DBA6F /* KMDynamicStampViewController.xib in Resources */,
 				BB49ECE1293EED6100C82CA2 /* KMConvertWordWindowController.xib in Resources */,
@@ -10122,6 +10169,7 @@
 				BB89725A294C559F0045787C /* KMWatermarkPropertyCreateController.xib in Resources */,
 				ADEC7A85299397F8009A8256 /* SF-Pro-Text-Semibold.otf in Resources */,
 				AD88108829A719E500178CA1 /* KMRegisterView.xib in Resources */,
+				ADC63E3B2A49813E00854E02 /* KMSubscribeSuccessWindowController.xib in Resources */,
 				9FD0FA4F29D43D6800F2AB0D /* KMDeviceBrowserWindowController.xib in Resources */,
 				F3B698A9298BC84500E0EB4D /* KMDocumentAIPopViewController.xib in Resources */,
 				9F1F82CE292F6CF90092C4B4 /* KMPDFInsertPageWindow.xib in Resources */,
@@ -10320,6 +10368,7 @@
 				BB9DEE862A14A01D00351CC4 /* PDF-Master-DMG-Info.plist in Resources */,
 				BB8F455C295AA1270037EA22 /* KMHeaderFooterPropertyInfoController.xib in Resources */,
 				9FD0FA5029D43D6800F2AB0D /* KMDeviceBrowserWindowController.xib in Resources */,
+				ADC63E3C2A49813E00854E02 /* KMSubscribeSuccessWindowController.xib in Resources */,
 				AD68783A29A60FC0005B5210 /* KMLoginView.xib in Resources */,
 				899700ED28F3E4D3009AF911 /* MainWindowController.xib in Resources */,
 				89E4E70D2963D62C002DBA6F /* KMAnnotationFontWindowController.xib in Resources */,
@@ -10463,6 +10512,7 @@
 				AD4B4552294072B90076FA14 /* KMOCRWindowController.xib in Resources */,
 				BB2EDF75296ECE17003BCF58 /* KMPageEditThumbnailItem.xib in Resources */,
 				AD867FAC29DFB78200F00440 /* KMAnnotationOutlineView.xib in Resources */,
+				ADC63E452A49817400854E02 /* KMSubscribeSuccessView.xib in Resources */,
 				BB8F4554295A9FA50037EA22 /* KMCreateHeaderFooterController.xib in Resources */,
 				ADBC376329CC637900D93208 /* KMReadModelView.xib in Resources */,
 				9FF94F1E29A770B500B1EF69 /* KMFillSignShapePanel.xib in Resources */,
@@ -10659,6 +10709,7 @@
 				BBF38A5A294F2B760086D025 /* KMWatermarkPositionView.swift in Sources */,
 				89E93EDE2999DA6D00F10F66 /* KMNoteFilterCollevtionViewItem.m in Sources */,
 				BBB7B4912A03AD2A00B58A5A /* KMPDFEditToolbar.swift in Sources */,
+				ADC63E372A49813E00854E02 /* KMSubscribeSuccessWindowController.swift in Sources */,
 				BB8F4586295B19AC0037EA22 /* KMHeaderFooterDateInfoView.swift in Sources */,
 				ADF9ED2F29A8507400C4A943 /* KMAccountInfoView.swift in Sources */,
 				896933D029AEED520055327F /* SKTextFieldSheetController.m in Sources */,
@@ -10776,6 +10827,7 @@
 				BB1EC7FE2967B26700EC0BC3 /* KMPDFEditViewController.swift in Sources */,
 				BB5F8A1F29BB15AD00365ADB /* KMEmailSubWindowController.m in Sources */,
 				AD68783329A60FA7005B5210 /* KMLoginView.swift in Sources */,
+				ADC63E3F2A49816900854E02 /* KMSubscribeSuccessView.swift in Sources */,
 				9F0CB531298656EA00007028 /* KMDesignToken+BorderWidthBottom.swift in Sources */,
 				89752DB82936F9B9003FF08E /* NSButton+TitleColor.m in Sources */,
 				BB8115FF2992682F0008F536 /* KMSecureLimitAlertView.swift in Sources */,
@@ -11400,6 +11452,7 @@
 				BB2E666029C885550000FEBC /* KMSignatureHelpViewController.m in Sources */,
 				ADB1FE5E2975182100ED072D /* KMBatchProcessingDeleteTableCell.swift in Sources */,
 				9FDD0FAB29534FCC000C4DAD /* KMAliasLight.swift in Sources */,
+				ADC63E402A49816900854E02 /* KMSubscribeSuccessView.swift in Sources */,
 				BBF38A63294F53FD0086D025 /* KMWatermarkFileView.swift in Sources */,
 				AD2D74B629F0D39500EDC5E4 /* KMCancellationSuccessView.swift in Sources */,
 				9F080B24298FCB0D00FC27DA /* KMDesignToken+Action.swift in Sources */,
@@ -11774,6 +11827,7 @@
 				AD867F9529D955BF00F00440 /* KMBOTAOutlineCellView.swift in Sources */,
 				9F0CB5432986953A00007028 /* KMURLToPDFWindowController.swift in Sources */,
 				BBA8B7B0293600D70097D183 /* KMPasswordInputWindow.swift in Sources */,
+				ADC63E382A49813E00854E02 /* KMSubscribeSuccessWindowController.swift in Sources */,
 				AD71E7C52990A8A4001C5D3F /* KMBatchRemoveViewModel.swift in Sources */,
 				F3732309292DF9410013862C /* CPDFLineAnnotation+PDFListView.m in Sources */,
 				F34BF927295303E8002C25A2 /* NSCursor+PDFListView.m in Sources */,
@@ -12201,6 +12255,7 @@
 				ADE3C1EF29A5AFB100793B13 /* KMRequestServerManager.swift in Sources */,
 				BBAFC84C298519F700D0648E /* KMSavePanelAccessoryController.m in Sources */,
 				9F1FE4B629406E4700E952CA /* CTBrowser.m in Sources */,
+				ADC63E412A49816900854E02 /* KMSubscribeSuccessView.swift in Sources */,
 				BBA19F4529ADE6A3001A285A /* KMBookMarkRowView.swift in Sources */,
 				ADE614A52977952C00F62ED7 /* KMBatchConvertPDFViewModel.swift in Sources */,
 				9F0201982A1F352100C9B673 /* KMAITranslationConfirmWindowController.swift in Sources */,
@@ -12423,6 +12478,7 @@
 				ADC075B829866962006C752F /* KMBatchConverPDFWordView.swift in Sources */,
 				ADEC7A80299397F8009A8256 /* NSFont+SFProText.swift in Sources */,
 				9F72D2052994A3B800DCACF1 /* KMDesignToken+Notification.swift in Sources */,
+				ADC63E392A49813E00854E02 /* KMSubscribeSuccessWindowController.swift in Sources */,
 				BBC348042955403D008D2CD1 /* KMWatermarkFilePropertyInfoController.swift in Sources */,
 				ADB1FEA82975305500ED072D /* KMBatchRemoveView.swift in Sources */,
 				AD9527DD2952EE700039D2BC /* KMPrintPage_C.swift in Sources */,

+ 268 - 19
PDF Office/PDF Master.xcodeproj/xcuserdata/lizhe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -4321,7 +4321,7 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "1693"
             endingLineNumber = "1693"
-            landmarkName = "pdfListViewMenuItemsEditing(at:for:menuItems:)"
+            landmarkName = "pdfListViewMenuValidate(_:menuItem:isTakesEffect:)"
             landmarkType = "7">
             <Locations>
                <Location
@@ -4369,6 +4369,36 @@
                   endingLineNumber = "1696"
                   offsetFromSymbolStart = "36">
                </Location>
+               <Location
+                  uuid = "E7F4D56E-1C39-4024-BBA5-68C70086BBFF - 8a2a75e0da61f7de"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.pdfListViewMenuValidate(_: Swift.Optional&lt;__C.CPDFListView&gt;, menuItem: Swift.Optional&lt;__C.NSMenuItem&gt;, isTakesEffect: Swift.Optional&lt;Swift.UnsafeMutablePointer&lt;ObjectiveC.ObjCBool&gt;&gt;) -&gt; Swift.Bool"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1693"
+                  endingLineNumber = "1693"
+                  offsetFromSymbolStart = "2100">
+               </Location>
+               <Location
+                  uuid = "E7F4D56E-1C39-4024-BBA5-68C70086BBFF - 8a2a75e0da61f7b9"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.pdfListViewMenuValidate(_: Swift.Optional&lt;__C.CPDFListView&gt;, menuItem: Swift.Optional&lt;__C.NSMenuItem&gt;, isTakesEffect: Swift.Optional&lt;Swift.UnsafeMutablePointer&lt;ObjectiveC.ObjCBool&gt;&gt;) -&gt; Swift.Bool"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1694"
+                  endingLineNumber = "1694"
+                  offsetFromSymbolStart = "2088">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -4978,7 +5008,7 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "1505"
             endingLineNumber = "1505"
-            landmarkName = "pdfListViewKeyDownIsContinue(_:theEvent:)"
+            landmarkName = "pdfViewEditingAddImageArea(_:add:add:)"
             landmarkType = "7">
             <Locations>
                <Location
@@ -5056,6 +5086,51 @@
                   endingLineNumber = "1505"
                   offsetFromSymbolStart = "120">
                </Location>
+               <Location
+                  uuid = "2237DD70-B8BE-49EA-A4CE-79A8782755B0 - 1580cd90c578d76a"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #1 (__C.NSModalResponse) -&gt; () in PDF_Master.KMMainViewController.pdfViewEditingAddImageArea(_: Swift.Optional&lt;__C.CPDFView&gt;, add: Swift.Optional&lt;__C.CPDFPage&gt;, add: __C.CGRect) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1505"
+                  endingLineNumber = "1505"
+                  offsetFromSymbolStart = "1180">
+               </Location>
+               <Location
+                  uuid = "2237DD70-B8BE-49EA-A4CE-79A8782755B0 - 9501465e248bbe82"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.pdfViewEditingAddImageArea(_: Swift.Optional&lt;__C.CPDFView&gt;, add: Swift.Optional&lt;__C.CPDFPage&gt;, add: __C.CGRect) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1505"
+                  endingLineNumber = "1505"
+                  offsetFromSymbolStart = "712">
+               </Location>
+               <Location
+                  uuid = "2237DD70-B8BE-49EA-A4CE-79A8782755B0 - 1580cd90c578d485"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #1 (__C.NSModalResponse) -&gt; () in PDF_Master.KMMainViewController.pdfViewEditingAddImageArea(_: Swift.Optional&lt;__C.CPDFView&gt;, add: Swift.Optional&lt;__C.CPDFPage&gt;, add: __C.CGRect) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1506"
+                  endingLineNumber = "1506"
+                  offsetFromSymbolStart = "680">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -6677,7 +6752,7 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "1534"
             endingLineNumber = "1534"
-            landmarkName = "pdfListViewKeyDownIsContinue(_:theEvent:)"
+            landmarkName = "pdfViewEditingAddImageArea(_:add:add:)"
             landmarkType = "7">
             <Locations>
                <Location
@@ -6740,6 +6815,36 @@
                   endingLineNumber = "1535"
                   offsetFromSymbolStart = "2824">
                </Location>
+               <Location
+                  uuid = "62BC6468-594C-4A01-ADDD-BBD0C1BEAB50 - 1580cd90c578d348"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #1 (__C.NSModalResponse) -&gt; () in PDF_Master.KMMainViewController.pdfViewEditingAddImageArea(_: Swift.Optional&lt;__C.CPDFView&gt;, add: Swift.Optional&lt;__C.CPDFPage&gt;, add: __C.CGRect) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1535"
+                  endingLineNumber = "1535"
+                  offsetFromSymbolStart = "2804">
+               </Location>
+               <Location
+                  uuid = "62BC6468-594C-4A01-ADDD-BBD0C1BEAB50 - 1580cd90c578d329"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #1 (__C.NSModalResponse) -&gt; () in PDF_Master.KMMainViewController.pdfViewEditingAddImageArea(_: Swift.Optional&lt;__C.CPDFView&gt;, add: Swift.Optional&lt;__C.CPDFPage&gt;, add: __C.CGRect) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1534"
+                  endingLineNumber = "1534"
+                  offsetFromSymbolStart = "2532">
+               </Location>
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
@@ -8019,7 +8124,7 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "126"
             endingLineNumber = "126"
-            landmarkName = "request(_:didFailWithError:)"
+            landmarkName = "purchaseProduct(productIdentifier:completion:)"
             landmarkType = "7">
             <Locations>
                <Location
@@ -8097,7 +8202,7 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "120"
             endingLineNumber = "120"
-            landmarkName = "productsRequest(_:didReceive:)"
+            landmarkName = "purchaseProduct(productIdentifier:completion:)"
             landmarkType = "7">
             <Locations>
                <Location
@@ -8175,7 +8280,7 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "90"
             endingLineNumber = "90"
-            landmarkName = "purchaseProduct(productIdentifier:completion:)"
+            landmarkName = "init()"
             landmarkType = "7">
             <Locations>
                <Location
@@ -8253,7 +8358,7 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "99"
             endingLineNumber = "99"
-            landmarkName = "purchaseProduct(productIdentifier:completion:)"
+            landmarkName = "init()"
             landmarkType = "7">
             <Locations>
                <Location
@@ -8361,7 +8466,7 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "140"
             endingLineNumber = "140"
-            landmarkName = "paymentQueue(_:updatedTransactions:)"
+            landmarkName = "purchaseProduct(productIdentifier:completion:)"
             landmarkType = "7">
             <Locations>
                <Location
@@ -8439,8 +8544,8 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "162"
             endingLineNumber = "162"
-            landmarkName = "KMInAppPurchaseManager"
-            landmarkType = "21">
+            landmarkName = "request(_:didFailWithError:)"
+            landmarkType = "7">
             <Locations>
                <Location
                   uuid = "34BD2AAD-8A2F-42E6-9768-F29967B52A18 - d81c1d03f6f5ff96"
@@ -8502,8 +8607,8 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "215"
             endingLineNumber = "215"
-            landmarkName = "sendReceiptToServer(receiptData:transaction:)"
-            landmarkType = "7">
+            landmarkName = "KMInAppPurchaseManager"
+            landmarkType = "21">
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
@@ -8518,7 +8623,7 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "187"
             endingLineNumber = "187"
-            landmarkName = "validatePurchase(transaction:)"
+            landmarkName = "paymentQueue(_:updatedTransactions:)"
             landmarkType = "7">
             <Locations>
                <Location
@@ -8818,8 +8923,40 @@
             endingColumnNumber = "9223372036854775807"
             startingLineNumber = "1297"
             endingLineNumber = "1297"
-            landmarkName = "pdfViewEditingAreaDidChanged(_:)"
+            landmarkName = "pdfViewDocumentDidLoaded(_:)"
             landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "EB3CC863-CD88-4969-8755-C4ABD9B1445B - fd680e4e5bf39ecf"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.pdfViewDocumentDidLoaded(Swift.Optional&lt;__C.CPDFView&gt;) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1299"
+                  endingLineNumber = "1299"
+                  offsetFromSymbolStart = "496">
+               </Location>
+               <Location
+                  uuid = "EB3CC863-CD88-4969-8755-C4ABD9B1445B - eaef9148cee007f1"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMMainViewController.CEditPDFToolModeChangeStateUnkownNotification(Foundation.Notification) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/PDFWindowController/ViewController/KMMainViewController.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "1297"
+                  endingLineNumber = "1297"
+                  offsetFromSymbolStart = "1588">
+               </Location>
+            </Locations>
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
@@ -8841,18 +8978,130 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "09EB2F92-239D-4678-AE7E-D3BA675EF977"
+            uuid = "0934CAAD-5F4E-42D6-B7A3-8063647E3B7B"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/KMComparativeView.swift"
+            filePath = "PDF Master/Class/KMLightMember/Controller/ComparativeTable/KMComparativeTableViewController.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "104"
-            endingLineNumber = "104"
-            landmarkName = "updateLanguage()"
+            startingLineNumber = "168"
+            endingLineNumber = "168"
+            landmarkName = "setup()"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "15A844FC-97F9-4FF2-BCAA-F0559C929696"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/KMLightMember/Controller/ComparativeTable/KMComparativeTableViewController.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "175"
+            endingLineNumber = "175"
+            landmarkName = "setup()"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "974E7AEC-92F4-4228-BFCC-3535AF1F0C17"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/KMLightMember/Controller/ComparativeTable/KMComparativeTableViewController.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "154"
+            endingLineNumber = "154"
+            landmarkName = "setup()"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "623E55F8-22F1-48D4-A1F9-B43DB4689903"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/View/KMComparativeViewCollectionItem.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "135"
+            endingLineNumber = "135"
+            landmarkName = "collectionView(_:layout:sizeForItemAt:)"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "A3717621-A04F-4B75-A204-762F7CE462DF"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/View/KMComparativeViewCollectionItem.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "113"
+            endingLineNumber = "113"
+            landmarkName = "collectionView(_:itemForRepresentedObjectAt:)"
             landmarkType = "7">
          </BreakpointContent>
       </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "4FA10195-10DE-4ACC-8F4F-DF08F3DD5B8D"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/View/KMComparativeViewCollectionItemItem.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "28"
+            endingLineNumber = "28"
+            landmarkName = "reloadData()"
+            landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "4FA10195-10DE-4ACC-8F4F-DF08F3DD5B8D - adfddfbe2fd8f221"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMComparativeViewCollectionItemItem.reloadData() -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/View/KMComparativeViewCollectionItemItem.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "28"
+                  endingLineNumber = "28"
+                  offsetFromSymbolStart = "256">
+               </Location>
+               <Location
+                  uuid = "4FA10195-10DE-4ACC-8F4F-DF08F3DD5B8D - adfddfbe2fd8f221"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMComparativeViewCollectionItemItem.reloadData() -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/View/KMComparativeViewCollectionItemItem.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "28"
+                  endingLineNumber = "28"
+                  offsetFromSymbolStart = "412">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
    </Breakpoints>
 </Bucket>

+ 54 - 45
PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/KMComparativeTableViewController.swift

@@ -74,7 +74,15 @@ class KMComparativeTableViewController: NSWindowController {
         
         controller.subscriptionAction = { controller in
             KMPurchaseManager.manager.purchaseProduct(productIdentifier: PRODUCT_1) { isSuccess, error in
-                
+                if isSuccess {
+                    print("订阅成功")
+                    comparativeController = nil
+                    comparativeMainWindow?.endSheet(controller.window!)
+                    comparativeMainWindow = nil
+                    controller.close()
+                    
+                    KMSubscribeSuccessWindowController.show(window: NSApp.mainWindow!)
+                }
             }
         }
         
@@ -83,6 +91,7 @@ class KMComparativeTableViewController: NSWindowController {
         }
         
         window.beginSheet(controller.window!)
+
         comparativeController = controller
         comparativeMainWindow = window
         return controller
@@ -97,50 +106,14 @@ class KMComparativeTableViewController: NSWindowController {
     
     func setup() {
         self.window?.contentView?.backgroundColor(NSColor(hex: "FFFFFF"))
-        self.comparativeTableView.closeAction = { view in
-            print("关闭")
-            comparativeMainWindow?.endSheet(view.window!)
-            view.window?.close()
-            comparativeController = nil
-            comparativeMainWindow = nil
-        }
-        
-        self.comparativeTableView.signUpAction = { [weak self] view in
-            print("注册")
-            guard let callBack = self?.signUpAction else { return }
-
-            callBack(self!)
-        }
-
-        self.comparativeTableView.loginAction = { [weak self] view in
-            print("登录")
-            guard let callBack = self?.loginAction else { return }
-
-            callBack(self!)
-        }
-        
-        self.comparativeTableView.subscriptionAction = { [weak self] view in
-            print("订阅")
-            guard let callBack = self?.subscriptionAction else { return }
-
-            callBack(self!)
-        }
-        
-        self.comparativeTableView.restoreAction = { [weak self] view in
-            print("订阅")
-            guard let callBack = self?.restoreAction else { return }
-
-            callBack(self!)
-        }
-        
-        self.comparativeView.closeAction = { view in
-            print("关闭")
-            comparativeMainWindow?.endSheet(view.window!)
-            view.window?.close()
-            comparativeController = nil
-            comparativeMainWindow = nil
-        }
-        
+//        self.comparativeTableView.closeAction = { view in
+//            print("关闭")
+//            comparativeMainWindow?.endSheet(view.window!)
+//            view.window?.close()
+//            comparativeController = nil
+//            comparativeMainWindow = nil
+//        }
+//
 //        self.comparativeTableView.signUpAction = { [weak self] view in
 //            print("注册")
 //            guard let callBack = self?.signUpAction else { return }
@@ -168,6 +141,42 @@ class KMComparativeTableViewController: NSWindowController {
 //
 //            callBack(self!)
 //        }
+        
+        self.comparativeView.closeAction = { view in
+            print("关闭")
+            comparativeMainWindow?.endSheet(view.window!)
+            view.window?.close()
+            comparativeController = nil
+            comparativeMainWindow = nil
+        }
+        
+        self.comparativeView.signUpAction = { [weak self] view in
+            print("注册")
+            guard let callBack = self?.signUpAction else { return }
+
+            callBack(self!)
+        }
+
+//        self.comparativeTableView.loginAction = { [weak self] view in
+//            print("登录")
+//            guard let callBack = self?.loginAction else { return }
+//
+//            callBack(self!)
+//        }
+//
+        self.comparativeView.subscriptionAction = { [weak self] view in
+            print("订阅")
+            guard let callBack = self?.subscriptionAction else { return }
+
+            callBack(self!)
+        }
+
+        self.comparativeView.restoreAction = { [weak self] view in
+            print("restore订阅")
+            guard let callBack = self?.restoreAction else { return }
+
+            callBack(self!)
+        }
     }
     
 }

+ 5 - 13
PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/KMComparativeTableViewController.xib

@@ -8,44 +8,36 @@
     <objects>
         <customObject id="-2" userLabel="File's Owner" customClass="KMComparativeTableViewController" customModule="PDF_Master" customModuleProvider="target">
             <connections>
-                <outlet property="comparativeTableView" destination="ZQ8-GZ-j0l" id="oQc-Q6-1rj"/>
                 <outlet property="comparativeView" destination="hxs-Ao-ieK" id="Wgu-UR-72C"/>
                 <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
             </connections>
         </customObject>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
-        <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="F0z-JX-Cv5">
+        <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
             <windowStyleMask key="styleMask" titled="YES"/>
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
-            <rect key="contentRect" x="196" y="240" width="836" height="680"/>
+            <rect key="contentRect" x="196" y="240" width="807" height="659"/>
             <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
             <view key="contentView" id="se5-gp-TjO">
-                <rect key="frame" x="0.0" y="0.0" width="836" height="680"/>
+                <rect key="frame" x="0.0" y="0.0" width="807" height="659"/>
                 <autoresizingMask key="autoresizingMask"/>
                 <subviews>
                     <customView translatesAutoresizingMaskIntoConstraints="NO" id="hxs-Ao-ieK" customClass="KMComparativeView" customModule="PDF_Master" customModuleProvider="target">
-                        <rect key="frame" x="0.0" y="0.0" width="836" height="680"/>
-                    </customView>
-                    <customView hidden="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ZQ8-GZ-j0l" customClass="KMComparativeTableView" customModule="PDF_Master" customModuleProvider="target">
-                        <rect key="frame" x="0.0" y="0.0" width="836" height="680"/>
+                        <rect key="frame" x="0.0" y="0.0" width="807" height="659"/>
                     </customView>
                 </subviews>
                 <constraints>
                     <constraint firstAttribute="bottom" secondItem="hxs-Ao-ieK" secondAttribute="bottom" id="3E0-v6-OGb"/>
                     <constraint firstAttribute="trailing" secondItem="hxs-Ao-ieK" secondAttribute="trailing" id="AsJ-g3-3jA"/>
-                    <constraint firstAttribute="bottom" secondItem="ZQ8-GZ-j0l" secondAttribute="bottom" id="CqO-bm-keA"/>
-                    <constraint firstAttribute="trailing" secondItem="ZQ8-GZ-j0l" secondAttribute="trailing" id="WHq-dO-KGE"/>
                     <constraint firstItem="hxs-Ao-ieK" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" id="ipm-qC-f1C"/>
                     <constraint firstItem="hxs-Ao-ieK" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" id="k3t-b3-Yh5"/>
-                    <constraint firstItem="ZQ8-GZ-j0l" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" id="uho-lT-dMQ"/>
-                    <constraint firstItem="ZQ8-GZ-j0l" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" id="yXm-AP-GnM"/>
                 </constraints>
             </view>
             <connections>
                 <outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
             </connections>
-            <point key="canvasLocation" x="224" y="-15.5"/>
+            <point key="canvasLocation" x="-609" y="12"/>
         </window>
     </objects>
 </document>

+ 21 - 0
PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/Source/KMCompatative.xcassets/Frame 1081.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "Frame 1081.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 153 - 0
PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/Source/KMCompatative.xcassets/Frame 1081.imageset/Frame 1081.pdf

@@ -0,0 +1,153 @@
+%PDF-1.7
+
+1 0 obj
+  << /ExtGState << /E2 << /ca 0.500000 >>
+                   /E3 << /ca 0.500000 >>
+                   /E1 << /ca 0.500000 >>
+                >> >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 29.666748 11.666687 cm
+0.101961 0.835294 0.596078 scn
+66.666664 33.333324 m
+66.666664 14.923832 51.742825 -0.000008 33.333332 -0.000008 c
+14.923841 -0.000008 0.000000 14.923832 0.000000 33.333324 c
+0.000000 51.742813 14.923841 66.666656 33.333332 66.666656 c
+51.742825 66.666656 66.666664 51.742813 66.666664 33.333324 c
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 40.623779 28.307556 cm
+1.000000 1.000000 1.000000 scn
+44.885403 30.053699 m
+19.622246 1.164810 l
+19.011707 0.466648 18.137896 0.054420 17.210833 0.027206 c
+16.283770 -0.000004 15.387282 0.360256 14.736843 1.021400 c
+0.000000 16.000826 l
+4.752369 20.676233 l
+16.969215 8.258287 l
+39.866966 34.442291 l
+44.885403 30.053699 l
+h
+f*
+n
+Q
+q
+/E1 gs
+1.000000 0.000000 -0.000000 1.000000 96.000000 66.000000 cm
+0.101961 0.835294 0.596078 scn
+8.000000 16.000000 m
+9.313259 12.334092 l
+9.817688 10.926003 10.926003 9.817687 12.334093 9.313259 c
+16.000000 8.000000 l
+12.334092 6.686741 l
+10.926003 6.182312 9.817687 5.073997 9.313259 3.665907 c
+8.000000 0.000000 l
+6.686741 3.665908 l
+6.182312 5.073997 5.073997 6.182313 3.665907 6.686741 c
+0.000000 8.000000 l
+3.665908 9.313259 l
+5.073997 9.817688 6.182313 10.926003 6.686741 12.334093 c
+8.000000 16.000000 l
+h
+f
+n
+Q
+q
+/E2 gs
+1.000000 0.000000 -0.000000 1.000000 7.000000 32.000000 cm
+0.101961 0.835294 0.596078 scn
+5.500000 11.000000 m
+6.153882 9.174717 l
+6.658310 7.766627 7.766627 6.658310 9.174716 6.153882 c
+11.000001 5.500000 l
+9.174718 4.846118 l
+7.766628 4.341690 6.658310 3.233373 6.153883 1.825284 c
+5.500000 -0.000001 l
+4.846118 1.825282 l
+4.341691 3.233372 3.233374 4.341690 1.825284 4.846117 c
+0.000000 5.500000 l
+1.825283 6.153882 l
+3.233372 6.658309 4.341690 7.766626 4.846118 9.174716 c
+5.500000 11.000000 l
+h
+f
+n
+Q
+q
+/E3 gs
+1.000000 0.000000 -0.000000 1.000000 98.000000 13.000000 cm
+0.101961 0.835294 0.596078 scn
+4.000000 8.000000 m
+4.258256 7.279089 l
+4.762684 5.870999 5.871000 4.762684 7.279090 4.258256 c
+8.000000 4.000000 l
+7.279089 3.741744 l
+5.871000 3.237316 4.762684 2.129000 4.258256 0.720910 c
+4.000000 0.000000 l
+3.741744 0.720911 l
+3.237316 2.129000 2.129000 3.237316 0.720910 3.741744 c
+0.000000 4.000000 l
+0.720911 4.258256 l
+2.129000 4.762684 3.237316 5.871000 3.741744 7.279089 c
+4.000000 8.000000 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  2317
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 125.000000 90.000000 ]
+     /Resources 1 0 R
+     /Contents 2 0 R
+     /Parent 5 0 R
+  >>
+endobj
+
+5 0 obj
+  << /Kids [ 4 0 R ]
+     /Count 1
+     /Type /Pages
+  >>
+endobj
+
+6 0 obj
+  << /Pages 5 0 R
+     /Type /Catalog
+  >>
+endobj
+
+xref
+0 7
+0000000000 65535 f
+0000000010 00000 n
+0000000174 00000 n
+0000002547 00000 n
+0000002570 00000 n
+0000002744 00000 n
+0000002818 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+2877
+%%EOF

+ 7 - 7
PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeTableView.xib

@@ -20,19 +20,19 @@
         </customObject>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
-        <customView id="c22-O7-iKe">
-            <rect key="frame" x="0.0" y="0.0" width="836" height="680"/>
-            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+        <customView misplaced="YES" id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="836" height="659"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
             <subviews>
                 <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="63a-JO-IUQ">
-                    <rect key="frame" x="0.0" y="506" width="836" height="174"/>
+                    <rect key="frame" x="0.0" y="485" width="836" height="174"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="174" id="1gV-NR-Wce"/>
                     </constraints>
                     <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="background_comparative_top_Rectangle" id="HV7-RO-QX5"/>
                 </imageView>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="6CF-gV-7MZ">
-                    <rect key="frame" x="0.0" y="652" width="836" height="28"/>
+                    <rect key="frame" x="0.0" y="631" width="836" height="28"/>
                     <subviews>
                         <box boxType="custom" borderWidth="0.0" cornerRadius="4" translatesAutoresizingMaskIntoConstraints="NO" id="kR4-GT-aNn" customClass="KMBox" customModule="PDF_Master" customModuleProvider="target">
                             <rect key="frame" x="8" y="8" width="12" height="12"/>
@@ -70,7 +70,7 @@
                     </constraints>
                 </customView>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="250-TH-Pzl" customClass="KMComparativeOutlineView" customModule="PDF_Master" customModuleProvider="target">
-                    <rect key="frame" x="24" y="120" width="788" height="518"/>
+                    <rect key="frame" x="24" y="120" width="788" height="497"/>
                 </customView>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="uVY-kS-Rql">
                     <rect key="frame" x="0.0" y="0.0" width="836" height="120"/>
@@ -183,7 +183,7 @@
                 <constraint firstAttribute="bottom" secondItem="uVY-kS-Rql" secondAttribute="bottom" id="qh9-Pu-H47"/>
                 <constraint firstItem="6CF-gV-7MZ" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="xT0-4X-aRa"/>
             </constraints>
-            <point key="canvasLocation" x="139" y="154"/>
+            <point key="canvasLocation" x="63" y="98"/>
         </customView>
     </objects>
     <resources>

+ 48 - 18
PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/KMComparativeView.swift

@@ -8,8 +8,12 @@
 import Cocoa
 
 typealias KMComparativeViewCloseAction = (_ view: KMComparativeView) -> Void
+typealias KMComparativeViewSignUpAction = (_ view: KMComparativeView) -> Void
+typealias KMComparativeViewSubscriptionAction = (_ view: KMComparativeView) -> Void
+typealias KMComparativeViewRestoreAction = (_ view: KMComparativeView) -> Void
 
 class KMComparativeView: KMBaseXibView {
+    @IBOutlet weak var topView: NSView!
     @IBOutlet weak var collectionContentView: NSView!
     @IBOutlet weak var collectionView: NSCollectionView!
     @IBOutlet weak var closeButton: NSButton!
@@ -21,6 +25,9 @@ class KMComparativeView: KMBaseXibView {
     
     
     var closeAction: KMComparativeViewCloseAction?
+    var signUpAction: KMComparativeViewSignUpAction?
+    var subscriptionAction: KMComparativeViewSubscriptionAction?
+    var restoreAction: KMComparativeViewRestoreAction?
     
     var dataArray: [NSDictionary] = [
         [
@@ -62,7 +69,7 @@ class KMComparativeView: KMBaseXibView {
                 ["title": "Using the AI function",
                  "state": true]
             ],
-            "buttonTitle": "Sign Up For Free"
+            "buttonTitle": "Subscribe Now"
         ]
     ]
     
@@ -98,25 +105,33 @@ class KMComparativeView: KMBaseXibView {
         self.imageView.backgroundColor(NSColor(hex: "#FFFFFF"))
         
         self.contentView.addSubview(self.imageView, positioned: .below, relativeTo: self.collectionContentView)
+        self.contentView.addSubview(self.imageView, positioned: .below, relativeTo: self.topView)
+        
+        self.restoreButton.contentTintColor = NSColor(hex: "#1770F4")
+        self.restoreButton.font = NSFont.SFProTextRegular(16)
+        
+        self.titleLabel.textColor = NSColor(hex: "#252629")
+        self.titleLabel.font = NSFont.SFProTextSemibold(24)
     }
     
     override func updateLanguage() {
-        let string = NSLocalizedString("Subscription Plan: \nSubscription:USD $39.99/year", comment: "") + "  " + NSLocalizedString("Subscription", comment: "")
+//        + "  " + NSLocalizedString("Subscription", comment: ""
+        let string = NSLocalizedString("Subscription Plan: \nSubscription:USD $39.99/year", comment: "")
         let attributedString = NSMutableAttributedString.init(string: string)
         let paragraphStyle = NSMutableParagraphStyle()
         paragraphStyle.alignment = .left;
         paragraphStyle.lineHeightMultiple = 1.37
-        attributedString.addAttributes([NSAttributedString.Key.font : NSFont.SFProTextRegular(12.0),
-                                        NSAttributedString.Key.foregroundColor : NSColor(hex: "#252629"),
+        attributedString.addAttributes([NSAttributedString.Key.font : NSFont.SFProTextRegular(11.0),
+                                        NSAttributedString.Key.foregroundColor : NSColor(hex: "#94989C"),
                                         NSAttributedString.Key.paragraphStyle : paragraphStyle],
                                     range: NSRange(location: 0, length: string.count))
         
-        let range = string.range(of: NSLocalizedString("Subscription", comment: ""))
-        attributedString.setAttributes([NSAttributedString.Key.font : NSFont.SFProTextRegular(12.0),
-                                        NSAttributedString.Key.foregroundColor : NSColor(hex: "#1770F4"),
-                                        NSAttributedString.Key.underlineColor : NSColor.clear,
-                                        NSAttributedString.Key.link : "register://"],
-                                       range: string.nsRange(from: range!)!)
+//        let range = string.range(of: NSLocalizedString("Subscription", comment: ""))
+//        attributedString.setAttributes([NSAttributedString.Key.font : NSFont.SFProTextRegular(12.0),
+//                                        NSAttributedString.Key.foregroundColor : NSColor(hex: "#1770F4"),
+//                                        NSAttributedString.Key.underlineColor : NSColor.clear,
+//                                        NSAttributedString.Key.link : "register://"],
+//                                       range: string.nsRange(from: range!)!)
         
         self.textView.textStorage?.setAttributedString(attributedString)
     }
@@ -135,7 +150,16 @@ extension KMComparativeView: NSCollectionViewDataSource {
     public func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
 //        let data = self.dataArray[indexPath.item]
         let view = collectionView.makeItem(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMComparativeViewCollectionItem"), for: indexPath) as! KMComparativeViewCollectionItem
-        view.data = self.dataArray[indexPath.item] as! [String : Any]
+        view.data = self.dataArray[indexPath.section] as! [String : Any]
+        view.doneAction = { [unowned self] view, data in
+            if data["type"] as! Int == 0 {
+                guard let callBack = signUpAction else { return }
+                callBack(self)
+            } else if data ["type"] as! Int == 1 {
+                guard let callBack = subscriptionAction else { return }
+                callBack(self)
+            }
+        }
         return view
     }
 }
@@ -158,17 +182,21 @@ extension KMComparativeView: NSCollectionViewDelegateFlowLayout {
         return NSSize(width: 348, height: 467)
     }
     
-    public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
-        return 30
-    }
+//    public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
+//        return 30
+//    }
     
     public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, insetForSectionAt section: Int) -> NSEdgeInsets {
-        return NSEdgeInsets(top: 0, left: 0, bottom: 0, right: 30)
+        if section == 0 {
+            return NSEdgeInsets(top: 0, left: 0, bottom: 0, right: 30)
+        } else {
+            return NSEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
+        }
     }
 
-    public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
-        return 30
-    }
+//    public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
+//        return 30
+//    }
 }
 
 //MARK: Action
@@ -192,7 +220,9 @@ extension KMComparativeView: NSTextViewDelegate {
     }
     
     @IBAction func restoreButtonAction(_ sender: Any) {
+        guard let callBack = restoreAction else { return }
         
+        callBack(self)
     }
     
 }

+ 19 - 18
PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/KMComparativeView.xib

@@ -16,16 +16,24 @@
                 <outlet property="restoreButton" destination="BFl-PZ-fp3" id="hG2-in-77d"/>
                 <outlet property="textView" destination="63A-Ab-bi6" id="uOM-WN-xPL"/>
                 <outlet property="titleLabel" destination="MnS-Io-H7L" id="S60-8o-pk7"/>
+                <outlet property="topView" destination="fSi-Nh-UBK" id="Cui-Cv-WgW"/>
             </connections>
         </customObject>
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="c22-O7-iKe">
-            <rect key="frame" x="0.0" y="0.0" width="807" height="639"/>
-            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <rect key="frame" x="0.0" y="0.0" width="807" height="659"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
             <subviews>
+                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Rwo-sa-TEc">
+                    <rect key="frame" x="0.0" y="465" width="807" height="194"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="194" id="sy7-2v-Bmz"/>
+                    </constraints>
+                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="background_comparative_Badge" id="kcu-Za-GN1"/>
+                </imageView>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="fSi-Nh-UBK">
-                    <rect key="frame" x="0.0" y="611" width="807" height="28"/>
+                    <rect key="frame" x="0.0" y="631" width="807" height="28"/>
                     <subviews>
                         <box boxType="custom" borderWidth="0.0" cornerRadius="4" translatesAutoresizingMaskIntoConstraints="NO" id="IE1-YG-Yg7" customClass="KMBox" customModule="PDF_Master" customModuleProvider="target">
                             <rect key="frame" x="8" y="8" width="12" height="12"/>
@@ -62,7 +70,7 @@
                     </constraints>
                 </customView>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="yhM-ic-Qb1">
-                    <rect key="frame" x="0.0" y="0.0" width="807" height="611"/>
+                    <rect key="frame" x="0.0" y="0.0" width="807" height="631"/>
                     <subviews>
                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="cMm-TO-WQD">
                             <rect key="frame" x="40" y="20" width="727" height="40"/>
@@ -106,7 +114,7 @@
                             </constraints>
                         </customView>
                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="nXE-h3-HLH">
-                            <rect key="frame" x="0.0" y="561" width="807" height="32"/>
+                            <rect key="frame" x="0.0" y="581" width="807" height="32"/>
                             <subviews>
                                 <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="hbn-Vp-scG">
                                     <rect key="frame" x="40" y="-2" width="36" height="36"/>
@@ -146,17 +154,17 @@
                             </constraints>
                         </customView>
                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="tuB-UO-PhU">
-                            <rect key="frame" x="0.0" y="76" width="807" height="465"/>
+                            <rect key="frame" x="0.0" y="76" width="807" height="485"/>
                             <subviews>
-                                <scrollView wantsLayer="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" hasVerticalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ScA-aL-r0P">
-                                    <rect key="frame" x="40" y="0.0" width="727" height="465"/>
+                                <scrollView wantsLayer="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasVerticalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ScA-aL-r0P">
+                                    <rect key="frame" x="40" y="0.0" width="727" height="485"/>
                                     <clipView key="contentView" drawsBackground="NO" id="O9C-OM-ue0">
-                                        <rect key="frame" x="0.0" y="0.0" width="727" height="465"/>
+                                        <rect key="frame" x="0.0" y="0.0" width="727" height="485"/>
                                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                         <subviews>
                                             <collectionView allowsEmptySelection="NO" id="tXY-fl-8XY">
-                                                <rect key="frame" x="0.0" y="0.0" width="727" height="158"/>
-                                                <autoresizingMask key="autoresizingMask" widthSizable="YES"/>
+                                                <rect key="frame" x="0.0" y="0.0" width="727" height="485"/>
+                                                <autoresizingMask key="autoresizingMask" heightSizable="YES"/>
                                                 <collectionViewFlowLayout key="collectionViewLayout" minimumInteritemSpacing="10" minimumLineSpacing="10" scrollDirection="horizontal" id="cPd-fj-JkJ">
                                                     <size key="itemSize" width="50" height="50"/>
                                                 </collectionViewFlowLayout>
@@ -196,13 +204,6 @@
                         <constraint firstAttribute="bottom" secondItem="cMm-TO-WQD" secondAttribute="bottom" constant="20" id="yKQ-fN-Zha"/>
                     </constraints>
                 </customView>
-                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Rwo-sa-TEc">
-                    <rect key="frame" x="0.0" y="445" width="807" height="194"/>
-                    <constraints>
-                        <constraint firstAttribute="height" constant="194" id="sy7-2v-Bmz"/>
-                    </constraints>
-                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="background_comparative_Badge" id="kcu-Za-GN1"/>
-                </imageView>
             </subviews>
             <constraints>
                 <constraint firstAttribute="trailing" secondItem="fSi-Nh-UBK" secondAttribute="trailing" id="7yD-IT-lHJ"/>

+ 62 - 14
PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/View/KMComparativeViewCollectionItem.swift

@@ -7,16 +7,21 @@
 
 import Cocoa
 
+typealias KMComparativeViewCollectionItemDoneAction = (_ view: KMComparativeViewCollectionItem, _ data: [String: Any]) -> Void
 class KMComparativeViewCollectionItem: NSCollectionViewItem {
     @IBOutlet weak var titleLabel: NSTextField!
     @IBOutlet weak var subtitleLabel: NSTextField!
     @IBOutlet weak var lineView: NSView!
+    @IBOutlet weak var scrollView: NSScrollView!
     @IBOutlet weak var contentCollectionView: NSCollectionView!
     @IBOutlet weak var doneButton: NSButton!
+    @IBOutlet weak var describeLabel: NSTextField!
+    @IBOutlet weak var iconImageView: NSImageView!
     
+    var doneAction: KMComparativeViewCollectionItemDoneAction?
     var data: [String: Any] = [:] {
         didSet {
-            self.contentCollectionView.reloadData()
+            self.reloadData()
         }
     }
     
@@ -36,8 +41,13 @@ class KMComparativeViewCollectionItem: NSCollectionViewItem {
         self.subtitleLabel.font = NSFont.SFProTextSemibold(32)
         self.subtitleLabel.textColor = NSColor(hex: "#616469")
         
+        self.describeLabel.font = NSFont.SFProTextRegular(14)
+        self.describeLabel.textColor = NSColor(hex: "#616469")
+        
         self.lineView.backgroundColor(NSColor(hex: "#ECECEC"))
         
+        self.scrollView.scrollerStyle = .overlay
+        
         //设置代理
         self.contentCollectionView.delegate = self
         self.contentCollectionView.dataSource = self
@@ -52,20 +62,46 @@ class KMComparativeViewCollectionItem: NSCollectionViewItem {
     }
     
     func reloadData() {
-
+        if data.count != 0 {
+            self.titleLabel.stringValue = NSLocalizedString(data["title"] as! String, comment: "")
+            self.subtitleLabel.stringValue = NSLocalizedString(data["subtitle"] as! String, comment: "")
+            self.doneButton.title = NSLocalizedString(data["buttonTitle"] as! String, comment: "")
+            self.describeLabel.stringValue = NSLocalizedString(data["describe"] as? String ?? "", comment: "")
+            
+            if data["type"] as! Int == 1 {
+                self.describeLabel.isHidden = false
+                self.iconImageView.isHidden = false
+                
+                self.doneButton.backgroundColor(NSColor(hex: "#FF852E"))
+                self.doneButton.border(NSColor(hex: "#FF852E"), 0, 20)
+                self.doneButton.contentTintColor = NSColor(hex: "#FFFFFF")
+                self.doneButton.font = NSFont.SFProTextSemibold(16)
+            } else {
+                self.describeLabel.isHidden = true
+                self.iconImageView.isHidden = true
+                
+                self.doneButton.backgroundColor(NSColor(hex: "#FFFFFF"))
+                self.doneButton.border(NSColor(hex: "#DFE1E5"), 1, 20)
+                self.doneButton.contentTintColor = NSColor(hex: "#252629")
+                self.doneButton.font = NSFont.SFProTextRegular(16)
+            }
+            self.contentCollectionView.reloadData()
+        }
     }
 }
 
 extension KMComparativeViewCollectionItem {
     @IBAction func doneAction(_ sender: Any) {
+        guard let callBack = doneAction else { return }
         
-        
+        callBack(self, data)
     }
 }
 
 extension KMComparativeViewCollectionItem: NSCollectionViewDataSource {
     public func numberOfSections(in collectionView: NSCollectionView) -> Int {
-        return self.data.count
+        let array: [[String: Any]] = self.data["content"] as! [[String : Any]]
+        return array.count
     }
     
     public func collectionView(_ collectionView: NSCollectionView, numberOfItemsInSection section: Int) -> Int {
@@ -74,10 +110,9 @@ extension KMComparativeViewCollectionItem: NSCollectionViewDataSource {
     
     //返回对应的item自定义个体
     public func collectionView(_ collectionView: NSCollectionView, itemForRepresentedObjectAt indexPath: IndexPath) -> NSCollectionViewItem {
-//        let data = self.dataArray[indexPath.item]
         let view = collectionView.makeItem(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "KMComparativeViewCollectionItemItem"), for: indexPath) as! KMComparativeViewCollectionItemItem
         let array: [[String: Any]] = self.data["content"] as! [[String : Any]]
-        view.data = array[indexPath.item]
+        view.data = array[indexPath.section]
         return view
     }
 }
@@ -97,18 +132,31 @@ extension KMComparativeViewCollectionItem: NSCollectionViewDelegate {
 extension KMComparativeViewCollectionItem: NSCollectionViewDelegateFlowLayout {
     
     public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> NSSize {
-        return NSSize(width: 279, height: 20)
+        let array: [[String: Any]] = self.data["content"] as! [[String : Any]]
+        let data = array[indexPath.section]
+        let string: NSString = data["title"] as! NSString
+        
+        let paragraphStyle = NSMutableParagraphStyle()
+        paragraphStyle.lineHeightMultiple = 1.32
+        paragraphStyle.alignment = .left
+        let size: NSSize = string.boundingRect(with: NSSize(width: 232, height: 100), options: NSString.DrawingOptions(rawValue: 3), attributes: [NSAttributedString.Key.font : NSFont.SFProTextRegular(12), NSAttributedString.Key.paragraphStyle : paragraphStyle]).size
+        return NSSize(width: 279, height: max(20, size.height))
     }
     
-    public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
-        return 0
-    }
+//    public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
+//        return 12
+//    }
     
     public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, insetForSectionAt section: Int) -> NSEdgeInsets {
-        return NSEdgeInsets(top: 0, left: 0, bottom: 12, right: 0)
+        let array: [[String: Any]] = self.data["content"] as! [[String : Any]]
+        if section == array.count - 1 {
+            return NSEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
+        } else {
+            return NSEdgeInsets(top: 0, left: 0, bottom: 12, right: 0)
+        }
     }
 
-    public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
-        return 0
-    }
+//    public func collectionView(_ collectionView: NSCollectionView, layout collectionViewLayout: NSCollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
+//        return 12
+//    }
 }

+ 37 - 15
PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/View/KMComparativeViewCollectionItem.xib

@@ -9,8 +9,11 @@
         <customObject id="-2" userLabel="File's Owner" customClass="KMComparativeViewCollectionItem" customModule="PDF_Master" customModuleProvider="target">
             <connections>
                 <outlet property="contentCollectionView" destination="9Pp-ih-jEG" id="z5w-fy-VHk"/>
+                <outlet property="describeLabel" destination="3TK-IO-Uc2" id="KKA-ma-4Aj"/>
                 <outlet property="doneButton" destination="h7l-IT-ODA" id="jDf-XE-uTx"/>
+                <outlet property="iconImageView" destination="sHp-vc-P9l" id="LzG-we-xUT"/>
                 <outlet property="lineView" destination="hz2-8h-p3M" id="nww-hG-0H5"/>
+                <outlet property="scrollView" destination="2qF-pT-dP8" id="nWA-5x-xKU"/>
                 <outlet property="subtitleLabel" destination="y61-y9-dAw" id="2IR-Co-cbj"/>
                 <outlet property="titleLabel" destination="Aal-EW-4N2" id="8XP-Ds-d4a"/>
                 <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
@@ -19,11 +22,11 @@
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="Hz6-mo-xeY">
-            <rect key="frame" x="0.0" y="0.0" width="303" height="449"/>
+            <rect key="frame" x="0.0" y="0.0" width="348" height="467"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
                 <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Aal-EW-4N2">
-                    <rect key="frame" x="30" y="401" width="243" height="16"/>
+                    <rect key="frame" x="30" y="419" width="288" height="16"/>
                     <textFieldCell key="cell" lineBreakMode="clipping" title="Register Member" id="u25-eB-jIR">
                         <font key="font" usesAppearanceFont="YES"/>
                         <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -31,7 +34,7 @@
                     </textFieldCell>
                 </textField>
                 <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="y61-y9-dAw">
-                    <rect key="frame" x="30" y="369" width="243" height="16"/>
+                    <rect key="frame" x="30" y="387" width="31" height="16"/>
                     <textFieldCell key="cell" lineBreakMode="clipping" title="Free" id="Nmm-Ii-aJs">
                         <font key="font" metaFont="system"/>
                         <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -39,16 +42,16 @@
                     </textFieldCell>
                 </textField>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="JU3-B0-lwD">
-                    <rect key="frame" x="32" y="126" width="239" height="180"/>
+                    <rect key="frame" x="32" y="144" width="284" height="180"/>
                     <subviews>
                         <scrollView wantsLayer="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" hasVerticalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2qF-pT-dP8">
-                            <rect key="frame" x="0.0" y="0.0" width="239" height="180"/>
+                            <rect key="frame" x="0.0" y="0.0" width="284" height="180"/>
                             <clipView key="contentView" drawsBackground="NO" id="3rY-ai-zIH">
-                                <rect key="frame" x="0.0" y="0.0" width="239" height="180"/>
+                                <rect key="frame" x="0.0" y="0.0" width="284" height="180"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <subviews>
                                     <collectionView id="9Pp-ih-jEG">
-                                        <rect key="frame" x="0.0" y="0.0" width="239" height="158"/>
+                                        <rect key="frame" x="0.0" y="0.0" width="284" height="180"/>
                                         <autoresizingMask key="autoresizingMask" widthSizable="YES"/>
                                         <collectionViewFlowLayout key="collectionViewLayout" minimumInteritemSpacing="10" minimumLineSpacing="10" id="qH9-lA-K1b">
                                             <size key="itemSize" width="50" height="50"/>
@@ -59,11 +62,11 @@
                                 <color key="backgroundColor" red="0.96862745100000003" green="0.97254901959999995" blue="0.98039215690000003" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
                             </clipView>
                             <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="mw6-lw-zx6">
-                                <rect key="frame" x="-100" y="-100" width="233" height="15"/>
+                                <rect key="frame" x="-100" y="-100" width="269" height="15"/>
                                 <autoresizingMask key="autoresizingMask"/>
                             </scroller>
-                            <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="OYB-Vn-iBU">
-                                <rect key="frame" x="-100" y="-100" width="15" height="143"/>
+                            <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="OYB-Vn-iBU">
+                                <rect key="frame" x="-100" y="-100" width="15" height="180"/>
                                 <autoresizingMask key="autoresizingMask"/>
                             </scroller>
                         </scrollView>
@@ -77,16 +80,16 @@
                     </constraints>
                 </customView>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="hz2-8h-p3M">
-                    <rect key="frame" x="32" y="326" width="239" height="1"/>
+                    <rect key="frame" x="32" y="344" width="284" height="1"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="1" id="lCq-vv-wv7"/>
                     </constraints>
                 </customView>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="BFX-df-wDy">
-                    <rect key="frame" x="32" y="54" width="239" height="40"/>
+                    <rect key="frame" x="32" y="72" width="284" height="40"/>
                     <subviews>
                         <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="h7l-IT-ODA">
-                            <rect key="frame" x="0.0" y="0.0" width="239" height="40"/>
+                            <rect key="frame" x="0.0" y="0.0" width="284" height="40"/>
                             <buttonCell key="cell" type="square" title="Sign Up For Free" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="mLU-cL-cIs">
                                 <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                                 <font key="font" metaFont="system"/>
@@ -104,25 +107,44 @@
                         <constraint firstItem="h7l-IT-ODA" firstAttribute="top" secondItem="BFX-df-wDy" secondAttribute="top" id="sy1-pD-i2U"/>
                     </constraints>
                 </customView>
+                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="3TK-IO-Uc2">
+                    <rect key="frame" x="30" y="367" width="288" height="16"/>
+                    <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="tUs-FK-WKB">
+                        <font key="font" metaFont="system"/>
+                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                    </textFieldCell>
+                </textField>
+                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="sHp-vc-P9l">
+                    <rect key="frame" x="67" y="383" width="80" height="24"/>
+                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="Badge" id="aiz-s6-Vnu"/>
+                </imageView>
             </subviews>
             <constraints>
-                <constraint firstAttribute="trailing" secondItem="y61-y9-dAw" secondAttribute="trailing" constant="32" id="40H-lE-x0y"/>
+                <constraint firstItem="3TK-IO-Uc2" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="32" id="2ov-ky-djW"/>
+                <constraint firstItem="sHp-vc-P9l" firstAttribute="leading" secondItem="y61-y9-dAw" secondAttribute="trailing" constant="8" id="BmZ-jv-VhC"/>
                 <constraint firstAttribute="trailing" secondItem="hz2-8h-p3M" secondAttribute="trailing" constant="32" id="DOy-GW-3OQ"/>
                 <constraint firstItem="Aal-EW-4N2" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="32" id="IJ3-VJ-Emz"/>
                 <constraint firstAttribute="trailing" secondItem="BFX-df-wDy" secondAttribute="trailing" constant="32" id="KAG-DU-qiH"/>
+                <constraint firstItem="3TK-IO-Uc2" firstAttribute="top" secondItem="y61-y9-dAw" secondAttribute="bottom" constant="4" id="LOW-rs-eQG"/>
                 <constraint firstAttribute="trailing" secondItem="JU3-B0-lwD" secondAttribute="trailing" constant="32" id="Lcg-Da-ur1"/>
                 <constraint firstAttribute="trailing" secondItem="Aal-EW-4N2" secondAttribute="trailing" constant="32" id="M6k-Zs-OeN"/>
+                <constraint firstItem="sHp-vc-P9l" firstAttribute="centerY" secondItem="y61-y9-dAw" secondAttribute="centerY" id="P2i-yi-eGm"/>
                 <constraint firstItem="Aal-EW-4N2" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="32" id="UUF-tu-jje"/>
                 <constraint firstItem="y61-y9-dAw" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="32" id="XgI-xM-8WU"/>
                 <constraint firstItem="BFX-df-wDy" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="32" id="act-gs-xBl"/>
                 <constraint firstItem="hz2-8h-p3M" firstAttribute="top" secondItem="y61-y9-dAw" secondAttribute="bottom" constant="42" id="cQa-Sy-L12"/>
                 <constraint firstItem="y61-y9-dAw" firstAttribute="top" secondItem="Aal-EW-4N2" secondAttribute="bottom" constant="16" id="fYz-ls-H9I"/>
                 <constraint firstItem="BFX-df-wDy" firstAttribute="top" secondItem="JU3-B0-lwD" secondAttribute="bottom" constant="32" id="iVM-h9-3gW"/>
+                <constraint firstAttribute="trailing" secondItem="3TK-IO-Uc2" secondAttribute="trailing" constant="32" id="l9l-rM-6KK"/>
                 <constraint firstItem="JU3-B0-lwD" firstAttribute="top" secondItem="hz2-8h-p3M" secondAttribute="bottom" constant="20" id="mk3-nP-iYQ"/>
                 <constraint firstItem="hz2-8h-p3M" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="32" id="uN3-zv-arS"/>
                 <constraint firstItem="JU3-B0-lwD" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="32" id="wYj-HX-NA2"/>
             </constraints>
-            <point key="canvasLocation" x="-50.5" y="16.5"/>
+            <point key="canvasLocation" x="-51" y="16.5"/>
         </customView>
     </objects>
+    <resources>
+        <image name="Badge" width="80" height="24"/>
+    </resources>
 </document>

+ 10 - 2
PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/View/KMComparativeViewCollectionItemItem.swift

@@ -19,17 +19,25 @@ class KMComparativeViewCollectionItemItem: NSCollectionViewItem {
     override func viewDidLoad() {
         super.viewDidLoad()
         // Do view setup here.
+        self.titleLabel.font = NSFont.SFProTextRegular(12)
+        self.titleLabel.textColor = NSColor(hex: "#252629")
     }
     
     func reloadData() {
         if data.count != 0 {
-            if data["state"].debugDescription == "0" {
+            let state: Bool = data["state"] as? Bool ?? false
+            if state == false {
                 self.iconImageView.image = NSImage(named: "tips 1")
             } else {
                 self.iconImageView.image = NSImage(named: "tips")
             }
             
-            self.titleLabel.stringValue = NSLocalizedString(data["title"] as! String, comment: "")
+            let string = NSLocalizedString(data["title"] as! String, comment: "")
+            
+            let paragraphStyle = NSMutableParagraphStyle()
+            paragraphStyle.lineHeightMultiple = 1.32
+            paragraphStyle.alignment = .left
+            self.titleLabel.attributedStringValue = NSMutableAttributedString(string: NSLocalizedString(string, comment: ""), attributes: [NSAttributedString.Key.paragraphStyle: paragraphStyle])
         }
     }
 }

+ 6 - 5
PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeView/View/KMComparativeViewCollectionItemItem.xib

@@ -16,11 +16,11 @@
         <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
         <customObject id="-3" userLabel="Application" customClass="NSObject"/>
         <customView id="Hz6-mo-xeY">
-            <rect key="frame" x="0.0" y="0.0" width="391" height="41"/>
+            <rect key="frame" x="0.0" y="0.0" width="282" height="43"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
                 <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="nge-K8-16k">
-                    <rect key="frame" x="0.0" y="13" width="16" height="16"/>
+                    <rect key="frame" x="0.0" y="14" width="16" height="16"/>
                     <constraints>
                         <constraint firstAttribute="width" constant="16" id="0QS-mA-sq8"/>
                         <constraint firstAttribute="height" constant="16" id="Cgv-RJ-y6k"/>
@@ -28,8 +28,8 @@
                     <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="2Ns-FZ-peU"/>
                 </imageView>
                 <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="77S-IT-dI0">
-                    <rect key="frame" x="22" y="13" width="37" height="16"/>
-                    <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="6Xk-Wh-SL6">
+                    <rect key="frame" x="22" y="14" width="246" height="16"/>
+                    <textFieldCell key="cell" title="Label" id="6Xk-Wh-SL6">
                         <font key="font" metaFont="system"/>
                         <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
                         <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
@@ -37,12 +37,13 @@
                 </textField>
             </subviews>
             <constraints>
+                <constraint firstAttribute="trailing" secondItem="77S-IT-dI0" secondAttribute="trailing" constant="16" id="3b9-75-SyX"/>
                 <constraint firstItem="nge-K8-16k" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="Ceq-9s-k9T"/>
                 <constraint firstItem="77S-IT-dI0" firstAttribute="centerY" secondItem="Hz6-mo-xeY" secondAttribute="centerY" id="gIs-hi-VkU"/>
                 <constraint firstItem="nge-K8-16k" firstAttribute="centerY" secondItem="Hz6-mo-xeY" secondAttribute="centerY" id="jEN-N8-daK"/>
                 <constraint firstItem="77S-IT-dI0" firstAttribute="leading" secondItem="nge-K8-16k" secondAttribute="trailing" constant="8" id="rev-ow-42d"/>
             </constraints>
-            <point key="canvasLocation" x="61.5" y="235.5"/>
+            <point key="canvasLocation" x="44" y="236.5"/>
         </customView>
     </objects>
 </document>

+ 1 - 0
PDF Office/PDF Master/Class/KMLightMember/Controller/Login&Register/View/KMLightNoNetworkView.xib

@@ -1,6 +1,7 @@
 <?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">
     <dependencies>
+        <deployment identifier="macosx"/>
         <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21701"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>

+ 56 - 0
PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/SubscribeSuccess/KMSubscribeSuccessWindowController.swift

@@ -0,0 +1,56 @@
+//
+//  KMSubscribeSuccessWindowController.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/6/26.
+//
+
+import Cocoa
+
+var subscribeSuccessController: KMSubscribeSuccessWindowController?
+var subscribeSuccessMainWindow: NSWindow?
+
+typealias KMSubscribeSuccessWindowControllerCloseAction = (_ controller: KMSubscribeSuccessWindowController) -> Void
+class KMSubscribeSuccessWindowController: NSWindowController {
+    
+    @IBOutlet weak var successView: KMSubscribeSuccessView!
+    var closeAction: KMSubscribeSuccessWindowControllerCloseAction?
+    
+    deinit {
+        print("KMSubscribeSuccessWindowController 释放")
+    }
+    
+    override func windowDidLoad() {
+        super.windowDidLoad()
+        self.setup()
+        // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
+    }
+    
+    //MARK: 打开文件
+    static func show(window: NSWindow) -> KMSubscribeSuccessWindowController {
+        let subscribeSuccessWindowController: KMSubscribeSuccessWindowController = KMSubscribeSuccessWindowController.init(windowNibName: "KMSubscribeSuccessWindowController")
+        window.beginSheet(subscribeSuccessWindowController.window!)
+        subscribeSuccessWindowController.window?.center()
+        
+        subscribeSuccessWindowController.closeAction = { controller in
+            print("关闭")
+            subscribeWaterMarkMainWindow?.endSheet(controller.window!)
+            controller.window?.close()
+            
+            subscribeSuccessController = nil
+            subscribeSuccessMainWindow = nil
+        }
+        
+        subscribeSuccessController = subscribeSuccessWindowController
+        subscribeSuccessMainWindow = window
+        return subscribeSuccessWindowController
+    }
+    
+    func setup() {
+        self.window?.contentView?.backgroundColor(NSColor(hex: "#FFFFFF"))
+        self.successView.doneAction = { [weak self] view in
+            guard let callBack = self?.closeAction else { return }
+            callBack((self!))
+        }
+    }
+}

+ 43 - 0
PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/SubscribeSuccess/KMSubscribeSuccessWindowController.xib

@@ -0,0 +1,43 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21701"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMSubscribeSuccessWindowController" customModule="PDF_Master" customModuleProvider="target">
+            <connections>
+                <outlet property="successView" destination="blv-Bz-ntJ" id="NmZ-cc-ohf"/>
+                <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="F0z-JX-Cv5">
+            <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
+            <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
+            <rect key="contentRect" x="196" y="240" width="480" height="270"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
+            <view key="contentView" id="se5-gp-TjO">
+                <rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <customView translatesAutoresizingMaskIntoConstraints="NO" id="blv-Bz-ntJ" customClass="KMSubscribeSuccessView" customModule="PDF_Master" customModuleProvider="target">
+                        <rect key="frame" x="0.0" y="0.0" width="480" height="270"/>
+                    </customView>
+                </subviews>
+                <constraints>
+                    <constraint firstItem="blv-Bz-ntJ" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" id="NvT-rS-tqL"/>
+                    <constraint firstAttribute="trailing" secondItem="blv-Bz-ntJ" secondAttribute="trailing" id="k3h-8z-eUO"/>
+                    <constraint firstItem="blv-Bz-ntJ" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" id="nqV-F3-jxv"/>
+                    <constraint firstAttribute="bottom" secondItem="blv-Bz-ntJ" secondAttribute="bottom" id="rm7-TW-Vfa"/>
+                </constraints>
+            </view>
+            <connections>
+                <outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
+            </connections>
+            <point key="canvasLocation" x="132" y="-82"/>
+        </window>
+    </objects>
+</document>

+ 49 - 0
PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/SubscribeSuccess/View/KMSubscribeSuccessView.swift

@@ -0,0 +1,49 @@
+//
+//  KMSubscribeSuccessView.swift
+//  PDF Master
+//
+//  Created by lizhe on 2023/6/26.
+//
+
+import Cocoa
+
+typealias KMSubscribeSuccessViewDoneAction = (_ controller: KMSubscribeSuccessView) -> Void
+
+class KMSubscribeSuccessView: KMBaseXibView {
+    @IBOutlet weak var imageView: NSImageView!
+    @IBOutlet weak var titleLabel: NSTextField!
+    @IBOutlet weak var subtitleLabel: NSTextField!
+    @IBOutlet weak var doneButton: NSButton!
+    
+    var doneAction: KMSubscribeSuccessViewDoneAction?
+    
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    override func setup() {
+        self.titleLabel.font = NSFont.SFProTextSemibold(20)
+        self.titleLabel.textColor = NSColor(hex: "#252629")
+        
+        self.subtitleLabel.font = NSFont.SFProTextSemibold(14)
+        self.subtitleLabel.textColor = NSColor(hex: "#616469")
+        
+        self.doneButton.contentTintColor = NSColor(hex: "#FFFFFF")
+        self.doneButton.font = NSFont.SFProTextRegular(14)
+    }
+    
+    override func updateLanguage() {
+        self.titleLabel.stringValue = NSLocalizedString("Subscription Success", comment: "")
+        self.subtitleLabel.stringValue = NSLocalizedString("You now have unlimited access to all premium features", comment: "")
+        self.doneButton.title = NSLocalizedString("OK", comment: "")
+    }
+    
+    @IBAction func doneButtonAction(_ sender: Any) {
+        guard let callBack = doneAction else { return }
+        
+        callBack(self)
+    }
+}

+ 77 - 0
PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/SubscribeSuccess/View/KMSubscribeSuccessView.xib

@@ -0,0 +1,77 @@
+<?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">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21701"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMSubscribeSuccessView" customModule="PDF_Master" customModuleProvider="target">
+            <connections>
+                <outlet property="doneButton" destination="pg8-Y2-DpD" id="NNp-JW-fwq"/>
+                <outlet property="imageView" destination="0IX-5W-LlB" id="me9-sE-o5T"/>
+                <outlet property="subtitleLabel" destination="7Sh-Dk-VGq" id="h9j-hG-A5p"/>
+                <outlet property="titleLabel" destination="fQI-W7-VIG" id="NQl-Hh-BLy"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="c22-O7-iKe">
+            <rect key="frame" x="0.0" y="0.0" width="326" height="346"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="0IX-5W-LlB">
+                    <rect key="frame" x="101" y="188" width="125" height="90"/>
+                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="Frame 1081" id="X4z-aw-ypF"/>
+                </imageView>
+                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fQI-W7-VIG">
+                    <rect key="frame" x="94" y="156" width="139" height="16"/>
+                    <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="Subscription Success" id="Cqi-83-S6W">
+                        <font key="font" metaFont="system"/>
+                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                    </textFieldCell>
+                </textField>
+                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7Sh-Dk-VGq">
+                    <rect key="frame" x="30" y="108" width="266" height="32"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="262" id="KMH-NM-82g"/>
+                    </constraints>
+                    <textFieldCell key="cell" alignment="center" title="You now have unlimited access to all premium features" id="YaK-xh-6LW">
+                        <font key="font" metaFont="system"/>
+                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                    </textFieldCell>
+                </textField>
+                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="pg8-Y2-DpD">
+                    <rect key="frame" x="32" y="40" width="262" height="32"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="262" id="LHw-wf-MTB"/>
+                        <constraint firstAttribute="height" constant="32" id="oif-NT-bDC"/>
+                    </constraints>
+                    <buttonCell key="cell" type="square" title="OK" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="A6M-48-z5n">
+                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                        <font key="font" metaFont="system"/>
+                    </buttonCell>
+                    <connections>
+                        <action selector="doneButtonAction:" target="-2" id="gRc-Pl-iwf"/>
+                    </connections>
+                </button>
+            </subviews>
+            <constraints>
+                <constraint firstItem="fQI-W7-VIG" firstAttribute="centerX" secondItem="c22-O7-iKe" secondAttribute="centerX" id="Dji-w7-9Cw"/>
+                <constraint firstItem="7Sh-Dk-VGq" firstAttribute="centerX" secondItem="c22-O7-iKe" secondAttribute="centerX" id="NsK-OI-8tw"/>
+                <constraint firstItem="fQI-W7-VIG" firstAttribute="top" secondItem="0IX-5W-LlB" secondAttribute="bottom" constant="16" id="blo-Zg-Rj2"/>
+                <constraint firstItem="0IX-5W-LlB" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" constant="68" id="ck0-mW-hqI"/>
+                <constraint firstItem="pg8-Y2-DpD" firstAttribute="centerX" secondItem="c22-O7-iKe" secondAttribute="centerX" id="fq7-06-t2f"/>
+                <constraint firstItem="0IX-5W-LlB" firstAttribute="centerX" secondItem="c22-O7-iKe" secondAttribute="centerX" id="mmB-ec-WyE"/>
+                <constraint firstItem="7Sh-Dk-VGq" firstAttribute="top" secondItem="fQI-W7-VIG" secondAttribute="bottom" constant="16" id="uML-W6-sQD"/>
+                <constraint firstAttribute="bottom" secondItem="pg8-Y2-DpD" secondAttribute="bottom" constant="40" id="vfQ-Bg-wfz"/>
+            </constraints>
+            <point key="canvasLocation" x="22" y="-5"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="Frame 1081" width="125" height="90"/>
+    </resources>
+</document>

PDF Office/PDF Master/Class/KMLightMember/Controller/WaterMark/KMSubscribeWaterMarkWindowController.swift → PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/WaterMark/KMSubscribeWaterMarkWindowController.swift


PDF Office/PDF Master/Class/KMLightMember/Controller/WaterMark/KMSubscribeWaterMarkWindowController.xib → PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/WaterMark/KMSubscribeWaterMarkWindowController.xib


PDF Office/PDF Master/Class/KMLightMember/Controller/WaterMark/View/KMSubscribeWaterMarkView.swift → PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/WaterMark/View/KMSubscribeWaterMarkView.swift


PDF Office/PDF Master/Class/KMLightMember/Controller/WaterMark/View/KMSubscribeWaterMarkView.xib → PDF Office/PDF Master/Class/KMLightMember/Controller/SubscriptionView/WaterMark/View/KMSubscribeWaterMarkView.xib


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

@@ -590,6 +590,7 @@ import Cocoa
         if (editController == nil) {
             return
         }
+        self.listView.annotationType = .highlight
         
         editController?.view.removeFromSuperview()
         editController?.removeFromParent()
@@ -598,6 +599,8 @@ import Cocoa
         self.listView.layoutDocumentView()
         self.view.window?.makeFirstResponder(self.listView)
         
+        self.listView.annotationType = .unkown
+        
         self.listView.go(toPageIndex: editController!.listViewCurrentIndex, animated: false)
     }
     

+ 1 - 0
PDF Office/PDF Master/Third Pard Library/Sparkle.framework/Modules

@@ -0,0 +1 @@
+Versions/Current/Modules

+ 6 - 0
PDF Office/PDF Master/Third Pard Library/Sparkle.framework/Versions/A/Modules/module.modulemap

@@ -0,0 +1,6 @@
+framework module Sparkle {
+  umbrella header "Sparkle.h"
+
+  export *
+  module * { export * }
+}