Bläddra i källkod

综合-更新git忽略文件配置(忽略用户数据文件夹上传)

tangchao 2 år sedan
förälder
incheckning
5f668c53e7
90 ändrade filer med 4903 tillägg och 740 borttagningar
  1. 2 3
      .gitignore
  2. 122 0
      PDF Office/PDF Office.xcodeproj/project.pbxproj
  3. BIN
      PDF Office/PDF Office.xcodeproj/project.xcworkspace/xcuserdata/kdanmobile.xcuserdatad/UserInterfaceState.xcuserstate
  4. 112 32
      PDF Office/PDF Office.xcodeproj/xcuserdata/lizhe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist
  5. 12 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/Other/KMImageNameUXIconPDFViewBookMark.imageset/Contents.json
  6. 78 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/Other/KMImageNameUXIconPDFViewBookMark.imageset/bookmark.pdf
  7. 12 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_dot_fillSign_Disabled.imageset/Contents.json
  8. 71 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_dot_fillSign_Disabled.imageset/Type=dot, State=fill&sign, Disabled=true.pdf
  9. 12 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_dot_norm.imageset/Contents.json
  10. 71 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_dot_norm.imageset/Type=dot, State=norm, Disabled=false.pdf
  11. 12 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_dot_sel.imageset/Contents.json
  12. 71 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_dot_sel.imageset/Type=dot, State=sel, Disabled=false.pdf
  13. 12 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_fork_fillSign_Disabled.imageset/Contents.json
  14. 83 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_fork_fillSign_Disabled.imageset/Type=fork, State=fill&sign, Disabled=true.pdf
  15. 12 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_fork_norm.imageset/Contents.json
  16. 83 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_fork_norm.imageset/Type=fork, State=norm, Disabled=false.pdf
  17. 12 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_fork_sel.imageset/Contents.json
  18. 83 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_fork_sel.imageset/Type=fork, State=sel, Disabled=false.pdf
  19. 12 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_hook_fillSign_Disabled.imageset/Contents.json
  20. 83 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_hook_fillSign_Disabled.imageset/Type=hook, State=fill&sign, Disabled=true.pdf
  21. 12 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_hook_norm.imageset/Contents.json
  22. 83 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_hook_norm.imageset/Type=hook, State=norm, Disabled=false.pdf
  23. 12 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_hook_sel.imageset/Contents.json
  24. 83 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_hook_sel.imageset/Type=hook, State=sel, Disabled=false.pdf
  25. 12 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_line_fillSign_Disabled.imageset/Contents.json
  26. 71 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_line_fillSign_Disabled.imageset/Type=line, State=fill&sign, Disabled=true.pdf
  27. 12 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_line_norm.imageset/Contents.json
  28. 71 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_line_norm.imageset/Type=line, State=norm, Disabled=false.pdf
  29. 12 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_line_sel.imageset/Contents.json
  30. 71 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_line_sel.imageset/Type=line, State=sel, Disabled=false.pdf
  31. 12 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_rect_fillSign_Disabled.imageset/Contents.json
  32. 127 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_rect_fillSign_Disabled.imageset/Type=rect, State=fill&sign, Disabled=true.pdf
  33. 12 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_rect_norm.imageset/Contents.json
  34. 127 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_rect_norm.imageset/Type=rect, State=norm, Disabled=false.pdf
  35. 12 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_rect_sel.imageset/Contents.json
  36. 127 0
      PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_rect_sel.imageset/Type=rect, State=sel, Disabled=false.pdf
  37. 2 0
      PDF Office/PDF Office/Class/ChromiumTabs/KMBrowserWindowController.swift
  38. 53 0
      PDF Office/PDF Office/Class/ComponentLibrary/Category/KMDesignToken+Action.swift
  39. 10 0
      PDF Office/PDF Office/Class/Home/Category/NSViewController+DesignToken.swift
  40. 81 0
      PDF Office/PDF Office/Class/Home/ViewController/customViewController/KMDesignBase.swift
  41. 22 0
      PDF Office/PDF Office/Class/Home/ViewController/customViewController/KMDesignBase.xib
  42. 29 2
      PDF Office/PDF Office/Class/Home/ViewController/customViewController/KMDesignButton.swift
  43. 99 1
      PDF Office/PDF Office/Class/Home/ViewController/customViewController/KMDesignPropertySelector.swift
  44. 9 1
      PDF Office/PDF Office/Class/Home/ViewController/customViewController/KMDesignPropertySelector.xib
  45. 8 0
      PDF Office/PDF Office/Class/KMLightMember/Controller/ComparativeTable/KMComparativeTableViewController.swift
  46. 64 9
      PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/KMLoginWindowController.swift
  47. 24 0
      PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/KMLoginWindowController.xib
  48. 19 3
      PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/Model/KMRegisterModel.swift
  49. 28 4
      PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/Presenter/KMRegisterPresenter.swift
  50. 214 0
      PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMLoginInputPasswordView.swift
  51. 233 0
      PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMLoginInputPasswordView.xib
  52. 28 15
      PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMLoginView.swift
  53. 12 12
      PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMLoginView.xib
  54. 54 0
      PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMRegisterSuccessView.swift
  55. 74 0
      PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMRegisterSuccessView.xib
  56. 7 7
      PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMRegisterView.swift
  57. 233 0
      PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMResetPasswordView.swift
  58. 235 0
      PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMResetPasswordView.xib
  59. 40 0
      PDF Office/PDF Office/Class/KMLightMember/Controller/VerificationCode/View/KMLightMemberAlertView.swift
  60. 60 0
      PDF Office/PDF Office/Class/KMLightMember/Controller/VerificationCode/View/KMLightMemberAlertView.xib
  61. 39 11
      PDF Office/PDF Office/Class/KMLightMember/Controller/VerificationCode/View/KMVerificationCodeView.swift
  62. 20 8
      PDF Office/PDF Office/Class/KMLightMember/Controller/VerificationCode/View/KMVerificationCodeView.xib
  63. 21 0
      PDF Office/PDF Office/Class/KMLightMember/Source/KMLightMember.xcassets/icon_tips_error_small.imageset/Contents.json
  64. 89 0
      PDF Office/PDF Office/Class/KMLightMember/Source/KMLightMember.xcassets/icon_tips_error_small.imageset/style=error, size=small.pdf
  65. 10 0
      PDF Office/PDF Office/Class/PDFTools/Tools/KMBaseXibView/KMBaseXibView.swift
  66. 6 3
      PDF Office/PDF Office/Class/PDFTools/Tools/TextField/KMBaseTextField.swift
  67. 11 5
      PDF Office/PDF Office/Class/PDFWindowController/PDFListView/AppKitCategories/CPDFListEditAnnotationViewController.m
  68. 2 0
      PDF Office/PDF Office/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFAnnotationHeader.h
  69. 0 4
      PDF Office/PDF Office/Class/PDFWindowController/PDFListView/CPDFListView.h
  70. 9 7
      PDF Office/PDF Office/Class/PDFWindowController/PDFListView/CPDFListView.m
  71. 13 3
      PDF Office/PDF Office/Class/PDFWindowController/Side/LeftSide/Annotation/KMAnnotationViewController.swift
  72. 28 16
      PDF Office/PDF Office/Class/PDFWindowController/Side/LeftSide/Annotation/KMAnnotationViewController.xib
  73. 21 4
      PDF Office/PDF Office/Class/PDFWindowController/Side/LeftSide/Annotation/View/KMAnnotationTableCellView.swift
  74. 51 2
      PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/AnnotationProperty/KMAnnotationPropertiesViewController.m
  75. 3 3
      PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/AnnotationProperty/KMGeneralAnnotationViewController.xib
  76. 4 4
      PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/AnnotationProperty/NSObject/KMAnnotationPropertiesColorManager.m
  77. 255 11
      PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/AnnotationProperty/ViewController/KMFillSignShapePanel.swift
  78. 366 222
      PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/AnnotationProperty/ViewController/KMFillSignShapePanel.xib
  79. 5 9
      PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/KMRightSideViewController.swift
  80. 9 4
      PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/KMPDFSignatureImageView.m
  81. 112 147
      PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/KMSignatureAnnotationViewController.m
  82. 118 146
      PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/KMSignatureAnnotationViewController.xib
  83. 47 36
      PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/KMSignatureWindowController.xib
  84. 34 0
      PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/KMSigntureViewItem.h
  85. 92 0
      PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/KMSigntureViewItem.m
  86. 64 0
      PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/KMSigntureViewItem.xib
  87. BIN
      PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/images/signAdd.png
  88. BIN
      PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/images/signAddBack.png
  89. 3 3
      PDF Office/PDF Office/Class/PDFWindowController/ViewController/KMMainViewController+UI.swift
  90. 22 3
      PDF Office/PDF Office/Class/PDFWindowController/ViewController/KMMainViewController.swift

+ 2 - 3
.gitignore

@@ -1,6 +1,5 @@
 build/*
 .DS_Store
 
-xcuserdata
-xcuserstate
-project.xcworkspace
+.xcuserdata
+project.xcworkspace

+ 122 - 0
PDF Office/PDF Office.xcodeproj/project.pbxproj

@@ -750,6 +750,12 @@
 		9F1FE51129407B4000E952CA /* KMFileSearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F1FE51029407B4000E952CA /* KMFileSearchView.swift */; };
 		9F1FE51229407B4000E952CA /* KMFileSearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F1FE51029407B4000E952CA /* KMFileSearchView.swift */; };
 		9F1FE51329407B4000E952CA /* KMFileSearchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F1FE51029407B4000E952CA /* KMFileSearchView.swift */; };
+		9F221ECF29A85D3700978A59 /* KMDesignBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F221ECD29A85D3700978A59 /* KMDesignBase.swift */; };
+		9F221ED029A85D3700978A59 /* KMDesignBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F221ECD29A85D3700978A59 /* KMDesignBase.swift */; };
+		9F221ED129A85D3700978A59 /* KMDesignBase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F221ECD29A85D3700978A59 /* KMDesignBase.swift */; };
+		9F221ED229A85D3700978A59 /* KMDesignBase.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F221ECE29A85D3700978A59 /* KMDesignBase.xib */; };
+		9F221ED329A85D3700978A59 /* KMDesignBase.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F221ECE29A85D3700978A59 /* KMDesignBase.xib */; };
+		9F221ED429A85D3700978A59 /* KMDesignBase.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9F221ECE29A85D3700978A59 /* KMDesignBase.xib */; };
 		9F3D818729A0A9A60087B5AD /* KMDesignButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3D818529A0A9A60087B5AD /* KMDesignButton.swift */; };
 		9F3D818829A0A9A60087B5AD /* KMDesignButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3D818529A0A9A60087B5AD /* KMDesignButton.swift */; };
 		9F3D818929A0A9A60087B5AD /* KMDesignButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F3D818529A0A9A60087B5AD /* KMDesignButton.swift */; };
@@ -1040,6 +1046,30 @@
 		AD0FA4F529A8582C00EDEB50 /* KMComparativeTableView.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD0FA4F429A8582C00EDEB50 /* KMComparativeTableView.xib */; };
 		AD0FA4F629A8582C00EDEB50 /* KMComparativeTableView.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD0FA4F429A8582C00EDEB50 /* KMComparativeTableView.xib */; };
 		AD0FA4F729A8582C00EDEB50 /* KMComparativeTableView.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD0FA4F429A8582C00EDEB50 /* KMComparativeTableView.xib */; };
+		AD0FA4F929A8DD6F00EDEB50 /* KMRegisterSuccessView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0FA4F829A8DD6F00EDEB50 /* KMRegisterSuccessView.swift */; };
+		AD0FA4FA29A8DD6F00EDEB50 /* KMRegisterSuccessView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0FA4F829A8DD6F00EDEB50 /* KMRegisterSuccessView.swift */; };
+		AD0FA4FB29A8DD6F00EDEB50 /* KMRegisterSuccessView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0FA4F829A8DD6F00EDEB50 /* KMRegisterSuccessView.swift */; };
+		AD0FA4FE29A8DD8700EDEB50 /* KMRegisterSuccessView.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD0FA4FD29A8DD8700EDEB50 /* KMRegisterSuccessView.xib */; };
+		AD0FA4FF29A8DD8700EDEB50 /* KMRegisterSuccessView.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD0FA4FD29A8DD8700EDEB50 /* KMRegisterSuccessView.xib */; };
+		AD0FA50029A8DD8700EDEB50 /* KMRegisterSuccessView.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD0FA4FD29A8DD8700EDEB50 /* KMRegisterSuccessView.xib */; };
+		AD0FA50229A8E36200EDEB50 /* KMLightMemberAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0FA50129A8E36200EDEB50 /* KMLightMemberAlertView.swift */; };
+		AD0FA50329A8E36200EDEB50 /* KMLightMemberAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0FA50129A8E36200EDEB50 /* KMLightMemberAlertView.swift */; };
+		AD0FA50429A8E36200EDEB50 /* KMLightMemberAlertView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0FA50129A8E36200EDEB50 /* KMLightMemberAlertView.swift */; };
+		AD0FA50629A8E61B00EDEB50 /* KMLightMemberAlertView.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD0FA50529A8E61B00EDEB50 /* KMLightMemberAlertView.xib */; };
+		AD0FA50729A8E61B00EDEB50 /* KMLightMemberAlertView.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD0FA50529A8E61B00EDEB50 /* KMLightMemberAlertView.xib */; };
+		AD0FA50829A8E61B00EDEB50 /* KMLightMemberAlertView.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD0FA50529A8E61B00EDEB50 /* KMLightMemberAlertView.xib */; };
+		AD0FA50A29A9E74200EDEB50 /* KMLoginInputPasswordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0FA50929A9E74200EDEB50 /* KMLoginInputPasswordView.swift */; };
+		AD0FA50B29A9E74200EDEB50 /* KMLoginInputPasswordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0FA50929A9E74200EDEB50 /* KMLoginInputPasswordView.swift */; };
+		AD0FA50C29A9E74200EDEB50 /* KMLoginInputPasswordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0FA50929A9E74200EDEB50 /* KMLoginInputPasswordView.swift */; };
+		AD0FA50E29A9E75000EDEB50 /* KMLoginInputPasswordView.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD0FA50D29A9E75000EDEB50 /* KMLoginInputPasswordView.xib */; };
+		AD0FA50F29A9E75000EDEB50 /* KMLoginInputPasswordView.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD0FA50D29A9E75000EDEB50 /* KMLoginInputPasswordView.xib */; };
+		AD0FA51029A9E75000EDEB50 /* KMLoginInputPasswordView.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD0FA50D29A9E75000EDEB50 /* KMLoginInputPasswordView.xib */; };
+		AD0FA51229A9FA8600EDEB50 /* KMResetPasswordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0FA51129A9FA8600EDEB50 /* KMResetPasswordView.swift */; };
+		AD0FA51329A9FA8600EDEB50 /* KMResetPasswordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0FA51129A9FA8600EDEB50 /* KMResetPasswordView.swift */; };
+		AD0FA51429A9FA8600EDEB50 /* KMResetPasswordView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0FA51129A9FA8600EDEB50 /* KMResetPasswordView.swift */; };
+		AD0FA51629A9FA8F00EDEB50 /* KMResetPasswordView.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD0FA51529A9FA8F00EDEB50 /* KMResetPasswordView.xib */; };
+		AD0FA51729A9FA8F00EDEB50 /* KMResetPasswordView.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD0FA51529A9FA8F00EDEB50 /* KMResetPasswordView.xib */; };
+		AD0FA51829A9FA8F00EDEB50 /* KMResetPasswordView.xib in Resources */ = {isa = PBXBuildFile; fileRef = AD0FA51529A9FA8F00EDEB50 /* KMResetPasswordView.xib */; };
 		AD3A3587294C11ED00D72802 /* KMPrintPreviewPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD3A3586294C11ED00D72802 /* KMPrintPreviewPresenter.swift */; };
 		AD3A3588294C11ED00D72802 /* KMPrintPreviewPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD3A3586294C11ED00D72802 /* KMPrintPreviewPresenter.swift */; };
 		AD3A3589294C11ED00D72802 /* KMPrintPreviewPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD3A3586294C11ED00D72802 /* KMPrintPreviewPresenter.swift */; };
@@ -2096,6 +2126,18 @@
 		BB7F4C8E29A79AD9008998F9 /* KMPDFMergeFileNameTabelViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BB7F4C8D29A79AD9008998F9 /* KMPDFMergeFileNameTabelViewCell.m */; };
 		BB7F4C8F29A79AD9008998F9 /* KMPDFMergeFileNameTabelViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BB7F4C8D29A79AD9008998F9 /* KMPDFMergeFileNameTabelViewCell.m */; };
 		BB7F4C9029A79AD9008998F9 /* KMPDFMergeFileNameTabelViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BB7F4C8D29A79AD9008998F9 /* KMPDFMergeFileNameTabelViewCell.m */; };
+		BB7F7BF729AA469F00A3E4E7 /* KMSigntureViewItem.m in Sources */ = {isa = PBXBuildFile; fileRef = BB7F7BF529AA469F00A3E4E7 /* KMSigntureViewItem.m */; };
+		BB7F7BF829AA469F00A3E4E7 /* KMSigntureViewItem.m in Sources */ = {isa = PBXBuildFile; fileRef = BB7F7BF529AA469F00A3E4E7 /* KMSigntureViewItem.m */; };
+		BB7F7BF929AA469F00A3E4E7 /* KMSigntureViewItem.m in Sources */ = {isa = PBXBuildFile; fileRef = BB7F7BF529AA469F00A3E4E7 /* KMSigntureViewItem.m */; };
+		BB7F7BFA29AA469F00A3E4E7 /* KMSigntureViewItem.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB7F7BF629AA469F00A3E4E7 /* KMSigntureViewItem.xib */; };
+		BB7F7BFB29AA469F00A3E4E7 /* KMSigntureViewItem.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB7F7BF629AA469F00A3E4E7 /* KMSigntureViewItem.xib */; };
+		BB7F7BFC29AA469F00A3E4E7 /* KMSigntureViewItem.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB7F7BF629AA469F00A3E4E7 /* KMSigntureViewItem.xib */; };
+		BB7F7C0029AA586800A3E4E7 /* signAdd.png in Resources */ = {isa = PBXBuildFile; fileRef = BB7F7BFE29AA586800A3E4E7 /* signAdd.png */; };
+		BB7F7C0129AA586900A3E4E7 /* signAdd.png in Resources */ = {isa = PBXBuildFile; fileRef = BB7F7BFE29AA586800A3E4E7 /* signAdd.png */; };
+		BB7F7C0229AA586900A3E4E7 /* signAdd.png in Resources */ = {isa = PBXBuildFile; fileRef = BB7F7BFE29AA586800A3E4E7 /* signAdd.png */; };
+		BB7F7C0329AA586900A3E4E7 /* signAddBack.png in Resources */ = {isa = PBXBuildFile; fileRef = BB7F7BFF29AA586800A3E4E7 /* signAddBack.png */; };
+		BB7F7C0429AA586900A3E4E7 /* signAddBack.png in Resources */ = {isa = PBXBuildFile; fileRef = BB7F7BFF29AA586800A3E4E7 /* signAddBack.png */; };
+		BB7F7C0529AA586900A3E4E7 /* signAddBack.png in Resources */ = {isa = PBXBuildFile; fileRef = BB7F7BFF29AA586800A3E4E7 /* signAddBack.png */; };
 		BB8115FB29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB8115FA29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift */; };
 		BB8115FC29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB8115FA29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift */; };
 		BB8115FD29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB8115FA29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift */; };
@@ -3271,6 +3313,8 @@
 		9F1FE49229406E4700E952CA /* CTTabStripView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CTTabStripView.h; sourceTree = "<group>"; };
 		9F1FE50C29407B2B00E952CA /* KMUploadFilePanel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMUploadFilePanel.swift; sourceTree = "<group>"; };
 		9F1FE51029407B4000E952CA /* KMFileSearchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMFileSearchView.swift; sourceTree = "<group>"; };
+		9F221ECD29A85D3700978A59 /* KMDesignBase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMDesignBase.swift; sourceTree = "<group>"; };
+		9F221ECE29A85D3700978A59 /* KMDesignBase.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMDesignBase.xib; sourceTree = "<group>"; };
 		9F3D818529A0A9A60087B5AD /* KMDesignButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMDesignButton.swift; sourceTree = "<group>"; };
 		9F3D818629A0A9A60087B5AD /* KMDesignButton.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMDesignButton.xib; sourceTree = "<group>"; };
 		9F3D818D29A22AD90087B5AD /* Date+KMExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Date+KMExtensions.swift"; sourceTree = "<group>"; };
@@ -3370,6 +3414,14 @@
 		9FF94F1829A770B500B1EF69 /* KMFillSignShapePanel.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMFillSignShapePanel.xib; sourceTree = "<group>"; };
 		AD0FA4EF29A8580D00EDEB50 /* KMComparativeTableView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMComparativeTableView.swift; sourceTree = "<group>"; };
 		AD0FA4F429A8582C00EDEB50 /* KMComparativeTableView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMComparativeTableView.xib; sourceTree = "<group>"; };
+		AD0FA4F829A8DD6F00EDEB50 /* KMRegisterSuccessView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMRegisterSuccessView.swift; sourceTree = "<group>"; };
+		AD0FA4FD29A8DD8700EDEB50 /* KMRegisterSuccessView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMRegisterSuccessView.xib; sourceTree = "<group>"; };
+		AD0FA50129A8E36200EDEB50 /* KMLightMemberAlertView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMLightMemberAlertView.swift; sourceTree = "<group>"; };
+		AD0FA50529A8E61B00EDEB50 /* KMLightMemberAlertView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMLightMemberAlertView.xib; sourceTree = "<group>"; };
+		AD0FA50929A9E74200EDEB50 /* KMLoginInputPasswordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMLoginInputPasswordView.swift; sourceTree = "<group>"; };
+		AD0FA50D29A9E75000EDEB50 /* KMLoginInputPasswordView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMLoginInputPasswordView.xib; sourceTree = "<group>"; };
+		AD0FA51129A9FA8600EDEB50 /* KMResetPasswordView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMResetPasswordView.swift; sourceTree = "<group>"; };
+		AD0FA51529A9FA8F00EDEB50 /* KMResetPasswordView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMResetPasswordView.xib; sourceTree = "<group>"; };
 		AD3A3586294C11ED00D72802 /* KMPrintPreviewPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPrintPreviewPresenter.swift; sourceTree = "<group>"; };
 		AD44D651292C9E7900A94554 /* KMImageToPDFChooseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMImageToPDFChooseView.swift; sourceTree = "<group>"; };
 		AD44D655292C9E8C00A94554 /* KMImageToPDFChooseView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMImageToPDFChooseView.xib; sourceTree = "<group>"; };
@@ -3801,6 +3853,11 @@
 		BB7507E829861C37002DBDB1 /* PasswordWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PasswordWindowController.h; sourceTree = "<group>"; };
 		BB7F4C8C29A79AD9008998F9 /* KMPDFMergeFileNameTabelViewCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KMPDFMergeFileNameTabelViewCell.h; sourceTree = "<group>"; };
 		BB7F4C8D29A79AD9008998F9 /* KMPDFMergeFileNameTabelViewCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KMPDFMergeFileNameTabelViewCell.m; sourceTree = "<group>"; };
+		BB7F7BF429AA469F00A3E4E7 /* KMSigntureViewItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KMSigntureViewItem.h; sourceTree = "<group>"; };
+		BB7F7BF529AA469F00A3E4E7 /* KMSigntureViewItem.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KMSigntureViewItem.m; sourceTree = "<group>"; };
+		BB7F7BF629AA469F00A3E4E7 /* KMSigntureViewItem.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMSigntureViewItem.xib; sourceTree = "<group>"; };
+		BB7F7BFE29AA586800A3E4E7 /* signAdd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = signAdd.png; sourceTree = "<group>"; };
+		BB7F7BFF29AA586800A3E4E7 /* signAddBack.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = signAddBack.png; sourceTree = "<group>"; };
 		BB8115FA29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMSecureEncryptCheckCellView.swift; sourceTree = "<group>"; };
 		BB8115FE2992682F0008F536 /* KMSecureLimitAlertView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMSecureLimitAlertView.swift; sourceTree = "<group>"; };
 		BB86C1EB28F544F4005AD968 /* CPDFListView+Event.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CPDFListView+Event.h"; sourceTree = "<group>"; };
@@ -4258,9 +4315,13 @@
 		8931681E296D73C10073EA59 /* Signature */ = {
 			isa = PBXGroup;
 			children = (
+				BB7F7BFD29AA585E00A3E4E7 /* images */,
 				8931681F296D73CC0073EA59 /* KMSignatureAnnotationViewController.h */,
 				89316820296D73CC0073EA59 /* KMSignatureAnnotationViewController.m */,
 				89316821296D73CC0073EA59 /* KMSignatureAnnotationViewController.xib */,
+				BB7F7BF429AA469F00A3E4E7 /* KMSigntureViewItem.h */,
+				BB7F7BF529AA469F00A3E4E7 /* KMSigntureViewItem.m */,
+				BB7F7BF629AA469F00A3E4E7 /* KMSigntureViewItem.xib */,
 				89316833296E436B0073EA59 /* KMDrawView.h */,
 				89316831296E436B0073EA59 /* KMDrawView.m */,
 				8931682D296E436A0073EA59 /* KMPDFSignatureImageView.h */,
@@ -4966,6 +5027,8 @@
 		9F72D20E2994BDCC00DCACF1 /* customViewController */ = {
 			isa = PBXGroup;
 			children = (
+				9F221ECD29A85D3700978A59 /* KMDesignBase.swift */,
+				9F221ECE29A85D3700978A59 /* KMDesignBase.xib */,
 				9F3D818529A0A9A60087B5AD /* KMDesignButton.swift */,
 				9F3D818629A0A9A60087B5AD /* KMDesignButton.xib */,
 				9F3D819129A33A290087B5AD /* KMDesignDropdown.swift */,
@@ -5259,6 +5322,12 @@
 				AD68783729A60FC0005B5210 /* KMLoginView.xib */,
 				ADF1569229A62D1D001D1018 /* KMLoginLeftImageView.swift */,
 				ADF1569629A62D31001D1018 /* KMLoginLeftImageView.xib */,
+				AD0FA4F829A8DD6F00EDEB50 /* KMRegisterSuccessView.swift */,
+				AD0FA4FD29A8DD8700EDEB50 /* KMRegisterSuccessView.xib */,
+				AD0FA50929A9E74200EDEB50 /* KMLoginInputPasswordView.swift */,
+				AD0FA50D29A9E75000EDEB50 /* KMLoginInputPasswordView.xib */,
+				AD0FA51129A9FA8600EDEB50 /* KMResetPasswordView.swift */,
+				AD0FA51529A9FA8F00EDEB50 /* KMResetPasswordView.xib */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -5322,6 +5391,8 @@
 			children = (
 				AD88109529A78ADC00178CA1 /* KMVerificationCodeView.swift */,
 				AD88109929A78AEC00178CA1 /* KMVerificationCodeView.xib */,
+				AD0FA50129A8E36200EDEB50 /* KMLightMemberAlertView.swift */,
+				AD0FA50529A8E61B00EDEB50 /* KMLightMemberAlertView.xib */,
 			);
 			path = View;
 			sourceTree = "<group>";
@@ -6853,6 +6924,15 @@
 			path = Model;
 			sourceTree = "<group>";
 		};
+		BB7F7BFD29AA585E00A3E4E7 /* images */ = {
+			isa = PBXGroup;
+			children = (
+				BB7F7BFE29AA586800A3E4E7 /* signAdd.png */,
+				BB7F7BFF29AA586800A3E4E7 /* signAddBack.png */,
+			);
+			path = images;
+			sourceTree = "<group>";
+		};
 		BB86C1F528F5476C005AD968 /* NSEvent_Extensions */ = {
 			isa = PBXGroup;
 			children = (
@@ -8024,6 +8104,7 @@
 				ADC075BA29866984006C752F /* KMBatchConverPDFWordView.xib in Resources */,
 				ADCB98ED2924779800B51A03 /* KMBatchProcessingStateTableCell.xib in Resources */,
 				BBC3481F295593F0008D2CD1 /* KMBackgroundListController.xib in Resources */,
+				BB7F7BFA29AA469F00A3E4E7 /* KMSigntureViewItem.xib in Resources */,
 				9F1F82E62934D5240092C4B4 /* KMHomeExtractActionViewController.xib in Resources */,
 				89E4E77C2967B370002DBA6F /* KMDynamicStampViewController.xib in Resources */,
 				89316855296E45CA0073EA59 /* KMImageAccessoryController.xib in Resources */,
@@ -8044,6 +8125,7 @@
 				ADE614BF298620C000F62ED7 /* ImageToPDF.xcassets in Resources */,
 				9F1FE3F4293F4F0F00E952CA /* Info.plist in Resources */,
 				BB69C962299116FD0001A9B1 /* horizontal_line.pdf in Resources */,
+				BB7F7C0329AA586900A3E4E7 /* signAddBack.png in Resources */,
 				89D9896F28FD50EF003A3E87 /* KMAnnotationCollectionViewItem.xib in Resources */,
 				BBFE6E68293097A600142C01 /* KMPageRangePickerWindowController.xib in Resources */,
 				9FBA0EE428FEC253001117AF /* KMProductPromotionViewController.xib in Resources */,
@@ -8054,6 +8136,7 @@
 				BB24D4AA2977BE6700041659 /* KMRedactConfirmWindowController.xib in Resources */,
 				BBAFC84D298519F700D0648E /* KMSavePanelAccessoryController.xib in Resources */,
 				F3A9DC81294309D80074E5D2 /* CPDFListEditAnnotationViewController.xib in Resources */,
+				AD0FA50629A8E61B00EDEB50 /* KMLightMemberAlertView.xib in Resources */,
 				89E4E7852967BF5A002DBA6F /* KMCustomizeStampViewController.xib in Resources */,
 				9F7610942988EB4200C344DD /* KMRadioButtonVC.xib in Resources */,
 				F359917B292B7B8A000D25DE /* InitialUserDefaults.plist in Resources */,
@@ -8081,6 +8164,7 @@
 				9FDD0F9C2952FF4D000C4DAD /* comp-light.json in Resources */,
 				AD9527B229503D620039D2BC /* Untitled.pdf in Resources */,
 				F3B7DFA42949C8E300333201 /* CPDFListView.xcassets in Resources */,
+				9F221ED229A85D3700978A59 /* KMDesignBase.xib in Resources */,
 				9F853A052947137500DF644E /* newtab_h.pdf in Resources */,
 				9F8539FC2947137500DF644E /* throbber_waiting.png in Resources */,
 				ADBC2CFE299CA6C7006280C8 /* KMPrintDuplexPrintingSetView.xib in Resources */,
@@ -8102,6 +8186,7 @@
 				ADB1FEA22975303F00ED072D /* KMBatchBatesNumberView.xib in Resources */,
 				8942F7F32926087200389627 /* KMSearchViewController.xib in Resources */,
 				ADF9ED3329A850D200C4A943 /* KMAccountInfoView.xib in Resources */,
+				BB7F7C0029AA586800A3E4E7 /* signAdd.png in Resources */,
 				9F0CB46A2967E5CB00007028 /* KMPropertiesPanelSubViewController.xib in Resources */,
 				9F0CB4722967E63100007028 /* KMPropertiesPanelNameSubVC.xib in Resources */,
 				BB3AAB9329878CE000992A5A /* KMWatermarkAdjectivePropertyMainController.xib in Resources */,
@@ -8160,6 +8245,7 @@
 				ADC075C429866B05006C752F /* KMBatchTextRecognitionView.xib in Resources */,
 				89E93ED02999CEF100F10F66 /* KMNoteOutlineFilterViewController.xib in Resources */,
 				9F728FAB29926B4300F0C225 /* black_pdfreaderpro_home_en.pdf in Resources */,
+				AD0FA51629A9FA8F00EDEB50 /* KMResetPasswordView.xib in Resources */,
 				BBC3480F29558DC1008D2CD1 /* KMBackgroundController.xib in Resources */,
 				ADD1B6F82946C0CA00C3FFF7 /* KMPrintChoosePageSizeMultipageView.xib in Resources */,
 				89E4E76429656A88002DBA6F /* KMAnnotationStampViewController.xib in Resources */,
@@ -8168,6 +8254,7 @@
 				89E9B3F9295BE2EC00AEFA61 /* KMEditPDFTextPropertyViewController.xib in Resources */,
 				ADB1FE9A2975301500ED072D /* KMBatchHeaderAndFooterView.xib in Resources */,
 				9F8539CE29430BF300DF644E /* KMBrowserWindowController.xib in Resources */,
+				AD0FA4FE29A8DD8700EDEB50 /* KMRegisterSuccessView.xib in Resources */,
 				9F0CB49229683DEE00007028 /* KMPropertiesPanelLineSubVC.xib in Resources */,
 				BB8B17362907B64D001C5EA5 /* CipherTextView.xib in Resources */,
 				BBC348562958465C008D2CD1 /* KMBackgroundFilePropertyInfoController.xib in Resources */,
@@ -8209,6 +8296,7 @@
 				BBC348362955A118008D2CD1 /* KMCreateBackgroundController.xib in Resources */,
 				9F0CB4C02977C06300007028 /* KMPropertiesPanelColorSubVC.xib in Resources */,
 				ADD1B6F42946C07800C3FFF7 /* KMPrintChoosePageSizePosterView.xib in Resources */,
+				AD0FA50E29A9E75000EDEB50 /* KMLoginInputPasswordView.xib in Resources */,
 				BB8F4542295A98960037EA22 /* KMHeaderFooterPropertyController.xib in Resources */,
 				9FA693AB2987C0590055488A /* KMStepperView.xib in Resources */,
 				89E4E6EF2963D1B7002DBA6F /* KMColorPickerViewController.xib in Resources */,
@@ -8265,6 +8353,7 @@
 				BBA8B7A72935CD740097D183 /* KMRemovePasswordAlertWindowController.xib in Resources */,
 				BB99ACC6292DE22E0048AFD9 /* KMMergeViewController.xib in Resources */,
 				89E93EE82999DB4200F10F66 /* KMNoteColorCollectionViewItem.xib in Resources */,
+				AD0FA50F29A9E75000EDEB50 /* KMLoginInputPasswordView.xib in Resources */,
 				89E93EF12999DB6600F10F66 /* KMNoteTypeCollectionViewItem.xib in Resources */,
 				9F0CB49B29683E1000007028 /* KMPropertiesPanelTextSubVC.xib in Resources */,
 				9F0CB4C12977C06300007028 /* KMPropertiesPanelColorSubVC.xib in Resources */,
@@ -8303,6 +8392,7 @@
 				9F3D819729A33A290087B5AD /* KMDesignDropdown.xib in Resources */,
 				BBFE6E792930E53000142C01 /* KMMergePopoverViewController.xib in Resources */,
 				9FDD0F972952FF4D000C4DAD /* $metadata.json in Resources */,
+				BB7F7C0429AA586900A3E4E7 /* signAddBack.png in Resources */,
 				9FF94F1D29A770B500B1EF69 /* KMFillSignShapePanel.xib in Resources */,
 				BBC348472956A638008D2CD1 /* KMEditBackgroundController.xib in Resources */,
 				BB49ECFA293F44DC00C82CA2 /* KMConvertExcelWindowController.xib in Resources */,
@@ -8312,6 +8402,8 @@
 				BB49ED02293F459500C82CA2 /* KMConvertPPTsWindowController.xib in Resources */,
 				BB8F455B295AA1270037EA22 /* KMHeaderFooterPropertyInfoController.xib in Resources */,
 				ADE614BB29861CFF00F62ED7 /* KMBatchSelectedFilesView.xib in Resources */,
+				BB7F7BFB29AA469F00A3E4E7 /* KMSigntureViewItem.xib in Resources */,
+				AD0FA51729A9FA8F00EDEB50 /* KMResetPasswordView.xib in Resources */,
 				F3A9DC82294309D80074E5D2 /* CPDFListEditAnnotationViewController.xib in Resources */,
 				8942F7F42926087200389627 /* KMSearchViewController.xib in Resources */,
 				9FAAA336290BD0A20046FFCE /* KMHistoryFileCollectionViewItem.xib in Resources */,
@@ -8342,6 +8434,7 @@
 				BB4BD9D02909026500A66A65 /* KMRightSideViewController.xib in Resources */,
 				ADB2D6F3294741720029D2B3 /* KMPrintPaperSetView.xib in Resources */,
 				ADCB98DE2924775B00B51A03 /* KMBatchProcessingOrderTableCell.xib in Resources */,
+				BB7F7C0129AA586900A3E4E7 /* signAdd.png in Resources */,
 				BB6DD81029347F77001F0544 /* KMSecureEncryptWindowController.xib in Resources */,
 				ADBC2D16299CCD10006280C8 /* KMTextfieldButton.xib in Resources */,
 				ADB1FEA32975303F00ED072D /* KMBatchBatesNumberView.xib in Resources */,
@@ -8351,6 +8444,7 @@
 				BB2F61542966A91D001CB369 /* KMBackgroundPropertyHomeController.xib in Resources */,
 				9F0CB4632966C9E200007028 /* KMFormPropertPanelViewController.xib in Resources */,
 				ADB2D6FE294882B70029D2B3 /* KMTextFieldStepperView.xib in Resources */,
+				9F221ED329A85D3700978A59 /* KMDesignBase.xib in Resources */,
 				ADB2D6EA294740F30029D2B3 /* KMPrintPaperSetWindowController.xib in Resources */,
 				AD4B456D294092160076FA14 /* KMOCRChooseView.xib in Resources */,
 				ADB1FE9329752F7D00ED072D /* KMBatchBackgroundView.xib in Resources */,
@@ -8366,6 +8460,7 @@
 				8997012F28F42F15009AF911 /* Biochemistry.pdf in Resources */,
 				9F1FE4DF29406E4700E952CA /* .gclient in Resources */,
 				BB69C960299116FD0001A9B1 /* plaid.pdf in Resources */,
+				AD0FA4FF29A8DD8700EDEB50 /* KMRegisterSuccessView.xib in Resources */,
 				BBFBE74D28DD7DE8008B2335 /* Assets.xcassets in Resources */,
 				ADB1FE7B29752F1100ED072D /* KMBatchCompressView.xib in Resources */,
 				8997010A28F4082C009AF911 /* KMFromViewController.xib in Resources */,
@@ -8495,6 +8590,7 @@
 				BB2EDF50296E63E5003BCF58 /* KMPageEditInsertCustomPageWindowController.xib in Resources */,
 				9F0CB4AB296CF19600007028 /* KMPropertiesPanelListMenuSubVC.xib in Resources */,
 				9F1F82B8292DEF370092C4B4 /* KMCloudDocumentsViewController.xib in Resources */,
+				AD0FA50729A8E61B00EDEB50 /* KMLightMemberAlertView.xib in Resources */,
 				BB69C963299116FD0001A9B1 /* horizontal_line.pdf in Resources */,
 				BBFE6E612930809A00142C01 /* KMMergeCollectionPageViewItem.xib in Resources */,
 				BB89723E294B3C840045787C /* KMWatermarkPropertyController.xib in Resources */,
@@ -8523,6 +8619,7 @@
 				ADCB98DF2924775B00B51A03 /* KMBatchProcessingOrderTableCell.xib in Resources */,
 				89E4E7432964160F002DBA6F /* KMAnnotationLinkViewController.xib in Resources */,
 				BB8F454C295A9CDC0037EA22 /* KMHeaderFooterListController.xib in Resources */,
+				AD0FA51029A9E75000EDEB50 /* KMLoginInputPasswordView.xib in Resources */,
 				9F3D818C29A0A9A70087B5AD /* KMDesignButton.xib in Resources */,
 				BB89724B294C19980045787C /* KMWatermarkAdjectiveListController.xib in Resources */,
 				9FDD0F982952FF4D000C4DAD /* $metadata.json in Resources */,
@@ -8567,6 +8664,7 @@
 				BBFE6E722930D9C600142C01 /* KMMergeSettingWindowController.xib in Resources */,
 				AD9527B429503D620039D2BC /* Untitled.pdf in Resources */,
 				BB5DF1F62959C9F00025CDA1 /* KMHeaderFooterPropertyMainController.xib in Resources */,
+				9F221ED429A85D3700978A59 /* KMDesignBase.xib in Resources */,
 				BB8F4544295A98960037EA22 /* KMHeaderFooterPropertyController.xib in Resources */,
 				89E4E7312963FBA2002DBA6F /* KMPropertiesViewPopController.xib in Resources */,
 				BB3AAB9529878CE000992A5A /* KMWatermarkAdjectivePropertyMainController.xib in Resources */,
@@ -8583,6 +8681,7 @@
 				ADD1B6FE2946C0D400C3FFF7 /* KMPrintChoosePageSizePamphletView.xib in Resources */,
 				9FF94F1629A7476000B1EF69 /* KMDesignPropertySelector.xib in Resources */,
 				ADC075DF29876622006C752F /* KMBatchConverPDFPPTView.xib in Resources */,
+				AD0FA51829A9FA8F00EDEB50 /* KMResetPasswordView.xib in Resources */,
 				ADE3C1E929A5ABC200793B13 /* KMLoginWindowController.xib in Resources */,
 				ADC075C629866B05006C752F /* KMBatchTextRecognitionView.xib in Resources */,
 				AD8810B729A846B100178CA1 /* KMVerficationCodeWindowController.xib in Resources */,
@@ -8603,6 +8702,7 @@
 				BBEC00BC295C2C1600A26C98 /* KMBatesPropertyHomeController.xib in Resources */,
 				9F0CB5472986953A00007028 /* KMURLToPDFWindowController.xib in Resources */,
 				ADB1FE9C2975301500ED072D /* KMBatchHeaderAndFooterView.xib in Resources */,
+				AD0FA50829A8E61B00EDEB50 /* KMLightMemberAlertView.xib in Resources */,
 				8997011B28F40898009AF911 /* KMThumbnailViewController.xib in Resources */,
 				8942F7B42921D28200389627 /* Quick Start Guide.pdf in Resources */,
 				BB89721D294AED6C0045787C /* KMWatermarkAdjectivePreViewBaseController.xib in Resources */,
@@ -8610,10 +8710,12 @@
 				BB89721D294AED6C0045787C /* KMWatermarkAdjectivePreViewBaseController.xib in Resources */,
 				9F72D20D2994BDAF00DCACF1 /* KMNotificationVC.xib in Resources */,
 				ADB2D6EB294740F30029D2B3 /* KMPrintPaperSetWindowController.xib in Resources */,
+				AD0FA50029A8DD8700EDEB50 /* KMRegisterSuccessView.xib in Resources */,
 				894A00F72976314C0070ED83 /* KMPDFViewPanelSetViewController.xib in Resources */,
 				899700FB28F4051B009AF911 /* KMAnnotationViewController.xib in Resources */,
 				ADB1FEAC2975310A00ED072D /* KMBatchRemoveView.xib in Resources */,
 				BB3EAEB2293E3D6000D92407 /* KMConvertBaseWindowController.xib in Resources */,
+				BB7F7C0229AA586900A3E4E7 /* signAdd.png in Resources */,
 				ADD1B6CD2942E85300C3FFF7 /* KMPrintBottomView.xib in Resources */,
 				9F853A012947137500DF644E /* throbber.png in Resources */,
 				BBA8B7B5293635D80097D183 /* KMPasswordInputWindow.xib in Resources */,
@@ -8651,6 +8753,7 @@
 				9F0CB4BA2977BC1000007028 /* KMPropertiesPanelPreviewSubVC.xib in Resources */,
 				9F56648C2988B16F00020985 /* KMTextfieldVC.xib in Resources */,
 				9FA607E328FD4C9F00B46586 /* KMHomePopViewController.xib in Resources */,
+				BB7F7C0529AA586900A3E4E7 /* signAddBack.png in Resources */,
 				AD44D658292C9E8C00A94554 /* KMImageToPDFChooseView.xib in Resources */,
 				BB4BD9D12909026500A66A65 /* KMRightSideViewController.xib in Resources */,
 				ADC075BC29866984006C752F /* KMBatchConverPDFWordView.xib in Resources */,
@@ -8706,6 +8809,7 @@
 				BBC2BCCB295DA8F30036B983 /* KMCropPreviewController.xib in Resources */,
 				BB2EDF51296E63E5003BCF58 /* KMPageEditInsertCustomPageWindowController.xib in Resources */,
 				BB99ACD4292E2AEF0048AFD9 /* KMMergeCollectionViewItem.xib in Resources */,
+				BB7F7BFC29AA469F00A3E4E7 /* KMSigntureViewItem.xib in Resources */,
 				9F0CB4A429683E2600007028 /* KMPropertiesPanelSizeSubVC.xib in Resources */,
 				9F8539FE2947137500DF644E /* throbber_waiting.png in Resources */,
 				BB2F61552966A91D001CB369 /* KMBackgroundPropertyHomeController.xib in Resources */,
@@ -8999,6 +9103,7 @@
 				BBAFC844298519A500D0648E /* KMFileAttribute.m in Sources */,
 				9F1FE4BD29406E4700E952CA /* URLDropTarget.m in Sources */,
 				9F0CB5052986561E00007028 /* KMDesignToken+BorderRight.swift in Sources */,
+				AD0FA50A29A9E74200EDEB50 /* KMLoginInputPasswordView.swift in Sources */,
 				8942F80329262B2E00389627 /* KMSideViewController.swift in Sources */,
 				BB147014299DC0D100784A6A /* OIDAuthState.m in Sources */,
 				BB3AAB9029878CE000992A5A /* KMWatermarkAdjectivePropertyMainController.swift in Sources */,
@@ -9074,6 +9179,7 @@
 				ADB1FE31297008E800ED072D /* KMBatchCollectionView.swift in Sources */,
 				ADBC2D11299CCD05006280C8 /* KMTextfieldButton.swift in Sources */,
 				9FAAA325290A69920046FFCE /* KMToolSetScroller.swift in Sources */,
+				AD0FA51229A9FA8600EDEB50 /* KMResetPasswordView.swift in Sources */,
 				9FDD0F882952FCC6000C4DAD /* KMCompLightParser.swift in Sources */,
 				9F1FE4C629406E4700E952CA /* CTUtil.m in Sources */,
 				BB147035299DC0D200784A6A /* OIDRegistrationResponse.m in Sources */,
@@ -9229,6 +9335,7 @@
 				AD9527D32952D51A0039D2BC /* KMPrintPresenter.swift in Sources */,
 				ADEC7A7E299397F8009A8256 /* NSFont+SFProText.swift in Sources */,
 				89E4E76E29657953002DBA6F /* KMStampManager.m in Sources */,
+				9F221ECF29A85D3700978A59 /* KMDesignBase.swift in Sources */,
 				ADB2D6F9294882AE0029D2B3 /* KMTextFieldStepperView.swift in Sources */,
 				9F72D2082994BDAF00DCACF1 /* KMNotificationVC.swift in Sources */,
 				BB4DD04B299B296500E80DF6 /* KMCloudPathControl.swift in Sources */,
@@ -9329,6 +9436,7 @@
 				ADE3C1AB29A4779E00793B13 /* KMPrintAccessoryController.swift in Sources */,
 				ADB1FE6E29752BB700ED072D /* KMBatchConvertPDFView.swift in Sources */,
 				BB8F4557295AA1270037EA22 /* KMHeaderFooterPropertyInfoController.swift in Sources */,
+				BB7F7BF729AA469F00A3E4E7 /* KMSigntureViewItem.m in Sources */,
 				AD88108D29A760D100178CA1 /* KMRegisterPresenter.swift in Sources */,
 				BB146FB4299DC0D100784A6A /* GTLRUtilities.m in Sources */,
 				BBC745F7296178BD0072C2ED /* KMCropTools.swift in Sources */,
@@ -9399,6 +9507,7 @@
 				BB8F4576295AFA2D0037EA22 /* KMHeaderFooterAdjectiveInfoBaseView.swift in Sources */,
 				9F0CB4E12986556400007028 /* KMDesignToken+PaddingTop.swift in Sources */,
 				BB49ECDD293EED6100C82CA2 /* KMConvertWordWindowController.swift in Sources */,
+				AD0FA4F929A8DD6F00EDEB50 /* KMRegisterSuccessView.swift in Sources */,
 				BB146FF9299DC0D100784A6A /* OIDExternalUserAgentMac.m in Sources */,
 				ADCB98D12924771600B51A03 /* KMBatchProcessingNameTableCell.swift in Sources */,
 				ADCB996B292C65EE00B51A03 /* KMGOCRManager.m in Sources */,
@@ -9437,6 +9546,7 @@
 				BB49ECED293F3B0D00C82CA2 /* KMConvertOCRSettingItemView.swift in Sources */,
 				9F0CB49729683E1000007028 /* KMPropertiesPanelTextSubVC.swift in Sources */,
 				9F1FE49929406E4700E952CA /* NewTabButton.m in Sources */,
+				AD0FA50229A8E36200EDEB50 /* KMLightMemberAlertView.swift in Sources */,
 				9F0CB53D2986571A00007028 /* KMDesignToken+Typography.swift in Sources */,
 				9F1FE4AB29406E4700E952CA /* CTBrowserWindow.m in Sources */,
 				89E4E76929656B35002DBA6F /* KMButton.m in Sources */,
@@ -9691,6 +9801,7 @@
 				BBAFC845298519A500D0648E /* KMFileAttribute.m in Sources */,
 				89D9897928FE895A003A3E87 /* KMOutlineCellView.swift in Sources */,
 				9F0CB5062986561E00007028 /* KMDesignToken+BorderRight.swift in Sources */,
+				AD0FA50B29A9E74200EDEB50 /* KMLoginInputPasswordView.swift in Sources */,
 				9F1FE4D629406E4700E952CA /* NSPasteboard+Utils.m in Sources */,
 				BB147015299DC0D100784A6A /* OIDAuthState.m in Sources */,
 				BB3AAB9129878CE000992A5A /* KMWatermarkAdjectivePropertyMainController.swift in Sources */,
@@ -9766,6 +9877,7 @@
 				ADB1FE32297008E800ED072D /* KMBatchCollectionView.swift in Sources */,
 				ADBC2D12299CCD05006280C8 /* KMTextfieldButton.swift in Sources */,
 				9F1FE49429406E4700E952CA /* common.m in Sources */,
+				AD0FA51329A9FA8600EDEB50 /* KMResetPasswordView.swift in Sources */,
 				BBFBE74728DD7DB7008B2335 /* ViewController.swift in Sources */,
 				9FDD0F812952FC36000C4DAD /* KMDesignToken.swift in Sources */,
 				BB147036299DC0D200784A6A /* OIDRegistrationResponse.m in Sources */,
@@ -9921,6 +10033,7 @@
 				F3732312292DF9410013862C /* CPDFSignatureWidgetAnnotation+PDFListView.m in Sources */,
 				ADEC7A7F299397F8009A8256 /* NSFont+SFProText.swift in Sources */,
 				89E4E76F29657953002DBA6F /* KMStampManager.m in Sources */,
+				9F221ED029A85D3700978A59 /* KMDesignBase.swift in Sources */,
 				BB897221294AF9080045787C /* KMWatermarkAdjectiveTopBarView.swift in Sources */,
 				9F72D2092994BDAF00DCACF1 /* KMNotificationVC.swift in Sources */,
 				BB4DD04C299B296500E80DF6 /* KMCloudPathControl.swift in Sources */,
@@ -10021,6 +10134,7 @@
 				ADE3C1AC29A4779E00793B13 /* KMPrintAccessoryController.swift in Sources */,
 				ADB1FE6F29752BB700ED072D /* KMBatchConvertPDFView.swift in Sources */,
 				BB8F4558295AA1270037EA22 /* KMHeaderFooterPropertyInfoController.swift in Sources */,
+				BB7F7BF829AA469F00A3E4E7 /* KMSigntureViewItem.m in Sources */,
 				AD88108E29A760D100178CA1 /* KMRegisterPresenter.swift in Sources */,
 				BB146FB5299DC0D100784A6A /* GTLRUtilities.m in Sources */,
 				BBC745F8296178BD0072C2ED /* KMCropTools.swift in Sources */,
@@ -10091,6 +10205,7 @@
 				BB8F4577295AFA2D0037EA22 /* KMHeaderFooterAdjectiveInfoBaseView.swift in Sources */,
 				9F0CB4E22986556400007028 /* KMDesignToken+PaddingTop.swift in Sources */,
 				F37322FD292DF9410013862C /* CPDFWidgetAnnotation+PDFListView.m in Sources */,
+				AD0FA4FA29A8DD6F00EDEB50 /* KMRegisterSuccessView.swift in Sources */,
 				BB146FFA299DC0D100784A6A /* OIDExternalUserAgentMac.m in Sources */,
 				BBFE6E6E2930D9C600142C01 /* KMMergeSettingWindowController.swift in Sources */,
 				BB49ECE6293EF54800C82CA2 /* KMCustomPDFView.swift in Sources */,
@@ -10129,6 +10244,7 @@
 				BB897272294DB6BE0045787C /* KMWatermarkAdjectivePlainView.swift in Sources */,
 				9F0CB49829683E1000007028 /* KMPropertiesPanelTextSubVC.swift in Sources */,
 				9F1FE4AC29406E4700E952CA /* CTBrowserWindow.m in Sources */,
+				AD0FA50329A8E36200EDEB50 /* KMLightMemberAlertView.swift in Sources */,
 				9F0CB53E2986571A00007028 /* KMDesignToken+Typography.swift in Sources */,
 				ADCB98E22924776F00B51A03 /* KMBatchProcessingSizeTableCell.swift in Sources */,
 				89E4E76A29656B35002DBA6F /* KMButton.m in Sources */,
@@ -10313,6 +10429,7 @@
 				9F7610932988EB4200C344DD /* KMRadioButtonVC.swift in Sources */,
 				BB49ED1F293F4FB200C82CA2 /* KMConvertPPTsSettingView.swift in Sources */,
 				BB14703D299DC0D200784A6A /* OIDErrorUtilities.m in Sources */,
+				BB7F7BF929AA469F00A3E4E7 /* KMSigntureViewItem.m in Sources */,
 				BBFE6E772930E53000142C01 /* KMMergePopoverViewController.swift in Sources */,
 				89E4E7102963D62C002DBA6F /* KMAnnotationFontWindowController.m in Sources */,
 				AD9527C0295294E20039D2BC /* KMPrintPageModel.swift in Sources */,
@@ -10454,6 +10571,7 @@
 				BB897277294DC04F0045787C /* KMWatermartAdjectivePageRangeView.swift in Sources */,
 				ADB1FE2A297006DF00ED072D /* KMBatchWindowController.swift in Sources */,
 				BBEC00D3295C33D600A26C98 /* KMCreateBatesController.swift in Sources */,
+				9F221ED129A85D3700978A59 /* KMDesignBase.swift in Sources */,
 				89D9896028FD21E6003A3E87 /* KMAnnotationCollectionView.swift in Sources */,
 				89752D9C2936E675003FF08E /* KMToolBarBox.swift in Sources */,
 				ADC25DFB2923BA710080A3F6 /* KMImageToPDFWindowController.swift in Sources */,
@@ -10466,6 +10584,7 @@
 				BB89724F294C1DCE0045787C /* KMWatermarkAdjectiveListTableCellView.swift in Sources */,
 				ADD1B6E62946C00800C3FFF7 /* KMPrintChoosePageSizePosterView.swift in Sources */,
 				9F1FE4BC29406E4700E952CA /* NSImage+CTAdditions.m in Sources */,
+				AD0FA50429A8E36200EDEB50 /* KMLightMemberAlertView.swift in Sources */,
 				9F0CB53F2986571A00007028 /* KMDesignToken+Typography.swift in Sources */,
 				F37322E6292DF9410013862C /* CPDFCircleAnnotation+PDFListView.m in Sources */,
 				9F1FE49529406E4700E952CA /* common.m in Sources */,
@@ -10564,6 +10683,7 @@
 				BB35C49B2974E18D00D46EE2 /* CustomAlertView.m in Sources */,
 				9F3D818929A0A9A60087B5AD /* KMDesignButton.swift in Sources */,
 				BB3AD6FB29935483004FC1AE /* Reachability.m in Sources */,
+				AD0FA50C29A9E74200EDEB50 /* KMLoginInputPasswordView.swift in Sources */,
 				BB146FB3299DC0D100784A6A /* GTLRErrorObject.m in Sources */,
 				BB147028299DC0D100784A6A /* OIDTokenRequest.m in Sources */,
 				9F1FE49829406E4700E952CA /* common.c in Sources */,
@@ -10760,6 +10880,7 @@
 				ADC075EC2987A38C006C752F /* KMBatchConverPDFCSVView.swift in Sources */,
 				9F1FE4A429406E4700E952CA /* CTToolbarController.m in Sources */,
 				F3599175292B62F5000D25DE /* CStringConstants.m in Sources */,
+				AD0FA4FB29A8DD6F00EDEB50 /* KMRegisterSuccessView.swift in Sources */,
 				89E4E748296418ED002DBA6F /* TextFieldFormatter.m in Sources */,
 				9F1FE50129406E4700E952CA /* CTTabStripModel.m in Sources */,
 				BB35C4A12975362900D46EE2 /* KMRedactTopToolBar.swift in Sources */,
@@ -10810,6 +10931,7 @@
 				89752DF429389F82003FF08E /* KMToolbarItem.m in Sources */,
 				F34BF93229530559002C25A2 /* NSBitmapImageRep+PDFListView.m in Sources */,
 				BBC3484C2958222C008D2CD1 /* KMBackgroundOutsideView.swift in Sources */,
+				AD0FA51429A9FA8600EDEB50 /* KMResetPasswordView.swift in Sources */,
 				9F0CB49129683DEE00007028 /* KMPropertiesPanelLineSubVC.swift in Sources */,
 				BB49ECEB293F32A400C82CA2 /* KMConvertWordSettingView.swift in Sources */,
 				ADCB98E32924776F00B51A03 /* KMBatchProcessingSizeTableCell.swift in Sources */,

BIN
PDF Office/PDF Office.xcodeproj/project.xcworkspace/xcuserdata/kdanmobile.xcuserdatad/UserInterfaceState.xcuserstate


+ 112 - 32
PDF Office/PDF Office.xcodeproj/xcuserdata/lizhe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -1338,22 +1338,6 @@
             landmarkType = "21">
          </BreakpointContent>
       </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "D99815F5-06B6-44F9-BCA0-CF915702C772"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Office/Class/KMLightMember/Controller/Login&amp;Register/View/KMRegisterView.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "75"
-            endingLineNumber = "75"
-            landmarkName = "updateLanguage()"
-            landmarkType = "7">
-         </BreakpointContent>
-      </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
@@ -1364,8 +1348,8 @@
             filePath = "PDF Office/Class/PDFTools/Tools/TextField/KMBaseTextField.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "244"
-            endingLineNumber = "244"
+            startingLineNumber = "247"
+            endingLineNumber = "247"
             landmarkName = "controlTextDidEndEditing(_:)"
             landmarkType = "7">
          </BreakpointContent>
@@ -1380,13 +1364,13 @@
             filePath = "PDF Office/Class/KMLightMember/Controller/VerificationCode/View/KMVerificationCodeView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "212"
-            endingLineNumber = "212"
+            startingLineNumber = "240"
+            endingLineNumber = "240"
             landmarkName = "controlTextDidEndEditing(_:)"
             landmarkType = "7">
             <Locations>
                <Location
-                  uuid = "2C17E52E-BF0E-490D-893D-B63D868D354B - db0b3f9b902d2b8c"
+                  uuid = "2C17E52E-BF0E-490D-893D-B63D868D354B - db0b3f9b902d2c20"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
@@ -1396,12 +1380,12 @@
                   urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Office/Class/KMLightMember/Controller/VerificationCode/View/KMVerificationCodeView.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "212"
-                  endingLineNumber = "212"
+                  startingLineNumber = "240"
+                  endingLineNumber = "240"
                   offsetFromSymbolStart = "412">
                </Location>
                <Location
-                  uuid = "2C17E52E-BF0E-490D-893D-B63D868D354B - db0b3f9b902d2b8c"
+                  uuid = "2C17E52E-BF0E-490D-893D-B63D868D354B - db0b3f9b902d2c20"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
@@ -1411,8 +1395,8 @@
                   urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Office/Class/KMLightMember/Controller/VerificationCode/View/KMVerificationCodeView.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "212"
-                  endingLineNumber = "212"
+                  startingLineNumber = "240"
+                  endingLineNumber = "240"
                   offsetFromSymbolStart = "468">
                </Location>
             </Locations>
@@ -1421,15 +1405,15 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "4EE26C6E-A17F-434D-B1F7-B321FEEF109E"
+            uuid = "E56BF829-5DB9-40B2-8895-6EEDF5266692"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "PDF Office/Class/KMLightMember/Controller/VerificationCode/View/KMVerificationCodeView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "95"
-            endingLineNumber = "95"
+            startingLineNumber = "131"
+            endingLineNumber = "131"
             landmarkName = "setup()"
             landmarkType = "7">
          </BreakpointContent>
@@ -1437,15 +1421,111 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "E56BF829-5DB9-40B2-8895-6EEDF5266692"
+            uuid = "829619F8-87CE-46EF-9A55-3B6675480228"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Office/Class/KMLightMember/Controller/VerificationCode/View/KMVerificationCodeView.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "177"
+            endingLineNumber = "177"
+            landmarkName = "updateLanguage()"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "61DF529E-B756-4949-BCD7-CC1BAEB3B03C"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "PDF Office/Class/KMLightMember/Controller/VerificationCode/View/KMVerificationCodeView.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "109"
-            endingLineNumber = "109"
+            startingLineNumber = "179"
+            endingLineNumber = "179"
+            landmarkName = "updateLanguage()"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "305F03EE-0322-43F0-A3EE-38BAFB0082DC"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Office/Class/KMLightMember/Controller/Login&amp;Register/KMLoginWindowController.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "69"
+            endingLineNumber = "69"
+            landmarkName = "setup()"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "CBDB0E9B-E3FA-425F-97E6-B1E7F83FCA6C"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Office/Class/KMLightMember/Controller/Login&amp;Register/KMLoginWindowController.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "143"
+            endingLineNumber = "143"
+            landmarkName = "reloadData()"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "CA9545A5-A788-4331-90AA-39FFAF6EED88"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Office/Class/KMLightMember/Controller/Login&amp;Register/View/KMLoginInputPasswordView.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "188"
+            endingLineNumber = "188"
+            landmarkName = "controlTextDidChange(_:)"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "BEBA2A49-ED8A-43E6-8FE1-D26525E978C2"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Office/Class/KMLightMember/Controller/Login&amp;Register/View/KMLoginInputPasswordView.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "100"
+            endingLineNumber = "100"
+            landmarkName = "reloadData()"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "8FFD7232-0242-48F7-A0FA-6F1B929DF3D6"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Office/Class/KMLightMember/Controller/Login&amp;Register/KMLoginWindowController.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "113"
+            endingLineNumber = "113"
             landmarkName = "setup()"
             landmarkType = "7">
          </BreakpointContent>

+ 12 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/Other/KMImageNameUXIconPDFViewBookMark.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "bookmark.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 78 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/Other/KMImageNameUXIconPDFViewBookMark.imageset/bookmark.pdf

@@ -0,0 +1,78 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 1.250000 0.213226 cm
+0.090196 0.439216 0.956863 scn
+0.000000 19.786774 m
+1.500000 19.786774 l
+16.000000 19.786774 l
+17.500000 19.786774 l
+17.500000 0.786774 l
+17.500000 0.525993 17.364538 0.283932 17.142271 0.147537 c
+16.920004 0.011141 16.642841 -0.000008 16.410336 0.118097 c
+8.750000 4.009262 l
+1.089663 0.118097 l
+0.857159 -0.000008 0.579997 0.011141 0.357729 0.147537 c
+0.135462 0.283932 0.000000 0.525993 0.000000 0.786774 c
+0.000000 19.786774 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  527
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 20.000000 20.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
+0000000034 00000 n
+0000000617 00000 n
+0000000639 00000 n
+0000000812 00000 n
+0000000886 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+945
+%%EOF

+ 12 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_dot_fillSign_Disabled.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Type=dot, State=fill&sign, Disabled=true.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 71 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_dot_fillSign_Disabled.imageset/Type=dot, State=fill&sign, Disabled=true.pdf

@@ -0,0 +1,71 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 5.600098 5.600037 cm
+0.694118 0.701961 0.721569 scn
+4.800000 2.399988 m
+4.800000 1.074504 3.725484 -0.000012 2.400000 -0.000012 c
+1.074517 -0.000012 0.000000 1.074504 0.000000 2.399988 c
+0.000000 3.725471 1.074517 4.799988 2.400000 4.799988 c
+3.725484 4.799988 4.800000 3.725471 4.800000 2.399988 c
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  374
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.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
+0000000034 00000 n
+0000000464 00000 n
+0000000486 00000 n
+0000000659 00000 n
+0000000733 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+792
+%%EOF

+ 12 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_dot_norm.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Type=dot, State=norm, Disabled=false.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 71 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_dot_norm.imageset/Type=dot, State=norm, Disabled=false.pdf

@@ -0,0 +1,71 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 5.600098 5.600037 cm
+0.380392 0.392157 0.411765 scn
+4.800000 2.399988 m
+4.800000 1.074504 3.725484 -0.000012 2.400000 -0.000012 c
+1.074517 -0.000012 0.000000 1.074504 0.000000 2.399988 c
+0.000000 3.725471 1.074517 4.799988 2.400000 4.799988 c
+3.725484 4.799988 4.800000 3.725471 4.800000 2.399988 c
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  374
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.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
+0000000034 00000 n
+0000000464 00000 n
+0000000486 00000 n
+0000000659 00000 n
+0000000733 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+792
+%%EOF

+ 12 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_dot_sel.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Type=dot, State=sel, Disabled=false.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 71 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_dot_sel.imageset/Type=dot, State=sel, Disabled=false.pdf

@@ -0,0 +1,71 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 5.600098 5.600037 cm
+0.145098 0.149020 0.160784 scn
+4.800000 2.399988 m
+4.800000 1.074504 3.725484 -0.000012 2.400000 -0.000012 c
+1.074517 -0.000012 0.000000 1.074504 0.000000 2.399988 c
+0.000000 3.725471 1.074517 4.799988 2.400000 4.799988 c
+3.725484 4.799988 4.800000 3.725471 4.800000 2.399988 c
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  374
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.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
+0000000034 00000 n
+0000000464 00000 n
+0000000486 00000 n
+0000000659 00000 n
+0000000733 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+792
+%%EOF

+ 12 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_fork_fillSign_Disabled.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Type=fork, State=fill&sign, Disabled=true.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 83 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_fork_fillSign_Disabled.imageset/Type=fork, State=fill&sign, Disabled=true.pdf

@@ -0,0 +1,83 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+0.707107 -0.707107 0.707107 0.707107 -4.388283 5.211753 cm
+0.694118 0.701961 0.721569 scn
+0.000000 9.931384 m
+13.576454 9.931384 l
+13.576454 11.531384 l
+0.000000 11.531384 l
+0.000000 9.931384 l
+h
+f
+n
+Q
+q
+-0.707107 -0.707107 0.707107 -0.707107 5.211815 20.388222 cm
+0.694118 0.701961 0.721569 scn
+0.000000 9.931384 m
+13.576454 9.931384 l
+13.576454 11.531384 l
+0.000000 11.531384 l
+0.000000 9.931384 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  438
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.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
+0000000034 00000 n
+0000000528 00000 n
+0000000550 00000 n
+0000000723 00000 n
+0000000797 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+856
+%%EOF

+ 12 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_fork_norm.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Type=fork, State=norm, Disabled=false.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 83 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_fork_norm.imageset/Type=fork, State=norm, Disabled=false.pdf

@@ -0,0 +1,83 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+0.707107 -0.707107 0.707107 0.707107 -4.388283 5.211753 cm
+0.380392 0.392157 0.411765 scn
+0.000000 9.931384 m
+13.576454 9.931384 l
+13.576454 11.531384 l
+0.000000 11.531384 l
+0.000000 9.931384 l
+h
+f
+n
+Q
+q
+-0.707107 -0.707107 0.707107 -0.707107 5.211815 20.388222 cm
+0.380392 0.392157 0.411765 scn
+0.000000 9.931384 m
+13.576454 9.931384 l
+13.576454 11.531384 l
+0.000000 11.531384 l
+0.000000 9.931384 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  438
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.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
+0000000034 00000 n
+0000000528 00000 n
+0000000550 00000 n
+0000000723 00000 n
+0000000797 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+856
+%%EOF

+ 12 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_fork_sel.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Type=fork, State=sel, Disabled=false.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 83 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_fork_sel.imageset/Type=fork, State=sel, Disabled=false.pdf

@@ -0,0 +1,83 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+0.707107 -0.707107 0.707107 0.707107 -4.388283 5.211753 cm
+0.145098 0.149020 0.160784 scn
+0.000000 9.931384 m
+13.576454 9.931384 l
+13.576454 11.531384 l
+0.000000 11.531384 l
+0.000000 9.931384 l
+h
+f
+n
+Q
+q
+-0.707107 -0.707107 0.707107 -0.707107 5.211815 20.388222 cm
+0.145098 0.149020 0.160784 scn
+0.000000 9.931384 m
+13.576454 9.931384 l
+13.576454 11.531384 l
+0.000000 11.531384 l
+0.000000 9.931384 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  438
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.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
+0000000034 00000 n
+0000000528 00000 n
+0000000550 00000 n
+0000000723 00000 n
+0000000797 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+856
+%%EOF

+ 12 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_hook_fillSign_Disabled.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Type=hook, State=fill&sign, Disabled=true.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 83 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_hook_fillSign_Disabled.imageset/Type=hook, State=fill&sign, Disabled=true.pdf

@@ -0,0 +1,83 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 1.600098 1.903198 cm
+0.694118 0.701961 0.721569 scn
+4.977778 1.296777 m
+4.424190 0.719247 l
+4.589341 0.560943 4.814363 0.480914 5.042385 0.499390 c
+5.270407 0.517864 5.479610 0.633075 5.617122 0.815903 c
+4.977778 1.296777 l
+h
+-0.553588 5.490676 m
+4.424190 0.719247 l
+5.531366 1.874306 l
+0.553588 6.645735 l
+-0.553588 5.490676 l
+h
+5.617122 0.815903 m
+13.439343 11.215903 l
+12.160657 12.177651 l
+4.338434 1.777650 l
+5.617122 0.815903 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  509
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.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
+0000000034 00000 n
+0000000599 00000 n
+0000000621 00000 n
+0000000794 00000 n
+0000000868 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+927
+%%EOF

+ 12 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_hook_norm.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Type=hook, State=norm, Disabled=false.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 83 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_hook_norm.imageset/Type=hook, State=norm, Disabled=false.pdf

@@ -0,0 +1,83 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 1.600098 1.903198 cm
+0.380392 0.392157 0.411765 scn
+4.977778 1.296777 m
+4.424190 0.719247 l
+4.589341 0.560943 4.814363 0.480914 5.042385 0.499390 c
+5.270407 0.517864 5.479610 0.633075 5.617122 0.815903 c
+4.977778 1.296777 l
+h
+-0.553588 5.490676 m
+4.424190 0.719247 l
+5.531366 1.874306 l
+0.553588 6.645735 l
+-0.553588 5.490676 l
+h
+5.617122 0.815903 m
+13.439343 11.215903 l
+12.160657 12.177651 l
+4.338434 1.777650 l
+5.617122 0.815903 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  509
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.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
+0000000034 00000 n
+0000000599 00000 n
+0000000621 00000 n
+0000000794 00000 n
+0000000868 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+927
+%%EOF

+ 12 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_hook_sel.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Type=hook, State=sel, Disabled=false.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 83 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_hook_sel.imageset/Type=hook, State=sel, Disabled=false.pdf

@@ -0,0 +1,83 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 1.600098 1.903198 cm
+0.145098 0.149020 0.160784 scn
+4.977778 1.296777 m
+4.424190 0.719247 l
+4.589341 0.560943 4.814363 0.480914 5.042385 0.499390 c
+5.270407 0.517864 5.479610 0.633075 5.617122 0.815903 c
+4.977778 1.296777 l
+h
+-0.553588 5.490676 m
+4.424190 0.719247 l
+5.531366 1.874306 l
+0.553588 6.645735 l
+-0.553588 5.490676 l
+h
+5.617122 0.815903 m
+13.439343 11.215903 l
+12.160657 12.177651 l
+4.338434 1.777650 l
+5.617122 0.815903 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  509
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.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
+0000000034 00000 n
+0000000599 00000 n
+0000000621 00000 n
+0000000794 00000 n
+0000000868 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+927
+%%EOF

+ 12 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_line_fillSign_Disabled.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Type=line, State=fill&sign, Disabled=true.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 71 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_line_fillSign_Disabled.imageset/Type=line, State=fill&sign, Disabled=true.pdf

@@ -0,0 +1,71 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+-1.000000 -0.000000 0.000000 -1.000000 14.399902 9.599976 cm
+0.694118 0.701961 0.721569 scn
+0.000000 0.799976 m
+12.800000 0.799976 l
+12.800000 2.399976 l
+0.000000 2.399976 l
+0.000000 0.799976 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  232
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.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
+0000000034 00000 n
+0000000322 00000 n
+0000000344 00000 n
+0000000517 00000 n
+0000000591 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+650
+%%EOF

+ 12 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_line_norm.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Type=line, State=norm, Disabled=false.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 71 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_line_norm.imageset/Type=line, State=norm, Disabled=false.pdf

@@ -0,0 +1,71 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+-1.000000 -0.000000 0.000000 -1.000000 14.399902 9.599976 cm
+0.380392 0.392157 0.411765 scn
+0.000000 0.799976 m
+12.800000 0.799976 l
+12.800000 2.399976 l
+0.000000 2.399976 l
+0.000000 0.799976 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  232
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.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
+0000000034 00000 n
+0000000322 00000 n
+0000000344 00000 n
+0000000517 00000 n
+0000000591 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+650
+%%EOF

+ 12 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_line_sel.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Type=line, State=sel, Disabled=false.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 71 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_line_sel.imageset/Type=line, State=sel, Disabled=false.pdf

@@ -0,0 +1,71 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+-1.000000 -0.000000 0.000000 -1.000000 14.399902 9.599976 cm
+0.145098 0.149020 0.160784 scn
+0.000000 0.799976 m
+12.800000 0.799976 l
+12.800000 2.399976 l
+0.000000 2.399976 l
+0.000000 0.799976 l
+h
+f
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  232
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.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
+0000000034 00000 n
+0000000322 00000 n
+0000000344 00000 n
+0000000517 00000 n
+0000000591 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+650
+%%EOF

+ 12 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_rect_fillSign_Disabled.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Type=rect, State=fill&sign, Disabled=true.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 127 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_rect_fillSign_Disabled.imageset/Type=rect, State=fill&sign, Disabled=true.pdf

@@ -0,0 +1,127 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+2.399902 11.999977 m
+2.399902 12.883633 3.116247 13.599976 3.999902 13.599976 c
+11.999904 13.599976 l
+12.883559 13.599976 13.599902 12.883631 13.599902 11.999975 c
+13.599902 3.999974 l
+13.599902 3.116319 12.883557 2.399976 11.999902 2.399976 c
+3.999901 2.399976 l
+3.116245 2.399976 2.399902 3.116321 2.399902 3.999976 c
+2.399902 11.999977 l
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 2.399902 2.399963 cm
+0.694118 0.701961 0.721569 scn
+1.600000 9.600012 m
+9.600001 9.600012 l
+9.600001 12.800013 l
+1.600000 12.800013 l
+1.600000 9.600012 l
+h
+9.599999 9.600012 m
+9.599999 1.600011 l
+12.800000 1.600011 l
+12.800000 9.600012 l
+9.599999 9.600012 l
+h
+9.599999 1.600013 m
+1.599999 1.600013 l
+1.599999 -1.599988 l
+9.599999 -1.599988 l
+9.599999 1.600013 l
+h
+1.600000 1.600013 m
+1.600000 9.600014 l
+-1.600000 9.600014 l
+-1.600000 1.600013 l
+1.600000 1.600013 l
+h
+1.599999 1.600013 m
+1.600000 1.600013 l
+-1.600000 1.600013 l
+-1.600000 -0.167296 -0.167315 -1.599988 1.599999 -1.599988 c
+1.599999 1.600013 l
+h
+9.599999 1.600011 m
+9.599999 1.600013 l
+9.599999 -1.599988 l
+11.367309 -1.599988 12.800000 -0.167302 12.800000 1.600011 c
+9.599999 1.600011 l
+h
+9.600001 9.600012 m
+9.599999 9.600012 l
+12.800000 9.600012 l
+12.800000 11.367321 11.367314 12.800013 9.600001 12.800013 c
+9.600001 9.600012 l
+h
+1.600000 12.800013 m
+-0.167309 12.800013 -1.600000 11.367327 -1.600000 9.600014 c
+1.600000 9.600014 l
+1.600000 9.600012 l
+1.600000 12.800013 l
+h
+f
+n
+Q
+Q
+
+endstream
+endobj
+
+3 0 obj
+  1470
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.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
+0000000034 00000 n
+0000001560 00000 n
+0000001583 00000 n
+0000001756 00000 n
+0000001830 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1889
+%%EOF

+ 12 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_rect_norm.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Type=rect, State=norm, Disabled=false.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 127 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_rect_norm.imageset/Type=rect, State=norm, Disabled=false.pdf

@@ -0,0 +1,127 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+2.399902 11.999977 m
+2.399902 12.883633 3.116247 13.599976 3.999902 13.599976 c
+11.999904 13.599976 l
+12.883559 13.599976 13.599902 12.883631 13.599902 11.999975 c
+13.599902 3.999974 l
+13.599902 3.116319 12.883557 2.399976 11.999902 2.399976 c
+3.999901 2.399976 l
+3.116245 2.399976 2.399902 3.116321 2.399902 3.999976 c
+2.399902 11.999977 l
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 2.399902 2.399963 cm
+0.380392 0.392157 0.411765 scn
+1.600000 9.600012 m
+9.600001 9.600012 l
+9.600001 12.800013 l
+1.600000 12.800013 l
+1.600000 9.600012 l
+h
+9.599999 9.600012 m
+9.599999 1.600011 l
+12.800000 1.600011 l
+12.800000 9.600012 l
+9.599999 9.600012 l
+h
+9.599999 1.600013 m
+1.599999 1.600013 l
+1.599999 -1.599988 l
+9.599999 -1.599988 l
+9.599999 1.600013 l
+h
+1.600000 1.600013 m
+1.600000 9.600014 l
+-1.600000 9.600014 l
+-1.600000 1.600013 l
+1.600000 1.600013 l
+h
+1.599999 1.600013 m
+1.600000 1.600013 l
+-1.600000 1.600013 l
+-1.600000 -0.167296 -0.167315 -1.599988 1.599999 -1.599988 c
+1.599999 1.600013 l
+h
+9.599999 1.600011 m
+9.599999 1.600013 l
+9.599999 -1.599988 l
+11.367309 -1.599988 12.800000 -0.167302 12.800000 1.600011 c
+9.599999 1.600011 l
+h
+9.600001 9.600012 m
+9.599999 9.600012 l
+12.800000 9.600012 l
+12.800000 11.367321 11.367314 12.800013 9.600001 12.800013 c
+9.600001 9.600012 l
+h
+1.600000 12.800013 m
+-0.167309 12.800013 -1.600000 11.367327 -1.600000 9.600014 c
+1.600000 9.600014 l
+1.600000 9.600012 l
+1.600000 12.800013 l
+h
+f
+n
+Q
+Q
+
+endstream
+endobj
+
+3 0 obj
+  1470
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.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
+0000000034 00000 n
+0000001560 00000 n
+0000001583 00000 n
+0000001756 00000 n
+0000001830 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1889
+%%EOF

+ 12 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_rect_sel.imageset/Contents.json

@@ -0,0 +1,12 @@
+{
+  "images" : [
+    {
+      "filename" : "Type=rect, State=sel, Disabled=false.pdf",
+      "idiom" : "universal"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 127 - 0
PDF Office/PDF Office/Class/Appearance/Image.xcassets/RightSide/icon_propertybar_fillSign_rect_sel.imageset/Type=rect, State=sel, Disabled=false.pdf

@@ -0,0 +1,127 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+2.399902 11.999977 m
+2.399902 12.883633 3.116247 13.599976 3.999902 13.599976 c
+11.999904 13.599976 l
+12.883559 13.599976 13.599902 12.883631 13.599902 11.999975 c
+13.599902 3.999974 l
+13.599902 3.116319 12.883557 2.399976 11.999902 2.399976 c
+3.999901 2.399976 l
+3.116245 2.399976 2.399902 3.116321 2.399902 3.999976 c
+2.399902 11.999977 l
+h
+W*
+n
+q
+1.000000 0.000000 -0.000000 1.000000 2.399902 2.399963 cm
+0.145098 0.149020 0.160784 scn
+1.600000 9.600012 m
+9.600001 9.600012 l
+9.600001 12.800013 l
+1.600000 12.800013 l
+1.600000 9.600012 l
+h
+9.599999 9.600012 m
+9.599999 1.600011 l
+12.800000 1.600011 l
+12.800000 9.600012 l
+9.599999 9.600012 l
+h
+9.599999 1.600013 m
+1.599999 1.600013 l
+1.599999 -1.599988 l
+9.599999 -1.599988 l
+9.599999 1.600013 l
+h
+1.600000 1.600013 m
+1.600000 9.600014 l
+-1.600000 9.600014 l
+-1.600000 1.600013 l
+1.600000 1.600013 l
+h
+1.599999 1.600013 m
+1.600000 1.600013 l
+-1.600000 1.600013 l
+-1.600000 -0.167296 -0.167315 -1.599988 1.599999 -1.599988 c
+1.599999 1.600013 l
+h
+9.599999 1.600011 m
+9.599999 1.600013 l
+9.599999 -1.599988 l
+11.367309 -1.599988 12.800000 -0.167302 12.800000 1.600011 c
+9.599999 1.600011 l
+h
+9.600001 9.600012 m
+9.599999 9.600012 l
+12.800000 9.600012 l
+12.800000 11.367321 11.367314 12.800013 9.600001 12.800013 c
+9.600001 9.600012 l
+h
+1.600000 12.800013 m
+-0.167309 12.800013 -1.600000 11.367327 -1.600000 9.600014 c
+1.600000 9.600014 l
+1.600000 9.600012 l
+1.600000 12.800013 l
+h
+f
+n
+Q
+Q
+
+endstream
+endobj
+
+3 0 obj
+  1470
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.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
+0000000034 00000 n
+0000001560 00000 n
+0000001583 00000 n
+0000001756 00000 n
+0000001830 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1889
+%%EOF

+ 2 - 0
PDF Office/PDF Office/Class/ChromiumTabs/KMBrowserWindowController.swift

@@ -177,6 +177,8 @@ extension KMBrowserWindowController: KMToolbarRightViewDelegate {
     
     func userInfoButtonAction(_ sender: NSButton) {
         KMLoginWindowController.show(window: self.window!)
+        
+//        KMComparativeTableViewController.showWindow(<#T##self: NSWindowController##NSWindowController#>)
     }
     
     func homeRefreshButtonAction(_ sender: NSButton) {

+ 53 - 0
PDF Office/PDF Office/Class/ComponentLibrary/Category/KMDesignToken+Action.swift

@@ -776,4 +776,57 @@ extension KMDesignToken {
         }
         control.updateUI()
     }
+    
+    // MARK: Property Selector 阅读页
+    
+    func propertySelectorDesignToken(bgToken: String = "", textToken: String = "", itemSpacingToken: String = "", textMainToken: String = "", textDescToken: String = "", fillToken: String = "", highlightToken: String = "", heightConstraint: NSLayoutConstraint = NSLayoutConstraint(), control: KMDesignPropertySelector, state: KMDesignTokenState = .Norm) -> Void {
+        var borderColor: NSColor?
+        var borderRadius: String?
+        var borderWidth: String?
+        var fill: NSColor?
+        
+        if bgToken != "" {
+            borderColor = self.border(withToken: bgToken)
+            borderRadius = self.borderRadius(withToken: bgToken)
+            borderWidth = self.borderWidth(withToken: bgToken)
+            fill = self.fill(withToken: bgToken)
+        }
+        if borderColor != nil {
+            if state == .Norm {
+                control.borderColor = borderColor!
+            } else if (state == .Hov) {
+                control.borderColor_hov = borderColor!
+            } else if (state == .Sel) {
+                control.borderColor_sel = borderColor!
+            }
+        }
+        if borderRadius != nil {
+            if state == .Norm {
+                control.cornerRadius = Float(borderRadius!.stringToCGFloat())
+            } else if (state == .Hov) {
+                control.cornerRadius_hov = Float(borderRadius!.stringToCGFloat())
+            } else if (state == .Sel) {
+                control.cornerRadius_sel = Float(borderRadius!.stringToCGFloat())
+            }
+        }
+        if borderWidth != nil {
+            if state == .Norm {
+                control.borderWidth = Float(borderWidth!.stringToCGFloat())
+            } else if (state == .Hov) {
+                control.borderWidth_hov = Float(borderWidth!.stringToCGFloat())
+            } else if (state == .Sel) {
+                control.borderWidth_sel = Float(borderWidth!.stringToCGFloat())
+            }
+        }
+        if fill != nil {
+            if state == .Norm {
+                control.background = fill!
+            } else if (state == .Hov) {
+                control.background_hov = fill!
+            } else if (state == .Sel) {
+                control.background_sel = fill!
+            }
+        }
+        control.updateUI()
+    }
 }

+ 10 - 0
PDF Office/PDF Office/Class/Home/Category/NSViewController+DesignToken.swift

@@ -65,4 +65,14 @@ import Foundation
             print("传入视图类型错误,组件库处理失败,本接口应传入 KMDesignSelect 对象")
         }
     }
+    
+    // MARK: Property Selector 阅读页
+    
+    func propertySelector(bg: String = "", text: String = "", itemSpacing: String = "", textMain: String = "", textDesc: String = "", fill: String = "", highlight: String = "", height: NSLayoutConstraint = NSLayoutConstraint(), state: KMDesignTokenState = .Norm) -> Void {
+        if self is KMDesignPropertySelector {
+            KMDesignToken.shared.propertySelectorDesignToken(bgToken: bg, textToken: text, itemSpacingToken: itemSpacing, textMainToken: textMain, textDescToken: textDesc, fillToken: fill, highlightToken: highlight, control: self as! KMDesignPropertySelector, state: state)
+        } else {
+            print("传入视图类型错误,组件库处理失败,本接口应传入 KMDesignPropertySelector 对象")
+        }
+    }
 }

+ 81 - 0
PDF Office/PDF Office/Class/Home/ViewController/customViewController/KMDesignBase.swift

@@ -0,0 +1,81 @@
+//
+//  KMDesignBase.swift
+//  PDF Office
+//
+//  Created by KdanWJ on 2023/2/24.
+//
+
+import Cocoa
+
+class KMDesignBase: NSViewController {
+    
+    var borderColor: NSColor = .clear// 边框颜色
+    var borderColor_hov: NSColor = .clear// 边框颜色
+    var borderColor_sel: NSColor = .clear// 边框颜色
+    var borderColor_focus: NSColor = .clear// 边框颜色
+    var borderColor_disabled: NSColor = .clear// 边框颜色
+    var borderColor_errordef: NSColor = .clear// 边框颜色
+    var borderColor_errorfocus: NSColor = .clear// 边框颜色
+    var cornerRadius: Float = 0.0// 边框圆角
+    var cornerRadius_hov: Float = 0.0// 边框圆角
+    var cornerRadius_sel: Float = 0.0// 边框圆角
+    var cornerRadius_focus: Float = 0.0// 边框圆角
+    var cornerRadius_disabled: Float = 0.0// 边框圆角
+    var cornerRadius_errordef: Float = 0.0// 边框圆角
+    var cornerRadius_errorfocus: Float = 0.0// 边框圆角
+    var borderWidth: Float = 1.0// 边框宽度
+    var borderWidth_hov: Float = 1.0// 边框宽度
+    var borderWidth_sel: Float = 1.0// 边框宽度
+    var borderWidth_focus: Float = 1.0// 边框宽度
+    var borderWidth_disabled: Float = 1.0// 边框宽度
+    var borderWidth_errordef: Float = 1.0// 边框宽度
+    var borderWidth_errorfocus: Float = 1.0// 边框宽度
+    var background: NSColor = .clear// 背景颜色
+    var background_hov: NSColor = .clear// 背景颜色
+    var background_sel: NSColor = .clear// 背景颜色
+    var background_focus: NSColor = .clear// 背景颜色
+    var background_disabled: NSColor = .clear// 背景颜色
+    var background_errordef: NSColor = .clear// 背景颜色
+    var background_errorfocus: NSColor = .clear// 背景颜色
+    var textColor: NSColor = .black // 内容颜色
+    var textColor_hov: NSColor = .black // 内容颜色
+    var textColor_sel: NSColor = .black // 内容颜色
+    var textColor_focus: NSColor = .black // 内容颜色
+    var textColor_disabled: NSColor = .black // 内容颜色
+    var textColor_errordef: NSColor = .black // 内容颜色
+    var textColor_errorfocus: NSColor = .black // 内容颜色
+    var lineHeight: CGFloat = 20.0 // 默认 内容行高
+    var lineHeight_hov: CGFloat = 20.0 // 默认 内容行高
+    var lineHeight_sel: CGFloat = 20.0 // 默认 内容行高
+    var lineHeight_focus: CGFloat = 20.0 // 默认 内容行高
+    var lineHeight_disabled: CGFloat = 20.0 // 默认 内容行高
+    var lineHeight_errordef: CGFloat = 20.0 // 默认 内容行高
+    var lineHeight_errorfocus: CGFloat = 20.0 // 默认 内容行高
+    var font: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
+    var font_hov: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
+    var font_sel: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
+    var font_focus: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
+    var font_disabled: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
+    var font_errordef: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
+    var font_errorfocus: NSFont = NSFont.systemFont(ofSize: 14.0) // 内容字体
+    
+    var stringValue: String = ""// 内容
+    var toolTip: String = "" // 提示文字
+
+    // button 通用属性
+    var action: Selector?   // 点击事件
+    var target: AnyObject? // 对象目标
+    var enabled: Bool = true // 是否可点击
+    var _state: KMDesignTokenState = .Norm
+    var canHover: Bool = true // 是否可悬浮
+    var isHidden: Bool = false // 是否隐藏
+    var editable: Bool = false //是否允许编辑
+
+    var buttonType: DesignButtonType = .Text
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        // Do view setup here.
+    }
+    
+}

+ 22 - 0
PDF Office/PDF Office/Class/Home/ViewController/customViewController/KMDesignBase.xib

@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMDesignBase" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
+            </connections>
+        </customObject>
+        <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="480" height="272"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <point key="canvasLocation" x="132" y="-72"/>
+        </customView>
+    </objects>
+</document>

+ 29 - 2
PDF Office/PDF Office/Class/Home/ViewController/customViewController/KMDesignButton.swift

@@ -63,7 +63,10 @@ class KMDesignButton: NSViewController {
     var height: Float = 32.0    // 高度
     var width: Float = 80.0    // 宽度
     
-    var image: NSImage = NSImage(named: "KMFileIcon")!
+    var _image: NSImage = NSImage(named: "KMFileIcon")!
+    var image_hov: NSImage = NSImage(named: "KMFileIcon")!
+    var image_act: NSImage = NSImage(named: "KMFileIcon")!
+    var image_disabled: NSImage = NSImage(named: "KMFileIcon")!
     var textImage_imageWidth: Float = 20.0// 图片宽度
     var textImage_imageHeight: Float = 20.0// 图片高度
     var textImage_paddingSpacing: Float = 16.0
@@ -179,6 +182,31 @@ class KMDesignButton: NSViewController {
 
     }
     
+    // MARK: Get、Set
+
+    var image: NSImage {
+        get {
+            return _image
+        }
+        set {
+            _image = newValue
+            
+            if (buttonType == .Image) {
+                imageView1.image = _image
+            } else if (buttonType == .TextImage) {
+                if textImage_type == .Up {
+                    textImage_upImageView.image = image
+                } else if textImage_type == .Left {
+                    textImage_leftImageView.image = image
+                } else if textImage_type == .Down {
+                    textImage_downImageView.image = image
+                } else if textImage_type == .Right {
+                    textImage_rightImageView.image = image
+                }
+            }
+        }
+    }
+    
     // MARK: Private Methods
 
     func updateUI() -> Void {
@@ -249,7 +277,6 @@ class KMDesignButton: NSViewController {
                 imageButtonBox.borderColor = borderColor_disabled
                 imageButtonBox.cornerRadius = CGFloat(cornerRadius_disabled)
             }
-            imageView1.image = image
             button.action = action
             button.target = target
             button.isEnabled = enabled

+ 99 - 1
PDF Office/PDF Office/Class/Home/ViewController/customViewController/KMDesignPropertySelector.swift

@@ -7,11 +7,109 @@
 
 import Cocoa
 
-class KMDesignPropertySelector: NSViewController {
+@objc enum PropertySelectorType : Int {
+    case Icon_Btn = 0
+    case Color_Icon_Btn
+    case Line_Style
+}
+
+class KMDesignPropertySelector: KMDesignBase {
+    
+    @IBOutlet weak var mainBox: KMMoveBox!
+    @IBOutlet weak var button: NSButton!
+
+    @IBOutlet weak var iconView: NSView!
+    @IBOutlet weak var icon: NSImageView!
+
+    @IBOutlet weak var colorIconView: NSView!
+    @IBOutlet weak var iconBox: NSBox!
+
+    @IBOutlet weak var iconBoxHeight_spacing: NSLayoutConstraint!
+    @IBOutlet weak var iconBoxWidth_spacing: NSLayoutConstraint!
+    
+    var propertySelectorType: PropertySelectorType = .Icon_Btn
+    
+    var _fillColor: NSColor = .clear
+    
+    init(withType type: PropertySelectorType) {
+        super.init(nibName: "KMDesignPropertySelector", bundle: nil)
+        self.propertySelectorType = type
+    }
+    
+    required init?(coder: NSCoder) {
+        fatalError("init(coder:) has not been implemented")
+    }
 
     override func viewDidLoad() {
         super.viewDidLoad()
         // Do view setup here.
+        
+        if (propertySelectorType == .Icon_Btn) {
+            self.mainBox.contentView = iconView
+        } else if (propertySelectorType == .Color_Icon_Btn) {
+            self.mainBox.contentView = colorIconView
+            self.iconBox.cornerRadius = iconBoxWidth_spacing.constant/2
+            self.iconBox.borderWidth = 1.0
+            self.iconBox.borderColor = NSColor(hex: "#000000", alpha: 0.1)
+            
+            self.propertySelector(bg: "property-selector.icon-btn.bg.norm")
+            self.propertySelector(bg: "property-selector.icon-btn.bg.hov", state: .Hov)
+            self.propertySelector(bg: "property-selector.icon-btn.bg.sel", state: .Sel)
+        }
+        
+        mainBox.move =  { [weak self](mouseEntered: Bool) -> Void in
+            if mouseEntered {
+                if self!.state != .Sel && self!.canHover && (self!.state != .Disabled) {
+                    self!.state = .Hov
+                }
+            } else {
+                if self!.state != .Sel && self!.canHover && (self!.state != .Disabled) {
+                    self!.state = .Norm
+                }
+            }
+        }
+    }
+    
+    // MARK: Get、Set
+
+    var state: KMDesignTokenState {
+        get {
+            return _state
+        }
+        set {
+            _state = newValue
+            updateUI()
+        }
     }
     
+    var fillColor: NSColor {
+        get {
+            return _fillColor
+        }
+        set {
+            _fillColor = newValue
+            self.iconBox.fillColor = _fillColor
+        }
+    }
+    
+    // MARK: Private Methods
+
+    func updateUI() -> Void {
+        if (state == .Norm) {
+            self.mainBox.fillColor = .clear
+            self.mainBox.borderWidth = 0.0
+        } else if (state == .Hov) {
+            self.mainBox.fillColor = self.background_hov
+            self.mainBox.borderWidth = 0.0
+            self.mainBox.cornerRadius = CGFloat(self.cornerRadius_hov)
+        } else if (state == .Sel) {
+            self.mainBox.fillColor = self.background_sel
+            self.mainBox.borderWidth = 0.0
+            self.mainBox.cornerRadius = CGFloat(self.cornerRadius_hov)
+            self.mainBox.borderColor = self.borderColor_sel
+        }
+        
+        button.target = target
+        button.action = action
+    }
 }

+ 9 - 1
PDF Office/PDF Office/Class/Home/ViewController/customViewController/KMDesignPropertySelector.xib

@@ -8,6 +8,14 @@
     <objects>
         <customObject id="-2" userLabel="File's Owner" customClass="KMDesignPropertySelector" customModule="PDF_Office" customModuleProvider="target">
             <connections>
+                <outlet property="button" destination="ZAl-Jh-jR1" id="DVf-zL-W93"/>
+                <outlet property="colorIconView" destination="mKX-w2-jip" id="hWC-0E-wa2"/>
+                <outlet property="icon" destination="dNy-Xu-o1U" id="1FI-Lt-Cku"/>
+                <outlet property="iconBox" destination="XQU-q6-xNe" id="bCb-0e-8Sb"/>
+                <outlet property="iconBoxHeight_spacing" destination="ERb-VY-yIo" id="oA4-wB-VAg"/>
+                <outlet property="iconBoxWidth_spacing" destination="1dx-P8-GWb" id="ls0-hd-wlt"/>
+                <outlet property="iconView" destination="nOY-A6-CiO" id="g9g-U3-YNq"/>
+                <outlet property="mainBox" destination="cpP-NK-mOr" id="IEZ-de-M0a"/>
                 <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
             </connections>
         </customObject>
@@ -17,7 +25,7 @@
             <rect key="frame" x="0.0" y="0.0" width="354" height="0.0"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
-                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="cpP-NK-mOr">
+                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="cpP-NK-mOr" customClass="KMMoveBox" customModule="PDF_Office" customModuleProvider="target">
                     <rect key="frame" x="0.0" y="0.0" width="354" height="0.0"/>
                     <view key="contentView" id="9us-Cb-BvJ">
                         <rect key="frame" x="0.0" y="0.0" width="354" height="0.0"/>

+ 8 - 0
PDF Office/PDF Office/Class/KMLightMember/Controller/ComparativeTable/KMComparativeTableViewController.swift

@@ -17,6 +17,14 @@ class KMComparativeTableViewController: NSWindowController {
         self.setup()
     }
     
+    //MARK: 打开文件
+    static func show(window: NSWindow, _ type: DataNavigationViewButtonActionType = .Batch) -> KMComparativeTableViewController {
+        let controller: KMComparativeTableViewController = KMComparativeTableViewController.init(windowNibName: "KMComparativeTableViewController")
+//        controller.inputType = type
+        window.beginSheet(controller.window!)
+        return controller
+    }
+    
     func setup() {
         self.comparativeTableView.closeAction = { view in
             print("关闭")

+ 64 - 9
PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/KMLoginWindowController.swift

@@ -8,14 +8,22 @@
 import Cocoa
 
 class KMLoginWindowController: NSWindowController {
-
-    var inputType: DataNavigationViewButtonActionType?
     @IBOutlet weak var loginView: KMLoginView!
     @IBOutlet weak var leftView: KMLoginLeftImageView!
     @IBOutlet weak var registerView: KMRegisterView!
     @IBOutlet weak var verificationCodeView: KMVerificationCodeView!
     
+    @IBOutlet weak var loginInputPasswordView: KMLoginInputPasswordView!
+    @IBOutlet weak var registerSuccessView: KMRegisterSuccessView!
+    
+    @IBOutlet weak var resetPasswordView: KMResetPasswordView!
+    
     @IBOutlet weak var rightContentView: NSView!
+    
+    var inputType: DataNavigationViewButtonActionType?
+    
+    var model: KMRegisterModel = KMRegisterModel()
+    
     var currentView: NSView?
     var logType: KMRegisterLogType = .login {
         didSet {
@@ -47,24 +55,63 @@ class KMLoginWindowController: NSWindowController {
     }
     
     func setup() {
+        self.window?.contentView?.backgroundColor(NSColor(hex: "#FFFFFF"))
         self.leftView.cancelAction = { view in
             view.window!.close()
         }
         
-        self.loginView.registerAction = { view in
+        //loginView
+        self.loginView.registerAction = { [unowned self] (view, data) in
             self.logType = .register
         }
 
-        self.loginView.nextAction = { view in
-//            self.logType = .verificationCode
+        self.loginView.nextAction = { [unowned self] (view, data) in
+            self.model.email = data.email
+            self.logType = .loginInputPassword
         }
         
-        self.registerView.loginAction = { view in
+        //registerView
+        self.registerView.loginAction = { [unowned self] (view, data) in
             self.logType = .login
         }
 
-        self.registerView.nextAction = { view in
+        self.registerView.nextAction = { [unowned self] (view, data) in
             self.logType = .verificationCode
+            self.verificationCodeView.inputType = .register
+        }
+        
+        self.registerSuccessView.doneAction = { view in
+            view.window!.close()
+            print("注册成功")
+        }
+        
+        //verificationCodeView
+        self.verificationCodeView.cancelAction = { view in
+            self.logType = .register
+        }
+        
+        self.verificationCodeView.doneAction = { view in
+            self.logType = .registerSuccess
+        }
+        
+        
+        //loginInputPasswordView
+        self.loginInputPasswordView.loginAction = { view in
+            view.window!.close()
+        }
+        
+        self.loginInputPasswordView.forgotPasswordAction = { view in
+            self.logType = .resetPassword
+        }
+        
+        self.loginInputPasswordView.changeEmailAction = { view in
+            self.logType = .login
+        }
+        
+        //resetPasswordView
+        self.resetPasswordView.doneAction = { [unowned self] (view, data) in
+            self.model.email = data.email
+            self.logType = .login
         }
         
         self.reloadData()
@@ -78,15 +125,23 @@ class KMLoginWindowController: NSWindowController {
         switch self.logType {
         case .login:
             self.loginView.isHidden = false
+            self.loginView.model.email = self.model.email
             self.window?.makeFirstResponder(self.loginView.emailTextField)
         case .register:
             self.registerView.isHidden = false
             self.window?.makeFirstResponder(self.registerView.emailTextField)
-        case .forgetPassword:
-            print("暂未实现")
+        case .resetPassword:
+            self.resetPasswordView.resetData()
+            self.resetPasswordView.email = self.model.email
+            self.resetPasswordView.isHidden = false
         case .verificationCode:
             self.verificationCodeView.isHidden = false
             self.window?.makeFirstResponder(self.verificationCodeView.code1TextField.textField)
+        case .registerSuccess:
+            self.registerSuccessView.isHidden = false
+        case .loginInputPassword:
+            self.loginInputPasswordView.email = self.model.email
+            self.loginInputPasswordView.isHidden = false
         }
     }
     

+ 24 - 0
PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/KMLoginWindowController.xib

@@ -10,8 +10,11 @@
             <connections>
                 <outlet property="leftVIew" destination="QLc-m8-vVs" id="Pr6-VL-Yen"/>
                 <outlet property="leftView" destination="QLc-m8-vVs" id="giL-d7-2ml"/>
+                <outlet property="loginInputPasswordView" destination="mj9-5T-uMF" id="JQC-FQ-FlJ"/>
                 <outlet property="loginView" destination="X8l-4v-zsK" id="93E-eu-ceB"/>
+                <outlet property="registerSuccessView" destination="CZn-YG-gkh" id="wHR-SV-gaW"/>
                 <outlet property="registerView" destination="L2I-Hq-i6b" id="EVh-D3-fN3"/>
+                <outlet property="resetPasswordView" destination="OAY-pB-NyQ" id="nR5-8a-3kI"/>
                 <outlet property="rightContentView" destination="nmT-zT-r6u" id="7BM-dz-S5q"/>
                 <outlet property="verificationCodeView" destination="qVo-uP-AF7" id="zgt-Wp-9mX"/>
                 <outlet property="window" destination="F0z-JX-Cv5" id="JNd-m7-L56"/>
@@ -40,6 +43,15 @@
                             <customView translatesAutoresizingMaskIntoConstraints="NO" id="X8l-4v-zsK" customClass="KMLoginView" customModule="PDF_Office" customModuleProvider="target">
                                 <rect key="frame" x="0.0" y="0.0" width="326" height="420"/>
                             </customView>
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="OAY-pB-NyQ" customClass="KMResetPasswordView" customModule="PDF_Office" customModuleProvider="target">
+                                <rect key="frame" x="0.0" y="0.0" width="326" height="420"/>
+                            </customView>
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="mj9-5T-uMF" customClass="KMLoginInputPasswordView" customModule="PDF_Office" customModuleProvider="target">
+                                <rect key="frame" x="0.0" y="0.0" width="326" height="420"/>
+                            </customView>
+                            <customView translatesAutoresizingMaskIntoConstraints="NO" id="CZn-YG-gkh" customClass="KMRegisterSuccessView" customModule="PDF_Office" customModuleProvider="target">
+                                <rect key="frame" x="0.0" y="0.0" width="326" height="420"/>
+                            </customView>
                             <customView translatesAutoresizingMaskIntoConstraints="NO" id="qVo-uP-AF7" customClass="KMVerificationCodeView" customModule="PDF_Office" customModuleProvider="target">
                                 <rect key="frame" x="0.0" y="0.0" width="326" height="420"/>
                             </customView>
@@ -49,17 +61,29 @@
                         </subviews>
                         <constraints>
                             <constraint firstItem="X8l-4v-zsK" firstAttribute="leading" secondItem="nmT-zT-r6u" secondAttribute="leading" id="0os-F2-USs"/>
+                            <constraint firstAttribute="trailing" secondItem="OAY-pB-NyQ" secondAttribute="trailing" id="2Nj-ey-ppu"/>
+                            <constraint firstItem="mj9-5T-uMF" firstAttribute="leading" secondItem="nmT-zT-r6u" secondAttribute="leading" id="4zn-mp-bTa"/>
+                            <constraint firstAttribute="bottom" secondItem="CZn-YG-gkh" secondAttribute="bottom" id="5ZP-5I-DKk"/>
                             <constraint firstItem="L2I-Hq-i6b" firstAttribute="leading" secondItem="nmT-zT-r6u" secondAttribute="leading" id="9fU-vO-VqB"/>
+                            <constraint firstItem="mj9-5T-uMF" firstAttribute="top" secondItem="nmT-zT-r6u" secondAttribute="top" id="By9-kK-PbR"/>
                             <constraint firstItem="L2I-Hq-i6b" firstAttribute="top" secondItem="nmT-zT-r6u" secondAttribute="top" id="Bys-y5-SQH"/>
+                            <constraint firstAttribute="trailing" secondItem="CZn-YG-gkh" secondAttribute="trailing" id="FGs-rP-Dg9"/>
                             <constraint firstAttribute="bottom" secondItem="X8l-4v-zsK" secondAttribute="bottom" id="H2G-UC-1Un"/>
                             <constraint firstItem="X8l-4v-zsK" firstAttribute="top" secondItem="nmT-zT-r6u" secondAttribute="top" id="IHs-E9-4U8"/>
+                            <constraint firstAttribute="trailing" secondItem="mj9-5T-uMF" secondAttribute="trailing" id="JcY-GB-Ued"/>
                             <constraint firstAttribute="trailing" secondItem="X8l-4v-zsK" secondAttribute="trailing" id="Pa2-vc-ns3"/>
+                            <constraint firstItem="CZn-YG-gkh" firstAttribute="top" secondItem="nmT-zT-r6u" secondAttribute="top" id="Ptj-lD-uFQ"/>
                             <constraint firstAttribute="bottom" secondItem="L2I-Hq-i6b" secondAttribute="bottom" id="V6E-RP-LxZ"/>
+                            <constraint firstItem="OAY-pB-NyQ" firstAttribute="leading" secondItem="nmT-zT-r6u" secondAttribute="leading" id="W3m-l4-2Vg"/>
                             <constraint firstAttribute="trailing" secondItem="qVo-uP-AF7" secondAttribute="trailing" id="Xdo-Nd-vqM"/>
+                            <constraint firstAttribute="bottom" secondItem="mj9-5T-uMF" secondAttribute="bottom" id="Yhy-fs-7ZS"/>
+                            <constraint firstAttribute="bottom" secondItem="OAY-pB-NyQ" secondAttribute="bottom" id="cZG-nL-0m3"/>
                             <constraint firstAttribute="trailing" secondItem="L2I-Hq-i6b" secondAttribute="trailing" id="fKB-pZ-MR8"/>
+                            <constraint firstItem="CZn-YG-gkh" firstAttribute="leading" secondItem="nmT-zT-r6u" secondAttribute="leading" id="m1b-ct-jll"/>
                             <constraint firstItem="qVo-uP-AF7" firstAttribute="leading" secondItem="nmT-zT-r6u" secondAttribute="leading" id="q9G-TN-KJx"/>
                             <constraint firstItem="qVo-uP-AF7" firstAttribute="top" secondItem="nmT-zT-r6u" secondAttribute="top" id="rAT-aT-nY8"/>
                             <constraint firstAttribute="bottom" secondItem="qVo-uP-AF7" secondAttribute="bottom" id="s1f-Vm-Esh"/>
+                            <constraint firstItem="OAY-pB-NyQ" firstAttribute="top" secondItem="nmT-zT-r6u" secondAttribute="top" id="xSj-tB-sPq"/>
                         </constraints>
                     </customView>
                 </subviews>

+ 19 - 3
PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/Model/KMRegisterModel.swift

@@ -10,8 +10,10 @@ import Cocoa
 enum KMRegisterLogType: Int, CaseIterable {
     case login = 0
     case register = 1
-    case forgetPassword = 2
+    case resetPassword = 2
     case verificationCode = 3
+    case registerSuccess = 4
+    case loginInputPassword = 5
 }
 
 enum KMRegisterEmailAlertType: String, CaseIterable {
@@ -27,12 +29,26 @@ enum KMRegisterPasswordAlertType: String, CaseIterable {
     case up = "Up to 24 characters" //密码过长
 }
 
+enum KMRegisterVerificationCodeState: String, CaseIterable {
+    case unknow = ""
+    case failure = "The verification code is wrong"
+    case success = "success"
+//    case error = "The verification code is error"
+}
+
+
+
 class KMRegisterModel: NSObject {
     var logType: KMRegisterLogType = .login
     var canNext: Bool = false //是否可以点击下一步
     var emailAlertType: KMRegisterEmailAlertType = .correct //邮箱验证
+    var email: String = "" //邮箱
+
+    //password
     var passwordAlertType: KMRegisterPasswordAlertType = .correct //密码验证
+    var rePasswordAlertType: KMRegisterPasswordAlertType = .correct //密码验证
     var password: String = "" //密码
-    var email: String = "" //邮箱
-    var isSecure: Bool = false //是密码保护
+    var rePassword: String = "" //密码
+    var secure: Bool = false //密码保护
+    var reSecure: Bool = false //密码保护
 }

+ 28 - 4
PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/Presenter/KMRegisterPresenter.swift

@@ -18,7 +18,7 @@ extension KMRegisterPresenter: KMRegisterPresenterProtocol {
     /**
      初始化presenter
      */
-    func initPresenter(view: NSView & KMRegisterPresenterDelegate, data: KMRegisterModel) {
+    func initPresenter(view: KMRegisterPresenterDelegate, data: KMRegisterModel) {
         self.delegate = view
         self.model = data
         
@@ -40,7 +40,20 @@ extension KMRegisterPresenter: KMRegisterPresenterProtocol {
     }
     
     func changeSecure(secure: Bool) {
-        self.model.isSecure = secure
+        self.model.secure = secure
+        
+        self.delegate?.showData(presenter: self, data: self.model)
+    }
+    
+    func changeRePassword(string: String) {
+        self.model.rePassword = string
+        self.refreshNextState()
+        
+        self.delegate?.showData(presenter: self, data: self.model)
+    }
+    
+    func changeReSecure(secure: Bool) {
+        self.model.reSecure = secure
         
         self.delegate?.showData(presenter: self, data: self.model)
     }
@@ -63,6 +76,14 @@ extension KMRegisterPresenter: KMRegisterPresenterProtocol {
             self.model.passwordAlertType = .correct
         }
         
+        if self.model.rePassword.count < 6 && self.model.rePassword.count != 0 {
+            self.model.rePasswordAlertType = .least
+        } else if self.model.password.count > 24 {
+            self.model.rePasswordAlertType = .up
+        } else {
+            self.model.rePasswordAlertType = .correct
+        }
+        
         
         var canNext = false
         switch self.model.logType {
@@ -70,7 +91,7 @@ extension KMRegisterPresenter: KMRegisterPresenterProtocol {
             canNext = isEmailSuccess
         case .register:
             canNext = isEmailSuccess && isPasswordSuccess
-        case .forgetPassword:
+        case .resetPassword:
             canNext = isEmailSuccess && isPasswordSuccess
         default:
             break
@@ -107,13 +128,16 @@ protocol KMRegisterPresenterProtocol {
      @param view 视图
      @param data 资源 <KMBatchProcessingViewModel>类型
      */
-    func initPresenter(view: NSView & KMRegisterPresenterDelegate, data: KMRegisterModel)
+    func initPresenter(view: KMRegisterPresenterDelegate, data: KMRegisterModel)
     
     func changePassword(string: String)
+    func changeRePassword(string: String)
     
     func changeEmail(string: String)
     
     func changeSecure(secure: Bool)
+    func changeReSecure(secure: Bool)
+    
 
     func refreshNextState()
     /**

+ 214 - 0
PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMLoginInputPasswordView.swift

@@ -0,0 +1,214 @@
+//
+//  KMLoginInputPasswordView.swift
+//  PDF Office
+//
+//  Created by lizhe on 2023/2/25.
+//
+
+import Cocoa
+
+typealias KMLoginInputPasswordViewChangeEmailAction = (_ view: KMLoginInputPasswordView) -> Void
+typealias KMLoginInputPasswordViewLoginAction = (_ view: KMLoginInputPasswordView) -> Void
+typealias KMLoginInputPasswordViewforgotPasswordAction = (_ view: KMLoginInputPasswordView) -> Void
+class KMLoginInputPasswordView: KMBaseXibView {
+
+    @IBOutlet weak var titleLabel: NSTextField!
+    @IBOutlet weak var describeLable: NSTextField!
+    @IBOutlet weak var passwordContentView: NSView!
+    @IBOutlet weak var passwordTextField: FocusAwareTextField!
+    @IBOutlet weak var passwordSecureTextField: FocusAwareSecureTextField!
+    @IBOutlet weak var showButton: NSButton!
+    @IBOutlet weak var passwordAlertLabel: NSTextField!
+    @IBOutlet weak var loginButton: NSButton!
+    @IBOutlet weak var forgotPasswordButton: NSButton!
+    @IBOutlet weak var alertView: KMLightMemberAlertView!
+    @IBOutlet var emailTextView: NSTextView!
+    
+    
+    var changeEmailAction: KMLoginInputPasswordViewChangeEmailAction?
+    var loginAction: KMLoginInputPasswordViewLoginAction?
+    var forgotPasswordAction: KMLoginInputPasswordViewforgotPasswordAction?
+    
+    var presenter: KMRegisterPresenter = KMRegisterPresenter()
+    var email: String = "" {
+        didSet {
+            self.model.email = self.email
+            self.updateLanguage()
+        }
+    }
+    var model: KMRegisterModel = KMRegisterModel()
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    override func setup() {
+        super.setup()
+        
+        self.titleLabel.textColor = NSColor(hex: "#252629")
+        self.titleLabel.font = NSFont.SFProTextSemibold(20.0)
+        
+        self.emailTextView.delegate = self
+        self.emailTextView.isEditable = false
+        
+        self.describeLable.textColor = NSColor(hex: "#252629")
+        self.describeLable.font = NSFont.SFProTextRegular(14.0)
+        
+        self.passwordAlertLabel.textColor = NSColor(hex: "#F3465B")
+        self.passwordAlertLabel.font = NSFont.SFProTextRegular(12.0)
+        
+        self.loginButton.font = NSFont.SFProTextRegular(14.0)
+        self.loginButton.backgroundColor(NSColor(hex: "#273C62"))
+        self.loginButton.border(NSColor(hex: "#273C62"), 1, 4)
+        self.loginButton.contentTintColor = NSColor(hex: "#FFFFFF")
+        
+        self.forgotPasswordButton.font = NSFont.SFProTextRegular(12.0)
+        self.forgotPasswordButton.contentTintColor = NSColor(hex: "#1770F4")
+        
+        self.passwordTextField.delegate = self
+        self.passwordTextField.onFocus = {
+            self.passwordContentView.border(NSColor(hex: "#1770F4"), 1, 4)
+        }
+        
+        self.passwordSecureTextField.delegate = self
+        self.passwordSecureTextField.onFocus = {
+            self.passwordContentView.border(NSColor(hex: "#1770F4"), 1, 4)
+        }
+        
+        self.emailTextView.delegate = self
+        
+        self.presenter.initPresenter(view: self, data: self.model)
+    }
+    
+    override func reloadData() {
+        super.reloadData()
+        
+        if self.model.secure {
+            self.showButton.image = NSImage(named: "icon_btn_hide")
+            self.passwordTextField.isHidden = true
+            self.passwordSecureTextField.isHidden = false
+        } else {
+            self.showButton.image = NSImage(named: "icon_btn_show")
+            self.passwordTextField.isHidden = false
+            self.passwordSecureTextField.isHidden = true
+        }
+        
+        self.passwordTextField.stringValue = self.model.password
+        self.passwordSecureTextField.stringValue = self.model.password
+        self.passwordAlertLabel.stringValue = NSLocalizedString(self.model.passwordAlertType.rawValue, comment: "")
+    }
+    
+    override func updateUI() {
+        super.updateUI()
+       
+        //password
+        self.passwordContentView.border(NSColor(hex: "#DFE1E5"), 1, 4)
+        self.passwordTextField.textColor = NSColor(hex: "#252629")
+        self.passwordTextField.font = NSFont.SFProTextRegular(14.0)
+        self.passwordTextField.border(NSColor(hex: "#FFFFFF"), 1, 0)
+        
+        self.passwordSecureTextField.textColor = NSColor(hex: "#252629")
+        self.passwordSecureTextField.font = NSFont.SFProTextRegular(14.0)
+        self.passwordSecureTextField.border(NSColor(hex: "#FFFFFF"), 1, 0)
+        
+        self.passwordAlertLabel.textColor = NSColor(hex: "#F3465B")
+        self.passwordAlertLabel.font = NSFont.SFProTextRegular(12.0)
+    }
+    
+    override func updateLanguage() {
+        super.updateLanguage()
+        
+        self.titleLabel.stringValue = NSLocalizedString("Login", comment: "")
+        
+       
+        self.passwordTextField.placeholderAttributedString = NSAttributedString(string: NSLocalizedString("Enter your password", comment: ""), attributes: [NSAttributedString.Key.font : NSFont.SFProTextRegular(14.0), NSAttributedString.Key.foregroundColor: NSColor(hex: "#94989C") ])
+        
+
+        self.passwordSecureTextField.placeholderAttributedString = NSAttributedString(string: NSLocalizedString("Enter your password", comment: ""), attributes: [NSAttributedString.Key.font : NSFont.SFProTextRegular(14.0), NSAttributedString.Key.foregroundColor: NSColor(hex: "#94989C") ])
+    
+        self.passwordAlertLabel.stringValue = NSLocalizedString(self.model.passwordAlertType.rawValue, comment: "")
+        
+        
+        //singin
+        let string = self.model.email + "  " + NSLocalizedString("Change Email", comment: "")
+        let attributedString = NSMutableAttributedString.init(string: string)
+        let paragraphStyle = NSMutableParagraphStyle()
+        paragraphStyle.alignment = .left;
+        attributedString.addAttributes([NSAttributedString.Key.font : NSFont.SFProTextRegular(12.0),
+                                        NSAttributedString.Key.foregroundColor : NSColor(hex: "#252629"),
+                                        NSAttributedString.Key.paragraphStyle : paragraphStyle],
+                                    range: NSRange(location: 0, length: string.count))
+
+        let range = string.range(of: NSLocalizedString("Change Email", comment: ""))
+        attributedString.setAttributes([NSAttributedString.Key.font : NSFont.SFProTextRegular(12.0),
+                                        NSAttributedString.Key.foregroundColor : NSColor(hex: "#1770F4"),
+                                        NSAttributedString.Key.underlineColor : NSColor.clear,
+                                        NSAttributedString.Key.link : "changeEmail://"],
+                                       range: string.nsRange(from: range!)!)
+
+        self.emailTextView.textStorage?.setAttributedString(attributedString)
+    }
+}
+
+protocol KMLoginInputPasswordViewAction {}
+extension KMLoginInputPasswordView: KMLoginInputPasswordViewAction  {
+    @IBAction func loginButtonAction(_ sender: Any) {
+        guard let callBack = loginAction else { return }
+        
+        callBack(self)
+    }
+    
+    @IBAction func forgotPasswordButtonAction(_ sender: Any) {
+        guard let callBack = forgotPasswordAction else { return }
+        
+        callBack(self)
+    }
+    
+    @IBAction func showButton(_ sender: Any) {
+        self.presenter.changeSecure(secure: !self.model.secure)
+        self.reloadData()
+    }
+}
+
+extension KMLoginInputPasswordView: NSTextFieldDelegate {
+    func controlTextDidEndEditing(_ obj: Notification) {
+        let textField = obj.object as? NSTextField
+        if (textField == self.passwordTextField ||
+            textField == self.passwordSecureTextField) {
+            self.passwordContentView.border(NSColor(hex: "#DFE1E5"), 1, 4)
+        }
+    }
+    
+    func controlTextDidChange(_ obj: Notification) {
+        let textField = obj.object as? NSTextField
+        if (textField == self.passwordSecureTextField ||
+            textField == self.passwordTextField) {
+            self.presenter.changePassword(string: textField!.stringValue)
+        }
+    }
+}
+
+extension KMLoginInputPasswordView: NSTextViewDelegate {
+    func textView(_ textView: NSTextView, clickedOnLink link: Any, at charIndex: Int) -> Bool {
+        if link as! String == "changeEmail://" {
+            guard let callBack = self.changeEmailAction else { return true }
+
+            print("链接点击")
+            callBack(self)
+        }
+        return true
+    }
+}
+
+
+extension KMLoginInputPasswordView: KMRegisterPresenterDelegate {
+    func showData(presenter: KMRegisterPresenter, data: KMRegisterModel) {
+        self.reloadData()
+    }
+    
+    func showAlert(presenter: KMRegisterPresenter, data: KMRegisterModel) {
+        
+    }
+}

+ 233 - 0
PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMLoginInputPasswordView.xib

@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMLoginInputPasswordView" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="alertView" destination="ff5-IQ-deE" id="WgJ-Fd-6aV"/>
+                <outlet property="describeLable" destination="v1H-K3-lim" id="ikz-9Z-zWf"/>
+                <outlet property="emailTextView" destination="Kci-hg-np7" id="QeP-v6-Da8"/>
+                <outlet property="forgotPasswordButton" destination="cWe-4o-FbE" id="aOb-EX-9Xr"/>
+                <outlet property="loginButton" destination="Fiq-Tb-FhO" id="hrP-yA-WJw"/>
+                <outlet property="passwordAlertLabel" destination="ozx-O2-GQT" id="egV-cQ-3ZP"/>
+                <outlet property="passwordContentView" destination="fBp-l6-nG8" id="dMG-qn-eZr"/>
+                <outlet property="passwordSecureTextField" destination="jtV-xD-84b" id="auf-5b-mzl"/>
+                <outlet property="passwordTextField" destination="6Vy-iH-Gtq" id="FOu-hw-1r8"/>
+                <outlet property="showButton" destination="xHV-vC-qRK" id="lyy-q9-J9r"/>
+                <outlet property="titleLabel" destination="HEe-ho-aMd" id="AV3-ho-RlB"/>
+            </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="420"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="foZ-Fi-vvJ">
+                    <rect key="frame" x="32" y="192" width="262" height="180"/>
+                    <subviews>
+                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="HEe-ho-aMd">
+                            <rect key="frame" x="-2" y="156" width="53" height="24"/>
+                            <textFieldCell key="cell" lineBreakMode="clipping" title="Login" id="1TY-0X-TvG">
+                                <font key="font" metaFont="system" size="20"/>
+                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                            </textFieldCell>
+                            <connections>
+                                <action selector="titleLabel:" target="-1" id="gs2-d9-C6M"/>
+                            </connections>
+                        </textField>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="ya0-iW-x0m">
+                            <rect key="frame" x="0.0" y="24" width="262" height="60"/>
+                            <subviews>
+                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="v1H-K3-lim">
+                                    <rect key="frame" x="-2" y="44" width="98" height="16"/>
+                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Enter password" id="L7J-ZU-D7U">
+                                        <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>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="fBp-l6-nG8">
+                                    <rect key="frame" x="0.0" y="4" width="262" height="32"/>
+                                    <subviews>
+                                        <textField verticalHuggingPriority="750" contentType="password" translatesAutoresizingMaskIntoConstraints="NO" id="6Vy-iH-Gtq" customClass="FocusAwareTextField" customModule="PDF_Office" customModuleProvider="target">
+                                            <rect key="frame" x="8" y="5" width="222" height="22"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="22" id="opq-pU-Cxs"/>
+                                            </constraints>
+                                            <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="border" placeholderString="Enter your password" id="gdA-OW-XHt">
+                                                <font key="font" metaFont="system"/>
+                                                <color key="textColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <color key="backgroundColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <allowedInputSourceLocales>
+                                                    <string>NSAllRomanInputSourcesLocaleIdentifier</string>
+                                                </allowedInputSourceLocales>
+                                            </textFieldCell>
+                                        </textField>
+                                        <secureTextField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jtV-xD-84b" customClass="FocusAwareSecureTextField" customModule="PDF_Office" customModuleProvider="target">
+                                            <rect key="frame" x="8" y="6" width="222" height="20"/>
+                                            <secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="border" usesSingleLineMode="YES" id="UlY-us-n8s">
+                                                <font key="font" metaFont="system"/>
+                                                <color key="textColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <color key="backgroundColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <allowedInputSourceLocales>
+                                                    <string>NSAllRomanInputSourcesLocaleIdentifier</string>
+                                                </allowedInputSourceLocales>
+                                            </secureTextFieldCell>
+                                        </secureTextField>
+                                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="xHV-vC-qRK">
+                                            <rect key="frame" x="238" y="8" width="16" height="16"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="16" id="nvV-aB-5NN"/>
+                                                <constraint firstAttribute="height" constant="16" id="pgM-OG-2zP"/>
+                                            </constraints>
+                                            <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="icon_btn_show" imagePosition="only" alignment="center" imageScaling="proportionallyDown" inset="2" id="Na6-O8-jpZ">
+                                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                <font key="font" metaFont="system"/>
+                                            </buttonCell>
+                                            <connections>
+                                                <action selector="showButton:" target="-2" id="Mgv-hf-UpD"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="32" id="08T-y7-euD"/>
+                                        <constraint firstItem="jtV-xD-84b" firstAttribute="leading" secondItem="fBp-l6-nG8" secondAttribute="leading" constant="8" id="0O6-sh-EIr"/>
+                                        <constraint firstAttribute="trailing" secondItem="xHV-vC-qRK" secondAttribute="trailing" constant="8" id="1uD-XY-sKB"/>
+                                        <constraint firstItem="6Vy-iH-Gtq" firstAttribute="leading" secondItem="fBp-l6-nG8" secondAttribute="leading" constant="8" id="2tO-xH-ViD"/>
+                                        <constraint firstItem="xHV-vC-qRK" firstAttribute="leading" secondItem="jtV-xD-84b" secondAttribute="trailing" constant="8" id="HTH-Ou-A4C"/>
+                                        <constraint firstItem="6Vy-iH-Gtq" firstAttribute="centerY" secondItem="fBp-l6-nG8" secondAttribute="centerY" id="XdE-rE-4Aj"/>
+                                        <constraint firstItem="jtV-xD-84b" firstAttribute="centerY" secondItem="fBp-l6-nG8" secondAttribute="centerY" id="jPj-Sx-IGa"/>
+                                        <constraint firstItem="xHV-vC-qRK" firstAttribute="centerY" secondItem="fBp-l6-nG8" secondAttribute="centerY" id="ykY-Nn-ZRF"/>
+                                        <constraint firstItem="xHV-vC-qRK" firstAttribute="leading" secondItem="6Vy-iH-Gtq" secondAttribute="trailing" constant="8" id="z9i-Ze-wrp"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="v1H-K3-lim" firstAttribute="leading" secondItem="ya0-iW-x0m" secondAttribute="leading" id="Fcs-ee-5aZ"/>
+                                <constraint firstItem="fBp-l6-nG8" firstAttribute="top" secondItem="v1H-K3-lim" secondAttribute="bottom" constant="8" id="NuE-WR-S2h"/>
+                                <constraint firstItem="v1H-K3-lim" firstAttribute="top" secondItem="ya0-iW-x0m" secondAttribute="top" id="QJn-SN-ebB"/>
+                                <constraint firstAttribute="trailing" secondItem="fBp-l6-nG8" secondAttribute="trailing" id="T4d-ur-XKM"/>
+                                <constraint firstAttribute="height" constant="60" id="lCc-i1-TLp"/>
+                                <constraint firstItem="fBp-l6-nG8" firstAttribute="leading" secondItem="ya0-iW-x0m" secondAttribute="leading" id="seN-ez-xpv"/>
+                            </constraints>
+                        </customView>
+                        <scrollView borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" hasVerticalScroller="NO" translatesAutoresizingMaskIntoConstraints="NO" id="j6W-JS-n65">
+                            <rect key="frame" x="0.0" y="100" width="262" height="24"/>
+                            <clipView key="contentView" drawsBackground="NO" id="5A4-34-oQ2">
+                                <rect key="frame" x="0.0" y="0.0" width="262" height="24"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <subviews>
+                                    <textView wantsLayer="YES" editable="NO" drawsBackground="NO" importsGraphics="NO" richText="NO" verticallyResizable="YES" spellingCorrection="YES" smartInsertDelete="YES" id="Kci-hg-np7">
+                                        <rect key="frame" x="0.0" y="0.0" width="262" height="24"/>
+                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                        <color key="backgroundColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <size key="minSize" width="262" height="24"/>
+                                        <size key="maxSize" width="279" height="10000000"/>
+                                        <color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/>
+                                    </textView>
+                                </subviews>
+                                <color key="backgroundColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                            </clipView>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="24" id="fDd-Ml-i9Y"/>
+                            </constraints>
+                            <scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="jbc-6c-Kba">
+                                <rect key="frame" x="-100" y="-100" width="225" height="15"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                            </scroller>
+                            <scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="NO" id="why-2z-eUa">
+                                <rect key="frame" x="-100" y="-100" width="15" height="24"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                            </scroller>
+                        </scrollView>
+                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ozx-O2-GQT">
+                            <rect key="frame" x="-2" y="0.0" width="125" height="16"/>
+                            <textFieldCell key="cell" lineBreakMode="clipping" title="Up to 24 characters" id="8aG-TJ-Lff">
+                                <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>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="ya0-iW-x0m" firstAttribute="leading" secondItem="foZ-Fi-vvJ" secondAttribute="leading" id="9lU-u3-I1x"/>
+                        <constraint firstItem="j6W-JS-n65" firstAttribute="top" secondItem="HEe-ho-aMd" secondAttribute="bottom" constant="32" id="CZ8-L2-VLh"/>
+                        <constraint firstItem="ozx-O2-GQT" firstAttribute="leading" secondItem="foZ-Fi-vvJ" secondAttribute="leading" id="DGV-lT-Ps5"/>
+                        <constraint firstItem="HEe-ho-aMd" firstAttribute="leading" secondItem="foZ-Fi-vvJ" secondAttribute="leading" id="KvT-NB-g50"/>
+                        <constraint firstAttribute="trailing" secondItem="ya0-iW-x0m" secondAttribute="trailing" id="Yf8-Cb-Lnd"/>
+                        <constraint firstItem="j6W-JS-n65" firstAttribute="leading" secondItem="foZ-Fi-vvJ" secondAttribute="leading" id="eEk-y5-PC5"/>
+                        <constraint firstAttribute="height" constant="180" id="iXu-XP-G0N"/>
+                        <constraint firstItem="ya0-iW-x0m" firstAttribute="top" secondItem="j6W-JS-n65" secondAttribute="bottom" constant="16" id="mxd-Tn-BZq"/>
+                        <constraint firstAttribute="trailing" secondItem="j6W-JS-n65" secondAttribute="trailing" id="tTW-W1-bq8"/>
+                        <constraint firstItem="HEe-ho-aMd" firstAttribute="top" secondItem="foZ-Fi-vvJ" secondAttribute="top" id="wQG-8l-QVy"/>
+                        <constraint firstAttribute="bottom" secondItem="ozx-O2-GQT" secondAttribute="bottom" id="zTZ-R5-0sQ"/>
+                    </constraints>
+                </customView>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="NSS-Ih-pbK">
+                    <rect key="frame" x="32" y="108" width="262" height="68"/>
+                    <subviews>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Fiq-Tb-FhO">
+                            <rect key="frame" x="0.0" y="36" width="262" height="32"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="32" id="WPN-Ja-EzQ"/>
+                            </constraints>
+                            <buttonCell key="cell" type="square" title="Login" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="zzl-rj-AU8">
+                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                            <connections>
+                                <action selector="loginButtonAction:" target="-2" id="FA6-Uk-r07"/>
+                            </connections>
+                        </button>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="cWe-4o-FbE">
+                            <rect key="frame" x="60" y="12" width="143" height="16"/>
+                            <buttonCell key="cell" type="square" title="Forgot your password?" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="bVq-mm-eV1">
+                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                            <connections>
+                                <action selector="forgotPasswordButtonAction:" target="-2" id="PTh-VB-az5"/>
+                            </connections>
+                        </button>
+                    </subviews>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="68" id="A9Z-hl-oXG"/>
+                        <constraint firstItem="Fiq-Tb-FhO" firstAttribute="top" secondItem="NSS-Ih-pbK" secondAttribute="top" id="CVb-Uv-gft"/>
+                        <constraint firstAttribute="trailing" secondItem="Fiq-Tb-FhO" secondAttribute="trailing" id="OT5-03-nlO"/>
+                        <constraint firstItem="cWe-4o-FbE" firstAttribute="centerX" secondItem="NSS-Ih-pbK" secondAttribute="centerX" id="UpF-Rc-0Ry"/>
+                        <constraint firstItem="Fiq-Tb-FhO" firstAttribute="leading" secondItem="NSS-Ih-pbK" secondAttribute="leading" id="WQI-89-k7A"/>
+                        <constraint firstItem="cWe-4o-FbE" firstAttribute="top" secondItem="Fiq-Tb-FhO" secondAttribute="bottom" constant="8" id="eM0-r7-erm"/>
+                    </constraints>
+                </customView>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="ff5-IQ-deE" customClass="KMLightMemberAlertView" customModule="PDF_Office" customModuleProvider="target">
+                    <rect key="frame" x="0.0" y="0.0" width="326" height="48"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="48" id="jHg-Mk-TWh"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="trailing" secondItem="NSS-Ih-pbK" secondAttribute="trailing" constant="32" id="7uK-IL-i6n"/>
+                <constraint firstAttribute="trailing" secondItem="foZ-Fi-vvJ" secondAttribute="trailing" constant="32" id="Pvk-JE-bjM"/>
+                <constraint firstItem="foZ-Fi-vvJ" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="32" id="U26-5M-VY6"/>
+                <constraint firstItem="foZ-Fi-vvJ" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" constant="48" id="Vks-JI-xSi"/>
+                <constraint firstAttribute="bottom" secondItem="ff5-IQ-deE" secondAttribute="bottom" id="b3q-cc-QmC"/>
+                <constraint firstItem="NSS-Ih-pbK" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="32" id="bDW-Px-cba"/>
+                <constraint firstAttribute="trailing" secondItem="ff5-IQ-deE" secondAttribute="trailing" id="fQk-ls-GJK"/>
+                <constraint firstItem="ff5-IQ-deE" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="hy4-3Q-V1A"/>
+                <constraint firstItem="ff5-IQ-deE" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="szj-DX-xm8"/>
+                <constraint firstItem="NSS-Ih-pbK" firstAttribute="top" secondItem="foZ-Fi-vvJ" secondAttribute="bottom" constant="16" id="xVn-C4-gEG"/>
+            </constraints>
+            <point key="canvasLocation" x="-17" y="189"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="icon_btn_show" width="16" height="16"/>
+    </resources>
+</document>

+ 28 - 15
PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMLoginView.swift

@@ -7,8 +7,8 @@
 
 import Cocoa
 
-typealias KMLoginViewRegisterAction = (_ view: KMLoginView) -> Void
-typealias KMLoginViewNextAction = (_ view: KMLoginView) -> Void
+typealias KMLoginViewRegisterAction = (_ view: KMLoginView, _ data: KMRegisterModel) -> Void
+typealias KMLoginViewNextAction = (_ view: KMLoginView, _ data: KMRegisterModel) -> Void
 
 class KMLoginView: KMBaseXibView {
     
@@ -21,7 +21,13 @@ class KMLoginView: KMBaseXibView {
     
     var nextAction: KMLoginViewNextAction?
     var registerAction: KMLoginViewRegisterAction?
-    
+    var model: KMRegisterModel = KMRegisterModel()
+    var email: String = "" {
+        didSet {
+            self.model.email = self.email
+            self.reloadData()
+        }
+    }
     override func draw(_ dirtyRect: NSRect) {
         super.draw(dirtyRect)
 
@@ -37,31 +43,37 @@ class KMLoginView: KMBaseXibView {
         
         self.registerTextView.delegate = self
         self.registerTextView.isEditable = false
-        
     }
     
-    override func updateLanguage() {
+    override func updateUI() {
+        super.updateUI()
         self.backgroundColor(NSColor(hex: "#FFFFFF"))
         
         self.titleLabel.textColor = NSColor(hex: "#252629")
         self.titleLabel.font = NSFont.SFProTextRegular(20.0)
-        self.titleLabel.stringValue = NSLocalizedString("Login", comment: "")
         
         self.loginDescripeLabel.textColor = NSColor(hex: "#252629")
         self.loginDescripeLabel.font = NSFont.SFProTextRegular(14.0)
-        self.loginDescripeLabel.stringValue = NSLocalizedString("Enter email account", comment: "")
-        
-        self.textFieldContentView.border(NSColor(hex: "#1770F4"), 1, 4)
         
         self.emailTextField.textColor = NSColor(hex: "#252629")
         self.emailTextField.font = NSFont.SFProTextRegular(14.0)
-        self.emailTextField.placeholderAttributedString = NSAttributedString(string: NSLocalizedString("Enter email address", comment: ""), attributes: [NSAttributedString.Key.font : NSFont.SFProTextRegular(14.0), NSAttributedString.Key.foregroundColor: NSColor(hex: "#94989C") ])
         self.emailTextField.border(NSColor(hex: "#FFFFFF"), 1, 0)
         
         self.nextButton.contentTintColor = NSColor(hex: "#FFFFFF")
         self.nextButton.font = NSFont.SFProTextRegular(14.0)
         self.nextButton.border(NSColor(hex: "#273C62"), 0, 4)
         self.nextButton.backgroundColor(NSColor(hex: "#273C62"))
+    }
+    
+    override func updateLanguage() {
+        self.titleLabel.stringValue = NSLocalizedString("Login", comment: "")
+        
+        self.loginDescripeLabel.stringValue = NSLocalizedString("Enter email account", comment: "")
+        
+        self.textFieldContentView.border(NSColor(hex: "#1770F4"), 1, 4)
+        
+        self.emailTextField.placeholderAttributedString = NSAttributedString(string: NSLocalizedString("Enter email address", comment: ""), attributes: [NSAttributedString.Key.font : NSFont.SFProTextRegular(14.0), NSAttributedString.Key.foregroundColor: NSColor(hex: "#94989C") ])
+        
         
         let string = NSLocalizedString("Dont’t have an account yet?", comment: "") + "  " + NSLocalizedString("Register", comment: "")
         let attributedString = NSMutableAttributedString.init(string: string)
@@ -84,6 +96,7 @@ class KMLoginView: KMBaseXibView {
     
     override func reloadData() {
         super.reloadData()
+        self.emailTextField.stringValue = self.model.email
         
         self.emainDidEndEditing()
     }
@@ -100,7 +113,7 @@ extension KMLoginView: NSTextViewDelegate {
             guard let callBack = self.registerAction else { return true }
             
             print("链接点击")
-            callBack(self)
+            callBack(self, self.model)
         }
         return true
     }
@@ -118,6 +131,7 @@ extension KMLoginView: NSTextFieldDelegate {
     func controlTextDidChange(_ obj: Notification) {
         let textField = obj.object as? NSTextField
         if (textField == self.emailTextField) {
+            self.model.email = self.emailTextField.stringValue
             self.emainDidEndEditing()
         }
     }
@@ -127,12 +141,11 @@ extension KMLoginView: NSTextFieldDelegate {
 protocol KMLoginViewAction {}
 extension KMLoginView: KMLoginViewAction {
     @IBAction func nextButtonAction(_ sender: Any) {
-        guard let callback = self.nextAction else { return }
-        print("下一步")
-        callback(self)
+        guard let callBack = self.nextAction else { return }
+        
+        callBack(self, self.model)
     }
     
-    
     func emainDidEndEditing() {
         if KMLoginView.verificationEmail(self.emailTextField.stringValue) {
             self.nextButton.isEnabled = true

+ 12 - 12
PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMLoginView.xib

@@ -19,14 +19,14 @@
         <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="343" height="461"/>
+            <rect key="frame" x="0.0" y="0.0" width="326" height="461"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="tLe-UW-r6i">
-                    <rect key="frame" x="0.0" y="0.0" width="343" height="461"/>
+                    <rect key="frame" x="0.0" y="0.0" width="326" height="461"/>
                     <subviews>
                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="NfV-rH-QAy">
-                            <rect key="frame" x="32" y="283" width="279" height="130"/>
+                            <rect key="frame" x="32" y="283" width="262" height="130"/>
                             <subviews>
                                 <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="oIw-PI-v0k">
                                     <rect key="frame" x="-2" y="106" width="53" height="24"/>
@@ -40,7 +40,7 @@
                                     </connections>
                                 </textField>
                                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="oZ4-WS-K2q">
-                                    <rect key="frame" x="0.0" y="14" width="279" height="60"/>
+                                    <rect key="frame" x="0.0" y="14" width="262" height="60"/>
                                     <subviews>
                                         <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="MN2-pV-Yar">
                                             <rect key="frame" x="-2" y="44" width="124" height="16"/>
@@ -51,10 +51,10 @@
                                             </textFieldCell>
                                         </textField>
                                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="Qkr-ZD-SqP">
-                                            <rect key="frame" x="0.0" y="4" width="279" height="32"/>
+                                            <rect key="frame" x="0.0" y="4" width="262" height="32"/>
                                             <subviews>
                                                 <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ux1-lu-0lN" customClass="FocusAwareTextField" customModule="PDF_Office" customModuleProvider="target">
-                                                    <rect key="frame" x="8" y="5" width="263" height="22"/>
+                                                    <rect key="frame" x="8" y="5" width="246" height="22"/>
                                                     <constraints>
                                                         <constraint firstAttribute="height" constant="22" id="Uru-Xo-pog"/>
                                                     </constraints>
@@ -93,10 +93,10 @@
                             </constraints>
                         </customView>
                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="UB6-Hp-ebR">
-                            <rect key="frame" x="0.0" y="116" width="343" height="68"/>
+                            <rect key="frame" x="0.0" y="116" width="326" height="68"/>
                             <subviews>
                                 <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="qvE-sE-RrB">
-                                    <rect key="frame" x="32" y="36" width="279" height="32"/>
+                                    <rect key="frame" x="32" y="36" width="262" height="32"/>
                                     <constraints>
                                         <constraint firstAttribute="height" constant="32" id="7sU-kL-22j"/>
                                     </constraints>
@@ -109,17 +109,17 @@
                                     </connections>
                                 </button>
                                 <scrollView borderType="none" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" hasVerticalScroller="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4Jh-0w-5Hf">
-                                    <rect key="frame" x="32" y="4" width="279" height="24"/>
+                                    <rect key="frame" x="32" y="4" width="262" height="24"/>
                                     <clipView key="contentView" drawsBackground="NO" id="bPn-g7-5ox">
-                                        <rect key="frame" x="0.0" y="0.0" width="279" height="24"/>
+                                        <rect key="frame" x="0.0" y="0.0" width="262" height="24"/>
                                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                         <subviews>
                                             <textView wantsLayer="YES" editable="NO" drawsBackground="NO" importsGraphics="NO" richText="NO" verticallyResizable="YES" spellingCorrection="YES" smartInsertDelete="YES" id="iEl-CK-gIF">
-                                                <rect key="frame" x="0.0" y="0.0" width="279" height="24"/>
+                                                <rect key="frame" x="0.0" y="0.0" width="262" height="24"/>
                                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                                 <color key="textColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
                                                 <color key="backgroundColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
-                                                <size key="minSize" width="279" height="24"/>
+                                                <size key="minSize" width="262" height="24"/>
                                                 <size key="maxSize" width="279" height="10000000"/>
                                                 <color key="insertionPointColor" name="textColor" catalog="System" colorSpace="catalog"/>
                                             </textView>

+ 54 - 0
PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMRegisterSuccessView.swift

@@ -0,0 +1,54 @@
+//
+//  KMRegisterSuccessView.swift
+//  PDF Office
+//
+//  Created by lizhe on 2023/2/24.
+//
+
+import Cocoa
+
+typealias KMRegisterSuccessViewDoneAction = (_ view: KMRegisterSuccessView) -> Void
+class KMRegisterSuccessView: KMBaseXibView {
+
+    @IBOutlet weak var titleLabel: NSTextField!
+    @IBOutlet weak var imageView: NSView!
+    @IBOutlet weak var doneButton: NSButton!
+    
+    var doneAction: KMRegisterSuccessViewDoneAction?
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    override func setup() {
+        super.setup()
+        
+        self.titleLabel.font = NSFont.SFProTextSemibold(20.0)
+        self.titleLabel.textColor = NSColor(hex: "#252629")
+        
+        self.doneButton.font = NSFont.SFProTextSemibold(14.0)
+        self.doneButton.contentTintColor = NSColor(hex: "#FFFFFF")
+        self.doneButton.backgroundColor(NSColor(hex: "#273C62"))
+        self.doneButton.border(NSColor(hex: "#273C62"), 1, 4)
+        
+        self.imageView.backgroundColor(NSColor(hex: "#D9D9D9"))
+    }
+    
+    override func reloadData() {
+        super.reloadData()
+        
+    }
+    
+    override func updateLanguage() {
+        super.updateLanguage()
+        self.titleLabel.stringValue = NSLocalizedString("Register successfully", comment: "")
+        self.doneButton.title = NSLocalizedString("Getting Started", comment: "")
+    }
+    
+    @IBAction func doneButtonAction(_ sender: Any) {
+        guard let callBack = doneAction else { return }
+        
+        callBack(self)
+    }
+}

+ 74 - 0
PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMRegisterSuccessView.xib

@@ -0,0 +1,74 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMRegisterSuccessView" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="doneButton" destination="BHA-OV-pZP" id="jf3-NX-5Ue"/>
+                <outlet property="imageView" destination="7K1-g6-KF8" id="AWD-Xz-DEM"/>
+                <outlet property="titleLabel" destination="4cO-4T-Pi4" id="ClA-UK-hvm"/>
+            </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="420"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="NLK-Uq-H0v">
+                    <rect key="frame" x="58" y="166" width="211" height="172"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="7K1-g6-KF8">
+                            <rect key="frame" x="41" y="44" width="128" height="128"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="128" id="FNT-IQ-6TM"/>
+                                <constraint firstAttribute="height" constant="128" id="ypI-yu-Ema"/>
+                            </constraints>
+                        </customView>
+                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4cO-4T-Pi4">
+                            <rect key="frame" x="39" y="12" width="133" height="16"/>
+                            <textFieldCell key="cell" lineBreakMode="clipping" title="Register successfully" id="beW-uQ-p9L">
+                                <font key="font" usesAppearanceFont="YES"/>
+                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                            </textFieldCell>
+                        </textField>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="7K1-g6-KF8" firstAttribute="top" secondItem="NLK-Uq-H0v" secondAttribute="top" id="3q6-dd-H2W"/>
+                        <constraint firstItem="7K1-g6-KF8" firstAttribute="centerX" secondItem="NLK-Uq-H0v" secondAttribute="centerX" id="LxI-7f-qwN"/>
+                        <constraint firstAttribute="height" constant="172" id="Scu-gZ-lye"/>
+                        <constraint firstItem="4cO-4T-Pi4" firstAttribute="centerX" secondItem="NLK-Uq-H0v" secondAttribute="centerX" id="arp-sD-m5Z"/>
+                        <constraint firstAttribute="width" constant="211" id="b8d-Fs-QJd"/>
+                        <constraint firstItem="4cO-4T-Pi4" firstAttribute="top" secondItem="7K1-g6-KF8" secondAttribute="bottom" constant="16" id="l8t-kY-3Ab"/>
+                    </constraints>
+                </customView>
+                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="BHA-OV-pZP">
+                    <rect key="frame" x="32" y="114" width="262" height="32"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="32" id="ZuO-mp-mLq"/>
+                        <constraint firstAttribute="width" constant="262" id="a4o-9T-Y67"/>
+                    </constraints>
+                    <buttonCell key="cell" type="square" title="Getting Started" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="Z4z-3P-BWh">
+                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                        <font key="font" metaFont="system"/>
+                    </buttonCell>
+                    <connections>
+                        <action selector="doneButtonAction:" target="-2" id="Eoy-fL-R6H"/>
+                    </connections>
+                </button>
+            </subviews>
+            <constraints>
+                <constraint firstItem="BHA-OV-pZP" firstAttribute="top" secondItem="NLK-Uq-H0v" secondAttribute="bottom" constant="20" id="DTn-v1-N3U"/>
+                <constraint firstItem="NLK-Uq-H0v" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" constant="82" id="R0u-Ba-L0G"/>
+                <constraint firstItem="BHA-OV-pZP" firstAttribute="centerX" secondItem="c22-O7-iKe" secondAttribute="centerX" id="S1z-ii-bIg"/>
+                <constraint firstItem="NLK-Uq-H0v" firstAttribute="centerX" secondItem="c22-O7-iKe" secondAttribute="centerX" id="mwJ-eh-RLh"/>
+            </constraints>
+            <point key="canvasLocation" x="38" y="231.5"/>
+        </customView>
+    </objects>
+</document>

+ 7 - 7
PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMRegisterView.swift

@@ -7,8 +7,8 @@
 
 import Cocoa
 
-typealias KMRegisterViewLoginAction = (_ view: KMRegisterView) -> Void
-typealias KMRegisterViewNextAction = (_ view: KMRegisterView) -> Void
+typealias KMRegisterViewLoginAction = (_ view: KMRegisterView, _ data: KMRegisterModel) -> Void
+typealias KMRegisterViewNextAction = (_ view: KMRegisterView, _ data: KMRegisterModel) -> Void
 
 class KMRegisterView: KMBaseXibView {
     
@@ -181,7 +181,7 @@ class KMRegisterView: KMBaseXibView {
             self.showButton.isHidden = false
         }
         
-        if self.model.isSecure {
+        if self.model.secure {
             self.showButton.image = NSImage(named: "icon_btn_hide")
             self.passwordTextField.isHidden = true
             self.passwordSecureTextField.isHidden = false
@@ -229,7 +229,7 @@ extension KMRegisterView: NSTextViewDelegate {
             guard let callBack = self.loginAction else { return true }
 
             print("链接点击")
-            callBack(self)
+            callBack(self, self.model)
         } else if link as! String == "privacy://" {
             print("privacy点击")
         } else if link as! String == "license://" {
@@ -243,13 +243,13 @@ extension KMRegisterView: NSTextViewDelegate {
 protocol KMRegisterViewAction {}
 extension KMRegisterView: KMRegisterViewAction {
     @IBAction func nextButtonAction(_ sender: Any) {
-        guard let callback = self.nextAction else { return }
+        guard let callBack = self.nextAction else { return }
         print("KMRegisterView 下一步")
-        callback(self)
+        callBack(self, self.model)
     }
     
     @IBAction func showButtonAction(_ sender: NSButton) {
-        self.presenter.changeSecure(secure: !self.model.isSecure)
+        self.presenter.changeSecure(secure: !self.model.secure)
     }
 }
 

+ 233 - 0
PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMResetPasswordView.swift

@@ -0,0 +1,233 @@
+//
+//  KMResetPasswordView.swift
+//  PDF Office
+//
+//  Created by lizhe on 2023/2/25.
+//
+
+import Cocoa
+
+typealias KMResetPasswordViewDoneAction = (_ view: KMResetPasswordView, _ data: KMRegisterModel) -> Void
+class KMResetPasswordView: KMBaseXibView {
+
+    @IBOutlet weak var titleLabel: NSTextField!
+    
+    @IBOutlet weak var passwordContentView: NSView!
+    @IBOutlet weak var passwordTextField: FocusAwareTextField!
+    @IBOutlet weak var passwordSecureTextField: FocusAwareSecureTextField!
+    @IBOutlet weak var showButton: NSButton!
+    @IBOutlet weak var passwordAlertLabel: NSTextField!
+    
+    @IBOutlet weak var rePasswordContentView: NSView!
+    @IBOutlet weak var rePasswordTextField: FocusAwareTextField!
+    @IBOutlet weak var rePasswordSecureTextField: FocusAwareSecureTextField!
+    @IBOutlet weak var reShowButton: NSButton!
+    @IBOutlet weak var rePasswordAlertLabel: NSTextField!
+    @IBOutlet weak var doneButton: NSButton!
+    
+    var presenter: KMRegisterPresenter = KMRegisterPresenter()
+    var model: KMRegisterModel = KMRegisterModel()
+    
+    var email: String = "" {
+        didSet {
+            self.model.email = self.email
+        }
+    }
+    
+    var doneAction: KMResetPasswordViewDoneAction?
+    
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    override func setup() {
+        super.setup()
+        
+        self.titleLabel.font = NSFont.SFProTextSemibold(20.0)
+        self.titleLabel.textColor = NSColor(hex: "#252629")
+        
+        
+        self.passwordTextField.delegate = self
+        self.passwordTextField.onFocus = {
+            self.passwordContentView.border(NSColor(hex: "#1770F4"), 1, 4)
+        }
+        
+        
+        self.rePasswordTextField.delegate = self
+        self.rePasswordTextField.onFocus = {
+            self.rePasswordContentView.border(NSColor(hex: "#1770F4"), 1, 4)
+        }
+        
+        self.presenter.initPresenter(view: self, data: self.model)
+    }
+    
+    override func updateUI() {
+        super.updateUI()
+        //password
+        self.passwordContentView.border(NSColor(hex: "#DFE1E5"), 1, 4)
+        self.passwordTextField.textColor = NSColor(hex: "#252629")
+        self.passwordTextField.font = NSFont.SFProTextRegular(14.0)
+        self.passwordTextField.border(NSColor(hex: "#FFFFFF"), 1, 0)
+        
+        self.passwordSecureTextField.textColor = NSColor(hex: "#252629")
+        self.passwordSecureTextField.font = NSFont.SFProTextRegular(14.0)
+        self.passwordSecureTextField.border(NSColor(hex: "#FFFFFF"), 1, 0)
+        
+        self.passwordAlertLabel.textColor = NSColor(hex: "#F3465B")
+        self.passwordAlertLabel.font = NSFont.SFProTextRegular(12.0)
+        
+        //repassword
+        self.rePasswordContentView.border(NSColor(hex: "#DFE1E5"), 1, 4)
+        self.rePasswordTextField.textColor = NSColor(hex: "#252629")
+        self.rePasswordTextField.font = NSFont.SFProTextRegular(14.0)
+        self.rePasswordTextField.border(NSColor(hex: "#FFFFFF"), 1, 0)
+        
+        self.rePasswordSecureTextField.textColor = NSColor(hex: "#252629")
+        self.rePasswordSecureTextField.font = NSFont.SFProTextRegular(14.0)
+        self.passwordSecureTextField.border(NSColor(hex: "#FFFFFF"), 1, 0)
+        
+        self.rePasswordAlertLabel.textColor = NSColor(hex: "#F3465B")
+        self.rePasswordAlertLabel.font = NSFont.SFProTextRegular(12.0)
+        
+        //done
+        self.doneButton.font = NSFont.SFProTextRegular(14.0)
+        self.doneButton.backgroundColor(NSColor(hex: "#273C62"))
+        self.doneButton.border(NSColor(hex: "#273C62"), 1, 4)
+        self.doneButton.contentTintColor = NSColor(hex: "#FFFFFF")
+    }
+    
+    override func reloadData() {
+        super.reloadData()
+        
+        self.passwordTextField.stringValue = self.model.password
+        self.passwordSecureTextField.stringValue = self.model.password
+        
+        self.rePasswordTextField.stringValue = self.model.rePassword
+        self.rePasswordSecureTextField.stringValue = self.model.rePassword
+        
+        if self.model.password == "" {
+            self.showButton.isHidden = true
+        } else {
+            self.showButton.isHidden = false
+        }
+        
+        if self.model.rePassword == "" {
+            self.reShowButton.isHidden = true
+        } else {
+            self.reShowButton.isHidden = false
+        }
+        
+        if self.model.secure {
+            self.showButton.image = NSImage(named: "icon_btn_hide")
+            self.passwordTextField.isHidden = true
+            self.passwordSecureTextField.isHidden = false
+        } else {
+            self.showButton.image = NSImage(named: "icon_btn_show")
+            self.passwordTextField.isHidden = false
+            self.passwordSecureTextField.isHidden = true
+        }
+        
+        if self.model.reSecure {
+            self.reShowButton.image = NSImage(named: "icon_btn_hide")
+            self.rePasswordTextField.isHidden = true
+            self.rePasswordSecureTextField.isHidden = false
+        } else {
+            self.reShowButton.image = NSImage(named: "icon_btn_show")
+            self.rePasswordTextField.isHidden = false
+            self.rePasswordSecureTextField.isHidden = true
+        }
+        
+        self.passwordAlertLabel.stringValue = NSLocalizedString(self.model.passwordAlertType.rawValue, comment: "")
+        
+        self.rePasswordAlertLabel.stringValue = NSLocalizedString(self.model.rePasswordAlertType.rawValue, comment: "")
+    }
+    
+    override func resetData() {
+        super.resetData()
+        self.model.password = ""
+        self.model.rePassword = ""
+        self.reloadData()
+    }
+    
+    override func updateLanguage() {
+        super.updateLanguage()
+        
+        self.titleLabel.stringValue = NSLocalizedString("Reset password", comment: "")
+        
+        self.doneButton.title = NSLocalizedString("OK", comment: "")
+        
+        //password
+        self.passwordTextField.placeholderAttributedString = NSAttributedString(string: NSLocalizedString("Enter your password", comment: ""), attributes: [NSAttributedString.Key.font : NSFont.SFProTextRegular(14.0), NSAttributedString.Key.foregroundColor: NSColor(hex: "#94989C") ])
+        
+        self.passwordSecureTextField.placeholderAttributedString = NSAttributedString(string: NSLocalizedString("Enter your password", comment: ""), attributes: [NSAttributedString.Key.font : NSFont.SFProTextRegular(14.0), NSAttributedString.Key.foregroundColor: NSColor(hex: "#94989C") ])
+    
+        self.passwordAlertLabel.stringValue = NSLocalizedString("At least 6 characters", comment: "")
+        
+        //rePassword
+        self.rePasswordTextField.placeholderAttributedString = NSAttributedString(string: NSLocalizedString("Enter your password", comment: ""), attributes: [NSAttributedString.Key.font : NSFont.SFProTextRegular(14.0), NSAttributedString.Key.foregroundColor: NSColor(hex: "#94989C") ])
+        
+        self.rePasswordSecureTextField.placeholderAttributedString = NSAttributedString(string: NSLocalizedString("Enter your password", comment: ""), attributes: [NSAttributedString.Key.font : NSFont.SFProTextRegular(14.0), NSAttributedString.Key.foregroundColor: NSColor(hex: "#94989C") ])
+    
+        self.rePasswordAlertLabel.stringValue = NSLocalizedString("At least 6 characters", comment: "")
+    }
+}
+
+protocol KMResetPasswordViewAction {}
+extension KMResetPasswordView : KMResetPasswordViewAction {
+    
+    
+    @IBAction func doneButtonAction(_ sender: Any) {
+        guard let callBack = doneAction else { return }
+        
+        callBack(self, self.model)
+    }
+    
+    @IBAction func showButtonAction(_ sender: Any) {
+        self.presenter.changeSecure(secure: !self.model.secure)
+    }
+    
+    @IBAction func reShowButtonAction(_ sender: Any) {
+        self.presenter.changeReSecure(secure: !self.model.reSecure)
+    }
+}
+
+extension KMResetPasswordView: NSTextFieldDelegate {
+    func controlTextDidEndEditing(_ obj: Notification) {
+        let textField = obj.object as? NSTextField
+        if (textField == self.passwordTextField ||
+            textField == self.passwordSecureTextField) {
+            self.passwordContentView.border(NSColor(hex: "#DFE1E5"), 1, 4)
+        }
+        
+        if (textField == self.rePasswordTextField ||
+            textField == self.rePasswordSecureTextField) {
+            self.rePasswordContentView.border(NSColor(hex: "#DFE1E5"), 1, 4)
+        }
+    }
+    
+    func controlTextDidChange(_ obj: Notification) {
+        let textField = obj.object as? NSTextField
+        if (textField == self.passwordSecureTextField ||
+            textField == self.passwordTextField) {
+            self.presenter.changePassword(string: textField!.stringValue)
+        }
+        
+        if (textField == self.rePasswordSecureTextField ||
+            textField == self.rePasswordTextField) {
+            self.presenter.changeRePassword(string: textField!.stringValue)
+        }
+    }
+}
+
+extension KMResetPasswordView: KMRegisterPresenterDelegate {
+    func showData(presenter: KMRegisterPresenter, data: KMRegisterModel) {
+        self.reloadData()
+    }
+    
+    func showAlert(presenter: KMRegisterPresenter, data: KMRegisterModel) {
+        
+    }
+}
+

+ 235 - 0
PDF Office/PDF Office/Class/KMLightMember/Controller/Login&Register/View/KMResetPasswordView.xib

@@ -0,0 +1,235 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMResetPasswordView" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="doneButton" destination="V94-fh-pV8" id="cRN-LT-Hzr"/>
+                <outlet property="passwordAlertLabel" destination="S3I-lh-2pB" id="qRx-yK-3dm"/>
+                <outlet property="passwordContentView" destination="QVr-yK-c7l" id="R30-nk-N8b"/>
+                <outlet property="passwordSecureTextField" destination="HjQ-Ir-c1K" id="hBj-ek-ohx"/>
+                <outlet property="passwordTextField" destination="9aV-vU-Yrm" id="6n4-sT-rX2"/>
+                <outlet property="rePasswordAlertLabel" destination="bA0-Va-KC7" id="FMt-Fd-dPu"/>
+                <outlet property="rePasswordContentView" destination="CYd-rp-4G4" id="hC6-65-xmy"/>
+                <outlet property="rePasswordSecureTextField" destination="TvB-NY-BFX" id="xx7-2C-ACc"/>
+                <outlet property="rePasswordTextField" destination="hqd-kg-bPA" id="1Sn-pg-XvJ"/>
+                <outlet property="reShowButton" destination="Fo5-uK-u3C" id="qFg-tC-eWi"/>
+                <outlet property="showButton" destination="sMR-TV-xrU" id="RXf-CD-CaP"/>
+                <outlet property="titleLabel" destination="fWn-WD-fax" id="JSQ-0a-dJT"/>
+            </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="420"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="mUk-T4-sYS">
+                    <rect key="frame" x="32" y="196" width="262" height="176"/>
+                    <subviews>
+                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="fWn-WD-fax">
+                            <rect key="frame" x="-2" y="160" width="37" height="16"/>
+                            <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="mII-56-f1E">
+                                <font key="font" usesAppearanceFont="YES"/>
+                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                            </textFieldCell>
+                        </textField>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="CJL-gm-MAI">
+                            <rect key="frame" x="0.0" y="62" width="262" height="54"/>
+                            <subviews>
+                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="S3I-lh-2pB">
+                                    <rect key="frame" x="-2" y="0.0" width="130" height="16"/>
+                                    <textFieldCell key="cell" lineBreakMode="clipping" title="At least 6 characters" id="pnh-bi-f56">
+                                        <font key="font" usesAppearanceFont="YES"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="QVr-yK-c7l">
+                                    <rect key="frame" x="0.0" y="22" width="262" height="32"/>
+                                    <subviews>
+                                        <textField verticalHuggingPriority="750" contentType="password" translatesAutoresizingMaskIntoConstraints="NO" id="9aV-vU-Yrm" customClass="FocusAwareTextField" customModule="PDF_Office" customModuleProvider="target">
+                                            <rect key="frame" x="8" y="5" width="222" height="22"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="22" id="jn6-yk-MJN"/>
+                                            </constraints>
+                                            <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="border" placeholderString="Enter your password" id="xkg-Pf-ceP">
+                                                <font key="font" metaFont="system"/>
+                                                <color key="textColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <color key="backgroundColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <allowedInputSourceLocales>
+                                                    <string>NSAllRomanInputSourcesLocaleIdentifier</string>
+                                                </allowedInputSourceLocales>
+                                            </textFieldCell>
+                                        </textField>
+                                        <secureTextField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="HjQ-Ir-c1K" customClass="FocusAwareSecureTextField" customModule="PDF_Office" customModuleProvider="target">
+                                            <rect key="frame" x="8" y="6" width="222" height="20"/>
+                                            <secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="border" usesSingleLineMode="YES" id="KXj-xa-VvR">
+                                                <font key="font" metaFont="system"/>
+                                                <color key="textColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <color key="backgroundColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <allowedInputSourceLocales>
+                                                    <string>NSAllRomanInputSourcesLocaleIdentifier</string>
+                                                </allowedInputSourceLocales>
+                                            </secureTextFieldCell>
+                                        </secureTextField>
+                                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="sMR-TV-xrU">
+                                            <rect key="frame" x="238" y="8" width="16" height="16"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="16" id="LzH-MR-h5X"/>
+                                                <constraint firstAttribute="width" constant="16" id="pAg-sF-bOZ"/>
+                                            </constraints>
+                                            <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="icon_btn_show" imagePosition="only" alignment="center" imageScaling="proportionallyDown" inset="2" id="5zp-Fc-2vi">
+                                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                <font key="font" metaFont="system"/>
+                                            </buttonCell>
+                                            <connections>
+                                                <action selector="showButtonAction:" target="-2" id="Jlh-MO-TZq"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <constraints>
+                                        <constraint firstItem="HjQ-Ir-c1K" firstAttribute="centerY" secondItem="QVr-yK-c7l" secondAttribute="centerY" id="3qb-Ci-ZOP"/>
+                                        <constraint firstAttribute="trailing" secondItem="sMR-TV-xrU" secondAttribute="trailing" constant="8" id="8nw-X1-L8E"/>
+                                        <constraint firstItem="sMR-TV-xrU" firstAttribute="leading" secondItem="HjQ-Ir-c1K" secondAttribute="trailing" constant="8" id="8zr-6H-s0e"/>
+                                        <constraint firstItem="HjQ-Ir-c1K" firstAttribute="leading" secondItem="QVr-yK-c7l" secondAttribute="leading" constant="8" id="UMT-6I-rlf"/>
+                                        <constraint firstAttribute="height" constant="32" id="V5P-sm-R6m"/>
+                                        <constraint firstItem="sMR-TV-xrU" firstAttribute="centerY" secondItem="QVr-yK-c7l" secondAttribute="centerY" id="XpB-Oq-s9E"/>
+                                        <constraint firstItem="9aV-vU-Yrm" firstAttribute="centerY" secondItem="QVr-yK-c7l" secondAttribute="centerY" id="ZyE-XJ-gIh"/>
+                                        <constraint firstItem="sMR-TV-xrU" firstAttribute="leading" secondItem="9aV-vU-Yrm" secondAttribute="trailing" constant="8" id="mFs-dT-MGd"/>
+                                        <constraint firstItem="9aV-vU-Yrm" firstAttribute="leading" secondItem="QVr-yK-c7l" secondAttribute="leading" constant="8" id="wBf-Vn-aHr"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="54" id="BOB-OL-22Y"/>
+                                <constraint firstItem="QVr-yK-c7l" firstAttribute="leading" secondItem="CJL-gm-MAI" secondAttribute="leading" id="FSN-rW-pgM"/>
+                                <constraint firstAttribute="trailing" secondItem="QVr-yK-c7l" secondAttribute="trailing" id="HzA-DY-zZF"/>
+                                <constraint firstItem="QVr-yK-c7l" firstAttribute="top" secondItem="CJL-gm-MAI" secondAttribute="top" id="KSj-KW-iUy"/>
+                                <constraint firstItem="S3I-lh-2pB" firstAttribute="leading" secondItem="CJL-gm-MAI" secondAttribute="leading" id="LIP-7P-Mur"/>
+                                <constraint firstAttribute="bottom" secondItem="S3I-lh-2pB" secondAttribute="bottom" id="gwd-7T-Q2Z"/>
+                            </constraints>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="Ewv-hc-4gp">
+                            <rect key="frame" x="0.0" y="0.0" width="262" height="54"/>
+                            <subviews>
+                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bA0-Va-KC7">
+                                    <rect key="frame" x="-2" y="0.0" width="130" height="16"/>
+                                    <textFieldCell key="cell" lineBreakMode="clipping" title="At least 6 characters" id="RZK-lh-eFc">
+                                        <font key="font" usesAppearanceFont="YES"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                                <customView translatesAutoresizingMaskIntoConstraints="NO" id="CYd-rp-4G4">
+                                    <rect key="frame" x="0.0" y="22" width="262" height="32"/>
+                                    <subviews>
+                                        <textField verticalHuggingPriority="750" contentType="password" translatesAutoresizingMaskIntoConstraints="NO" id="hqd-kg-bPA" customClass="FocusAwareTextField" customModule="PDF_Office" customModuleProvider="target">
+                                            <rect key="frame" x="8" y="5" width="222" height="22"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="22" id="spi-7i-Sgi"/>
+                                            </constraints>
+                                            <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="border" placeholderString="Enter your password" id="aHp-84-NdC">
+                                                <font key="font" metaFont="system"/>
+                                                <color key="textColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <color key="backgroundColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <allowedInputSourceLocales>
+                                                    <string>NSAllRomanInputSourcesLocaleIdentifier</string>
+                                                </allowedInputSourceLocales>
+                                            </textFieldCell>
+                                        </textField>
+                                        <secureTextField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="TvB-NY-BFX" customClass="FocusAwareSecureTextField" customModule="PDF_Office" customModuleProvider="target">
+                                            <rect key="frame" x="8" y="6" width="222" height="20"/>
+                                            <secureTextFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="border" usesSingleLineMode="YES" id="q1a-hJ-YJy">
+                                                <font key="font" metaFont="system"/>
+                                                <color key="textColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <color key="backgroundColor" red="1" green="0.99843658089999998" blue="0.99619259260000004" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <allowedInputSourceLocales>
+                                                    <string>NSAllRomanInputSourcesLocaleIdentifier</string>
+                                                </allowedInputSourceLocales>
+                                            </secureTextFieldCell>
+                                        </secureTextField>
+                                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Fo5-uK-u3C">
+                                            <rect key="frame" x="238" y="8" width="16" height="16"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="16" id="ke5-t5-jyp"/>
+                                                <constraint firstAttribute="height" constant="16" id="xKd-Eb-8tW"/>
+                                            </constraints>
+                                            <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="icon_btn_show" imagePosition="only" alignment="center" imageScaling="proportionallyDown" inset="2" id="9WP-V5-xMa">
+                                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                                <font key="font" metaFont="system"/>
+                                            </buttonCell>
+                                            <connections>
+                                                <action selector="reShowButtonAction:" target="-2" id="gbT-Xh-CBQ"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <constraints>
+                                        <constraint firstItem="Fo5-uK-u3C" firstAttribute="leading" secondItem="hqd-kg-bPA" secondAttribute="trailing" constant="8" id="5fH-4Y-pii"/>
+                                        <constraint firstAttribute="height" constant="32" id="6yn-4x-7gu"/>
+                                        <constraint firstItem="Fo5-uK-u3C" firstAttribute="leading" secondItem="TvB-NY-BFX" secondAttribute="trailing" constant="8" id="JJ7-4c-rYa"/>
+                                        <constraint firstItem="hqd-kg-bPA" firstAttribute="centerY" secondItem="CYd-rp-4G4" secondAttribute="centerY" id="VEw-Ms-44n"/>
+                                        <constraint firstAttribute="trailing" secondItem="Fo5-uK-u3C" secondAttribute="trailing" constant="8" id="Vd2-db-CKZ"/>
+                                        <constraint firstItem="TvB-NY-BFX" firstAttribute="centerY" secondItem="CYd-rp-4G4" secondAttribute="centerY" id="cmf-8z-rgP"/>
+                                        <constraint firstItem="TvB-NY-BFX" firstAttribute="leading" secondItem="CYd-rp-4G4" secondAttribute="leading" constant="8" id="g2V-4j-shF"/>
+                                        <constraint firstItem="Fo5-uK-u3C" firstAttribute="centerY" secondItem="CYd-rp-4G4" secondAttribute="centerY" id="gWC-9U-5bE"/>
+                                        <constraint firstItem="hqd-kg-bPA" firstAttribute="leading" secondItem="CYd-rp-4G4" secondAttribute="leading" constant="8" id="wSu-eI-QZu"/>
+                                    </constraints>
+                                </customView>
+                            </subviews>
+                            <constraints>
+                                <constraint firstAttribute="bottom" secondItem="bA0-Va-KC7" secondAttribute="bottom" id="5tn-Fa-ToE"/>
+                                <constraint firstAttribute="trailing" secondItem="CYd-rp-4G4" secondAttribute="trailing" id="FFR-Pi-b4J"/>
+                                <constraint firstItem="CYd-rp-4G4" firstAttribute="leading" secondItem="Ewv-hc-4gp" secondAttribute="leading" id="R9j-NN-dHD"/>
+                                <constraint firstItem="CYd-rp-4G4" firstAttribute="top" secondItem="Ewv-hc-4gp" secondAttribute="top" id="W8w-ag-ftL"/>
+                                <constraint firstAttribute="height" constant="54" id="bX7-V6-BWs"/>
+                                <constraint firstItem="bA0-Va-KC7" firstAttribute="leading" secondItem="Ewv-hc-4gp" secondAttribute="leading" id="jQo-m2-Tn5"/>
+                            </constraints>
+                        </customView>
+                    </subviews>
+                    <constraints>
+                        <constraint firstAttribute="trailing" secondItem="Ewv-hc-4gp" secondAttribute="trailing" id="3ct-ut-6Ce"/>
+                        <constraint firstItem="Ewv-hc-4gp" firstAttribute="top" secondItem="CJL-gm-MAI" secondAttribute="bottom" constant="8" id="CnB-Fx-4qZ"/>
+                        <constraint firstAttribute="height" constant="176" id="Qac-wZ-nte"/>
+                        <constraint firstItem="Ewv-hc-4gp" firstAttribute="leading" secondItem="mUk-T4-sYS" secondAttribute="leading" id="Vgd-N1-qHd"/>
+                        <constraint firstItem="CJL-gm-MAI" firstAttribute="leading" secondItem="mUk-T4-sYS" secondAttribute="leading" id="XtP-Yv-phI"/>
+                        <constraint firstAttribute="trailing" secondItem="CJL-gm-MAI" secondAttribute="trailing" id="mt0-IU-wEb"/>
+                        <constraint firstItem="fWn-WD-fax" firstAttribute="top" secondItem="mUk-T4-sYS" secondAttribute="top" id="ofb-ZU-JBM"/>
+                        <constraint firstItem="fWn-WD-fax" firstAttribute="leading" secondItem="mUk-T4-sYS" secondAttribute="leading" id="uvw-fm-By2"/>
+                        <constraint firstItem="CJL-gm-MAI" firstAttribute="top" secondItem="mUk-T4-sYS" secondAttribute="top" constant="60" id="ygQ-vA-ZI2"/>
+                    </constraints>
+                </customView>
+                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="V94-fh-pV8">
+                    <rect key="frame" x="32" y="148" width="262" height="32"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="32" id="aM1-E6-2KD"/>
+                    </constraints>
+                    <buttonCell key="cell" type="square" title="OK" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="CkC-c8-RDw">
+                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                        <font key="font" metaFont="system"/>
+                    </buttonCell>
+                    <connections>
+                        <action selector="doneButtonAction:" target="-2" id="dNf-3V-QJI"/>
+                    </connections>
+                </button>
+            </subviews>
+            <constraints>
+                <constraint firstItem="V94-fh-pV8" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="32" id="EAi-mb-lZZ"/>
+                <constraint firstItem="mUk-T4-sYS" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" constant="48" id="LcV-WK-Heq"/>
+                <constraint firstItem="V94-fh-pV8" firstAttribute="top" secondItem="mUk-T4-sYS" secondAttribute="bottom" constant="16" id="UzI-aD-Ghg"/>
+                <constraint firstAttribute="trailing" secondItem="mUk-T4-sYS" secondAttribute="trailing" constant="32" id="aqE-bX-QPV"/>
+                <constraint firstAttribute="trailing" secondItem="V94-fh-pV8" secondAttribute="trailing" constant="32" id="pDK-YG-Hyq"/>
+                <constraint firstItem="mUk-T4-sYS" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="32" id="sZB-qr-tE0"/>
+            </constraints>
+            <point key="canvasLocation" x="61" y="252"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="icon_btn_show" width="16" height="16"/>
+    </resources>
+</document>

+ 40 - 0
PDF Office/PDF Office/Class/KMLightMember/Controller/VerificationCode/View/KMLightMemberAlertView.swift

@@ -0,0 +1,40 @@
+//
+//  KMLightMemberAlertView.swift
+//  PDF Office
+//
+//  Created by lizhe on 2023/2/24.
+//
+
+import Cocoa
+
+class KMLightMemberAlertView: KMBaseXibView {
+
+    @IBOutlet weak var titleLabel: NSTextField!
+    @IBOutlet weak var titleContentView: NSView!
+    var type: KMRegisterVerificationCodeState = .unknow
+    override func draw(_ dirtyRect: NSRect) {
+        super.draw(dirtyRect)
+
+        // Drawing code here.
+    }
+    
+    override func setup() {
+        super.setup()
+    }
+    
+    override func reloadData() {
+        super.reloadData()
+        
+        self.titleLabel.stringValue = NSLocalizedString(type.rawValue, comment: "")
+        if self.type == .unknow ||
+            self.type == .success {
+            self.contentView.isHidden = true
+        } else {
+            self.contentView.isHidden = false
+        }
+    }
+    
+    override func updateLanguage() {
+        super.updateLanguage()
+    }
+}

+ 60 - 0
PDF Office/PDF Office/Class/KMLightMember/Controller/VerificationCode/View/KMLightMemberAlertView.xib

@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMLightMemberAlertView" customModule="PDF_Office" customModuleProvider="target">
+            <connections>
+                <outlet property="titleContentView" destination="q25-bk-4KL" id="T9w-aX-Y37"/>
+                <outlet property="titleLabel" destination="5Vu-nI-SlI" id="2ij-nc-hSR"/>
+            </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="316" height="57"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="q25-bk-4KL">
+                    <rect key="frame" x="0.0" y="0.0" width="316" height="57"/>
+                    <subviews>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="QLO-ls-cZz">
+                            <rect key="frame" x="8" y="21" width="16" height="16"/>
+                            <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="icon_tips_error_small" imagePosition="only" alignment="center" imageScaling="proportionallyDown" inset="2" id="Zbi-qE-fIN">
+                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                        </button>
+                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="5Vu-nI-SlI">
+                            <rect key="frame" x="30" y="21" width="186" height="16"/>
+                            <textFieldCell key="cell" lineBreakMode="clipping" title="The verification code is wrong" id="wp8-bj-JcP">
+                                <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>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="QLO-ls-cZz" firstAttribute="centerY" secondItem="q25-bk-4KL" secondAttribute="centerY" id="8Mw-Ep-L5a"/>
+                        <constraint firstItem="5Vu-nI-SlI" firstAttribute="leading" secondItem="QLO-ls-cZz" secondAttribute="trailing" constant="8" id="Eqk-Z2-bkf"/>
+                        <constraint firstItem="QLO-ls-cZz" firstAttribute="leading" secondItem="q25-bk-4KL" secondAttribute="leading" constant="8" id="HBQ-qN-Z85"/>
+                        <constraint firstItem="5Vu-nI-SlI" firstAttribute="centerY" secondItem="q25-bk-4KL" secondAttribute="centerY" id="TeZ-eC-Og1"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="q25-bk-4KL" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="GzD-qs-XTw"/>
+                <constraint firstItem="q25-bk-4KL" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" id="pcq-9R-iGK"/>
+                <constraint firstAttribute="bottom" secondItem="q25-bk-4KL" secondAttribute="bottom" id="r7H-pD-6Oy"/>
+                <constraint firstAttribute="trailing" secondItem="q25-bk-4KL" secondAttribute="trailing" id="tbX-8U-Wtw"/>
+            </constraints>
+            <point key="canvasLocation" x="50" y="35.5"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="icon_tips_error_small" width="16" height="16"/>
+    </resources>
+</document>

+ 39 - 11
PDF Office/PDF Office/Class/KMLightMember/Controller/VerificationCode/View/KMVerificationCodeView.swift

@@ -7,6 +7,9 @@
 
 import Cocoa
 
+typealias KMVerificationCodeViewCancelAction = (_ view: KMVerificationCodeView) -> Void
+typealias KMVerificationCodeViewDoneAction = (_ view: KMVerificationCodeView) -> Void
+typealias KMVerificationCodeViewCloseAction = (_ view: KMVerificationCodeView) -> Void
 class KMVerificationCodeView: KMBaseXibView {
 
     @IBOutlet weak var titleLabel: NSTextField!
@@ -36,10 +39,25 @@ class KMVerificationCodeView: KMBaseXibView {
     @IBOutlet weak var code6ContentView: NSView!
     @IBOutlet weak var code6TextField: KMBaseTextField!
     
-    var verificationCode: String = "" //验证码
+    @IBOutlet weak var doneButtonTopConstraint: NSLayoutConstraint!
+    @IBOutlet weak var alertView: KMLightMemberAlertView!
+    
+    @IBOutlet weak var alertHeightConstraint: NSLayoutConstraint!
+    
+    var cancelAction: KMVerificationCodeViewCancelAction?
+    var doneAction: KMVerificationCodeViewDoneAction?
+    var closeAction: KMVerificationCodeViewCloseAction?
+    //验证码
+    var verificationCode: String {
+        get {
+            return self.code1TextField.stringValue + self.code2TextField.stringValue + self.code3TextField.stringValue + self.code4TextField.stringValue + self.code5TextField.stringValue + self.code6TextField.stringValue
+        }
+    }
+    var verificationCodeState: KMRegisterVerificationCodeState = .unknow
     var inputType: KMRegisterLogType = .login {
         didSet {
             self.reloadData()
+            self.updateLanguage()
         }
     }
     
@@ -62,10 +80,13 @@ class KMVerificationCodeView: KMBaseXibView {
         
         self.timerTextView.delegate = self
         
-//        self.cancellationButton.font = NSFont.SFProTextRegular(14.0)
-//        self.cancellationButton.contentTintColor = NSColor(hex: "#FFFFFF")
-//        self.cancellationButton.backgroundColor(NSColor(hex: "#273C62"))
-//        self.cancellationButton.border(NSColor(hex: "#273C62"), 1, 4)
+        self.cancellationButton.font = NSFont.SFProTextRegular(14.0)
+        self.cancellationButton.contentTintColor = NSColor(hex: "#FFFFFF")
+        self.cancellationButton.backgroundColor(NSColor(hex: "#273C62"))
+        self.cancellationButton.border(NSColor(hex: "#273C62"), 1, 4)
+        
+        self.cancelButton.font = NSFont.SFProTextRegular(12.0)
+        self.cancelButton.contentTintColor = NSColor(hex: "#1770F4")
         
         let textFieldArray = [self.code1TextField,self.code2TextField,self.code3TextField,self.code4TextField,self.code5TextField,self.code6TextField]
         
@@ -83,7 +104,7 @@ class KMVerificationCodeView: KMBaseXibView {
                     textField?.superview?.border(NSColor(hex: "#1770F4"), 1, 4)
                 }
                 
-                textField?.textDidEndEditing = { string in
+                textField?.textDidEndEditing = { [unowned self] string in
                     textField?.superview?.border(NSColor(hex: "#DFE1E5"), 1, 4)
                 }
                 
@@ -103,13 +124,14 @@ class KMVerificationCodeView: KMBaseXibView {
                             break
                         }
                     }
+                    self.reloadData()
                 }
                 
                 textField?.textDeleteAction = { [unowned self] string in
                     if string == "" {
                         for item in textFieldArray {
                             let t = textField?.textField
-                            var tag = t!.tag - 1
+                            let tag = t!.tag - 1
 
                             if item?.textField.tag == tag {
                                 item?.textField.becomeFirstResponder()
@@ -127,20 +149,20 @@ class KMVerificationCodeView: KMBaseXibView {
         
         if inputType == .verificationCode {
             self.closeButton.isHidden = false
-            self.cancelButton.stringValue = NSLocalizedString("Cancel", comment: "")
             self.cancelButton.backgroundColor(NSColor(hex: "#FFFFFF"))
             self.cancelButton.border()
         } else {
             self.closeButton.isHidden = true
-            self.cancelButton.stringValue = NSLocalizedString("Back to previous step", comment: "")
             self.cancelButton.backgroundColor(NSColor(hex: "#FFFFFF"))
             self.cancelButton.border(NSColor(hex: "#FFFFFF"), 0, 4)
         }
         
         if self.verificationCode.count == 6 {
             self.cancellationButton.isEnabled = true
+            self.cancellationButton.alphaValue = 1
         } else {
             self.cancellationButton.isEnabled = false
+            self.cancellationButton.alphaValue = 0.5
         }
     }
     
@@ -152,9 +174,9 @@ class KMVerificationCodeView: KMBaseXibView {
         self.describeLabel.stringValue = NSLocalizedString("Enter the verification code", comment: "")
         
         if inputType == .verificationCode {
-            self.cancelButton.stringValue = NSLocalizedString("Cancel", comment: "")
+            self.cancelButton.title = NSLocalizedString("Cancel", comment: "")
         } else {
-            self.cancelButton.stringValue = NSLocalizedString("Back to previous step", comment: "")
+            self.cancelButton.title = NSLocalizedString("Back to previous step", comment: "")
         }
         
         
@@ -185,15 +207,21 @@ class KMVerificationCodeView: KMBaseXibView {
 protocol KMVerificationCodeViewAction {}
 extension KMVerificationCodeView: KMVerificationCodeViewAction {
     @IBAction func cancelButtonAction(_ sender: NSButton) {
+        guard let callBack = cancelAction else { return }
         
+        callBack(self)
     }
     
     @IBAction func doneButtonAction(_ sender: NSButton) {
+        guard let callBack = doneAction else { return }
         
+        callBack(self)
     }
     
     @IBAction func closeButtonAction(_ sender: Any) {
+        guard let callBack = closeAction else { return }
         
+        callBack(self)
     }
 }
 

+ 20 - 8
PDF Office/PDF Office/Class/KMLightMember/Controller/VerificationCode/View/KMVerificationCodeView.xib

@@ -8,6 +8,8 @@
     <objects>
         <customObject id="-2" userLabel="File's Owner" customClass="KMVerificationCodeView" customModule="PDF_Office" customModuleProvider="target">
             <connections>
+                <outlet property="alertHeightConstraint" destination="1QO-Az-BoJ" id="Lsw-Xg-gPE"/>
+                <outlet property="alertView" destination="1C1-4h-Ne5" id="C0N-Lu-aOz"/>
                 <outlet property="cancelButton" destination="Dsc-xE-C88" id="TbA-72-C4F"/>
                 <outlet property="cancellationButton" destination="a9g-1g-YLC" id="iv7-wa-MOs"/>
                 <outlet property="closeButton" destination="jpK-iA-80T" id="aTl-9Q-h8z"/>
@@ -24,6 +26,7 @@
                 <outlet property="code6ContentView" destination="NX7-ti-wS8" id="cdj-TL-2Cw"/>
                 <outlet property="code6TextField" destination="yiZ-u3-N0y" id="dWz-gd-Kkz"/>
                 <outlet property="describeLabel" destination="PtG-Zk-jK1" id="iap-zu-gce"/>
+                <outlet property="doneButtonTopConstraint" destination="39n-pK-cH2" id="sTd-d1-0yC"/>
                 <outlet property="textFieldContentView" destination="GFe-OK-ycy" id="diB-OK-kbZ"/>
                 <outlet property="timerTextView" destination="z0h-AC-rcc" id="Og9-w0-yWf"/>
                 <outlet property="titleLabel" destination="hHi-x1-jjo" id="5b2-Xt-P2L"/>
@@ -32,11 +35,11 @@
         <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="310" height="348"/>
+            <rect key="frame" x="0.0" y="0.0" width="310" height="420"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
                 <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jpK-iA-80T">
-                    <rect key="frame" x="8" y="328" width="12" height="12"/>
+                    <rect key="frame" x="8" y="400" width="12" height="12"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="12" id="9Yn-bj-QRN"/>
                         <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="12" id="bOo-MH-Lfl"/>
@@ -52,7 +55,7 @@
                     </connections>
                 </button>
                 <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hHi-x1-jjo">
-                    <rect key="frame" x="22" y="283" width="147" height="25"/>
+                    <rect key="frame" x="22" y="355" width="147" height="25"/>
                     <textFieldCell key="cell" lineBreakMode="clipping" title="Cancel account" id="uNB-kB-HgF">
                         <font key="font" metaFont="system" size="21"/>
                         <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -60,7 +63,7 @@
                     </textFieldCell>
                 </textField>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="tSH-ge-CQr">
-                    <rect key="frame" x="24" y="151" width="262" height="100"/>
+                    <rect key="frame" x="24" y="223" width="262" height="100"/>
                     <subviews>
                         <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="PtG-Zk-jK1">
                             <rect key="frame" x="-2" y="84" width="164" height="16"/>
@@ -248,7 +251,7 @@
                     </constraints>
                 </customView>
                 <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="a9g-1g-YLC">
-                    <rect key="frame" x="55" y="80" width="200" height="32"/>
+                    <rect key="frame" x="55" y="159" width="200" height="32"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="32" id="PY2-4O-4h6"/>
                         <constraint firstAttribute="width" constant="200" id="w5f-Qq-xPC"/>
@@ -262,7 +265,7 @@
                     </connections>
                 </button>
                 <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Dsc-xE-C88">
-                    <rect key="frame" x="55" y="40" width="200" height="32"/>
+                    <rect key="frame" x="55" y="119" width="200" height="32"/>
                     <constraints>
                         <constraint firstAttribute="height" constant="32" id="ca9-5l-vpv"/>
                         <constraint firstAttribute="width" constant="200" id="iD4-7U-Oj9"/>
@@ -275,21 +278,30 @@
                         <action selector="cancelButtonAction:" target="-2" id="dCu-0A-L4f"/>
                     </connections>
                 </button>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="1C1-4h-Ne5" customClass="KMLightMemberAlertView" customModule="PDF_Office" customModuleProvider="target">
+                    <rect key="frame" x="0.0" y="0.0" width="310" height="48"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="48" id="1QO-Az-BoJ"/>
+                    </constraints>
+                </customView>
             </subviews>
             <constraints>
                 <constraint firstItem="tSH-ge-CQr" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="24" id="12F-wl-R9Y"/>
                 <constraint firstItem="jpK-iA-80T" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" constant="8" id="1Gn-6M-FpJ"/>
-                <constraint firstAttribute="bottom" secondItem="Dsc-xE-C88" secondAttribute="bottom" constant="40" id="JHQ-Y3-X7W"/>
+                <constraint firstItem="a9g-1g-YLC" firstAttribute="top" secondItem="tSH-ge-CQr" secondAttribute="bottom" constant="32" id="39n-pK-cH2"/>
                 <constraint firstItem="jpK-iA-80T" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="8" id="Kq8-tS-sqn"/>
                 <constraint firstItem="Dsc-xE-C88" firstAttribute="centerX" secondItem="c22-O7-iKe" secondAttribute="centerX" id="Sh0-zJ-nzk"/>
+                <constraint firstAttribute="bottom" secondItem="1C1-4h-Ne5" secondAttribute="bottom" id="VWJ-hd-PiF"/>
                 <constraint firstItem="hHi-x1-jjo" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" constant="24" id="ZRh-Ex-hDf"/>
                 <constraint firstAttribute="trailing" secondItem="tSH-ge-CQr" secondAttribute="trailing" constant="24" id="dxO-HQ-b8T"/>
                 <constraint firstItem="hHi-x1-jjo" firstAttribute="top" secondItem="c22-O7-iKe" secondAttribute="top" constant="40" id="igb-dC-OYB"/>
                 <constraint firstItem="tSH-ge-CQr" firstAttribute="top" secondItem="hHi-x1-jjo" secondAttribute="bottom" constant="32" id="j6b-qa-xQv"/>
                 <constraint firstItem="Dsc-xE-C88" firstAttribute="top" secondItem="a9g-1g-YLC" secondAttribute="bottom" constant="8" id="lj5-6S-NWN"/>
+                <constraint firstItem="1C1-4h-Ne5" firstAttribute="leading" secondItem="c22-O7-iKe" secondAttribute="leading" id="nxD-aa-BbF"/>
                 <constraint firstItem="a9g-1g-YLC" firstAttribute="centerX" secondItem="c22-O7-iKe" secondAttribute="centerX" id="tpD-mC-k7x"/>
+                <constraint firstAttribute="trailing" secondItem="1C1-4h-Ne5" secondAttribute="trailing" id="vu2-j2-kBc"/>
             </constraints>
-            <point key="canvasLocation" x="83" y="202"/>
+            <point key="canvasLocation" x="83" y="228"/>
         </customView>
     </objects>
     <resources>

+ 21 - 0
PDF Office/PDF Office/Class/KMLightMember/Source/KMLightMember.xcassets/icon_tips_error_small.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "style=error, size=small.pdf",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

+ 89 - 0
PDF Office/PDF Office/Class/KMLightMember/Source/KMLightMember.xcassets/icon_tips_error_small.imageset/style=error, size=small.pdf

@@ -0,0 +1,89 @@
+%PDF-1.7
+
+1 0 obj
+  << >>
+endobj
+
+2 0 obj
+  << /Length 3 0 R >>
+stream
+/DeviceRGB CS
+/DeviceRGB cs
+q
+1.000000 0.000000 -0.000000 1.000000 1.000000 1.000000 cm
+0.954167 0.274323 0.355904 scn
+14.000000 7.000000 m
+14.000000 3.134007 10.865993 0.000000 7.000000 0.000000 c
+3.134007 0.000000 0.000000 3.134007 0.000000 7.000000 c
+0.000000 10.865993 3.134007 14.000000 7.000000 14.000000 c
+10.865993 14.000000 14.000000 10.865993 14.000000 7.000000 c
+h
+f
+n
+Q
+q
+1.000000 0.000000 -0.000000 1.000000 7.250000 4.000000 cm
+1.000000 1.000000 1.000000 scn
+0.000000 8.000000 m
+0.000000 3.000000 l
+1.500000 3.000000 l
+1.500000 8.000000 l
+0.000000 8.000000 l
+h
+0.000000 1.500000 m
+0.000000 0.000000 l
+1.500000 0.000000 l
+1.500000 1.500000 l
+0.000000 1.500000 l
+h
+f*
+n
+Q
+
+endstream
+endobj
+
+3 0 obj
+  684
+endobj
+
+4 0 obj
+  << /Annots []
+     /Type /Page
+     /MediaBox [ 0.000000 0.000000 16.000000 16.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
+0000000034 00000 n
+0000000774 00000 n
+0000000796 00000 n
+0000000969 00000 n
+0000001043 00000 n
+trailer
+<< /ID [ (some) (id) ]
+   /Root 6 0 R
+   /Size 7
+>>
+startxref
+1102
+%%EOF

+ 10 - 0
PDF Office/PDF Office/Class/PDFTools/Tools/KMBaseXibView/KMBaseXibView.swift

@@ -16,6 +16,7 @@ class KMBaseXibView: NSView {
         super.init(coder: decoder)
         self.initContentView()
         self.setup()
+        self.updateUI()
         self.updateLanguage()
         self.reloadData()
     }
@@ -24,6 +25,7 @@ class KMBaseXibView: NSView {
         super.init(frame: frameRect)
         self.initContentView()
         self.setup()
+        self.updateUI()
         self.updateLanguage()
         self.reloadData()
     }
@@ -72,4 +74,12 @@ class KMBaseXibView: NSView {
     func updateLanguage() {
         
     }
+    
+    func updateUI() {
+        
+    }
+    
+    func resetData() {
+        
+    }
 }

+ 6 - 3
PDF Office/PDF Office/Class/PDFTools/Tools/TextField/KMBaseTextField.swift

@@ -25,11 +25,14 @@ class KMBaseTextField: NSView {
         }
     }
     lazy var textField: FocusAwareTextField = FocusAwareTextField()
-    var stringValue: String = "" {
-        didSet {
-            self.textField.stringValue = stringValue + self.model.specialChart
+    var stringValue: String {
+        set {
+            textField.stringValue = newValue + self.model.specialChart
             self.model.value = stringValue
         }
+        get {
+            self.model.value
+        }
     }
     var placeholderString: String? {
         didSet {

+ 11 - 5
PDF Office/PDF Office/Class/PDFWindowController/PDFListView/AppKitCategories/CPDFListEditAnnotationViewController.m

@@ -17,6 +17,8 @@
 
 @interface CPDFListEditAnnotationViewController ()
 
+@property (nonatomic,assign)IBOutlet NSBox *borderBox;
+
 @property(nonatomic,retain) CPDFAnnotation * annotation;
 
 @property (nonatomic,assign)IBOutlet NSTextView *contentTextView;
@@ -70,12 +72,13 @@
 - (void)viewDidLoad {
     [super viewDidLoad];
     
-    NSBox * box = (NSBox *)self.view;
+    NSBox * box = self.borderBox;
     if (self.annotation.color) {
-        box.fillColor = self.annotation.color;
+        box.borderColor = self.annotation.color;
     } else {
-        box.fillColor = [NSColor whiteColor];
+        box.borderColor = [NSColor whiteColor];
     }
+    box.fillColor = [NSColor whiteColor];
     self.colors = [NSMutableArray arrayWithArray:@[[NSColor whiteColor],[NSColor redColor],[NSColor greenColor],[NSColor blueColor]]];
     
     self.buttons = [NSMutableArray arrayWithArray:@[self.colorSubBox1,self.colorSubBox2,self.colorSubBox3,self.colorSubBox4]];
@@ -159,8 +162,11 @@
     self.annotation.color = self.colors[sender.tag];
     self.annotation.opacity = 1.0;
     
-    NSBox * box = (NSBox *)self.view;
-    box.fillColor = self.annotation.color;
+    if (self.annotation.color) {
+        self.borderBox.borderColor = self.annotation.color;
+    } else {
+        self.borderBox.borderColor = [NSColor whiteColor];
+    }
     [self.pdflistView setNeedsDisplayForPage:self.annotation.page];
     
     if(self.changeColorCallBack)

+ 2 - 0
PDF Office/PDF Office/Class/PDFWindowController/PDFListView/CPDFKitExtensions/CPDFAnnotationExtensions/CPDFAnnotationHeader.h

@@ -39,6 +39,8 @@ static NSString *CPDFAnnotationBackgroundColorKey = @"backgroundColor";
 
 static NSString *CPDFAnnotationFontKey = @"font";
 
+static NSString *CPDFAnnotationPathsKey = @"paths";
+
 static NSString *CPDFAnnotationFontColorKey = @"fontColor";
 
 static NSString *CPDFAnnotationIconTypeKey = @"iconType";

+ 0 - 4
PDF Office/PDF Office/Class/PDFWindowController/PDFListView/CPDFListView.h

@@ -152,10 +152,6 @@ typedef NS_ENUM(NSInteger, CToolMode) {
 
 - (void)updateActiveAnnotations:(NSArray<CPDFAnnotation *> *)activeAnnotation;
 
-// Delete Annotation
-
-- (void)deleteAnnotations:(NSArray<CPDFAnnotation *> *)annotations;
-
 // Edit Annotation
 
 - (void)editAnnotation:(CPDFAnnotation *)annotation;

+ 9 - 7
PDF Office/PDF Office/Class/PDFWindowController/PDFListView/CPDFListView.m

@@ -621,10 +621,6 @@ NSNotificationName const CPDFListViewActiveAnnotationsChangeNotification = @"CPD
     }
 }
 
-- (void)deleteAnnotations:(NSArray<CPDFAnnotation *> *)annotations {
-    
-}
-
 - (void)editAnnotation:(CPDFAnnotation *)annotation {
     if ([annotation isKindOfClass:[CPDFFreeTextAnnotation class]]) {
         [self editAnnotationFreeText:(CPDFFreeTextAnnotation *)annotation];
@@ -647,18 +643,24 @@ NSNotificationName const CPDFListViewActiveAnnotationsChangeNotification = @"CPD
             vc.closeCallBack = ^{
                 [blockSelf.popOver close];
             };
+
+            NSBox *box = (NSBox *)vc.view;
+            NSView *popoverView = [[[self.popOver contentViewController] view] superview];
+            [popoverView setWantsLayer:YES];
             
             vc.changeColorCallBack = ^{
-                blockSelf.popOver.backgroundColor = annotation.color?:[NSColor whiteColor];
+                NSColor *borColor = annotation.color?:[NSColor whiteColor];
+                [[popoverView layer] setBackgroundColor:borColor.CGColor];
             };
             if([annotation isKindOfClass:[CPDFMarkupAnnotation class]] ||
                [annotation isKindOfClass:[CPDFLineAnnotation class]] ||
                [annotation isKindOfClass:[CPDFSquareAnnotation class]] ||
                [annotation isKindOfClass:[CPDFCircleAnnotation class]] ||
                [annotation isKindOfClass:[CPDFTextAnnotation class]]) {
-                _popOver.backgroundColor = annotation.color?:[NSColor whiteColor];
+                NSColor *borColor = annotation.color?:[NSColor whiteColor];
+                [[popoverView layer] setBackgroundColor:borColor.CGColor];
             } else {
-                _popOver.backgroundColor = [NSColor whiteColor];
+                [[popoverView layer] setBackgroundColor:[NSColor whiteColor].CGColor];
             }
             _popOver.animates = YES;
             _popOver.behavior = NSPopoverBehaviorTransient;

+ 13 - 3
PDF Office/PDF Office/Class/PDFWindowController/Side/LeftSide/Annotation/KMAnnotationViewController.swift

@@ -79,8 +79,13 @@ class KMAnnotationViewController: KMSideViewController {
         var index = 0
         for i in 0 ..< self.listView.document.pageCount {
             let page = self.listView.document.page(at: i)
-            let types = ["Highlight","Underline","Strikeout","Freehand","FreeText","Note","Square","Circle","Line","Stamp","Arrow","Image","Redact"]
-            let annotations = KMOCToolClass.filterAnnotation(page!.annotations,types: types)!
+            let types = ["Highlight","Underline","Strikeout","Freehand","FreeText","Note","Square","Circle","Line","Stamp","Arrow","Image","Redact","Sign"]
+            var annotations = KMOCToolClass.filterAnnotation(page!.annotations,types: types)!
+            for annotation in page!.annotations {
+                if annotation.isKind(of: CPDFSignatureAnnotation.self) {
+                    annotations.append(annotation)
+                }
+            }
             if(annotations.count > 0) {
                 var dic : [String:Any] = [:]
                 dic[pages] = page
@@ -366,9 +371,14 @@ extension KMAnnotationViewController: NSTableViewDelegate,NSTableViewDataSource
                     let exproString = KMOCToolClass.exproString(self.annotations[row] as? CPDFAnnotation)!
                     if exproString.lengthOfBytes(using: String.Encoding(rawValue: String.Encoding.utf16.rawValue)) > 0 {
                         let size = NSString(string: exproString).boundingRect(with: NSSize(width: tableView.frame.size.width-28, height: 300), options: NSString.DrawingOptions(rawValue: 3), attributes: [NSAttributedString.Key.font : NSFont.systemFont(ofSize: 14)]).size
-                         height = height + size.height
+                        height = height + size.height
                     }
                 }
+            } else if (annotation.isKind(of: CPDFInkAnnotation.self)) ||
+                        (annotation.isKind(of: CPDFSquareAnnotation.self)) ||
+                        (annotation.isKind(of: CPDFLineAnnotation.self)) ||
+                        (annotation.isKind(of: CPDFCircleAnnotation.self)) {
+                height += 65
             }
             
             let contentsString : String = annotation.contents ?? ""

+ 28 - 16
PDF Office/PDF Office/Class/PDFWindowController/Side/LeftSide/Annotation/KMAnnotationViewController.xib

@@ -25,7 +25,7 @@
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="isq-j9-zHz">
-                    <rect key="frame" x="0.0" y="352" width="283" height="52"/>
+                    <rect key="frame" x="0.0" y="450" width="300" height="52"/>
                     <subviews>
                         <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4eE-LR-JUA">
                             <rect key="frame" x="8" y="18" width="37" height="16"/>
@@ -36,7 +36,7 @@
                             </textFieldCell>
                         </textField>
                         <button translatesAutoresizingMaskIntoConstraints="NO" id="bAX-dg-nVT">
-                            <rect key="frame" x="255" y="16" width="20" height="20"/>
+                            <rect key="frame" x="272" y="16" width="20" height="20"/>
                             <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="KMHomeMoreTools" imagePosition="only" alignment="center" inset="2" id="7Cp-7T-fDL">
                                 <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                                 <font key="font" metaFont="system"/>
@@ -46,7 +46,7 @@
                             </connections>
                         </button>
                         <button translatesAutoresizingMaskIntoConstraints="NO" id="1zM-AI-isO">
-                            <rect key="frame" x="223" y="10" width="32" height="32"/>
+                            <rect key="frame" x="240" y="10" width="32" height="32"/>
                             <constraints>
                                 <constraint firstAttribute="width" constant="32" id="XXk-z1-rYT"/>
                                 <constraint firstAttribute="height" constant="32" id="tVP-vA-45W"/>
@@ -83,7 +83,7 @@
                                 <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
                                 <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
                                 <tableColumns>
-                                    <tableColumn identifier="AutomaticTableColumnIdentifier.0" width="286" minWidth="40" maxWidth="1000" id="zi0-u2-6hD">
+                                    <tableColumn identifier="AutomaticTableColumnIdentifier.0" width="254" minWidth="40" maxWidth="1000" id="zi0-u2-6hD">
                                         <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
                                             <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
                                             <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
@@ -96,7 +96,7 @@
                                         <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
                                         <prototypeCellViews>
                                             <tableCellView identifier="KMAnnotationTableCellView" id="qW6-ht-cnq" customClass="KMAnnotationTableCellView" customModule="PDF_Office" customModuleProvider="target">
-                                                <rect key="frame" x="0.0" y="0.0" width="281" height="159"/>
+                                                <rect key="frame" x="0.0" y="0.0" width="266" height="159"/>
                                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                                 <subviews>
                                                     <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="mwu-nd-Md5">
@@ -108,7 +108,7 @@
                                                         <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="QX0-e1-msg"/>
                                                     </imageView>
                                                     <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Zvu-Cj-cua">
-                                                        <rect key="frame" x="40" y="132" width="233" height="15"/>
+                                                        <rect key="frame" x="40" y="132" width="218" height="15"/>
                                                         <constraints>
                                                             <constraint firstAttribute="height" constant="15" id="toh-xy-7NC"/>
                                                         </constraints>
@@ -119,7 +119,7 @@
                                                         </textFieldCell>
                                                     </textField>
                                                     <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IPd-Cv-2oK">
-                                                        <rect key="frame" x="8" y="109" width="265" height="17"/>
+                                                        <rect key="frame" x="8" y="109" width="250" height="17"/>
                                                         <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="VLB-in-9Zr">
                                                             <font key="font" metaFont="system" size="14"/>
                                                             <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -127,10 +127,10 @@
                                                         </textFieldCell>
                                                     </textField>
                                                     <customView translatesAutoresizingMaskIntoConstraints="NO" id="HSm-uU-jH1">
-                                                        <rect key="frame" x="8" y="64" width="265" height="40"/>
+                                                        <rect key="frame" x="8" y="64" width="250" height="40"/>
                                                         <subviews>
                                                             <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aym-Jm-ZIZ">
-                                                                <rect key="frame" x="2" y="4" width="261" height="32"/>
+                                                                <rect key="frame" x="2" y="4" width="246" height="32"/>
                                                                 <textFieldCell key="cell" lineBreakMode="charWrapping" title="label" id="Xv2-Km-XnU">
                                                                     <font key="font" metaFont="system" size="14"/>
                                                                     <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -146,16 +146,26 @@
                                                             <constraint firstItem="aym-Jm-ZIZ" firstAttribute="top" secondItem="HSm-uU-jH1" secondAttribute="top" constant="4" id="hvS-0g-txi"/>
                                                         </constraints>
                                                     </customView>
+                                                    <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="4hF-xO-98b">
+                                                        <rect key="frame" x="62" y="50" width="142" height="54"/>
+                                                        <constraints>
+                                                            <constraint firstAttribute="width" constant="142" id="3aN-b3-FYE"/>
+                                                            <constraint firstAttribute="height" constant="54" id="Q2p-gX-lGR"/>
+                                                        </constraints>
+                                                        <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="bH1-ap-fos"/>
+                                                    </imageView>
                                                 </subviews>
                                                 <constraints>
                                                     <constraint firstItem="Zvu-Cj-cua" firstAttribute="leading" secondItem="mwu-nd-Md5" secondAttribute="trailing" constant="12" id="1oJ-wF-rVf"/>
                                                     <constraint firstItem="Zvu-Cj-cua" firstAttribute="leading" secondItem="mwu-nd-Md5" secondAttribute="trailing" constant="12" id="7A4-r0-7WP"/>
                                                     <constraint firstItem="mwu-nd-Md5" firstAttribute="top" secondItem="qW6-ht-cnq" secondAttribute="top" constant="10" id="Cwk-cy-MRQ"/>
+                                                    <constraint firstItem="4hF-xO-98b" firstAttribute="top" secondItem="Zvu-Cj-cua" secondAttribute="bottom" constant="28" id="FvX-dk-6B7"/>
+                                                    <constraint firstItem="4hF-xO-98b" firstAttribute="centerX" secondItem="qW6-ht-cnq" secondAttribute="centerX" id="IXd-Sk-ZK3"/>
                                                     <constraint firstItem="Zvu-Cj-cua" firstAttribute="centerY" secondItem="mwu-nd-Md5" secondAttribute="centerY" id="MuL-nw-sWU"/>
                                                     <constraint firstItem="HSm-uU-jH1" firstAttribute="leading" secondItem="qW6-ht-cnq" secondAttribute="leading" constant="8" id="NEA-uZ-26L"/>
-                                                    <constraint firstItem="HSm-uU-jH1" firstAttribute="top" secondItem="IPd-Cv-2oK" secondAttribute="bottom" constant="5" id="OCb-8I-ZUJ"/>
                                                     <constraint firstItem="IPd-Cv-2oK" firstAttribute="top" secondItem="mwu-nd-Md5" secondAttribute="bottom" constant="3" id="Piz-2P-kCe"/>
                                                     <constraint firstItem="mwu-nd-Md5" firstAttribute="leading" secondItem="qW6-ht-cnq" secondAttribute="leading" constant="10" id="Tbf-Lo-kn3"/>
+                                                    <constraint firstItem="HSm-uU-jH1" firstAttribute="top" secondItem="Zvu-Cj-cua" secondAttribute="bottom" constant="28" id="XER-ti-abZ"/>
                                                     <constraint firstAttribute="trailing" secondItem="HSm-uU-jH1" secondAttribute="trailing" constant="8" id="hOq-oT-7Fx"/>
                                                     <constraint firstAttribute="trailing" secondItem="Zvu-Cj-cua" secondAttribute="trailing" constant="10" id="hf7-dR-kar"/>
                                                     <constraint firstItem="IPd-Cv-2oK" firstAttribute="leading" secondItem="mwu-nd-Md5" secondAttribute="leading" id="jFE-wb-R8o"/>
@@ -163,7 +173,9 @@
                                                 </constraints>
                                                 <connections>
                                                     <outlet property="contentBGHeightConst" destination="d6Z-RV-ig9" id="dxZ-il-Z9o"/>
+                                                    <outlet property="contentBGTopConst" destination="XER-ti-abZ" id="MVK-Dw-PNT"/>
                                                     <outlet property="contentBGView" destination="HSm-uU-jH1" id="1ex-Fo-rRf"/>
+                                                    <outlet property="contentInfoImg" destination="4hF-xO-98b" id="aOY-Ez-yWr"/>
                                                     <outlet property="contentInfoLabel" destination="aym-Jm-ZIZ" id="R9U-A0-xRo"/>
                                                     <outlet property="contentLabel" destination="IPd-Cv-2oK" id="K2O-aw-kFs"/>
                                                     <outlet property="dateLabel" destination="Zvu-Cj-cua" id="Gql-MC-JYT"/>
@@ -171,7 +183,7 @@
                                                 </connections>
                                             </tableCellView>
                                             <tableCellView identifier="KMAnnotationHeaderCellView" id="xEw-aA-WN9" customClass="KMAnnotationHeaderCellView" customModule="PDF_Office" customModuleProvider="target">
-                                                <rect key="frame" x="0.0" y="160" width="281" height="24"/>
+                                                <rect key="frame" x="0.0" y="160" width="266" height="24"/>
                                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                                 <subviews>
                                                     <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="iLo-vc-Uqe">
@@ -183,7 +195,7 @@
                                                         </textFieldCell>
                                                     </textField>
                                                     <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="nYV-WM-m34">
-                                                        <rect key="frame" x="236" y="5" width="35" height="15"/>
+                                                        <rect key="frame" x="221" y="5" width="35" height="15"/>
                                                         <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="0mv-us-OjH">
                                                             <font key="font" metaFont="cellTitle"/>
                                                             <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -223,14 +235,14 @@
                     </scroller>
                 </scrollView>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="nAQ-GY-tve">
-                    <rect key="frame" x="0.0" y="0.0" width="283" height="352"/>
+                    <rect key="frame" x="0.0" y="0.0" width="300" height="450"/>
                     <subviews>
                         <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="JXD-oi-HT0">
-                            <rect key="frame" x="76" y="44" width="132" height="128"/>
+                            <rect key="frame" x="84" y="142" width="132" height="128"/>
                             <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="KMImageNameMarkupEmpty" id="vpy-u4-hia"/>
                         </imageView>
                         <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Hgo-wn-Zbx">
-                            <rect key="frame" x="74" y="15" width="136" height="17"/>
+                            <rect key="frame" x="82" y="113" width="136" height="17"/>
                             <textFieldCell key="cell" lineBreakMode="clipping" alignment="center" title="No bookmark found" id="2wP-6e-y8s">
                                 <font key="font" metaFont="system" size="14"/>
                                 <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -238,7 +250,7 @@
                             </textFieldCell>
                         </textField>
                         <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="RmA-xf-MGi">
-                            <rect key="frame" x="33" y="0.0" width="217" height="15"/>
+                            <rect key="frame" x="33" y="98" width="234" height="15"/>
                             <textFieldCell key="cell" alignment="center" id="A2H-9r-vSJ">
                                 <font key="font" metaFont="cellTitle"/>
                                 <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>

+ 21 - 4
PDF Office/PDF Office/Class/PDFWindowController/Side/LeftSide/Annotation/View/KMAnnotationTableCellView.swift

@@ -34,7 +34,9 @@ class KMAnnotationTableCellView: NSTableCellView {
     @IBOutlet var typeImageView : NSImageView!
     @IBOutlet var contentBGView : NSView!
     @IBOutlet var contentInfoLabel : NSTextField!
+    @IBOutlet var contentInfoImg : NSImageView!
     
+    @IBOutlet var contentBGTopConst: NSLayoutConstraint!
     @IBOutlet var contentBGHeightConst: NSLayoutConstraint!
     
     var annotation : CPDFAnnotation!
@@ -68,6 +70,10 @@ class KMAnnotationTableCellView: NSTableCellView {
         formatter.dateFormat = "yyyy-MM-dd hh:mm a"
         dateLabel.stringValue = (annotation.userName() ?? "") + " " + formatter.string(from: annotation.modificationDate())
         
+        self.contentLabel.isHidden = true
+        self.contentInfoImg.isHidden = true
+        self.contentBGTopConst.constant = 40
+        
         if annotation.isKind(of: CPDFMarkupAnnotation.self) {
             var text : String = (annotation as! CPDFMarkupAnnotation).markupText()
             if text.lengthOfBytes(using: String.Encoding(rawValue: String.Encoding.utf16.rawValue)) > 0 {
@@ -82,11 +88,13 @@ class KMAnnotationTableCellView: NSTableCellView {
             if text.lengthOfBytes(using: String.Encoding(rawValue: String.Encoding.utf16.rawValue)) > 0 {
                 contentLabel.isHidden = false;
                 contentLabel.stringValue = text
-            } else {
-                contentLabel.isHidden = true
             }
-        } else {
-            contentLabel.isHidden = true
+        } else if (annotation.isKind(of: CPDFInkAnnotation.self)) ||
+                    (annotation.isKind(of: CPDFSquareAnnotation.self)) ||
+                    (annotation.isKind(of: CPDFLineAnnotation.self)) ||
+                    (annotation.isKind(of: CPDFCircleAnnotation.self)) {
+            contentInfoImg.isHidden = false
+            contentInfoImg.image = NSImage(named:"KMImageNameNewTipSelected")
         }
         
         if annotation.contents != nil && annotation.contents != "" {
@@ -100,6 +108,15 @@ class KMAnnotationTableCellView: NSTableCellView {
             }
             self.contentInfoLabel.stringValue = contentsString
             self.contentBGView.isHidden = false
+            
+            if self.contentLabel.isHidden {
+                self.contentBGTopConst.constant = 8
+            } else {
+                if contentLabel.stringValue.lengthOfBytes(using: String.Encoding(rawValue: String.Encoding.utf16.rawValue)) > 0 {
+                    let size = NSString(string: contentLabel.stringValue).boundingRect(with: NSSize(width: self.contentBGView.frame.size.width-28, height: 300), options: NSString.DrawingOptions(rawValue: 3), attributes: [NSAttributedString.Key.font : NSFont.systemFont(ofSize: 14)]).size
+                    self.contentBGTopConst.constant = size.height + 10
+                }
+            }
         } else {
             self.contentBGView.isHidden = true
         }

+ 51 - 2
PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/AnnotationProperty/KMAnnotationPropertiesViewController.m

@@ -72,6 +72,7 @@
     if (_annotations != annotations) {
         _annotations = annotations;
     }
+    
     CPDFAnnotation *annotation = _annotations.firstObject;
     if (self.contentViewController) {
         [self.contentViewController.view removeFromSuperview];
@@ -80,6 +81,11 @@
     if (!annotation || [annotation isKindOfClass:[CPDFRedactAnnotation class]]) {
         return;
     }
+
+    if (_annotations.count > 1) {
+        [self selectAnnotations:_annotations];
+        return;
+    }
     
     if ([annotation isKindOfClass:[CPDFTextWidgetAnnotation class]]){
         self.titleLabel.stringValue = NSLocalizedString(@"Text Field", nil);
@@ -212,6 +218,39 @@
     }
 }
 
+- (void)selectAnnotations:(NSArray *)annotations {
+    CPDFAnnotation *fristAnnotation = annotations.firstObject;
+
+    CAnnotationType annotationMode = CAnnotationTypeUnkown;
+    if ([fristAnnotation isKindOfClass:[CPDFMarkupAnnotation class]]) {
+        annotationMode = CAnnotationTypeHighlight;
+    } else if ([fristAnnotation isKindOfClass:[CPDFInkAnnotation class]]) {
+        annotationMode = CAnnotationTypeInk;
+    } else if ([fristAnnotation isKindOfClass:[CPDFTextAnnotation class]]) {
+        annotationMode = CAnnotationTypeAnchored;
+    } else if ([fristAnnotation isKindOfClass:[CPDFSquareAnnotation class]]) {
+        annotationMode = CAnnotationTypeSquare;
+    } else if ([fristAnnotation isKindOfClass:[CPDFCircleAnnotation class]]) {
+        annotationMode = CAnnotationTypeCircle;
+    } else if ([fristAnnotation isKindOfClass:[CPDFLineAnnotation class]]) {
+        if(((CPDFLineAnnotation *)fristAnnotation).startLineStyle == CPDFLineStyleNone &&
+           ((CPDFLineAnnotation *)fristAnnotation).endLineStyle == CPDFLineStyleOpenArrow ) {
+            annotationMode = CAnnotationTypeArrow;
+        } else {
+            annotationMode = CAnnotationTypeLine;
+        }
+    } else if ([fristAnnotation isKindOfClass:[CPDFLinkAnnotation class]]) {
+        annotationMode = CAnnotationTypeLink;
+    } else if ([fristAnnotation isKindOfClass:[CPDFStampAnnotation class]]) {
+        annotationMode = CAnnotationTypeStamp;
+    } else if ([fristAnnotation isKindOfClass:[CPDFSignatureAnnotation class]]) {
+        annotationMode = CAnnotationTypeSignature;
+    }
+    
+    self.annotationMode = annotationMode;
+    
+}
+
 - (void)setAnnotationMode:(CAnnotationType)annotationMode {
     _annotationMode = annotationMode;
     if (self.contentViewController) {
@@ -225,10 +264,16 @@
         title = NSLocalizedString(@"Circle", @"Description for export");
     else if (annotationMode == CAnnotationTypeSquare)
         title = NSLocalizedString(@"Shape", @"Description for export");
-    else if (annotationMode == CAnnotationTypeHighlight)
+    else if (annotationMode == CAnnotationTypeHighlight) {
         title = NSLocalizedString(@"Highlight", @"Description for export");
-    else if (annotationMode == CAnnotationTypeUnderline)
+        if (_annotations.count > 1)
+            title = NSLocalizedString(@"General", @"Description for export");
+    }
+    else if (annotationMode == CAnnotationTypeUnderline) {
         title = NSLocalizedString(@"Underline", @"Description for export");
+        if (_annotations.count > 1)
+            title = NSLocalizedString(@"General", @"Description for export");
+    }
     else if (annotationMode == CAnnotationTypeStrikeOut)
         title = NSLocalizedString(@"Strikethrough", @"Description for export");
     else if (annotationMode == CAnnotationTypeLine)
@@ -286,6 +331,10 @@
         annotationMode == CAnnotationTypeInk ||
         annotationMode == CAnnotationTypeEraser ||
         annotationMode == CAnnotationTypeArrow) {
+        //处理多选
+        if(_annotations.count > 1) {
+            annotationModel = [[CPDFAnnotationModel alloc] initWithPDFAnnotations:_annotations];
+        }
         KMGeneralAnnotationViewController *vc = [[KMGeneralAnnotationViewController alloc] init];
         vc.pdfView = self.pdfView;
         vc.annotationModel = annotationModel;

+ 3 - 3
PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/AnnotationProperty/KMGeneralAnnotationViewController.xib

@@ -188,7 +188,7 @@
                                             <constraint firstAttribute="height" constant="20" id="YBN-Nq-khW"/>
                                         </constraints>
                                         <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Font" id="iw3-rM-zWS">
-                                            <font key="font" metaFont="system" size="12"/>
+                                            <font key="font" metaFont="cellTitle"/>
                                             <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
                                             <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
                                         </textFieldCell>
@@ -1082,7 +1082,7 @@
                                     <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="kZM-Zt-V3a">
                                         <rect key="frame" x="-2" y="85" width="33" height="15"/>
                                         <textFieldCell key="cell" lineBreakMode="clipping" title="Style" id="uNh-05-LPZ">
-                                            <font key="font" metaFont="system" size="12"/>
+                                            <font key="font" metaFont="cellTitle"/>
                                             <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
                                             <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                         </textFieldCell>
@@ -1343,7 +1343,7 @@
                 <rect key="frame" x="-100" y="-100" width="303" height="15"/>
                 <autoresizingMask key="autoresizingMask"/>
             </scroller>
-            <scroller key="verticalScroller" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="GtA-pI-NXB">
+            <scroller key="verticalScroller" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="GtA-pI-NXB">
                 <rect key="frame" x="466" y="0.0" width="15" height="1379"/>
                 <autoresizingMask key="autoresizingMask"/>
             </scroller>

+ 4 - 4
PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/AnnotationProperty/NSObject/KMAnnotationPropertiesColorManager.m

@@ -572,10 +572,10 @@ NSString * KMSelfSignPropertColors   = @"CPDFSelfSignPropertColors";
 
 - (NSArray <NSColor *>*)defaultSelfSignColors
 {
-    return @[[NSColor colorWithCalibratedRed:234.0/255.0 green:51.0/255.0 blue:35.0/255.0 alpha:1.0],
-             [NSColor blackColor],
-             [NSColor colorWithCalibratedRed:17.0/255.0 green:54.0/255.0 blue:140.0/255.0 alpha:1.0],
-             [NSColor colorWithCalibratedRed:55.0/255.0 green:125.0/255.0 blue:71.0/255.0 alpha:1.0]];
+    return @[[NSColor colorWithCalibratedRed:252.0/255.0 green:31.0/255.0 blue:31.0/255.0 alpha:1.0],
+             [NSColor colorWithCalibratedRed:37.0/255.0 green:38.0/255.0 blue:41.0/255.0 alpha:1.0],
+             [NSColor colorWithCalibratedRed:41.0/255.0 green:83.0/255.0 blue:147.0/255.0 alpha:1.0],
+             [NSColor colorWithCalibratedRed:30.0/255.0 green:137.0/255.0 blue:86.0/255.0 alpha:1.0]];
 }
 
 @end

+ 255 - 11
PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/AnnotationProperty/ViewController/KMFillSignShapePanel.swift

@@ -14,22 +14,83 @@ import Cocoa
 
     @IBOutlet weak var titleView: NSView!
     @IBOutlet weak var titleLabel: NSTextField!
-    
+    @IBOutlet weak var customColor: NSBox!
+    @IBOutlet weak var colorBox: NSBox!
+    @IBOutlet weak var colorBox1: NSBox!
+    @IBOutlet weak var colorBox2: NSBox!
+    @IBOutlet weak var colorBox3: NSBox!
+    @IBOutlet weak var colorBox4: NSBox!
+    @IBOutlet weak var customBox: NSBox!
+    @IBOutlet weak var customColorBox1: NSBox!
+    @IBOutlet weak var customColorBox2: NSBox!
+
     @IBOutlet weak var lineWidthView: NSView!
     @IBOutlet weak var lineWidthLabel: NSTextField!
     @IBOutlet weak var lineWidthSlider: NSSlider!
     @IBOutlet weak var lineWidthBox: NSBox!
     
-    var lineWidthVC: KMDesignSelect!
+    @IBOutlet weak var colorView: NSView!
+    @IBOutlet weak var opacityView: NSView!
+    @IBOutlet weak var opacitySlider: NSSlider!
+    @IBOutlet weak var opacityBox: NSBox!
     
+    @IBOutlet weak var fillTypeBox: NSBox!
+    @IBOutlet weak var fillTypeView: NSView!
+    @IBOutlet weak var typeLabel: NSTextField!
+    @IBOutlet weak var hookBox: NSBox!
+    @IBOutlet weak var forkBox: NSBox!
+    @IBOutlet weak var lineBox: NSBox!
+    @IBOutlet weak var dotBox: NSBox!
+    @IBOutlet weak var rectangleBox: NSBox!
+
+    var colorVC1: KMDesignPropertySelector!
+    var colorVC2: KMDesignPropertySelector!
+    var colorVC3: KMDesignPropertySelector!
+    var colorVC4: KMDesignPropertySelector!
+    var colorVC5: KMDesignPropertySelector!
+    var customVC1: KMDesignButton!
+    var customVC2: KMDesignButton!
+    var hookVC: KMDesignButton!
+    var forkVC: KMDesignButton!
+    var lineVC: KMDesignButton!
+    var dotVC: KMDesignButton!
+    var rectangleVC: KMDesignButton!
+
+    var lineWidthVC: KMDesignSelect!
+    var opacityVC: KMDesignSelect!
+
     var pdfView: CPDFListView!
     var annotationModel: CPDFAnnotationModel!
     var subViewType: AnnotationPanelControlType = .Name
+    
+    var colors: [NSColor] = []
 
     override func viewDidLoad() {
         super.viewDidLoad()
         // Do view setup here.
         
+        colorVC1 = KMDesignPropertySelector.init(withType: .Color_Icon_Btn)
+        colorVC2 = KMDesignPropertySelector.init(withType: .Color_Icon_Btn)
+        colorVC3 = KMDesignPropertySelector.init(withType: .Color_Icon_Btn)
+        colorVC4 = KMDesignPropertySelector.init(withType: .Color_Icon_Btn)
+        colorVC5 = KMDesignPropertySelector.init(withType: .Color_Icon_Btn)
+        customVC1 = KMDesignButton(withType: .Image)
+        customVC2 = KMDesignButton(withType: .Image)
+        hookVC = KMDesignButton(withType: .Image)
+        forkVC = KMDesignButton(withType: .Image)
+        lineVC = KMDesignButton(withType: .Image)
+        dotVC = KMDesignButton(withType: .Image)
+        rectangleVC = KMDesignButton(withType: .Image)
+
+        self.colorBox.fillColor = .clear
+        self.colorBox.contentView = colorView
+        self.colors = KMAnnotationPropertiesColorManager.default().selfSignColors
+        
+        self.fillTypeBox.fillColor = .clear
+        if annotationModel.annotation != nil {
+            self.fillTypeBox.contentView = fillTypeView
+        }
+
         initializeUI()
         initLocalization()
         
@@ -43,8 +104,48 @@ import Cocoa
         previewBox.cornerRadius = 4.0
         
         titleLabel.font = NSFont.SFProTextSemibold(12.0)
+        customColor.fillColor = .clear
+        customColor.contentView = customVC1.view
+        customVC1.target = self
+        customVC1.action = #selector(showOpacityView(_:))
+        customVC1.image = NSImage(named: "KMImagePropertPanelOpacityButtonImage")!
+
+        customBox.borderColor = NSColor(hex: "#DFE1E5")
+        colorBox1.fillColor = .clear
+        colorBox1.contentView = colorVC1.view
+        colorVC1.target = self
+        colorVC1.action = #selector(colorChangeAction(_:))
         
+        colorBox2.fillColor = .clear
+        colorBox2.contentView = colorVC2.view
+        colorVC2.target = self
+        colorVC2.action = #selector(colorChangeAction(_:))
+
+        colorBox3.fillColor = .clear
+        colorBox3.contentView = colorVC3.view
+        colorVC3.target = self
+        colorVC3.action = #selector(colorChangeAction(_:))
+
+        colorBox4.fillColor = .clear
+        colorBox4.contentView = colorVC4.view
+        colorVC4.target = self
+        colorVC4.action = #selector(colorChangeAction(_:))
+
+        customColorBox1.fillColor = .clear
+        customColorBox1.contentView = colorVC5.view
+        colorVC5.mainBox.cornerRadius = colorVC5.mainBox.frame.width/2
+        colorVC5.fillColor = annotationModel.color()
+        colorVC5.target = self
+        colorVC5.action = #selector(colorChangeAction(_:))
+        
+        customColorBox2.fillColor = .clear
+        customColorBox2.contentView = customVC2.view
+        customVC2.target = self
+        customVC2.action = #selector(customColorAction(_:))
+        customVC2.image = NSImage(named: "NSColorPanel")!
+
         lineWidthLabel.font = NSFont.SFProTextSemibold(12.0)
+        typeLabel.font = NSFont.SFProTextSemibold(12.0)
 
         lineWidthSlider.minValue = 0.1
         lineWidthSlider.maxValue = 12.0
@@ -57,20 +158,84 @@ import Cocoa
         lineWidthVC.addItems(withObjectValues: ["1 pt", "3 pt", "6 pt", "9 pt", "12 pt"])
         lineWidthVC.selectItem(at: 0)
         lineWidthVC.delete = self
+        
+        opacityVC = KMDesignSelect.init(withType: .PopButton)
+        opacityBox.fillColor = .clear
+        opacityBox.contentView = opacityVC.view
+
+        opacityVC.removeAllItems()
+        opacityVC.addItems(withObjectValues: ["25%", "50%", "75%", "100%"])
+        opacityVC.selectItem(at: 0)
+        opacityVC.delete = self
+
+        opacitySlider.minValue = 0
+        opacitySlider.maxValue = 1
+        
+        hookBox.fillColor = .clear
+        hookBox.contentView = hookVC.view
+        hookVC.target = self
+        hookVC.action = #selector(fillTypeAction(_:))
+        hookVC.image = NSImage(named: "icon_propertybar_fillSign_hook_norm")!
+        hookVC.image_act = NSImage(named: "icon_propertybar_fillSign_hook_sel")!
+        hookVC.image_disabled = NSImage(named: "icon_propertybar_fillSign_hook_fillSign_Disabled")!
+
+        forkBox.fillColor = .clear
+        forkBox.contentView = forkVC.view
+        forkVC.target = self
+        forkVC.action = #selector(fillTypeAction(_:))
+        forkVC.image = NSImage(named: "icon_propertybar_fillSign_fork_norm")!
+        forkVC.image_act = NSImage(named: "icon_propertybar_fillSign_fork_sel")!
+        forkVC.image_disabled = NSImage(named: "icon_propertybar_fillSign_fork_fillSign_Disabled")!
+
+        lineBox.fillColor = .clear
+        lineBox.contentView = lineVC.view
+        lineVC.target = self
+        lineVC.action = #selector(fillTypeAction(_:))
+        lineVC.image = NSImage(named: "icon_propertybar_fillSign_line_norm")!
+        lineVC.image_act = NSImage(named: "icon_propertybar_fillSign_line_sel")!
+        lineVC.image_disabled = NSImage(named: "icon_propertybar_fillSign_line_fillSign_Disabled")!
+
+        dotBox.fillColor = .clear
+        dotBox.contentView = dotVC.view
+        dotVC.target = self
+        dotVC.action = #selector(fillTypeAction(_:))
+        dotVC.image = NSImage(named: "icon_propertybar_fillSign_dot_norm")!
+        dotVC.image_act = NSImage(named: "icon_propertybar_fillSign_dot_sel")!
+        dotVC.image_disabled = NSImage(named: "icon_propertybar_fillSign_dot_fillSign_Disabled")!
+
+        rectangleBox.fillColor = .clear
+        rectangleBox.contentView = rectangleVC.view
+        rectangleVC.target = self
+        rectangleVC.action = #selector(fillTypeAction(_:))
+        rectangleVC.image = NSImage(named: "icon_propertybar_fillSign_rect_norm")!
+        rectangleVC.image_act = NSImage(named: "icon_propertybar_fillSign_rect_sel")!
+        rectangleVC.image_disabled = NSImage(named: "icon_propertybar_fillSign_rect_fillSign_Disabled")!
+
     }
     
     func initLocalization() {
         titleLabel.stringValue = NSLocalizedString("Color", comment: "")
         lineWidthLabel.stringValue = NSLocalizedString("Line", comment: "")
+        typeLabel.stringValue = NSLocalizedString("Fill Type", comment: "")
     }
     
     // MARK: Private Methods
     
     func refreshUI() -> Void {
         previewImageView.image = annotationModel.annotationImage
+        colorVC1.fillColor = self.colors[0]
+        colorVC2.fillColor = self.colors[1]
+        colorVC3.fillColor = self.colors[2]
+        colorVC4.fillColor = self.colors[3]
 
         lineWidthSlider.floatValue = Float(annotationModel.lineWidth())
         lineWidthVC.stringValue = String(format: "%.f pt", annotationModel.lineWidth())
+        var opacity = CGFloat(annotationModel.opacity())
+        if opacity == 0 {
+            opacity = 0.0001
+        }
+        opacitySlider.floatValue = Float(opacity)
+        opacityVC.stringValue = String(format: "%.f%%", (opacity*100))
     }
 
     // MARK: Actions
@@ -82,21 +247,100 @@ import Cocoa
         
         refreshUI()
     }
+    
+    @IBAction func opacitySliderAction(_ sender: NSSlider) {
+        let opcity = self.opacitySlider.floatValue
+        self.annotationModel.setOpacity(CGFloat(opcity));
+        refreshUI()
+    }
+    
+    @IBAction func colorChangeAction(_ sender: NSButton) {
+        colorVC1.state = .Norm
+        colorVC2.state = .Norm
+        colorVC3.state = .Norm
+        colorVC4.state = .Norm
+        if (sender == colorVC1.button) {
+            colorVC1.state = .Sel
+            annotationModel.setColor(colorVC1.fillColor)
+        } else if (sender == colorVC2.button) {
+            colorVC2.state = .Sel
+            annotationModel.setColor(colorVC2.fillColor)
+        } else if (sender == colorVC3.button) {
+            colorVC3.state = .Sel
+            annotationModel.setColor(colorVC3.fillColor)
+        } else if (sender == colorVC4.button) {
+            colorVC4.state = .Sel
+            annotationModel.setColor(colorVC4.fillColor)
+        } else if (sender == colorVC5.button) {
+            annotationModel.setColor(colorVC5.fillColor)
+        }
+        
+        refreshUI()
+    }
+    
+    @IBAction func showOpacityView(_ sender: NSButton) {
+        if (colorBox.contentView == self.opacityView) {
+            self.colorBox.contentView = self.colorView
+            titleLabel.stringValue = NSLocalizedString("Color", comment: "")
+        } else {
+            self.colorBox.contentView = self.opacityView
+            titleLabel.stringValue = NSLocalizedString("Opacity", comment: "")
+        }
+    }
+    
+    @IBAction func customColorAction(_ sender: NSButton) {
+        NSColorPanel.shared.setAction(nil)
+        NSColorPanel.shared.setTarget(nil)
+        NSColorPanel.shared.setTarget(self)
+        NSColorPanel.shared.showsAlpha = true
+        NSColorPanel.shared.setAction(#selector(colorPanelAction(_:)))
+        NSColorPanel.shared.orderFront(nil)
+    }
+    
+    @IBAction func colorPanelAction(_ sender: NSButton) {
+        annotationModel.setColor(NSColorPanel.shared.color)
+        colorVC5.fillColor = NSColorPanel.shared.color
+
+        refreshUI()
+    }
+    
+    @IBAction func fillTypeAction(_ sender: NSButton) {
+        if (sender == hookVC.button) {
+            self.annotationModel.setStampAnnotationType(.signTure)
+        } else if (sender == forkVC.button) {
+            self.annotationModel.setStampAnnotationType(.signFalse)
+        } else if (sender == rectangleVC.button) {
+            self.annotationModel.setStampAnnotationType(.signCircle)
+        } else if (sender == dotVC.button) {
+            self.annotationModel.setStampAnnotationType(.signDot)
+        } else if (sender == lineVC.button) {
+            self.annotationModel.setStampAnnotationType(.signLine)
+        }
+    }
+
 }
 
 extension KMFillSignShapePanel: KMSelectPopButtonDelegate {
     func km_comboBoxSelectionDidChange(_ obj: KMDesignSelect) {
-        if self.lineWidthVC != obj {
-            return
-        }
-        let index = self.lineWidthVC.indexOfSelectedItem
-        if index < 0 {
-            return
+        if (self.lineWidthVC == obj) {
+            let index = self.lineWidthVC.indexOfSelectedItem
+            if index < 0 {
+                return
+            }
+            
+            let width = self.lineWidthVC.stringValue.replacingOccurrences(of: " pt", with: "")
+            annotationModel.setLineWidth(width.stringToCGFloat())
+        } else if (self.opacityVC == obj) {
+            let index = self.opacityVC.indexOfSelectedItem
+            if index < 0 {
+                return
+            }
+            
+            let opacity = self.opacityVC.stringValue.replacingOccurrences(of: "%", with: "")
+            self.opacitySlider.floatValue = Float(opacity.stringToCGFloat()/100)
+            annotationModel.setOpacity(opacity.stringToCGFloat()/100)
         }
         
-        let width = self.lineWidthVC.stringValue.replacingOccurrences(of: " pt", with: "")
-        annotationModel.setLineWidth(width.stringToCGFloat())
-        
         refreshUI()
     }
 }

+ 366 - 222
PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/AnnotationProperty/ViewController/KMFillSignShapePanel.xib

@@ -8,14 +8,35 @@
     <objects>
         <customObject id="-2" userLabel="File's Owner" customClass="KMFillSignShapePanel" customModule="PDF_Office" customModuleProvider="target">
             <connections>
+                <outlet property="colorBox" destination="nyg-eM-FHL" id="8hE-nP-WKB"/>
+                <outlet property="colorBox1" destination="LSs-37-kQD" id="gyG-fq-viE"/>
+                <outlet property="colorBox2" destination="crL-Lz-qUZ" id="Ccw-05-kk3"/>
+                <outlet property="colorBox3" destination="ki9-Np-U3F" id="lhr-G7-QDo"/>
+                <outlet property="colorBox4" destination="xWH-Yr-Tyg" id="feb-uH-0pW"/>
+                <outlet property="colorView" destination="BGX-yQ-S1S" id="GWJ-cg-43e"/>
+                <outlet property="customBox" destination="DJq-tH-8Sk" id="Ge8-MP-v6Y"/>
+                <outlet property="customColor" destination="xlr-81-YPj" id="Lc0-eY-eKD"/>
+                <outlet property="customColorBox1" destination="iYl-e4-9gK" id="vcn-1l-8Tv"/>
+                <outlet property="customColorBox2" destination="Igt-nb-nYf" id="p2c-F7-vIA"/>
+                <outlet property="dotBox" destination="Ey1-SK-n92" id="KJA-PP-det"/>
+                <outlet property="fillTypeBox" destination="eoI-f9-JEM" id="eSn-6a-tfj"/>
+                <outlet property="fillTypeView" destination="rtj-AE-MX7" id="kck-8d-pRw"/>
+                <outlet property="forkBox" destination="BhZ-Ih-1rz" id="jx3-w2-T7F"/>
+                <outlet property="hookBox" destination="HAw-R6-ZAM" id="Bqb-fT-R2I"/>
+                <outlet property="lineBox" destination="34Y-4U-ftc" id="Xob-V4-TVT"/>
                 <outlet property="lineWidthBox" destination="m0T-du-qB4" id="iHP-GM-Ato"/>
                 <outlet property="lineWidthLabel" destination="DzD-tN-H7c" id="iY3-n8-L1R"/>
                 <outlet property="lineWidthSlider" destination="eWV-HH-wiD" id="aqx-h9-lM1"/>
                 <outlet property="lineWidthView" destination="g6H-aL-tff" id="vgY-Fr-Qyy"/>
+                <outlet property="opacityBox" destination="lV1-a7-Rsu" id="5LF-Th-jcj"/>
+                <outlet property="opacitySlider" destination="gqL-AY-QK0" id="fAg-2H-OH8"/>
+                <outlet property="opacityView" destination="cpO-Ty-rdW" id="SBB-Ol-47x"/>
                 <outlet property="previewBox" destination="Xfz-fF-jdE" id="QWb-et-jZO"/>
                 <outlet property="previewImageView" destination="Yk6-Iy-BVZ" id="LiT-Rb-tbi"/>
+                <outlet property="rectangleBox" destination="G72-uL-hxx" id="JGj-Na-Rze"/>
                 <outlet property="titleLabel" destination="2ET-4g-nGa" id="5ZW-WB-Q0O"/>
                 <outlet property="titleView" destination="b8c-af-eed" id="Axf-4B-D3T"/>
+                <outlet property="typeLabel" destination="9UD-X5-ncS" id="oec-VO-LQi"/>
                 <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
             </connections>
         </customObject>
@@ -58,233 +79,28 @@
                                 <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                             </textFieldCell>
                         </textField>
-                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="pDA-ml-Axu">
+                        <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="xlr-81-YPj">
                             <rect key="frame" x="170" y="0.0" width="20" height="20"/>
+                            <view key="contentView" id="Ntp-Wg-Do0">
+                                <rect key="frame" x="0.0" y="0.0" width="20" height="20"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                            </view>
                             <constraints>
-                                <constraint firstAttribute="height" constant="20" id="X9r-o7-bRl"/>
-                                <constraint firstAttribute="width" constant="20" id="hOH-ax-wKN"/>
+                                <constraint firstAttribute="width" constant="20" id="0Wg-AM-CiU"/>
+                                <constraint firstAttribute="height" constant="20" id="x1y-lv-gio"/>
                             </constraints>
-                            <buttonCell key="cell" type="bevel" title="Button" bezelStyle="rounded" image="NSFontPanel" imagePosition="only" alignment="center" imageScaling="proportionallyDown" inset="2" id="vT1-gL-5kF">
-                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                                <font key="font" metaFont="system"/>
-                            </buttonCell>
-                        </button>
+                            <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        </box>
                     </subviews>
                     <constraints>
                         <constraint firstAttribute="height" constant="20" id="Blz-sr-MX1"/>
-                        <constraint firstAttribute="trailing" secondItem="pDA-ml-Axu" secondAttribute="trailing" id="Wda-YK-XWR"/>
                         <constraint firstItem="2ET-4g-nGa" firstAttribute="leading" secondItem="b8c-af-eed" secondAttribute="leading" id="Z1P-7F-Btn"/>
+                        <constraint firstAttribute="trailing" secondItem="xlr-81-YPj" secondAttribute="trailing" id="eFW-S8-eu8"/>
+                        <constraint firstItem="xlr-81-YPj" firstAttribute="centerY" secondItem="2ET-4g-nGa" secondAttribute="centerY" id="lqT-5X-koi"/>
                         <constraint firstAttribute="trailing" secondItem="2ET-4g-nGa" secondAttribute="trailing" id="taQ-NS-aKe"/>
-                        <constraint firstItem="pDA-ml-Axu" firstAttribute="centerY" secondItem="2ET-4g-nGa" secondAttribute="centerY" id="tpZ-xJ-uSq"/>
                         <constraint firstItem="2ET-4g-nGa" firstAttribute="centerY" secondItem="b8c-af-eed" secondAttribute="centerY" id="w6N-OU-olN"/>
                     </constraints>
                 </customView>
-                <customView translatesAutoresizingMaskIntoConstraints="NO" id="BGX-yQ-S1S">
-                    <rect key="frame" x="16" y="347" width="190" height="32"/>
-                    <subviews>
-                        <box boxType="custom" cornerRadius="4" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="LSs-37-kQD" customClass="KMBox" customModule="PDF_Office" customModuleProvider="target">
-                            <rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
-                            <view key="contentView" id="vts-29-H3g">
-                                <rect key="frame" x="1" y="1" width="30" height="30"/>
-                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                <subviews>
-                                    <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="jdu-0F-6VI">
-                                        <rect key="frame" x="0.0" y="0.0" width="30" height="30"/>
-                                        <view key="contentView" id="CwO-UF-Jwt">
-                                            <rect key="frame" x="0.0" y="0.0" width="30" height="30"/>
-                                            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                        </view>
-                                    </box>
-                                </subviews>
-                                <constraints>
-                                    <constraint firstItem="jdu-0F-6VI" firstAttribute="top" secondItem="vts-29-H3g" secondAttribute="top" id="dxu-cE-Al7"/>
-                                    <constraint firstAttribute="trailing" secondItem="jdu-0F-6VI" secondAttribute="trailing" id="gnI-qh-J7N"/>
-                                    <constraint firstItem="jdu-0F-6VI" firstAttribute="leading" secondItem="vts-29-H3g" secondAttribute="leading" id="xp7-Lh-Ipz"/>
-                                    <constraint firstAttribute="bottom" secondItem="jdu-0F-6VI" secondAttribute="bottom" id="yNS-p2-Rml"/>
-                                </constraints>
-                            </view>
-                            <constraints>
-                                <constraint firstAttribute="width" secondItem="LSs-37-kQD" secondAttribute="height" multiplier="1:1" id="Sd7-3u-UdS"/>
-                            </constraints>
-                        </box>
-                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="e7L-m6-Pqu">
-                            <rect key="frame" x="32" y="0.0" width="2" height="32"/>
-                        </customView>
-                        <box boxType="custom" cornerRadius="4" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="crL-Lz-qUZ" customClass="KMBox" customModule="PDF_Office" customModuleProvider="target">
-                            <rect key="frame" x="34" y="0.0" width="32" height="32"/>
-                            <view key="contentView" id="gWj-RZ-6Qe">
-                                <rect key="frame" x="1" y="1" width="30" height="30"/>
-                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                <subviews>
-                                    <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="k5b-Ra-u0i">
-                                        <rect key="frame" x="0.0" y="0.0" width="30" height="30"/>
-                                        <view key="contentView" id="rL7-TB-SNy">
-                                            <rect key="frame" x="0.0" y="0.0" width="30" height="30"/>
-                                            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                        </view>
-                                    </box>
-                                </subviews>
-                                <constraints>
-                                    <constraint firstItem="k5b-Ra-u0i" firstAttribute="leading" secondItem="gWj-RZ-6Qe" secondAttribute="leading" id="Dib-Oc-DkZ"/>
-                                    <constraint firstAttribute="trailing" secondItem="k5b-Ra-u0i" secondAttribute="trailing" id="Tzc-H0-D4m"/>
-                                    <constraint firstItem="k5b-Ra-u0i" firstAttribute="top" secondItem="gWj-RZ-6Qe" secondAttribute="top" id="dIV-Tb-4Al"/>
-                                    <constraint firstAttribute="bottom" secondItem="k5b-Ra-u0i" secondAttribute="bottom" id="yTH-QV-T3U"/>
-                                </constraints>
-                            </view>
-                            <constraints>
-                                <constraint firstAttribute="width" secondItem="crL-Lz-qUZ" secondAttribute="height" multiplier="1:1" id="TsF-R6-7h5"/>
-                            </constraints>
-                        </box>
-                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="M0l-AT-5yH">
-                            <rect key="frame" x="66" y="0.0" width="1" height="32"/>
-                        </customView>
-                        <box boxType="custom" cornerRadius="4" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="ki9-Np-U3F" customClass="KMBox" customModule="PDF_Office" customModuleProvider="target">
-                            <rect key="frame" x="67" y="0.0" width="32" height="32"/>
-                            <view key="contentView" id="3ry-DJ-gxD">
-                                <rect key="frame" x="1" y="1" width="30" height="30"/>
-                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                <subviews>
-                                    <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="5NI-R5-yX8">
-                                        <rect key="frame" x="0.0" y="0.0" width="30" height="30"/>
-                                        <view key="contentView" id="usK-gV-Zml">
-                                            <rect key="frame" x="0.0" y="0.0" width="30" height="30"/>
-                                            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                        </view>
-                                    </box>
-                                </subviews>
-                                <constraints>
-                                    <constraint firstAttribute="trailing" secondItem="5NI-R5-yX8" secondAttribute="trailing" id="J7D-V1-nVb"/>
-                                    <constraint firstItem="5NI-R5-yX8" firstAttribute="leading" secondItem="3ry-DJ-gxD" secondAttribute="leading" id="Lq6-Up-tGx"/>
-                                    <constraint firstAttribute="bottom" secondItem="5NI-R5-yX8" secondAttribute="bottom" id="RgJ-wF-MJF"/>
-                                    <constraint firstItem="5NI-R5-yX8" firstAttribute="top" secondItem="3ry-DJ-gxD" secondAttribute="top" id="vlc-B5-08s"/>
-                                </constraints>
-                            </view>
-                            <constraints>
-                                <constraint firstAttribute="width" secondItem="ki9-Np-U3F" secondAttribute="height" multiplier="1:1" id="JTP-fh-DQz"/>
-                            </constraints>
-                        </box>
-                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="vTy-5F-yr3">
-                            <rect key="frame" x="99" y="0.0" width="2" height="32"/>
-                        </customView>
-                        <box boxType="custom" cornerRadius="4" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="xWH-Yr-Tyg" customClass="KMBox" customModule="PDF_Office" customModuleProvider="target">
-                            <rect key="frame" x="101" y="0.0" width="32" height="32"/>
-                            <view key="contentView" id="ruL-eI-lqW">
-                                <rect key="frame" x="1" y="1" width="30" height="30"/>
-                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                <subviews>
-                                    <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="bh0-em-ika">
-                                        <rect key="frame" x="0.0" y="0.0" width="30" height="30"/>
-                                        <view key="contentView" id="93q-La-4z2">
-                                            <rect key="frame" x="0.0" y="0.0" width="30" height="30"/>
-                                            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                        </view>
-                                    </box>
-                                </subviews>
-                                <constraints>
-                                    <constraint firstAttribute="bottom" secondItem="bh0-em-ika" secondAttribute="bottom" id="1g7-ls-Abt"/>
-                                    <constraint firstAttribute="trailing" secondItem="bh0-em-ika" secondAttribute="trailing" id="3Cn-8o-ePG"/>
-                                    <constraint firstItem="bh0-em-ika" firstAttribute="leading" secondItem="ruL-eI-lqW" secondAttribute="leading" id="ZrE-wi-8Ai"/>
-                                    <constraint firstItem="bh0-em-ika" firstAttribute="top" secondItem="ruL-eI-lqW" secondAttribute="top" id="zXw-Yt-6wc"/>
-                                </constraints>
-                            </view>
-                            <constraints>
-                                <constraint firstAttribute="width" secondItem="xWH-Yr-Tyg" secondAttribute="height" multiplier="1:1" id="7I1-UG-vMp"/>
-                            </constraints>
-                        </box>
-                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="LZk-gb-ZhG">
-                            <rect key="frame" x="133" y="0.0" width="1" height="32"/>
-                        </customView>
-                        <box boxType="custom" cornerRadius="4" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="DJq-tH-8Sk">
-                            <rect key="frame" x="134" y="0.0" width="56" height="32"/>
-                            <view key="contentView" id="EXn-fJ-8Kj">
-                                <rect key="frame" x="1" y="1" width="54" height="30"/>
-                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                <subviews>
-                                    <box boxType="custom" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="iYl-e4-9gK" customClass="KMBox" customModule="PDF_Office" customModuleProvider="target">
-                                        <rect key="frame" x="6" y="5" width="20" height="20"/>
-                                        <view key="contentView" id="xLl-VX-EnZ">
-                                            <rect key="frame" x="1" y="1" width="18" height="18"/>
-                                            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                            <subviews>
-                                                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="6ps-Tf-5Bq">
-                                                    <rect key="frame" x="0.0" y="0.0" width="18" height="18"/>
-                                                    <view key="contentView" id="ZDC-sA-tEv">
-                                                        <rect key="frame" x="0.0" y="0.0" width="18" height="18"/>
-                                                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                                    </view>
-                                                </box>
-                                            </subviews>
-                                            <constraints>
-                                                <constraint firstItem="6ps-Tf-5Bq" firstAttribute="leading" secondItem="xLl-VX-EnZ" secondAttribute="leading" id="BNG-Co-jpr"/>
-                                                <constraint firstAttribute="bottom" secondItem="6ps-Tf-5Bq" secondAttribute="bottom" id="Uqx-RP-5P6"/>
-                                                <constraint firstAttribute="trailing" secondItem="6ps-Tf-5Bq" secondAttribute="trailing" id="hgj-fw-Sf9"/>
-                                                <constraint firstItem="6ps-Tf-5Bq" firstAttribute="top" secondItem="xLl-VX-EnZ" secondAttribute="top" id="ktS-d2-BoE"/>
-                                            </constraints>
-                                        </view>
-                                        <constraints>
-                                            <constraint firstAttribute="width" constant="20" id="Z6k-AL-moZ"/>
-                                            <constraint firstAttribute="height" constant="20" id="lb3-Hb-uhQ"/>
-                                        </constraints>
-                                    </box>
-                                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wUc-nX-XaY">
-                                        <rect key="frame" x="28" y="5" width="20" height="20"/>
-                                        <constraints>
-                                            <constraint firstAttribute="height" constant="20" id="RUf-Vm-1gd"/>
-                                            <constraint firstAttribute="width" constant="20" id="Rca-qe-szj"/>
-                                        </constraints>
-                                        <buttonCell key="cell" type="bevel" title="Button" bezelStyle="rounded" image="NSColorPanel" imagePosition="only" alignment="center" imageScaling="proportionallyDown" inset="2" id="UAL-M4-CKc">
-                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                                            <font key="font" metaFont="system"/>
-                                        </buttonCell>
-                                    </button>
-                                </subviews>
-                                <constraints>
-                                    <constraint firstAttribute="trailing" secondItem="wUc-nX-XaY" secondAttribute="trailing" constant="6" id="G1x-mT-wNc"/>
-                                    <constraint firstItem="iYl-e4-9gK" firstAttribute="centerY" secondItem="EXn-fJ-8Kj" secondAttribute="centerY" id="V9x-0F-1PQ"/>
-                                    <constraint firstItem="iYl-e4-9gK" firstAttribute="leading" secondItem="EXn-fJ-8Kj" secondAttribute="leading" constant="6" id="azD-BK-Kge"/>
-                                    <constraint firstItem="wUc-nX-XaY" firstAttribute="centerY" secondItem="EXn-fJ-8Kj" secondAttribute="centerY" id="ycV-BK-WXH"/>
-                                </constraints>
-                            </view>
-                            <constraints>
-                                <constraint firstAttribute="width" constant="56" id="WhX-ky-xrJ"/>
-                            </constraints>
-                        </box>
-                    </subviews>
-                    <constraints>
-                        <constraint firstItem="ki9-Np-U3F" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="0ZG-uw-jki"/>
-                        <constraint firstAttribute="bottom" secondItem="crL-Lz-qUZ" secondAttribute="bottom" id="0v0-9p-g1s"/>
-                        <constraint firstItem="LSs-37-kQD" firstAttribute="leading" secondItem="BGX-yQ-S1S" secondAttribute="leading" id="4kN-6b-iva"/>
-                        <constraint firstItem="e7L-m6-Pqu" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="5Ak-w0-YbJ"/>
-                        <constraint firstItem="xWH-Yr-Tyg" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="7ex-eT-tVP"/>
-                        <constraint firstItem="vTy-5F-yr3" firstAttribute="leading" secondItem="ki9-Np-U3F" secondAttribute="trailing" id="8LU-Uz-KQ1"/>
-                        <constraint firstAttribute="bottom" secondItem="LSs-37-kQD" secondAttribute="bottom" id="9qQ-y0-HnB"/>
-                        <constraint firstItem="LSs-37-kQD" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="D6r-jK-cBU"/>
-                        <constraint firstItem="xWH-Yr-Tyg" firstAttribute="leading" secondItem="vTy-5F-yr3" secondAttribute="trailing" id="Gbc-nF-Ves"/>
-                        <constraint firstItem="crL-Lz-qUZ" firstAttribute="leading" secondItem="e7L-m6-Pqu" secondAttribute="trailing" id="JK4-5S-ysB"/>
-                        <constraint firstAttribute="bottom" secondItem="M0l-AT-5yH" secondAttribute="bottom" id="Ms6-bN-I9S"/>
-                        <constraint firstAttribute="bottom" secondItem="xWH-Yr-Tyg" secondAttribute="bottom" id="NMh-cT-WHu"/>
-                        <constraint firstItem="LZk-gb-ZhG" firstAttribute="width" secondItem="e7L-m6-Pqu" secondAttribute="width" id="NNs-SH-8dh"/>
-                        <constraint firstAttribute="bottom" secondItem="ki9-Np-U3F" secondAttribute="bottom" id="Nv8-lR-bbT"/>
-                        <constraint firstItem="crL-Lz-qUZ" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="Oh9-eF-5Mb"/>
-                        <constraint firstItem="e7L-m6-Pqu" firstAttribute="leading" secondItem="LSs-37-kQD" secondAttribute="trailing" id="W1d-rp-Qgz"/>
-                        <constraint firstAttribute="bottom" secondItem="vTy-5F-yr3" secondAttribute="bottom" id="WZ1-eM-PJY"/>
-                        <constraint firstItem="ki9-Np-U3F" firstAttribute="leading" secondItem="M0l-AT-5yH" secondAttribute="trailing" id="XpT-OD-4pl"/>
-                        <constraint firstAttribute="bottom" secondItem="LZk-gb-ZhG" secondAttribute="bottom" id="Y6Q-6k-f5T"/>
-                        <constraint firstItem="DJq-tH-8Sk" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="YXv-gF-1v5"/>
-                        <constraint firstAttribute="bottom" secondItem="DJq-tH-8Sk" secondAttribute="bottom" id="aex-EG-A3R"/>
-                        <constraint firstAttribute="height" constant="32" id="ctO-yf-tcZ"/>
-                        <constraint firstItem="vTy-5F-yr3" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="fPr-wo-6yo"/>
-                        <constraint firstItem="M0l-AT-5yH" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="fkg-FM-WRU"/>
-                        <constraint firstItem="vTy-5F-yr3" firstAttribute="width" secondItem="e7L-m6-Pqu" secondAttribute="width" id="gPe-uR-Eb2"/>
-                        <constraint firstAttribute="bottom" secondItem="e7L-m6-Pqu" secondAttribute="bottom" id="hzN-sg-63B"/>
-                        <constraint firstItem="M0l-AT-5yH" firstAttribute="width" secondItem="e7L-m6-Pqu" secondAttribute="width" id="k4X-oz-Lg8"/>
-                        <constraint firstAttribute="trailing" secondItem="DJq-tH-8Sk" secondAttribute="trailing" id="lx2-wY-a6k"/>
-                        <constraint firstItem="LZk-gb-ZhG" firstAttribute="leading" secondItem="xWH-Yr-Tyg" secondAttribute="trailing" id="qRE-3I-c6P"/>
-                        <constraint firstItem="DJq-tH-8Sk" firstAttribute="leading" secondItem="LZk-gb-ZhG" secondAttribute="trailing" id="tcG-r0-eY6"/>
-                        <constraint firstItem="LZk-gb-ZhG" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="vWb-R0-Td5"/>
-                        <constraint firstItem="M0l-AT-5yH" firstAttribute="leading" secondItem="crL-Lz-qUZ" secondAttribute="trailing" id="xz9-59-YCu"/>
-                    </constraints>
-                </customView>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="g6H-aL-tff">
                     <rect key="frame" x="16" y="311" width="190" height="20"/>
                     <subviews>
@@ -336,30 +152,358 @@
                         <constraint firstAttribute="trailing" secondItem="m0T-du-qB4" secondAttribute="trailing" id="tyJ-Ej-IlB"/>
                     </constraints>
                 </customView>
+                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="nyg-eM-FHL">
+                    <rect key="frame" x="16" y="347" width="190" height="32"/>
+                    <view key="contentView" id="BOq-pi-rtH">
+                        <rect key="frame" x="0.0" y="0.0" width="190" height="32"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                    </view>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="32" id="Lph-7b-RhT"/>
+                    </constraints>
+                    <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                </box>
+                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="eoI-f9-JEM">
+                    <rect key="frame" x="16" y="195" width="190" height="60"/>
+                    <view key="contentView" id="Dn8-FY-zNN">
+                        <rect key="frame" x="0.0" y="0.0" width="190" height="60"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                    </view>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="60" id="FFM-r6-5XS"/>
+                    </constraints>
+                    <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                </box>
             </subviews>
             <constraints>
+                <constraint firstItem="nyg-eM-FHL" firstAttribute="top" secondItem="b8c-af-eed" secondAttribute="bottom" constant="8" id="4Wq-VU-b7o"/>
                 <constraint firstItem="SDR-0G-2a0" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="16" id="5Q9-qY-z3g"/>
                 <constraint firstAttribute="trailing" secondItem="SDR-0G-2a0" secondAttribute="trailing" constant="16" id="AsL-0v-ex8"/>
+                <constraint firstItem="eoI-f9-JEM" firstAttribute="top" secondItem="SDR-0G-2a0" secondAttribute="bottom" constant="16" id="C7J-xN-NY5"/>
                 <constraint firstAttribute="trailing" secondItem="g6H-aL-tff" secondAttribute="trailing" constant="16" id="CyJ-0L-M7h"/>
-                <constraint firstItem="BGX-yQ-S1S" firstAttribute="top" secondItem="b8c-af-eed" secondAttribute="bottom" constant="8" id="GAz-ou-Gj4"/>
                 <constraint firstItem="SDR-0G-2a0" firstAttribute="top" secondItem="g6H-aL-tff" secondAttribute="bottom" constant="8" id="IJX-fC-sbr"/>
                 <constraint firstItem="g6H-aL-tff" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="16" id="OXf-I7-rDC"/>
-                <constraint firstAttribute="trailing" secondItem="BGX-yQ-S1S" secondAttribute="trailing" constant="16" id="RGx-Vh-0Tx"/>
+                <constraint firstAttribute="trailing" secondItem="eoI-f9-JEM" secondAttribute="trailing" constant="16" id="PGI-CP-Wx2"/>
                 <constraint firstItem="b8c-af-eed" firstAttribute="top" secondItem="Xfz-fF-jdE" secondAttribute="bottom" constant="16" id="Xrb-To-ehX"/>
                 <constraint firstItem="Xfz-fF-jdE" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="ZDs-t7-a4L"/>
+                <constraint firstItem="eoI-f9-JEM" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="16" id="aMe-L3-czS"/>
+                <constraint firstItem="g6H-aL-tff" firstAttribute="top" secondItem="nyg-eM-FHL" secondAttribute="bottom" constant="16" id="aoV-Tv-e0g"/>
                 <constraint firstAttribute="trailing" secondItem="b8c-af-eed" secondAttribute="trailing" constant="16" id="cdg-I1-i1c"/>
-                <constraint firstItem="BGX-yQ-S1S" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="16" id="dMJ-pJ-rI6"/>
-                <constraint firstItem="g6H-aL-tff" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="bottom" constant="16" id="pqq-h7-BwL"/>
+                <constraint firstAttribute="trailing" secondItem="nyg-eM-FHL" secondAttribute="trailing" constant="16" id="i7T-PE-Qbw"/>
+                <constraint firstItem="nyg-eM-FHL" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="16" id="nq2-L8-aGs"/>
                 <constraint firstItem="Xfz-fF-jdE" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="16" id="rq1-Su-gG8"/>
                 <constraint firstItem="b8c-af-eed" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="16" id="xfj-Xa-YMP"/>
                 <constraint firstAttribute="trailing" secondItem="Xfz-fF-jdE" secondAttribute="trailing" constant="16" id="xpx-Zx-jV6"/>
             </constraints>
             <point key="canvasLocation" x="4" y="273.5"/>
         </customView>
+        <customView id="BGX-yQ-S1S">
+            <rect key="frame" x="0.0" y="0.0" width="190" height="32"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="LSs-37-kQD" customClass="KMBox" customModule="PDF_Office" customModuleProvider="target">
+                    <rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
+                    <view key="contentView" id="vts-29-H3g">
+                        <rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                    </view>
+                    <constraints>
+                        <constraint firstAttribute="width" secondItem="LSs-37-kQD" secondAttribute="height" multiplier="1:1" id="Sd7-3u-UdS"/>
+                    </constraints>
+                    <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                </box>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="e7L-m6-Pqu">
+                    <rect key="frame" x="32" y="0.0" width="2" height="32"/>
+                </customView>
+                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="crL-Lz-qUZ" customClass="KMBox" customModule="PDF_Office" customModuleProvider="target">
+                    <rect key="frame" x="34" y="0.0" width="32" height="32"/>
+                    <view key="contentView" id="gWj-RZ-6Qe">
+                        <rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                    </view>
+                    <constraints>
+                        <constraint firstAttribute="width" secondItem="crL-Lz-qUZ" secondAttribute="height" multiplier="1:1" id="TsF-R6-7h5"/>
+                    </constraints>
+                    <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                </box>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="M0l-AT-5yH">
+                    <rect key="frame" x="66" y="0.0" width="1" height="32"/>
+                </customView>
+                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="ki9-Np-U3F" customClass="KMBox" customModule="PDF_Office" customModuleProvider="target">
+                    <rect key="frame" x="67" y="0.0" width="32" height="32"/>
+                    <view key="contentView" id="3ry-DJ-gxD">
+                        <rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                    </view>
+                    <constraints>
+                        <constraint firstAttribute="width" secondItem="ki9-Np-U3F" secondAttribute="height" multiplier="1:1" id="JTP-fh-DQz"/>
+                    </constraints>
+                    <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                </box>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="vTy-5F-yr3">
+                    <rect key="frame" x="99" y="0.0" width="2" height="32"/>
+                </customView>
+                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="xWH-Yr-Tyg" customClass="KMBox" customModule="PDF_Office" customModuleProvider="target">
+                    <rect key="frame" x="101" y="0.0" width="32" height="32"/>
+                    <view key="contentView" id="ruL-eI-lqW">
+                        <rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                    </view>
+                    <constraints>
+                        <constraint firstAttribute="width" secondItem="xWH-Yr-Tyg" secondAttribute="height" multiplier="1:1" id="7I1-UG-vMp"/>
+                    </constraints>
+                    <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                </box>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="LZk-gb-ZhG">
+                    <rect key="frame" x="133" y="0.0" width="1" height="32"/>
+                </customView>
+                <box boxType="custom" cornerRadius="4" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="DJq-tH-8Sk">
+                    <rect key="frame" x="134" y="0.0" width="56" height="32"/>
+                    <view key="contentView" id="EXn-fJ-8Kj">
+                        <rect key="frame" x="1" y="1" width="54" height="30"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="iYl-e4-9gK" customClass="KMBox" customModule="PDF_Office" customModuleProvider="target">
+                                <rect key="frame" x="4" y="5" width="20" height="20"/>
+                                <view key="contentView" id="xLl-VX-EnZ">
+                                    <rect key="frame" x="0.0" y="0.0" width="20" height="20"/>
+                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                </view>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="20" id="Z6k-AL-moZ"/>
+                                    <constraint firstAttribute="height" constant="20" id="lb3-Hb-uhQ"/>
+                                </constraints>
+                                <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </box>
+                            <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="Igt-nb-nYf">
+                                <rect key="frame" x="30" y="5" width="20" height="20"/>
+                                <view key="contentView" id="1o8-w9-C2p">
+                                    <rect key="frame" x="0.0" y="0.0" width="20" height="20"/>
+                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                </view>
+                                <constraints>
+                                    <constraint firstAttribute="width" constant="20" id="hov-xl-DhF"/>
+                                    <constraint firstAttribute="height" constant="20" id="sZW-gg-aXN"/>
+                                </constraints>
+                                <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </box>
+                        </subviews>
+                        <constraints>
+                            <constraint firstItem="iYl-e4-9gK" firstAttribute="centerY" secondItem="EXn-fJ-8Kj" secondAttribute="centerY" id="V9x-0F-1PQ"/>
+                            <constraint firstItem="iYl-e4-9gK" firstAttribute="leading" secondItem="EXn-fJ-8Kj" secondAttribute="leading" constant="4" id="azD-BK-Kge"/>
+                            <constraint firstAttribute="trailing" secondItem="Igt-nb-nYf" secondAttribute="trailing" constant="4" id="n0O-1O-ToL"/>
+                            <constraint firstItem="Igt-nb-nYf" firstAttribute="centerY" secondItem="iYl-e4-9gK" secondAttribute="centerY" id="n47-XF-L9F"/>
+                        </constraints>
+                    </view>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="56" id="WhX-ky-xrJ"/>
+                    </constraints>
+                </box>
+            </subviews>
+            <constraints>
+                <constraint firstItem="ki9-Np-U3F" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="0ZG-uw-jki"/>
+                <constraint firstAttribute="bottom" secondItem="crL-Lz-qUZ" secondAttribute="bottom" id="0v0-9p-g1s"/>
+                <constraint firstItem="LSs-37-kQD" firstAttribute="leading" secondItem="BGX-yQ-S1S" secondAttribute="leading" id="4kN-6b-iva"/>
+                <constraint firstItem="e7L-m6-Pqu" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="5Ak-w0-YbJ"/>
+                <constraint firstItem="xWH-Yr-Tyg" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="7ex-eT-tVP"/>
+                <constraint firstItem="vTy-5F-yr3" firstAttribute="leading" secondItem="ki9-Np-U3F" secondAttribute="trailing" id="8LU-Uz-KQ1"/>
+                <constraint firstAttribute="bottom" secondItem="LSs-37-kQD" secondAttribute="bottom" id="9qQ-y0-HnB"/>
+                <constraint firstItem="LSs-37-kQD" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="D6r-jK-cBU"/>
+                <constraint firstItem="xWH-Yr-Tyg" firstAttribute="leading" secondItem="vTy-5F-yr3" secondAttribute="trailing" id="Gbc-nF-Ves"/>
+                <constraint firstItem="crL-Lz-qUZ" firstAttribute="leading" secondItem="e7L-m6-Pqu" secondAttribute="trailing" id="JK4-5S-ysB"/>
+                <constraint firstAttribute="bottom" secondItem="M0l-AT-5yH" secondAttribute="bottom" id="Ms6-bN-I9S"/>
+                <constraint firstAttribute="bottom" secondItem="xWH-Yr-Tyg" secondAttribute="bottom" id="NMh-cT-WHu"/>
+                <constraint firstItem="LZk-gb-ZhG" firstAttribute="width" secondItem="e7L-m6-Pqu" secondAttribute="width" id="NNs-SH-8dh"/>
+                <constraint firstAttribute="bottom" secondItem="ki9-Np-U3F" secondAttribute="bottom" id="Nv8-lR-bbT"/>
+                <constraint firstItem="crL-Lz-qUZ" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="Oh9-eF-5Mb"/>
+                <constraint firstItem="e7L-m6-Pqu" firstAttribute="leading" secondItem="LSs-37-kQD" secondAttribute="trailing" id="W1d-rp-Qgz"/>
+                <constraint firstAttribute="bottom" secondItem="vTy-5F-yr3" secondAttribute="bottom" id="WZ1-eM-PJY"/>
+                <constraint firstItem="ki9-Np-U3F" firstAttribute="leading" secondItem="M0l-AT-5yH" secondAttribute="trailing" id="XpT-OD-4pl"/>
+                <constraint firstAttribute="bottom" secondItem="LZk-gb-ZhG" secondAttribute="bottom" id="Y6Q-6k-f5T"/>
+                <constraint firstItem="DJq-tH-8Sk" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="YXv-gF-1v5"/>
+                <constraint firstAttribute="bottom" secondItem="DJq-tH-8Sk" secondAttribute="bottom" id="aex-EG-A3R"/>
+                <constraint firstAttribute="height" constant="32" id="ctO-yf-tcZ"/>
+                <constraint firstItem="vTy-5F-yr3" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="fPr-wo-6yo"/>
+                <constraint firstItem="M0l-AT-5yH" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="fkg-FM-WRU"/>
+                <constraint firstItem="vTy-5F-yr3" firstAttribute="width" secondItem="e7L-m6-Pqu" secondAttribute="width" id="gPe-uR-Eb2"/>
+                <constraint firstAttribute="bottom" secondItem="e7L-m6-Pqu" secondAttribute="bottom" id="hzN-sg-63B"/>
+                <constraint firstItem="M0l-AT-5yH" firstAttribute="width" secondItem="e7L-m6-Pqu" secondAttribute="width" id="k4X-oz-Lg8"/>
+                <constraint firstAttribute="trailing" secondItem="DJq-tH-8Sk" secondAttribute="trailing" id="lx2-wY-a6k"/>
+                <constraint firstItem="LZk-gb-ZhG" firstAttribute="leading" secondItem="xWH-Yr-Tyg" secondAttribute="trailing" id="qRE-3I-c6P"/>
+                <constraint firstItem="DJq-tH-8Sk" firstAttribute="leading" secondItem="LZk-gb-ZhG" secondAttribute="trailing" id="tcG-r0-eY6"/>
+                <constraint firstItem="LZk-gb-ZhG" firstAttribute="top" secondItem="BGX-yQ-S1S" secondAttribute="top" id="vWb-R0-Td5"/>
+                <constraint firstItem="M0l-AT-5yH" firstAttribute="leading" secondItem="crL-Lz-qUZ" secondAttribute="trailing" id="xz9-59-YCu"/>
+            </constraints>
+            <point key="canvasLocation" x="-324" y="245"/>
+        </customView>
+        <customView id="cpO-Ty-rdW">
+            <rect key="frame" x="0.0" y="0.0" width="190" height="32"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="lV1-a7-Rsu">
+                    <rect key="frame" x="113" y="0.0" width="77" height="32"/>
+                    <view key="contentView" id="Phl-Ua-RaS">
+                        <rect key="frame" x="0.0" y="0.0" width="77" height="32"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                    </view>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="77" id="E04-RQ-Xgo"/>
+                    </constraints>
+                    <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                </box>
+                <slider verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="gqL-AY-QK0">
+                    <rect key="frame" x="-2" y="0.0" width="109" height="28"/>
+                    <sliderCell key="cell" state="on" alignment="left" maxValue="100" doubleValue="50" tickMarkPosition="above" sliderType="linear" id="X0E-LW-Mmd"/>
+                    <connections>
+                        <action selector="opacitySliderAction:" target="-2" id="O21-fH-hnY"/>
+                    </connections>
+                </slider>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="lV1-a7-Rsu" secondAttribute="bottom" id="1AM-9e-h4u"/>
+                <constraint firstItem="lV1-a7-Rsu" firstAttribute="centerY" secondItem="gqL-AY-QK0" secondAttribute="centerY" id="3MP-Ud-H98"/>
+                <constraint firstAttribute="trailing" secondItem="lV1-a7-Rsu" secondAttribute="trailing" id="4g5-jB-YdK"/>
+                <constraint firstAttribute="height" constant="32" id="RjR-Bl-Jeu"/>
+                <constraint firstItem="lV1-a7-Rsu" firstAttribute="leading" secondItem="gqL-AY-QK0" secondAttribute="trailing" constant="8" id="b0j-Ok-z5c"/>
+                <constraint firstItem="lV1-a7-Rsu" firstAttribute="top" secondItem="cpO-Ty-rdW" secondAttribute="top" id="e3y-d9-J07"/>
+                <constraint firstItem="gqL-AY-QK0" firstAttribute="leading" secondItem="cpO-Ty-rdW" secondAttribute="leading" id="qbL-1H-LQJ"/>
+            </constraints>
+            <point key="canvasLocation" x="-324" y="319"/>
+        </customView>
+        <customView id="rtj-AE-MX7">
+            <rect key="frame" x="0.0" y="0.0" width="190" height="60"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="jSg-p8-EgV">
+                    <rect key="frame" x="0.0" y="40" width="190" height="20"/>
+                    <subviews>
+                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="9UD-X5-ncS">
+                            <rect key="frame" x="-2" y="2" width="37" height="16"/>
+                            <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="Qrc-OC-PKX">
+                                <font key="font" usesAppearanceFont="YES"/>
+                                <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                            </textFieldCell>
+                        </textField>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="9UD-X5-ncS" firstAttribute="leading" secondItem="jSg-p8-EgV" secondAttribute="leading" id="ESH-Bt-WhY"/>
+                        <constraint firstAttribute="height" constant="20" id="Yk6-ke-qu1"/>
+                        <constraint firstItem="9UD-X5-ncS" firstAttribute="centerY" secondItem="jSg-p8-EgV" secondAttribute="centerY" id="o0R-Zc-Yzg"/>
+                    </constraints>
+                </customView>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="bMc-fq-UlG">
+                    <rect key="frame" x="0.0" y="0.0" width="190" height="32"/>
+                    <subviews>
+                        <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="HAw-R6-ZAM">
+                            <rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
+                            <view key="contentView" id="953-7c-x37">
+                                <rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                            </view>
+                            <constraints>
+                                <constraint firstAttribute="width" secondItem="HAw-R6-ZAM" secondAttribute="height" multiplier="1:1" id="am0-Cs-97F"/>
+                            </constraints>
+                            <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        </box>
+                        <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="BhZ-Ih-1rz">
+                            <rect key="frame" x="40" y="0.0" width="32" height="32"/>
+                            <view key="contentView" id="vz3-uH-qzD">
+                                <rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                            </view>
+                            <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        </box>
+                        <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="G72-uL-hxx">
+                            <rect key="frame" x="79" y="0.0" width="32" height="32"/>
+                            <view key="contentView" id="Pcs-US-Acd">
+                                <rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                            </view>
+                            <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        </box>
+                        <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="34Y-4U-ftc">
+                            <rect key="frame" x="119" y="0.0" width="32" height="32"/>
+                            <view key="contentView" id="wdf-JD-ptY">
+                                <rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                            </view>
+                            <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        </box>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="tmq-Av-850">
+                            <rect key="frame" x="32" y="0.0" width="8" height="32"/>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="EUS-0e-OiJ">
+                            <rect key="frame" x="72" y="0.0" width="7" height="32"/>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="eQX-78-lBo">
+                            <rect key="frame" x="111" y="0.0" width="8" height="32"/>
+                        </customView>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="pDH-RF-tx4">
+                            <rect key="frame" x="151" y="0.0" width="7" height="32"/>
+                        </customView>
+                        <box boxType="custom" borderWidth="0.0" title="Box" translatesAutoresizingMaskIntoConstraints="NO" id="Ey1-SK-n92">
+                            <rect key="frame" x="158" y="0.0" width="32" height="32"/>
+                            <view key="contentView" id="RRU-QB-fGL">
+                                <rect key="frame" x="0.0" y="0.0" width="32" height="32"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                            </view>
+                            <color key="fillColor" red="0.92156862750000001" green="0.92156862750000001" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        </box>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="tmq-Av-850" firstAttribute="top" secondItem="bMc-fq-UlG" secondAttribute="top" id="1Oy-li-NoQ"/>
+                        <constraint firstItem="EUS-0e-OiJ" firstAttribute="top" secondItem="bMc-fq-UlG" secondAttribute="top" id="1TE-lr-ETQ"/>
+                        <constraint firstItem="eQX-78-lBo" firstAttribute="width" secondItem="tmq-Av-850" secondAttribute="width" id="3bL-D3-2mT"/>
+                        <constraint firstAttribute="height" constant="32" id="7b7-uO-cUP"/>
+                        <constraint firstAttribute="bottom" secondItem="BhZ-Ih-1rz" secondAttribute="bottom" id="8Yq-YM-uX8"/>
+                        <constraint firstItem="Ey1-SK-n92" firstAttribute="width" secondItem="HAw-R6-ZAM" secondAttribute="width" id="8aO-4B-Wwf"/>
+                        <constraint firstItem="EUS-0e-OiJ" firstAttribute="width" secondItem="tmq-Av-850" secondAttribute="width" id="9Q9-Gg-IB0"/>
+                        <constraint firstAttribute="bottom" secondItem="HAw-R6-ZAM" secondAttribute="bottom" id="9VU-9S-hXo"/>
+                        <constraint firstItem="G72-uL-hxx" firstAttribute="width" secondItem="HAw-R6-ZAM" secondAttribute="width" id="A9b-6Y-u3D"/>
+                        <constraint firstItem="eQX-78-lBo" firstAttribute="top" secondItem="bMc-fq-UlG" secondAttribute="top" id="CcQ-na-vyp"/>
+                        <constraint firstAttribute="bottom" secondItem="pDH-RF-tx4" secondAttribute="bottom" id="D00-xh-xfc"/>
+                        <constraint firstItem="eQX-78-lBo" firstAttribute="leading" secondItem="G72-uL-hxx" secondAttribute="trailing" id="F5f-1q-741"/>
+                        <constraint firstItem="EUS-0e-OiJ" firstAttribute="leading" secondItem="BhZ-Ih-1rz" secondAttribute="trailing" id="Mjd-VT-5zN"/>
+                        <constraint firstItem="Ey1-SK-n92" firstAttribute="top" secondItem="bMc-fq-UlG" secondAttribute="top" id="P8b-HB-XoG"/>
+                        <constraint firstItem="HAw-R6-ZAM" firstAttribute="top" secondItem="bMc-fq-UlG" secondAttribute="top" id="T2F-vL-Xqv"/>
+                        <constraint firstAttribute="bottom" secondItem="EUS-0e-OiJ" secondAttribute="bottom" id="TaL-ey-B3T"/>
+                        <constraint firstItem="BhZ-Ih-1rz" firstAttribute="leading" secondItem="tmq-Av-850" secondAttribute="trailing" id="Tiv-fv-3Sl"/>
+                        <constraint firstItem="tmq-Av-850" firstAttribute="leading" secondItem="HAw-R6-ZAM" secondAttribute="trailing" id="VJW-jl-1Ae"/>
+                        <constraint firstItem="pDH-RF-tx4" firstAttribute="leading" secondItem="34Y-4U-ftc" secondAttribute="trailing" id="Vz9-Gr-Lee"/>
+                        <constraint firstItem="G72-uL-hxx" firstAttribute="leading" secondItem="EUS-0e-OiJ" secondAttribute="trailing" id="W5t-OI-ic3"/>
+                        <constraint firstItem="34Y-4U-ftc" firstAttribute="top" secondItem="bMc-fq-UlG" secondAttribute="top" id="YD6-sY-GDs"/>
+                        <constraint firstItem="HAw-R6-ZAM" firstAttribute="leading" secondItem="bMc-fq-UlG" secondAttribute="leading" id="ZwU-ql-nM8"/>
+                        <constraint firstAttribute="bottom" secondItem="34Y-4U-ftc" secondAttribute="bottom" id="aeC-cG-suS"/>
+                        <constraint firstItem="pDH-RF-tx4" firstAttribute="top" secondItem="bMc-fq-UlG" secondAttribute="top" id="dJ8-sG-Juf"/>
+                        <constraint firstItem="G72-uL-hxx" firstAttribute="top" secondItem="bMc-fq-UlG" secondAttribute="top" id="fcS-8T-6TC"/>
+                        <constraint firstAttribute="bottom" secondItem="G72-uL-hxx" secondAttribute="bottom" id="h0g-kh-WSN"/>
+                        <constraint firstAttribute="bottom" secondItem="eQX-78-lBo" secondAttribute="bottom" id="hXJ-AO-hJh"/>
+                        <constraint firstItem="Ey1-SK-n92" firstAttribute="leading" secondItem="pDH-RF-tx4" secondAttribute="trailing" id="hdo-rF-4pd"/>
+                        <constraint firstItem="34Y-4U-ftc" firstAttribute="leading" secondItem="eQX-78-lBo" secondAttribute="trailing" id="hrK-Uv-4uU"/>
+                        <constraint firstItem="BhZ-Ih-1rz" firstAttribute="top" secondItem="bMc-fq-UlG" secondAttribute="top" id="iHc-Xz-12w"/>
+                        <constraint firstItem="pDH-RF-tx4" firstAttribute="width" secondItem="tmq-Av-850" secondAttribute="width" id="lXP-ye-vtT"/>
+                        <constraint firstItem="34Y-4U-ftc" firstAttribute="width" secondItem="HAw-R6-ZAM" secondAttribute="width" id="p7b-qt-1vv"/>
+                        <constraint firstAttribute="bottom" secondItem="Ey1-SK-n92" secondAttribute="bottom" id="sZJ-kL-yrO"/>
+                        <constraint firstAttribute="bottom" secondItem="tmq-Av-850" secondAttribute="bottom" id="vOe-UJ-1wt"/>
+                        <constraint firstAttribute="trailing" secondItem="Ey1-SK-n92" secondAttribute="trailing" id="wSg-cB-Dzd"/>
+                        <constraint firstItem="BhZ-Ih-1rz" firstAttribute="width" secondItem="HAw-R6-ZAM" secondAttribute="width" id="x2n-2y-ARH"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="bMc-fq-UlG" firstAttribute="leading" secondItem="rtj-AE-MX7" secondAttribute="leading" id="AM6-oF-QkY"/>
+                <constraint firstItem="jSg-p8-EgV" firstAttribute="top" secondItem="rtj-AE-MX7" secondAttribute="top" id="Iaa-Qn-Et3"/>
+                <constraint firstAttribute="trailing" secondItem="jSg-p8-EgV" secondAttribute="trailing" id="Pm3-rN-RSH"/>
+                <constraint firstAttribute="trailing" secondItem="bMc-fq-UlG" secondAttribute="trailing" id="rf3-TN-CeV"/>
+                <constraint firstItem="bMc-fq-UlG" firstAttribute="top" secondItem="jSg-p8-EgV" secondAttribute="bottom" constant="8" id="vEH-0a-7Il"/>
+                <constraint firstItem="jSg-p8-EgV" firstAttribute="leading" secondItem="rtj-AE-MX7" secondAttribute="leading" id="xdP-Zn-tfh"/>
+                <constraint firstAttribute="bottom" secondItem="bMc-fq-UlG" secondAttribute="bottom" id="zo1-ej-09w"/>
+            </constraints>
+            <point key="canvasLocation" x="-324" y="409"/>
+        </customView>
     </objects>
     <resources>
-        <image name="NSColorPanel" width="32" height="32"/>
-        <image name="NSFontPanel" width="32" height="32"/>
         <image name="NSMenuOnStateTemplate" width="18" height="17"/>
     </resources>
 </document>

+ 5 - 9
PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/KMRightSideViewController.swift

@@ -46,15 +46,11 @@ class KMRightSideViewController: NSViewController,CipherTextViewDelegate {
     
     public func reloadDataWithPDFView(pdfView:CPDFListView,isShow:Bool) {
         if self.annotationProperties == nil {
-            if pdfView.activeAnnotations != nil && pdfView.activeAnnotations.count == 1 {
-                self.subViewType = .AnnotationProperts
-            } else {
-                return
-            }
-        } else {
-            if pdfView.activeAnnotations != nil && pdfView.activeAnnotations.count > 1 {
-                return
-            }
+          self.subViewType = .AnnotationProperts
+        }
+        if(!isShow) {
+            self.view.isHidden = true
+            return
         }
         self.annotationProperties.pdfView = pdfView
         var selectedAnnotation : CPDFAnnotation? = nil

+ 9 - 4
PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/KMPDFSignatureImageView.m

@@ -21,6 +21,7 @@
 @property (nonatomic) IBOutlet NSTextField *heraLabel;
 @property (nonatomic) IBOutlet NSTextField *orLabel;
 @property (nonatomic) IBOutlet NSButton *dragButton;
+@property (nonatomic) IBOutlet NSButton *reselectBtn;
 
 @end
 
@@ -48,13 +49,15 @@
     
     self.heraLabel.stringValue  = NSLocalizedString(@"Drop image here", nil);
     self.heraLabel.textColor = [NSColor labelColor];
-    self.orLabel.stringValue = NSLocalizedString(@"or", nil);
+    self.orLabel.stringValue = NSLocalizedString(@"Select image file", nil);
     self.orLabel.textColor = [NSColor labelColor];
     self.dragButton.wantsLayer = YES;
-    self.dragButton.title = NSLocalizedString(@"Select a File", nil);
+//    self.dragButton.title = NSLocalizedString(@"Select a File", nil);
     [self.dragButton setTitleColor:[NSColor labelColor]];
 //    [self.dragButton.layer addSublayer:[self setGradualChanging]];
 //    self.dragButton.layer.cornerRadius = 3.5;
+    
+    self.reselectBtn.hidden = YES;
 }
 
 - (NSArray *)supportedImageTypes
@@ -62,7 +65,7 @@
     return [NSArray arrayWithObjects:@"jpg",@"cur",@"bmp",@"jpeg",@"gif",@"png",@"tiff",@"tif",@"ico",@"icns",@"tga",@"psd",@"eps",@"hdr",@"jp2",@"jpc",@"pict",@"sgi",@"pdf", nil];
 }
 
--(void)drawRect:(NSRect)dirtyRect
+- (void)drawRect:(NSRect)dirtyRect
 {
     [super drawRect:dirtyRect];
     if (self.pictureView) {
@@ -87,7 +90,7 @@
 }
 
 #pragma mark Public
--(void)clearImage
+- (void)clearImage
 {
     self.picImage = nil;
     self.pictureView.hidden = NO;
@@ -359,4 +362,6 @@
     return YES;
 }
 
+- (IBAction)reselectedBtn:(id)sender {
+}
 @end

+ 112 - 147
PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/KMSignatureAnnotationViewController.m

@@ -11,105 +11,20 @@
 #import "KMButton.h"
 #import "NSMenu+Category.h"
 #import "CStampSignatureObject.h"
+#import "KMSigntureViewItem.h"
 
-@interface KMSignatureTableRowView : NSTableRowView
+@interface KMSignatureAnnotationViewController ()<NSCollectionViewDelegate,
+NSCollectionViewDataSource,
+KMSigntureViewItemDelegate>
 
-@end
-
-@implementation KMSignatureTableRowView
-
-- (instancetype)init {
-    self = [super init];
-    if (self) {
-        [self addTrackingArea];
-    }
-    return self;
-}
-
-- (void)addTrackingArea {
-    NSTrackingArea *trackingArea = [[NSTrackingArea alloc] initWithRect:self.bounds options:NSTrackingMouseEnteredAndExited | NSTrackingInVisibleRect | NSTrackingActiveAlways |NSTrackingMouseMoved owner:self userInfo:nil];
-    [self addTrackingArea:trackingArea];
-}
-
-- (void)drawSelectionInRect:(NSRect)dirtyRect {
-        NSRect selectionRect = self.bounds;
-        [[NSColor clearColor] setFill];
-         NSBezierPath *selectionPath = [NSBezierPath bezierPathWithRoundedRect:selectionRect xRadius:0 yRadius:0];
-         [selectionPath fill];
-}
-
-- (void)mouseEntered:(NSEvent *)event {
-    [super mouseEntered:event];
-}
-
-@end
-
-#pragma mark - KMSignatureAnnotationTableviewCell
-
-@interface KMSignatureAnnotationTableviewCell : NSTableCellView
-
-@property (weak) IBOutlet NSImageView *signatureImageView;
-@property (weak) IBOutlet KMButton *closeButton;
-
-@property (nonatomic,copy) void (^mouseMoveCallback) (BOOL mouseEntered);
-
-@property (nonatomic,copy) void (^mouseDownCallback) (BOOL downEntered);
-
-@end
-
-@implementation KMSignatureAnnotationTableviewCell
-
-
-- (void)viewDidMoveToWindow {
-    [super viewDidMoveToWindow];
-    if ([self window] != nil) {
-        NSTrackingArea *trackingArea = [[NSTrackingArea alloc] initWithRect:self.bounds options:NSTrackingMouseEnteredAndExited | NSTrackingInVisibleRect | NSTrackingActiveAlways |NSTrackingMouseMoved owner:self userInfo:nil];
-        [self addTrackingArea:trackingArea];
-    }
-}
-
-- (void)mouseEntered:(NSEvent *)event {
-    [super mouseEntered:event];
-    
-    if (self.mouseMoveCallback) {
-        self.mouseMoveCallback(YES);
-    }
-}
-
-- (void)mouseExited:(NSEvent *)event {
-    [super mouseExited:event];
-    
-    if (self.mouseMoveCallback) {
-        self.mouseMoveCallback(NO);
-    }
-}
-
-- (void)mouseDown:(NSEvent *)event {
-    [super mouseDown:event];
-    
-    if (self.mouseDownCallback) {
-        self.mouseDownCallback(YES);
-    }
-}
-
-- (void)mouseUp:(NSEvent *)event {
-    [super mouseUp:event];
-    
-    if (self.mouseDownCallback) {
-        self.mouseDownCallback(NO);
-    }
-}
-
-@end
-
-@interface KMSignatureAnnotationViewController ()
 @property (weak) IBOutlet NSBox *emptyBox;
-@property (weak) IBOutlet NSTableView *tableView;
 @property (weak) IBOutlet NSTextField *signatureLabel;
 @property (weak) IBOutlet NSTextField *emptyTipLabel;
 @property (weak) IBOutlet NSTextField *emptyMinTipLabel;
 @property (nonatomic,strong) NSMutableArray <KMSignature *>*signatures;
 
+@property (strong) IBOutlet NSCollectionView *collectionView;
+
 @end
 
 @implementation KMSignatureAnnotationViewController
@@ -121,24 +36,31 @@
     self.emptyMinTipLabel.stringValue = NSLocalizedString(@"No signature created", nil);
     self.signatures = [[NSMutableArray alloc] init];
     [self reloadDataSignatures];
+        
+    self.collectionView.delegate = self;
+    self.collectionView.dataSource = self;
+    [self.collectionView registerClass:[KMSigntureViewItem class] forItemWithIdentifier:@"kmSigntureViewItem"];
+    self.collectionView.backgroundColors = @[[NSColor clearColor]];
+    self.collectionView.selectable = YES;
+    self.collectionView.allowsMultipleSelection = YES;
 }
 
 
 - (void)tableViewMenu {
     NSMenu *menu = [[NSMenu alloc] init];
-    NSMenuItem *item = [menu addItemWithTitle:NSLocalizedString(@"Export stamp", nil) action:nil target:self];
-    NSMenu *tSubMenu = [[NSMenu alloc] init];
-    NSMenuItem *tMenuItem = [tSubMenu insertItemWithTitle:NSLocalizedString(@"PNG", @"Menu item title") action:@selector(exportCustomizeStamp:) target:self atIndex:0];
-    tMenuItem.tag = 0;
-    tMenuItem = [tSubMenu insertItemWithTitle:NSLocalizedString(@"JPG", @"Menu item title") action:@selector(exportCustomizeStamp:) target:self atIndex:1];
-    tMenuItem.tag = 1;
-    tMenuItem = [tSubMenu insertItemWithTitle:NSLocalizedString(@"PDF", @"Menu item title") action:@selector(exportCustomizeStamp:) target:self atIndex:2];
-    tMenuItem.tag = 2;
-    item.submenu = tSubMenu;
-    [menu addItem:[NSMenuItem separatorItem]];
-    [menu addItemWithTitle:NSLocalizedString(@"Delete stamp", nil) action:@selector(deleteCustomizeStamp) target:self];
+//    NSMenuItem *item = [menu addItemWithTitle:NSLocalizedString(@"Export stamp", nil) action:nil target:self];
+//    NSMenu *tSubMenu = [[NSMenu alloc] init];
+//    NSMenuItem *tMenuItem = [tSubMenu insertItemWithTitle:NSLocalizedString(@"PNG", @"Menu item title") action:@selector(exportCustomizeStamp:) target:self atIndex:0];
+//    tMenuItem.tag = 0;
+//    tMenuItem = [tSubMenu insertItemWithTitle:NSLocalizedString(@"JPG", @"Menu item title") action:@selector(exportCustomizeStamp:) target:self atIndex:1];
+//    tMenuItem.tag = 1;
+//    tMenuItem = [tSubMenu insertItemWithTitle:NSLocalizedString(@"PDF", @"Menu item title") action:@selector(exportCustomizeStamp:) target:self atIndex:2];
+//    tMenuItem.tag = 2;
+//    item.submenu = tSubMenu;
+//    [menu addItem:[NSMenuItem separatorItem]];
+//    [menu addItemWithTitle:NSLocalizedString(@"Delete stamp", nil) action:@selector(deleteCustomizeStamp) target:self];
     [menu addItemWithTitle:NSLocalizedString(@"Delete All stamp", nil) action:@selector(deleteAllCustomizeStamp) target:self];
-    self.tableView.menu = menu;
+    self.collectionView.menu = menu;
 }
 
 - (void)tableCellCloseButton_Click:(NSButton *)button {
@@ -171,18 +93,19 @@
         [self tableViewMenu];
     } else {
         [self reloadCustomEmptyState:YES];
-        self.tableView.menu = nil;
+        self.collectionView.menu = nil;
     }
-    [self.tableView reloadData];
+    [self.collectionView reloadData];
+    
 }
 
 - (void)reloadCustomEmptyState:(BOOL)isEmpty {
     if (isEmpty) {
         self.emptyBox.hidden = NO;
-        self.tableView.hidden = YES;
+        self.collectionView.hidden = YES;
     } else {
         self.emptyBox.hidden = YES;
-        self.tableView.hidden = NO;
+        self.collectionView.hidden = NO;
     }
 }
 
@@ -190,7 +113,14 @@
 //MARK: menu Action
 
 - (void)exportCustomizeStamp:(NSMenuItem *)sender {
-    NSInteger index = self.tableView.clickedRow;
+    if (self.collectionView.selectionIndexes.count != 1) {
+        return;
+    }
+    
+    NSInteger index = 0;
+    for (NSIndexPath *indexPath in self.collectionView.selectionIndexPaths) {
+        index = indexPath.item;
+    }
     NSInteger type = sender.tag;
     NSImage *image = self.signatures[index].pathsImage;
     if (type == 0) {
@@ -246,10 +176,18 @@
 }
 
 - (void)deleteCustomizeStamp {
-    if(self.tableView.selectedRow >= 0 && self.tableView.selectedRow < self.signatures.count) {
+    if (self.collectionView.selectionIndexes.count != 1) {
+        return;
+    }
+    
+    NSInteger index = 0;
+    for (NSIndexPath *indexPath in self.collectionView.selectionIndexPaths) {
+        index = indexPath.item;
+    }
+    if(index < self.signatures.count) {
         KMSignatureManager *signatureManager = [[KMSignatureManager alloc] init];
         [signatureManager loadAllSignatureList];
-        [signatureManager.sigatureList removeObjectAtIndex:self.tableView.selectedRow];
+        [signatureManager.sigatureList removeObjectAtIndex:index];
         [signatureManager saveSingaturesToFile];
         [self reloadDataSignatures];
     }
@@ -264,58 +202,85 @@
 
 }
 
-#pragma mark - NSTableViewDelegate,NSTableViewDataSource
+#pragma mark - NSCollectionViewDelegate
+
+- (NSInteger)numberOfSectionsInCollectionView:(NSCollectionView *)collectionView {
+    return 1;
+}
 
-- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
+- (NSInteger)collectionView:(NSCollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
     return self.signatures.count;
+
 }
 
-- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
-    KMSignatureAnnotationTableviewCell *cellView = [tableView makeViewWithIdentifier:@"KMSignatureAnnotationTableviewCell" owner:self];
-    if (row < self.signatures.count) {
-        KMSignature *signature = [self.signatures objectAtIndex:row];
-        cellView.closeButton.hidden = YES;
-
-        cellView.mouseMoveCallback = ^(BOOL mouseEntered) {
-            if (mouseEntered) {
-                cellView.layer.backgroundColor = [NSColor lightGrayColor].CGColor;
-                cellView.closeButton.hidden = NO;
-            } else {
-                cellView.layer.backgroundColor = [NSColor clearColor].CGColor;
-                cellView.closeButton.hidden = YES;
-            }
-        };
-        cellView.wantsLayer = YES;
-        cellView.layer.backgroundColor = [NSColor whiteColor].CGColor;
-        cellView.signatureImageView.image = signature.pathsImage;
-        cellView.closeButton.tag = row;
-        [cellView.closeButton setTarget:self];
-        [cellView.closeButton setAction:@selector(tableCellCloseButton_Click:)];
-        return cellView;
+- (nonnull NSCollectionViewItem *)collectionView:(nonnull NSCollectionView *)collectionView itemForRepresentedObjectAtIndexPath:(nonnull NSIndexPath *)indexPath {
+    if (indexPath.item >= self.signatures.count) {
+        return nil;
     }
-    return cellView;
+    KMSigntureViewItem *item = [collectionView makeItemWithIdentifier:@"kmSigntureViewItem" forIndexPath:indexPath];
+
+    KMSignature *signature = [self.signatures objectAtIndex:indexPath.item];
+    
+    item.iconImg.image = signature.pathsImage;
+    item.deleteIconBtn.tag = indexPath.item;
+    [item.deleteIconBtn setTarget:self];
+    [item.deleteIconBtn setAction:@selector(tableCellCloseButton_Click:)];
+    item.delegate = self;
+    item.itemIndex = indexPath.item;
+    
+    return item;
+}
+
+- (CGSize)collectionView:(NSCollectionView *)collectionView layout:(NSCollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
+    return CGSizeMake(228, 64);
 }
 
-- (NSTableRowView *)tableView:(NSTableView *)tableView rowViewForRow:(NSInteger)row {
-    KMSignatureTableRowView *rowView = [[KMSignatureTableRowView alloc] init];
-    return rowView;
+- (NSEdgeInsets)collectionView:(NSCollectionView *)collectionView layout:(NSCollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section {
+    return NSEdgeInsetsMake(0, 16, 16, 16);
 }
 
-- (CGFloat)tableView:(NSTableView *)tableView heightOfRow:(NSInteger)row {
-    return 68;
+- (CGFloat)collectionView:(NSCollectionView *)collectionView layout:(NSCollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section {
+    return 16;
 }
 
-- (BOOL)tableView:(NSTableView *)aTableView shouldSelectRow:(NSInteger)rowIndex {
-    return YES;
+- (CGFloat)collectionView:(NSCollectionView *)collectionView layout:(NSCollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section {
+    return 16;
 }
 
-- (void)tableViewSelectionDidChange:(NSNotification *)notification {
-    if (_tableView.selectedRow < self.signatures.count && _tableView.selectedRow >= 0) {
-        KMSignature *signature = [self.signatures objectAtIndex:_tableView.selectedRow];
-        CStampSignatureObject *sigObject = [[CStampSignatureObject alloc] initSignatureWithImage:signature.pathsImage];
-        [self.pdfView setAddStampObject:sigObject keepToolModel:NO];
+- (void)collectionView:(NSCollectionView *)collectionView didSelectItemsAtIndexPaths:(NSSet<NSIndexPath *> *)indexPaths {
+    if (indexPaths.count == 1) {
+        NSInteger index = 0;
+        for (NSIndexPath *indexPath in self.collectionView.selectionIndexPaths) {
+            index = indexPath.item;
+        }
+        
+        if (index < self.signatures.count) {
+            KMSignature *signature = [self.signatures objectAtIndex:index];
+            CStampSignatureObject *sigObject = [[CStampSignatureObject alloc] initSignatureWithImage:signature.pathsImage];
+            [self.pdfView setAddStampObject:sigObject keepToolModel:NO];
+        }
     }
 }
 
+#pragma mark -  KMSigntureViewItemDelegate
+- (void)kmSigntureViewItem:(KMSigntureViewItem *)item didClickMenuWithItem:(NSMenuItem *)menuItem {
+    [self.collectionView deselectAll:nil];
+    [self.collectionView selectItemsAtIndexPaths:[NSSet setWithObjects:[NSIndexPath indexPathForItem:item.itemIndex inSection:0],nil] scrollPosition:NSCollectionViewScrollPositionNone];
+    
+    [self exportCustomizeStamp:menuItem];
+}
 
+- (void)kmSigntureViewItemDidClickDeleteMenuItem:(KMSigntureViewItem *)item {
+    [self.collectionView deselectAll:nil];
+    [self.collectionView selectItemsAtIndexPaths:[NSSet setWithObjects:[NSIndexPath indexPathForItem:item.itemIndex inSection:0],nil] scrollPosition:NSCollectionViewScrollPositionNone];
+    
+    [self deleteCustomizeStamp];
+}
+
+- (void)kmSigntureViewItemDidClickAllDeleteMenuItem:(KMSigntureViewItem *)item {
+    [self.collectionView deselectAll:nil];
+    [self.collectionView selectItemsAtIndexPaths:[NSSet setWithObjects:[NSIndexPath indexPathForItem:item.itemIndex inSection:0],nil] scrollPosition:NSCollectionViewScrollPositionNone];
+    
+    [self deleteAllCustomizeStamp];
+}
 @end

+ 118 - 146
PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/KMSignatureAnnotationViewController.xib

@@ -8,11 +8,11 @@
     <objects>
         <customObject id="-2" userLabel="File's Owner" customClass="KMSignatureAnnotationViewController">
             <connections>
+                <outlet property="collectionView" destination="czs-49-ygA" id="u73-ZB-6N0"/>
                 <outlet property="emptyBox" destination="ban-ci-oTA" id="WRU-LX-HMX"/>
                 <outlet property="emptyMinTipLabel" destination="vd7-mZ-jin" id="zNH-1P-a0Z"/>
                 <outlet property="emptyTipLabel" destination="Tbj-Oa-HOw" id="Pej-dH-skC"/>
                 <outlet property="signatureLabel" destination="2BZ-Qt-bmp" id="nPE-D6-BMO"/>
-                <outlet property="tableView" destination="c49-OQ-gwo" id="STQ-GZ-BHL"/>
                 <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
             </connections>
         </customObject>
@@ -22,157 +22,130 @@
             <rect key="frame" x="0.0" y="0.0" width="227" height="415"/>
             <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
             <subviews>
-                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2BZ-Qt-bmp">
-                    <rect key="frame" x="8" y="389" width="62" height="16"/>
-                    <textFieldCell key="cell" lineBreakMode="clipping" title="Signature" id="d1y-xG-Jfy">
-                        <font key="font" usesAppearanceFont="YES"/>
-                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                    </textFieldCell>
-                </textField>
-                <scrollView autohidesScrollers="YES" horizontalLineScroll="24" horizontalPageScroll="10" verticalLineScroll="24" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jdt-nX-aPc">
-                    <rect key="frame" x="0.0" y="0.0" width="227" height="387"/>
-                    <clipView key="contentView" id="13m-PJ-paS">
-                        <rect key="frame" x="1" y="1" width="225" height="385"/>
-                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <subviews>
-                            <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" multipleSelection="NO" autosaveColumns="NO" rowHeight="24" rowSizeStyle="automatic" viewBased="YES" id="c49-OQ-gwo">
-                                <rect key="frame" x="0.0" y="0.0" width="225" height="385"/>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="nIu-Gf-7rk">
+                    <rect key="frame" x="0.0" y="0.0" width="227" height="415"/>
+                    <subviews>
+                        <customView translatesAutoresizingMaskIntoConstraints="NO" id="LHW-Nt-uf2">
+                            <rect key="frame" x="0.0" y="365" width="227" height="50"/>
+                            <subviews>
+                                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="KUF-xf-qzQ">
+                                    <rect key="frame" x="194" y="17" width="16" height="16"/>
+                                    <constraints>
+                                        <constraint firstAttribute="height" constant="16" id="Po6-HM-leo"/>
+                                        <constraint firstAttribute="width" constant="16" id="mwE-re-iZv"/>
+                                    </constraints>
+                                    <buttonCell key="cell" type="bevel" bezelStyle="rounded" image="KMImageNameMainToolbarUp" imagePosition="only" alignment="center" imageScaling="proportionallyDown" inset="2" id="nVD-Gp-kLW">
+                                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                        <font key="font" metaFont="system"/>
+                                    </buttonCell>
+                                    <connections>
+                                        <action selector="insertSignatureButton_Click:" target="-2" id="mFv-NR-mrz"/>
+                                    </connections>
+                                </button>
+                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2BZ-Qt-bmp">
+                                    <rect key="frame" x="83" y="17" width="62" height="16"/>
+                                    <textFieldCell key="cell" lineBreakMode="clipping" title="Signature" id="d1y-xG-Jfy">
+                                        <font key="font" usesAppearanceFont="YES"/>
+                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </textFieldCell>
+                                </textField>
+                            </subviews>
+                            <constraints>
+                                <constraint firstItem="2BZ-Qt-bmp" firstAttribute="centerY" secondItem="LHW-Nt-uf2" secondAttribute="centerY" id="0wM-Ss-TLf"/>
+                                <constraint firstItem="KUF-xf-qzQ" firstAttribute="centerY" secondItem="LHW-Nt-uf2" secondAttribute="centerY" id="g0U-Rq-gCw"/>
+                                <constraint firstItem="2BZ-Qt-bmp" firstAttribute="centerX" secondItem="LHW-Nt-uf2" secondAttribute="centerX" id="lrQ-Tw-pT9"/>
+                                <constraint firstAttribute="height" constant="50" id="qyo-8u-igd"/>
+                                <constraint firstAttribute="trailing" secondItem="KUF-xf-qzQ" secondAttribute="trailing" constant="17" id="ryG-zy-qMz"/>
+                            </constraints>
+                        </customView>
+                        <scrollView wantsLayer="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="p8T-K4-khD">
+                            <rect key="frame" x="0.0" y="0.0" width="227" height="365"/>
+                            <clipView key="contentView" id="dR7-DP-o8M">
+                                <rect key="frame" x="0.0" y="0.0" width="227" height="365"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                <size key="intercellSpacing" width="17" height="0.0"/>
-                                <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
-                                <tableColumns>
-                                    <tableColumn width="213" minWidth="40" maxWidth="1000" id="Ztp-vn-3l7">
-                                        <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
-                                            <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
-                                            <color key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
-                                        </tableHeaderCell>
-                                        <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text Cell" id="JsP-Rz-jrm">
+                                <subviews>
+                                    <collectionView id="czs-49-ygA">
+                                        <rect key="frame" x="0.0" y="0.0" width="227" height="278"/>
+                                        <autoresizingMask key="autoresizingMask" widthSizable="YES"/>
+                                        <collectionViewFlowLayout key="collectionViewLayout" id="w8X-BA-czF">
+                                            <size key="itemSize" width="50" height="50"/>
+                                        </collectionViewFlowLayout>
+                                        <color key="primaryBackgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    </collectionView>
+                                </subviews>
+                            </clipView>
+                            <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="S8K-CG-jaw">
+                                <rect key="frame" x="-100" y="-100" width="233" height="15"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                            </scroller>
+                            <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="kvH-mO-OTI" customClass="KBaseScroller">
+                                <rect key="frame" x="797" y="0.0" width="15" height="340"/>
+                                <autoresizingMask key="autoresizingMask"/>
+                            </scroller>
+                        </scrollView>
+                        <box borderType="none" title="Box" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="ban-ci-oTA">
+                            <rect key="frame" x="0.0" y="0.0" width="227" height="365"/>
+                            <view key="contentView" id="dqW-kL-zjA">
+                                <rect key="frame" x="0.0" y="0.0" width="227" height="365"/>
+                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                <subviews>
+                                    <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="ODp-k8-Vi6">
+                                        <rect key="frame" x="47" y="152" width="133" height="133"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" secondItem="ODp-k8-Vi6" secondAttribute="height" multiplier="1:1" id="exh-Kt-6NO"/>
+                                            <constraint firstAttribute="width" constant="133" id="ig1-TA-XMq"/>
+                                        </constraints>
+                                        <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="KMImageNameEmptySignature" id="rfd-We-aPr"/>
+                                    </imageView>
+                                    <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Tbj-Oa-HOw">
+                                        <rect key="frame" x="48" y="126" width="131" height="16"/>
+                                        <textFieldCell key="cell" lineBreakMode="clipping" title="No signature created" id="K2k-0V-W78">
+                                            <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="vd7-mZ-jin">
+                                        <rect key="frame" x="60" y="100" width="107" height="16"/>
+                                        <textFieldCell key="cell" lineBreakMode="clipping" title="点击顶部“+”新建" id="Efj-7i-gM3">
                                             <font key="font" metaFont="system"/>
-                                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
-                                            <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                            <color key="textColor" name="tertiaryLabelColor" catalog="System" colorSpace="catalog"/>
+                                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
                                         </textFieldCell>
-                                        <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
-                                        <prototypeCellViews>
-                                            <tableCellView identifier="KMSignatureAnnotationTableviewCell" id="fFn-fH-aKu" customClass="KMSignatureAnnotationTableviewCell">
-                                                <rect key="frame" x="8" y="0.0" width="208" height="63"/>
-                                                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                                                <subviews>
-                                                    <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="Kd0-QP-Gjv">
-                                                        <rect key="frame" x="42" y="2" width="124" height="59"/>
-                                                        <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="auF-0q-dbs"/>
-                                                    </imageView>
-                                                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="wkT-FA-45w" customClass="KMButton">
-                                                        <rect key="frame" x="166" y="33" width="30" height="30"/>
-                                                        <constraints>
-                                                            <constraint firstAttribute="height" constant="30" id="cgP-ck-Vle"/>
-                                                            <constraint firstAttribute="width" constant="30" id="gWe-jC-Mgj"/>
-                                                        </constraints>
-                                                        <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="KMImageNamePropertybarDeleteStamp" imagePosition="only" alignment="center" state="on" imageScaling="proportionallyDown" inset="2" id="OAa-xF-V5M">
-                                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                                                            <font key="font" metaFont="system"/>
-                                                        </buttonCell>
-                                                    </button>
-                                                </subviews>
-                                                <constraints>
-                                                    <constraint firstAttribute="bottom" secondItem="Kd0-QP-Gjv" secondAttribute="bottom" constant="2" id="Aem-kD-eSl"/>
-                                                    <constraint firstAttribute="trailing" secondItem="wkT-FA-45w" secondAttribute="trailing" constant="12" id="FvH-K9-s7b"/>
-                                                    <constraint firstItem="wkT-FA-45w" firstAttribute="leading" secondItem="Kd0-QP-Gjv" secondAttribute="trailing" id="SVc-c6-bka"/>
-                                                    <constraint firstItem="Kd0-QP-Gjv" firstAttribute="centerX" secondItem="fFn-fH-aKu" secondAttribute="centerX" id="TH7-iA-pkE"/>
-                                                    <constraint firstItem="Kd0-QP-Gjv" firstAttribute="top" secondItem="fFn-fH-aKu" secondAttribute="top" constant="2" id="fxS-IY-sce"/>
-                                                    <constraint firstItem="wkT-FA-45w" firstAttribute="top" secondItem="fFn-fH-aKu" secondAttribute="top" id="h8e-dF-wqW"/>
-                                                </constraints>
-                                                <connections>
-                                                    <outlet property="closeButton" destination="wkT-FA-45w" id="PSQ-F1-2u6"/>
-                                                    <outlet property="sampleImageView" destination="ODp-k8-Vi6" id="HYR-Md-odn"/>
-                                                    <outlet property="signatureImageView" destination="Kd0-QP-Gjv" id="JuI-Q1-VyK"/>
-                                                </connections>
-                                            </tableCellView>
-                                        </prototypeCellViews>
-                                    </tableColumn>
-                                </tableColumns>
-                                <connections>
-                                    <outlet property="dataSource" destination="-2" id="GY7-tD-O9m"/>
-                                    <outlet property="delegate" destination="-2" id="EjT-ha-jYJ"/>
-                                </connections>
-                            </tableView>
-                        </subviews>
-                    </clipView>
-                    <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="Fo9-d3-jJe">
-                        <rect key="frame" x="1" y="371" width="203" height="15"/>
-                        <autoresizingMask key="autoresizingMask"/>
-                    </scroller>
-                    <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="260-7Z-j2a">
-                        <rect key="frame" x="224" y="17" width="15" height="102"/>
-                        <autoresizingMask key="autoresizingMask"/>
-                    </scroller>
-                </scrollView>
-                <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="KUF-xf-qzQ">
-                    <rect key="frame" x="192" y="387" width="20" height="20"/>
-                    <buttonCell key="cell" type="bevel" bezelStyle="rounded" image="KMImageNameMainToolbarUp" imagePosition="only" alignment="center" imageScaling="proportionallyDown" inset="2" id="nVD-Gp-kLW">
-                        <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
-                        <font key="font" metaFont="system"/>
-                    </buttonCell>
-                    <connections>
-                        <action selector="insertSignatureButton_Click:" target="-2" id="mFv-NR-mrz"/>
-                    </connections>
-                </button>
-                <box borderType="none" title="Box" titlePosition="noTitle" translatesAutoresizingMaskIntoConstraints="NO" id="ban-ci-oTA">
-                    <rect key="frame" x="10" y="0.0" width="207" height="377"/>
-                    <view key="contentView" id="dqW-kL-zjA">
-                        <rect key="frame" x="0.0" y="0.0" width="207" height="377"/>
-                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
-                        <subviews>
-                            <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="ODp-k8-Vi6">
-                                <rect key="frame" x="37" y="160" width="133" height="133"/>
+                                    </textField>
+                                </subviews>
                                 <constraints>
-                                    <constraint firstAttribute="width" secondItem="ODp-k8-Vi6" secondAttribute="height" multiplier="1:1" id="exh-Kt-6NO"/>
-                                    <constraint firstAttribute="width" constant="133" id="ig1-TA-XMq"/>
+                                    <constraint firstItem="ODp-k8-Vi6" firstAttribute="centerX" secondItem="dqW-kL-zjA" secondAttribute="centerX" id="1Th-36-vF4"/>
+                                    <constraint firstItem="ODp-k8-Vi6" firstAttribute="centerY" secondItem="dqW-kL-zjA" secondAttribute="centerY" multiplier="0.8" id="Kxf-fk-2d7"/>
+                                    <constraint firstItem="vd7-mZ-jin" firstAttribute="top" secondItem="Tbj-Oa-HOw" secondAttribute="bottom" constant="10" id="mmU-Tw-04v"/>
+                                    <constraint firstItem="vd7-mZ-jin" firstAttribute="centerX" secondItem="Tbj-Oa-HOw" secondAttribute="centerX" id="rtX-ZU-0n2"/>
+                                    <constraint firstItem="Tbj-Oa-HOw" firstAttribute="centerX" secondItem="ODp-k8-Vi6" secondAttribute="centerX" id="swI-Wo-atp"/>
+                                    <constraint firstItem="Tbj-Oa-HOw" firstAttribute="top" secondItem="ODp-k8-Vi6" secondAttribute="bottom" constant="10" id="xgL-a5-azf"/>
                                 </constraints>
-                                <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="KMImageNameEmptySignature" id="rfd-We-aPr"/>
-                            </imageView>
-                            <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Tbj-Oa-HOw">
-                                <rect key="frame" x="38" y="134" width="131" height="16"/>
-                                <textFieldCell key="cell" lineBreakMode="clipping" title="No signature created" id="K2k-0V-W78">
-                                    <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="vd7-mZ-jin">
-                                <rect key="frame" x="50" y="108" width="107" height="16"/>
-                                <textFieldCell key="cell" lineBreakMode="clipping" title="点击顶部“+”新建" id="Efj-7i-gM3">
-                                    <font key="font" metaFont="system"/>
-                                    <color key="textColor" name="tertiaryLabelColor" catalog="System" colorSpace="catalog"/>
-                                    <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
-                                </textFieldCell>
-                            </textField>
-                        </subviews>
-                        <constraints>
-                            <constraint firstItem="ODp-k8-Vi6" firstAttribute="centerX" secondItem="dqW-kL-zjA" secondAttribute="centerX" id="1Th-36-vF4"/>
-                            <constraint firstItem="ODp-k8-Vi6" firstAttribute="centerY" secondItem="dqW-kL-zjA" secondAttribute="centerY" multiplier="0.8" id="Kxf-fk-2d7"/>
-                            <constraint firstItem="vd7-mZ-jin" firstAttribute="top" secondItem="Tbj-Oa-HOw" secondAttribute="bottom" constant="10" id="mmU-Tw-04v"/>
-                            <constraint firstItem="vd7-mZ-jin" firstAttribute="centerX" secondItem="Tbj-Oa-HOw" secondAttribute="centerX" id="rtX-ZU-0n2"/>
-                            <constraint firstItem="Tbj-Oa-HOw" firstAttribute="centerX" secondItem="ODp-k8-Vi6" secondAttribute="centerX" id="swI-Wo-atp"/>
-                            <constraint firstItem="Tbj-Oa-HOw" firstAttribute="top" secondItem="ODp-k8-Vi6" secondAttribute="bottom" constant="10" id="xgL-a5-azf"/>
-                        </constraints>
-                    </view>
-                </box>
+                            </view>
+                        </box>
+                    </subviews>
+                    <constraints>
+                        <constraint firstAttribute="bottom" secondItem="p8T-K4-khD" secondAttribute="bottom" id="7mM-kj-Arm"/>
+                        <constraint firstItem="p8T-K4-khD" firstAttribute="leading" secondItem="nIu-Gf-7rk" secondAttribute="leading" id="7py-XU-MWT"/>
+                        <constraint firstAttribute="trailing" secondItem="p8T-K4-khD" secondAttribute="trailing" id="Ayf-bF-frh"/>
+                        <constraint firstItem="LHW-Nt-uf2" firstAttribute="leading" secondItem="nIu-Gf-7rk" secondAttribute="leading" id="OPm-hq-IIz"/>
+                        <constraint firstItem="p8T-K4-khD" firstAttribute="top" secondItem="nIu-Gf-7rk" secondAttribute="top" constant="50" id="P4b-m6-dF9"/>
+                        <constraint firstAttribute="bottom" secondItem="ban-ci-oTA" secondAttribute="bottom" id="Vu4-Ij-AvT"/>
+                        <constraint firstItem="ban-ci-oTA" firstAttribute="top" secondItem="LHW-Nt-uf2" secondAttribute="bottom" id="XGG-Ta-jry"/>
+                        <constraint firstAttribute="trailing" secondItem="ban-ci-oTA" secondAttribute="trailing" id="Y2n-i3-mZK"/>
+                        <constraint firstItem="ban-ci-oTA" firstAttribute="leading" secondItem="nIu-Gf-7rk" secondAttribute="leading" id="cJ0-bF-OeV"/>
+                        <constraint firstItem="LHW-Nt-uf2" firstAttribute="top" secondItem="nIu-Gf-7rk" secondAttribute="top" id="x7S-m2-r07"/>
+                        <constraint firstAttribute="trailing" secondItem="LHW-Nt-uf2" secondAttribute="trailing" id="xGb-EZ-MfT"/>
+                    </constraints>
+                </customView>
             </subviews>
             <constraints>
-                <constraint firstAttribute="trailing" secondItem="jdt-nX-aPc" secondAttribute="trailing" id="3JU-be-N6V"/>
-                <constraint firstAttribute="bottom" secondItem="ban-ci-oTA" secondAttribute="bottom" id="BoX-WL-WL3"/>
-                <constraint firstItem="ban-ci-oTA" firstAttribute="top" secondItem="KUF-xf-qzQ" secondAttribute="bottom" constant="10" id="COw-9F-N7g"/>
-                <constraint firstAttribute="bottom" secondItem="jdt-nX-aPc" secondAttribute="bottom" id="Cjd-WP-EeQ"/>
-                <constraint firstItem="KUF-xf-qzQ" firstAttribute="centerY" secondItem="2BZ-Qt-bmp" secondAttribute="centerY" id="HuJ-UL-5le"/>
-                <constraint firstAttribute="trailing" secondItem="ban-ci-oTA" secondAttribute="trailing" constant="10" id="Ljx-Tj-bNb"/>
-                <constraint firstItem="2BZ-Qt-bmp" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="10" id="OWP-Gz-Xke"/>
-                <constraint firstItem="jdt-nX-aPc" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="RPk-37-Dmb"/>
-                <constraint firstItem="2BZ-Qt-bmp" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="10" id="WxJ-3n-sdq"/>
-                <constraint firstItem="ban-ci-oTA" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="10" id="a4b-dZ-O5m"/>
-                <constraint firstAttribute="trailing" secondItem="KUF-xf-qzQ" secondAttribute="trailing" constant="15" id="nVh-Li-81K"/>
-                <constraint firstItem="jdt-nX-aPc" firstAttribute="top" secondItem="KUF-xf-qzQ" secondAttribute="bottom" id="vbp-6A-aMj"/>
+                <constraint firstItem="nIu-Gf-7rk" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="081-nP-gV4"/>
+                <constraint firstAttribute="bottom" secondItem="nIu-Gf-7rk" secondAttribute="bottom" id="PCM-OJ-jdJ"/>
+                <constraint firstItem="nIu-Gf-7rk" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="X5e-jj-dba"/>
+                <constraint firstAttribute="trailing" secondItem="nIu-Gf-7rk" secondAttribute="trailing" id="qJY-ts-WZZ"/>
             </constraints>
             <point key="canvasLocation" x="-44.5" y="171.5"/>
         </customView>
@@ -180,6 +153,5 @@
     <resources>
         <image name="KMImageNameEmptySignature" width="140" height="140"/>
         <image name="KMImageNameMainToolbarUp" width="20" height="20"/>
-        <image name="KMImageNamePropertybarDeleteStamp" width="12" height="12"/>
     </resources>
 </document>

+ 47 - 36
PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/KMSignatureWindowController.xib

@@ -50,7 +50,7 @@
             <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
             <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
             <rect key="contentRect" x="196" y="240" width="590" height="423"/>
-            <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1055"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1512" height="944"/>
             <view key="contentView" id="se5-gp-TjO">
                 <rect key="frame" x="0.0" y="0.0" width="590" height="423"/>
                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@@ -741,33 +741,23 @@ Gw
             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
             <subviews>
                 <customView translatesAutoresizingMaskIntoConstraints="NO" id="fH0-Z8-dC3" customClass="KMPDFSignatureImageView">
-                    <rect key="frame" x="20" y="40" width="516" height="218"/>
+                    <rect key="frame" x="60" y="49" width="436" height="182"/>
                     <subviews>
                         <customView translatesAutoresizingMaskIntoConstraints="NO" id="Z9Y-kq-Z1X">
-                            <rect key="frame" x="138" y="75" width="240" height="68"/>
+                            <rect key="frame" x="154" y="40" width="128" height="128"/>
                             <subviews>
-                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OZz-hG-Yf2">
-                                    <rect key="frame" x="111" y="29" width="18" height="17"/>
-                                    <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="or" id="prv-uQ-kZ4">
-                                        <font key="font" metaFont="system" size="14"/>
-                                        <color key="textColor" red="0.3921568627" green="0.3921568627" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
-                                        <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
-                                    </textFieldCell>
-                                </textField>
-                                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="A6g-VS-XMA">
-                                    <rect key="frame" x="8" y="51" width="224" height="17"/>
-                                    <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="Drag image here" id="ytS-fD-Fui">
-                                        <font key="font" metaFont="system" size="14"/>
-                                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
-                                        <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
-                                    </textFieldCell>
-                                </textField>
+                                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6qc-wz-iYe">
+                                    <rect key="frame" x="0.0" y="0.0" width="128" height="128"/>
+                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+                                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="signAddBack" id="EFi-xd-L00"/>
+                                </imageView>
                                 <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="phK-G3-xZl">
-                                    <rect key="frame" x="68" y="-7" width="105" height="32"/>
+                                    <rect key="frame" x="49" y="49" width="30" height="30"/>
                                     <constraints>
-                                        <constraint firstAttribute="height" constant="20" id="psy-Gs-h0e"/>
+                                        <constraint firstAttribute="width" constant="30" id="jJG-dP-3Ww"/>
+                                        <constraint firstAttribute="height" constant="30" id="pbZ-QD-2L7"/>
                                     </constraints>
-                                    <buttonCell key="cell" type="push" title="Select a file" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="4Kd-E6-Yas">
+                                    <buttonCell key="cell" type="bevel" bezelStyle="rounded" image="signAdd" imagePosition="overlaps" alignment="center" imageScaling="proportionallyDown" inset="2" id="4Kd-E6-Yas">
                                         <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                                         <font key="font" metaFont="system"/>
                                         <string key="keyEquivalent" base64-UTF8="YES">
@@ -780,40 +770,61 @@ DQ
                                 </button>
                             </subviews>
                             <constraints>
-                                <constraint firstItem="OZz-hG-Yf2" firstAttribute="top" secondItem="A6g-VS-XMA" secondAttribute="bottom" constant="5" id="2xF-Pm-Rob"/>
                                 <constraint firstItem="phK-G3-xZl" firstAttribute="centerX" secondItem="Z9Y-kq-Z1X" secondAttribute="centerX" id="9NQ-s5-0xx"/>
-                                <constraint firstAttribute="trailing" secondItem="A6g-VS-XMA" secondAttribute="trailing" constant="10" id="P5d-P8-vM9"/>
-                                <constraint firstItem="OZz-hG-Yf2" firstAttribute="centerX" secondItem="Z9Y-kq-Z1X" secondAttribute="centerX" id="Z57-99-7oF"/>
-                                <constraint firstAttribute="width" constant="240" id="dPN-i1-lp7"/>
-                                <constraint firstItem="A6g-VS-XMA" firstAttribute="leading" secondItem="Z9Y-kq-Z1X" secondAttribute="leading" constant="10" id="mhN-F1-nAy"/>
-                                <constraint firstAttribute="bottom" secondItem="phK-G3-xZl" secondAttribute="bottom" id="sKF-ec-Mrz"/>
-                                <constraint firstItem="A6g-VS-XMA" firstAttribute="top" secondItem="Z9Y-kq-Z1X" secondAttribute="top" id="wW4-gY-QPH"/>
-                                <constraint firstAttribute="height" constant="68" id="zPI-2s-bGk"/>
+                                <constraint firstAttribute="width" constant="128" id="dPN-i1-lp7"/>
+                                <constraint firstItem="phK-G3-xZl" firstAttribute="centerY" secondItem="Z9Y-kq-Z1X" secondAttribute="centerY" id="hQm-SI-pRE"/>
+                                <constraint firstAttribute="height" constant="128" id="zPI-2s-bGk"/>
                             </constraints>
                         </customView>
+                        <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="OZz-hG-Yf2">
+                            <rect key="frame" x="163" y="19" width="111" height="17"/>
+                            <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Select image file" id="prv-uQ-kZ4">
+                                <font key="font" metaFont="system" size="14"/>
+                                <color key="textColor" red="0.3921568627" green="0.3921568627" blue="0.3921568627" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                            </textFieldCell>
+                        </textField>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4iG-s7-evu">
+                            <rect key="frame" x="360" y="4" width="71" height="31"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="65" id="QqX-gB-Pv4"/>
+                                <constraint firstAttribute="height" constant="24" id="faw-VI-n2n"/>
+                            </constraints>
+                            <buttonCell key="cell" type="bevel" title="Reselect" bezelStyle="regularSquare" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="q44-R8-PRN">
+                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                        </button>
                     </subviews>
                     <constraints>
-                        <constraint firstItem="Z9Y-kq-Z1X" firstAttribute="centerY" secondItem="fH0-Z8-dC3" secondAttribute="centerY" id="9Vo-zl-7bB"/>
+                        <constraint firstAttribute="trailing" secondItem="4iG-s7-evu" secondAttribute="trailing" constant="8" id="4wR-I9-s1s"/>
+                        <constraint firstItem="OZz-hG-Yf2" firstAttribute="top" secondItem="Z9Y-kq-Z1X" secondAttribute="bottom" constant="4" id="7an-rG-q0t"/>
+                        <constraint firstItem="Z9Y-kq-Z1X" firstAttribute="centerX" secondItem="fH0-Z8-dC3" secondAttribute="centerX" id="EzD-Hw-dwO"/>
+                        <constraint firstAttribute="height" constant="182" id="Hqh-Gw-ATl"/>
+                        <constraint firstItem="Z9Y-kq-Z1X" firstAttribute="top" secondItem="fH0-Z8-dC3" secondAttribute="top" constant="14" id="JfR-YG-Smz"/>
+                        <constraint firstAttribute="bottom" secondItem="4iG-s7-evu" secondAttribute="bottom" constant="8" id="e2j-Eh-u8g"/>
+                        <constraint firstAttribute="width" constant="436" id="fX6-dE-r4Q"/>
                         <constraint firstItem="Z9Y-kq-Z1X" firstAttribute="centerX" secondItem="fH0-Z8-dC3" secondAttribute="centerX" id="ikF-MQ-WXe"/>
+                        <constraint firstItem="OZz-hG-Yf2" firstAttribute="centerX" secondItem="fH0-Z8-dC3" secondAttribute="centerX" id="rY2-Rn-Z7R"/>
                     </constraints>
                     <connections>
                         <outlet property="dragButton" destination="phK-G3-xZl" id="ykS-07-CfT"/>
-                        <outlet property="heraLabel" destination="A6g-VS-XMA" id="rMe-TB-tr7"/>
                         <outlet property="orLabel" destination="OZz-hG-Yf2" id="idl-ra-Jnc"/>
                         <outlet property="pictureView" destination="Z9Y-kq-Z1X" id="2Bs-ca-Kth"/>
+                        <outlet property="reselectBtn" destination="4iG-s7-evu" id="q6v-qT-BtH"/>
                     </connections>
                 </customView>
             </subviews>
             <constraints>
-                <constraint firstAttribute="trailing" secondItem="fH0-Z8-dC3" secondAttribute="trailing" constant="20" id="2eY-eC-S2H"/>
-                <constraint firstAttribute="bottom" secondItem="fH0-Z8-dC3" secondAttribute="bottom" constant="40" id="Kza-dN-ZXQ"/>
-                <constraint firstItem="fH0-Z8-dC3" firstAttribute="leading" secondItem="7II-X0-WZi" secondAttribute="leading" constant="20" id="b15-AR-T1l"/>
-                <constraint firstItem="fH0-Z8-dC3" firstAttribute="top" secondItem="7II-X0-WZi" secondAttribute="top" constant="21" id="jDK-WY-tZx"/>
+                <constraint firstItem="fH0-Z8-dC3" firstAttribute="centerX" secondItem="7II-X0-WZi" secondAttribute="centerX" id="Ouv-qc-Usl"/>
+                <constraint firstItem="fH0-Z8-dC3" firstAttribute="centerY" secondItem="7II-X0-WZi" secondAttribute="centerY" id="qcW-27-YeS"/>
             </constraints>
             <point key="canvasLocation" x="-302" y="1253"/>
         </view>
     </objects>
     <resources>
+        <image name="signAdd" width="30" height="30"/>
+        <image name="signAddBack" width="92.333335876464844" height="114.33333587646484"/>
         <namedColor name="KMAccentColor">
             <color red="0.27843137254901962" green="0.49411764705882355" blue="0.87058823529411766" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
         </namedColor>

+ 34 - 0
PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/KMSigntureViewItem.h

@@ -0,0 +1,34 @@
+//
+//  KMSigntureViewItem.h
+//  PDF Office
+//
+//  Created by Niehaoyu on 2023/2/25.
+//
+
+#import <Cocoa/Cocoa.h>
+
+NS_ASSUME_NONNULL_BEGIN
+@protocol KMSigntureViewItemDelegate;
+
+@interface KMSigntureViewItem : NSCollectionViewItem
+
+
+@property (strong) IBOutlet NSImageView *iconImg;
+@property (strong) IBOutlet NSButton *deleteIconBtn;
+
+@property (nonatomic, assign) NSInteger itemIndex;
+@property (nonatomic, weak) id<KMSigntureViewItemDelegate>delegate;
+
+@end
+
+@protocol KMSigntureViewItemDelegate <NSObject>
+
+- (void)kmSigntureViewItem:(KMSigntureViewItem *)item didClickMenuWithItem:(NSMenuItem *)menuItem;
+
+- (void)kmSigntureViewItemDidClickDeleteMenuItem:(KMSigntureViewItem *)item;
+
+- (void)kmSigntureViewItemDidClickAllDeleteMenuItem:(KMSigntureViewItem *)item;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 92 - 0
PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/KMSigntureViewItem.m

@@ -0,0 +1,92 @@
+//
+//  KMSigntureViewItem.m
+//  PDF Office
+//
+//  Created by Niehaoyu on 2023/2/25.
+//
+
+#import "KMSigntureViewItem.h"
+#import "NSMenu+Category.h"
+
+@interface KMSigntureViewItem ()
+
+@property (strong) IBOutlet NSView *contendView;
+
+@property (nonatomic, copy) NSTrackingArea *trackingArea;
+
+@end
+
+@implementation KMSigntureViewItem
+- (void)dealloc {
+    
+    if (self.trackingArea) {
+        [self.view removeTrackingArea:self.trackingArea];
+    }
+}
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do view setup here.
+    
+    self.contendView.wantsLayer = YES;
+    self.contendView.layer.backgroundColor = [NSColor colorWithRed:206 green:208 blue:212 alpha:0.6].CGColor;
+    self.contendView.layer.cornerRadius = 8.0;
+    self.contendView.layer.masksToBounds = YES;
+    self.contendView.layer.borderWidth = 1.;
+    self.contendView.layer.borderColor = [[NSColor blackColor] colorWithAlphaComponent:0.1].CGColor;
+    
+    self.trackingArea = [[NSTrackingArea alloc] initWithRect:self.view.bounds options:NSTrackingMouseEnteredAndExited | NSTrackingInVisibleRect | NSTrackingActiveAlways |NSTrackingMouseMoved owner:self userInfo:nil];
+    [self.view addTrackingArea:self.trackingArea];
+    
+    self.deleteIconBtn.hidden = YES;
+    
+    [self tableViewMenu];
+}
+
+- (void)tableViewMenu {
+    NSMenu *menu = [[NSMenu alloc] init];
+    NSMenuItem *item = [menu addItemWithTitle:NSLocalizedString(@"Export stamp", nil) action:nil target:self];
+    NSMenu *tSubMenu = [[NSMenu alloc] init];
+    NSMenuItem *tMenuItem = [tSubMenu insertItemWithTitle:NSLocalizedString(@"PNG", @"Menu item title") action:@selector(exportCustomizeStamp:) target:self atIndex:0];
+    tMenuItem.tag = 0;
+    tMenuItem = [tSubMenu insertItemWithTitle:NSLocalizedString(@"JPG", @"Menu item title") action:@selector(exportCustomizeStamp:) target:self atIndex:1];
+    tMenuItem.tag = 1;
+    tMenuItem = [tSubMenu insertItemWithTitle:NSLocalizedString(@"PDF", @"Menu item title") action:@selector(exportCustomizeStamp:) target:self atIndex:2];
+    tMenuItem.tag = 2;
+    item.submenu = tSubMenu;
+    [menu addItem:[NSMenuItem separatorItem]];
+    [menu addItemWithTitle:NSLocalizedString(@"Delete stamp", nil) action:@selector(deleteCustomizeStamp) target:self];
+    [menu addItemWithTitle:NSLocalizedString(@"Delete All stamp", nil) action:@selector(deleteAllCustomizeStamp) target:self];
+    self.view.menu = menu;
+}
+
+- (void)mouseEntered:(NSEvent *)event {
+    [super mouseEntered:event];
+    
+    self.deleteIconBtn.hidden = NO;
+}
+
+- (void)mouseExited:(NSEvent *)event {
+    [super mouseExited:event];
+    
+    self.deleteIconBtn.hidden = YES;
+}
+
+- (void)exportCustomizeStamp:(NSMenuItem *)sender {
+    if (self.delegate && [self.delegate respondsToSelector:@selector(kmSigntureViewItem:didClickMenuWithItem:)]) {
+        [self.delegate kmSigntureViewItem:self didClickMenuWithItem:sender];
+    }
+}
+
+- (void)deleteCustomizeStamp {
+    if (self.delegate && [self.delegate respondsToSelector:@selector(kmSigntureViewItemDidClickDeleteMenuItem:)]) {
+        [self.delegate kmSigntureViewItemDidClickDeleteMenuItem:self];
+    }
+}
+
+- (void)deleteAllCustomizeStamp {
+    if (self.delegate && [self.delegate respondsToSelector:@selector(kmSigntureViewItemDidClickAllDeleteMenuItem:)]) {
+        [self.delegate kmSigntureViewItemDidClickAllDeleteMenuItem:self];
+    }
+}
+@end

+ 64 - 0
PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/KMSigntureViewItem.xib

@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="21507"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMSigntureViewItem">
+            <connections>
+                <outlet property="contendView" destination="2B3-pm-Vma" id="Brv-at-HWU"/>
+                <outlet property="deleteIconBtn" destination="o7x-9r-sOc" id="G7b-51-rAV"/>
+                <outlet property="iconImg" destination="UhD-yF-ZIM" id="K71-sA-vDy"/>
+                <outlet property="view" destination="Hz6-mo-xeY" id="0bl-1N-x8E"/>
+            </connections>
+        </customObject>
+        <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="228" height="64"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <customView translatesAutoresizingMaskIntoConstraints="NO" id="2B3-pm-Vma">
+                    <rect key="frame" x="0.0" y="0.0" width="228" height="64"/>
+                    <subviews>
+                        <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="UhD-yF-ZIM">
+                            <rect key="frame" x="0.0" y="0.0" width="228" height="64"/>
+                            <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" id="eDR-Fq-gAP"/>
+                        </imageView>
+                        <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="o7x-9r-sOc">
+                            <rect key="frame" x="186" y="22" width="30" height="30"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="30" id="Yqs-7z-DBZ"/>
+                                <constraint firstAttribute="height" constant="30" id="qBR-rC-TAe"/>
+                            </constraints>
+                            <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="KMImageNamePropertybarDeleteStamp" imagePosition="only" alignment="center" state="on" imageScaling="proportionallyDown" inset="2" id="Ila-Cl-Vdj">
+                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                        </button>
+                    </subviews>
+                    <constraints>
+                        <constraint firstItem="o7x-9r-sOc" firstAttribute="top" secondItem="2B3-pm-Vma" secondAttribute="top" constant="12" id="PFh-U1-95c"/>
+                        <constraint firstAttribute="bottom" secondItem="UhD-yF-ZIM" secondAttribute="bottom" id="RBr-cC-NId"/>
+                        <constraint firstItem="UhD-yF-ZIM" firstAttribute="top" secondItem="2B3-pm-Vma" secondAttribute="top" id="eEk-R2-SoC"/>
+                        <constraint firstItem="UhD-yF-ZIM" firstAttribute="leading" secondItem="2B3-pm-Vma" secondAttribute="leading" id="foh-jc-In4"/>
+                        <constraint firstAttribute="trailing" secondItem="UhD-yF-ZIM" secondAttribute="trailing" id="fp5-FK-8L4"/>
+                        <constraint firstAttribute="trailing" secondItem="o7x-9r-sOc" secondAttribute="trailing" constant="12" id="lGH-Vw-F4a"/>
+                    </constraints>
+                </customView>
+            </subviews>
+            <constraints>
+                <constraint firstItem="2B3-pm-Vma" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="Z5Y-3l-Ccp"/>
+                <constraint firstAttribute="bottom" secondItem="2B3-pm-Vma" secondAttribute="bottom" id="v3p-T1-cRf"/>
+                <constraint firstAttribute="trailing" secondItem="2B3-pm-Vma" secondAttribute="trailing" id="wV7-Q1-ZKX"/>
+                <constraint firstItem="2B3-pm-Vma" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="xaW-tT-RKu"/>
+            </constraints>
+            <point key="canvasLocation" x="81" y="132"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="KMImageNamePropertybarDeleteStamp" width="12" height="12"/>
+    </resources>
+</document>

BIN
PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/images/signAdd.png


BIN
PDF Office/PDF Office/Class/PDFWindowController/Side/RightSide/Signature/images/signAddBack.png


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

@@ -78,10 +78,10 @@ extension KMMainViewController: KMToolbarControllerDelegate {
                     self.listView.setNeedsDisplayAnnotationViewFor(annotation?.page)
                 }
 
-            } else {
-                self.refreshListViewToolMode()
-                self.listView.annotationType = CAnnotationType(rawValue: item.tag) ?? CAnnotationType.unkown
             }
+            self.refreshListViewToolMode()
+            self.listView.annotationType = CAnnotationType(rawValue: item.tag) ?? CAnnotationType.unkown
+            
         }
         
         if self.listView.toolMode != .editPDFToolMode && self.listView.annotationType != .unkown {

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

@@ -678,9 +678,28 @@ import Cocoa
     
     func pdfListViewChangeatioActiveAnnotations(_ pdfListView: CPDFListView!, forActiveAnnotations annotations: [CPDFAnnotation]!) {
         if annotations.count > 0 {
-            self.rightSideViewController?.reloadDataWithPDFView(pdfView: pdfListView, isShow: true)
-            self.openRightPane()
-        } else {
+            if annotations.count > 1 {
+                let fristAnnotation  = annotations.first
+                var isSameAnnotation = true
+                let className =  NSStringFromClass(fristAnnotation!.classForCoder)
+                for annotation in annotations {
+                    let cunrrentClassName = NSStringFromClass(annotation.classForCoder)
+                    if className != cunrrentClassName {
+                        isSameAnnotation = false
+                    }
+                }
+                if isSameAnnotation == false {
+                    self.rightSideViewController?.reloadDataWithPDFView(pdfView: pdfListView, isShow: false)
+                    self.closeRightPane()
+                } else {
+                    self.rightSideViewController?.reloadDataWithPDFView(pdfView: pdfListView, isShow: true)
+                    self.openRightPane()
+                }
+            } else {
+                self.rightSideViewController?.reloadDataWithPDFView(pdfView: pdfListView, isShow: true)
+                self.openRightPane()
+            }
+        } else if (annotations.count == 0 && pdfListView.annotationType == .unkown){
             self.rightSideViewController?.reloadDataWithPDFView(pdfView: pdfListView, isShow: false)
             self.closeRightPane()
         }