Browse Source

【toolbar】新增注释工具设置窗口

tangchao 1 year ago
parent
commit
6774266dff

+ 18 - 0
PDF Office/PDF Master.xcodeproj/project.pbxproj

@@ -2854,6 +2854,12 @@
 		BBC348562958465C008D2CD1 /* KMBackgroundFilePropertyInfoController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BBC348522958465C008D2CD1 /* KMBackgroundFilePropertyInfoController.xib */; };
 		BBC348572958465C008D2CD1 /* KMBackgroundFilePropertyInfoController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BBC348522958465C008D2CD1 /* KMBackgroundFilePropertyInfoController.xib */; };
 		BBC348582958465C008D2CD1 /* KMBackgroundFilePropertyInfoController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BBC348522958465C008D2CD1 /* KMBackgroundFilePropertyInfoController.xib */; };
+		BBC70EA92AEA6EF800AC1585 /* KMToolbarCustomWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BBC70EA62AEA6EF700AC1585 /* KMToolbarCustomWindowController.xib */; };
+		BBC70EAA2AEA6EF800AC1585 /* KMToolbarCustomWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BBC70EA62AEA6EF700AC1585 /* KMToolbarCustomWindowController.xib */; };
+		BBC70EAB2AEA6EF800AC1585 /* KMToolbarCustomWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BBC70EA62AEA6EF700AC1585 /* KMToolbarCustomWindowController.xib */; };
+		BBC70EAC2AEA6EF800AC1585 /* KMToolbarCustomWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = BBC70EA82AEA6EF700AC1585 /* KMToolbarCustomWindowController.m */; };
+		BBC70EAD2AEA6EF800AC1585 /* KMToolbarCustomWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = BBC70EA82AEA6EF700AC1585 /* KMToolbarCustomWindowController.m */; };
+		BBC70EAE2AEA6EF800AC1585 /* KMToolbarCustomWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = BBC70EA82AEA6EF700AC1585 /* KMToolbarCustomWindowController.m */; };
 		BBC745EA295F067B0072C2ED /* KMCropSettingWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC745E8295F067B0072C2ED /* KMCropSettingWindowController.swift */; };
 		BBC745EB295F067B0072C2ED /* KMCropSettingWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC745E8295F067B0072C2ED /* KMCropSettingWindowController.swift */; };
 		BBC745EC295F067B0072C2ED /* KMCropSettingWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BBC745E8295F067B0072C2ED /* KMCropSettingWindowController.swift */; };
@@ -4368,6 +4374,9 @@
 		BBC3484D29582920008D2CD1 /* KMBackgroundColorView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBackgroundColorView.swift; sourceTree = "<group>"; };
 		BBC348512958465C008D2CD1 /* KMBackgroundFilePropertyInfoController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMBackgroundFilePropertyInfoController.swift; sourceTree = "<group>"; };
 		BBC348522958465C008D2CD1 /* KMBackgroundFilePropertyInfoController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMBackgroundFilePropertyInfoController.xib; sourceTree = "<group>"; };
+		BBC70EA62AEA6EF700AC1585 /* KMToolbarCustomWindowController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMToolbarCustomWindowController.xib; sourceTree = "<group>"; };
+		BBC70EA72AEA6EF700AC1585 /* KMToolbarCustomWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KMToolbarCustomWindowController.h; sourceTree = "<group>"; };
+		BBC70EA82AEA6EF700AC1585 /* KMToolbarCustomWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KMToolbarCustomWindowController.m; sourceTree = "<group>"; };
 		BBC745E8295F067B0072C2ED /* KMCropSettingWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMCropSettingWindowController.swift; sourceTree = "<group>"; };
 		BBC745E9295F067B0072C2ED /* KMCropSettingWindowController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMCropSettingWindowController.xib; sourceTree = "<group>"; };
 		BBC745F1295F0DD00072C2ED /* KMCropSettingPageSizeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMCropSettingPageSizeView.swift; sourceTree = "<group>"; };
@@ -4730,6 +4739,9 @@
 				BBB29BCC2AEA190D005F1B6B /* KMToolbarCustomViewController.h */,
 				BBB29BCD2AEA190D005F1B6B /* KMToolbarCustomViewController.m */,
 				BBB29BCB2AEA190D005F1B6B /* KMToolbarCustomViewController.xib */,
+				BBC70EA72AEA6EF700AC1585 /* KMToolbarCustomWindowController.h */,
+				BBC70EA82AEA6EF700AC1585 /* KMToolbarCustomWindowController.m */,
+				BBC70EA62AEA6EF700AC1585 /* KMToolbarCustomWindowController.xib */,
 			);
 			path = Toolbar;
 			sourceTree = "<group>";
@@ -8816,6 +8828,7 @@
 				BB7507EC29861C37002DBDB1 /* PasswordWindowController.xib in Resources */,
 				9F0CB49A29683E1000007028 /* KMPropertiesPanelTextSubVC.xib in Resources */,
 				BBB29BCE2AEA190D005F1B6B /* KMToolbarCustomViewController.xib in Resources */,
+				BBC70EA92AEA6EF800AC1585 /* KMToolbarCustomWindowController.xib in Resources */,
 				89DB5DAA291B8DE70029624F /* KMOutlineEditViewController.xib in Resources */,
 				BB003029298CF7EC002DD1A0 /* KMPreferenceDisplayController.xib in Resources */,
 				9F0CB5452986953A00007028 /* KMURLToPDFWindowController.xib in Resources */,
@@ -8912,6 +8925,7 @@
 				BB49ED02293F459500C82CA2 /* KMConvertPPTsWindowController.xib in Resources */,
 				BB8F455B295AA1270037EA22 /* KMHeaderFooterPropertyInfoController.xib in Resources */,
 				BB7F7BFB29AA469F00A3E4E7 /* KMSigntureViewItem.xib in Resources */,
+				BBC70EAA2AEA6EF800AC1585 /* KMToolbarCustomWindowController.xib in Resources */,
 				AD0FA51729A9FA8F00EDEB50 /* KMResetPasswordView.xib in Resources */,
 				F3A9DC82294309D80074E5D2 /* CPDFListEditAnnotationViewController.xib in Resources */,
 				8942F7F42926087200389627 /* KMSearchViewController.xib in Resources */,
@@ -9409,6 +9423,7 @@
 				9F8539FB2947137500DF644E /* newtab_p.pdf in Resources */,
 				9F221EDC29A9EC0900978A59 /* KMFillSignTextPanel.xib in Resources */,
 				BBB29BD02AEA190E005F1B6B /* KMToolbarCustomViewController.xib in Resources */,
+				BBC70EAB2AEA6EF800AC1585 /* KMToolbarCustomWindowController.xib in Resources */,
 				BB69C95E299116FD0001A9B1 /* five_line_score.pdf in Resources */,
 				BB89725B294C559F0045787C /* KMWatermarkPropertyCreateController.xib in Resources */,
 				ADBC2D3C299F0A5A006280C8 /* KMPrintHelpViewController.xib in Resources */,
@@ -9872,6 +9887,7 @@
 				AD6218D42A7D29F40088475C /* KMComparativeGradientView.swift in Sources */,
 				BBFE6E5D2930809A00142C01 /* KMMergeCollectionPageViewItem.swift in Sources */,
 				BB0A55212A30968900B6E84B /* KMDesignBaseView.swift in Sources */,
+				BBC70EAC2AEA6EF800AC1585 /* KMToolbarCustomWindowController.m in Sources */,
 				9F02016A2A1B088700C9B673 /* KMAIOpenPDFFilesVC.swift in Sources */,
 				BB147005299DC0D100784A6A /* OIDFieldMapping.m in Sources */,
 				BB003015298CA446002DD1A0 /* KMPreferenceGeneralController.swift in Sources */,
@@ -10927,6 +10943,7 @@
 				9FD0D2A82AD4EFB000DA3FF8 /* KMSavePanelAccessoryController.swift in Sources */,
 				BBE0BDF429A22EF300440583 /* KMMainViewController+MenuAction.swift in Sources */,
 				BB4EEF392976451E003A3537 /* KMRedactContentBaseView.swift in Sources */,
+				BBC70EAD2AEA6EF800AC1585 /* KMToolbarCustomWindowController.m in Sources */,
 				BB24D4A82977BE6700041659 /* KMRedactConfirmWindowController.swift in Sources */,
 				9F0CB4F2298655BC00007028 /* KMDesignToken+ItemSpacing.swift in Sources */,
 				BB93CDE62AE757A000B29C57 /* KMToolbarItemView.swift in Sources */,
@@ -11058,6 +11075,7 @@
 				ADBC2D39299F0A5A006280C8 /* KMPrintHelpViewController.swift in Sources */,
 				BB146FE0299DC0D100784A6A /* GTLRDriveObjects.m in Sources */,
 				89D9896E28FD50EF003A3E87 /* KMAnnotationCollectionViewItem.swift in Sources */,
+				BBC70EAE2AEA6EF800AC1585 /* KMToolbarCustomWindowController.m in Sources */,
 				ADBC2D0E299CAA65006280C8 /* KMBaseXibView.swift in Sources */,
 				BB86C1EF28F544F4005AD968 /* CPDFListView+Event.m in Sources */,
 				AD867FA329DEB4B000F00440 /* KMBOTAAnnotationTool.swift in Sources */,

+ 15 - 0
PDF Office/PDF Master/Class/PDFWindowController/Toolbar/KMToolbarCustomWindowController.h

@@ -0,0 +1,15 @@
+//
+//  KMToolbarCustomWindowController.h
+//  PDF Reader Pro Edition
+//
+//  Created by 王帅 on 2018/8/21.
+//
+
+#import <Cocoa/Cocoa.h>
+//#import "KMToolbar.h"
+
+@interface KMToolbarCustomWindowController : NSWindowController
+
+//@property (nonatomic,assign) KMToolbar *toolbar;
+
+@end

+ 50 - 0
PDF Office/PDF Master/Class/PDFWindowController/Toolbar/KMToolbarCustomWindowController.m

@@ -0,0 +1,50 @@
+//
+//  KMToolbarCustomWindowController.m
+//  PDF Reader Pro Edition
+//
+//  Created by 王帅 on 2018/8/21.
+//
+
+#import "KMToolbarCustomWindowController.h"
+#import "KMToolbarCustomViewController.h"
+#import <PDF_Master-Swift.h>
+
+@interface KMToolbarCustomWindowController ()
+
+@property (nonatomic,retain) KMToolbarCustomViewController *toolbarCustomViewController;
+
+@end
+
+@implementation KMToolbarCustomWindowController
+
+#pragma mark - Init Methods
+
+- (instancetype)init {
+    if (self = [super initWithWindowNibName:@"KMToolbarCustomWindowController"]) {
+        
+    }
+    return self;
+}
+
+- (void)dealloc {
+//    [_toolbarCustomViewController release];
+//    [super dealloc];
+}
+
+#pragma mark - Window Methods
+
+- (void)windowDidLoad {
+    [super windowDidLoad];
+    
+    // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
+    self.toolbarCustomViewController = [[KMToolbarCustomViewController alloc] init];
+//    self.toolbarCustomViewController.toolbar = self.toolbar;
+    if ([self respondsToSelector:@selector(setContentViewController:)]) {
+        self.contentViewController = self.toolbarCustomViewController;
+    } else {
+        self.toolbarCustomViewController.view.frame = self.window.contentView.bounds;
+        [self.window.contentView addSubview:self.toolbarCustomViewController.view];
+    }
+}
+
+@end

+ 32 - 0
PDF Office/PDF Master/Class/PDFWindowController/Toolbar/KMToolbarCustomWindowController.xib

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14113" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14113"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMToolbarCustomWindowController">
+            <connections>
+                <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" oneShot="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="F0z-JX-Cv5">
+            <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
+            <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
+            <rect key="contentRect" x="196" y="240" width="574" height="570"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
+            <value key="minSize" type="size" width="574" height="480"/>
+            <value key="maxSize" type="size" width="574" height="1000"/>
+            <view key="contentView" wantsLayer="YES" id="se5-gp-TjO">
+                <rect key="frame" x="0.0" y="0.0" width="574" height="570"/>
+                <autoresizingMask key="autoresizingMask"/>
+            </view>
+            <connections>
+                <outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
+            </connections>
+        </window>
+    </objects>
+</document>

+ 20 - 7
PDF Office/PDF Master/Class/PDFWindowController/Toolbar/KMToolbarView.swift

@@ -74,8 +74,10 @@ private let KMToolbarItemSpace = 8.0
         view.layer?.backgroundColor = NSColor(red: 247/255.0, green: 248/255.0, blue: 250/255.0 , alpha: 1).cgColor
         return view
     }()
+    
+    private class KMToolbarView_rightView: NSView {}
     private lazy var rightView: NSView = {
-        let view = NSView()
+        let view = KMToolbarView_rightView()
         view.wantsLayer = true
         view.layer?.backgroundColor = NSColor(red: 247/255.0, green: 248/255.0, blue: 250/255.0, alpha: 1).cgColor
         return view
@@ -210,6 +212,9 @@ private let KMToolbarItemSpace = 8.0
     // UI 20 16
     // item w 28 h 24
     private func _updateView() {
+        self._updateLeftView()
+        self._updateRightView()
+        
         if(self.contentView.superview == nil) {
             self.addSubview(self.contentView)
             self.contentView.mas_makeConstraints { make in
@@ -419,18 +424,26 @@ private let KMToolbarItemSpace = 8.0
                         })
                     }
                 } else {
-                    item?.mas_makeConstraints({ make in
-                        make?.top.equalTo()(0)
-                        make?.bottom.equalTo()(0)
-                        make?.left.equalTo()(0)
-                    })
+                    if (i == itemIdentifiers.count - 1) {
+                        item?.mas_makeConstraints({ make in
+                            make?.top.equalTo()(0)
+                            make?.bottom.equalTo()(0)
+                            make?.left.equalTo()(self.rightView.mas_left)?.offset()(KMToolbarItemSpace)
+                            make?.right.equalTo()(self.rightView.mas_right)?.offset()(-20)
+                        })
+                    } else {
+                        item?.mas_makeConstraints({ make in
+                            make?.top.equalTo()(0)
+                            make?.bottom.equalTo()(0)
+                            make?.left.equalTo()(0)
+                        })
+                    }
                 }
                 lastItem = item
             }
         }
     }
     
-    
     override func updateLayer() {
         super.updateLayer()
         

+ 24 - 2
PDF Office/PDF Master/Class/PDFWindowController/Toolbar/KMToolbarViewController.swift

@@ -404,6 +404,8 @@ extension KMToolbarViewController : KMToolbarViewDelegate,NSToolbarItemValidatio
         if toolbarType == .Main {
             return [KMDocumentViewSettingToolbarItemIdentifier, KMDocumentShareToolbarItemIdentifier,
                     KMDocumentSearchToolbarItemIdentifier, KMRightControlToolbarItemIdentifier]
+        } else if [.Annatiton,.Magnify,.Move,.Select,.SelectZoom].contains(toolbarType) {
+            return [KMToolbarAnnotationSettingItemIdentifier]
         }
         return []
     }
@@ -492,8 +494,15 @@ extension KMToolbarViewController : KMToolbarViewDelegate,NSToolbarItemValidatio
     }
     
     func toolbar(_ toolbar: KMToolbarView, itemFor identifier: String) -> KMToolbarItemView {
-        var item = self.toolbarItems[identifier] as? KMToolbarItemView
-        if item == nil {
+        var item: KMToolbarItemView? = self.toolbarItems[identifier] as? KMToolbarItemView
+        var create = false
+        if let data = item {
+            let pId = parentIdentifier(data.itemIdentifier ?? "")
+            if [.Annatiton,.Magnify,.Move,.Select,.SelectZoom].contains(toolbarType) && (pId != KMDocumentAnnotationToolbarItemIdentifier || data.itemIdentifier! == KMToolbarAnnotationSettingItemIdentifier) {
+                create = true
+            }
+        }
+        if item == nil || create {
             item = KMToolbarItemView.init(itemIdentifier: identifier)
             self.toolbarItems[identifier] = item
             if identifier == KMLeftControlToolbarItemIdentifier {
@@ -1508,6 +1517,19 @@ extension KMToolbarViewController : KMToolbarViewDelegate,NSToolbarItemValidatio
                 let menuItem = NSMenuItem.init(title: "Merge", action: #selector(mergeMenuItemAction), target: self)
                 menuItem.tag = item!.btnTag
                 item?.menuFormRepresentation = menuItem
+            } else if identifier == KMToolbarAnnotationSettingItemIdentifier {
+                item?.image = NSImage(named: "KMImageNameUXIconBtnSetNor")
+                item?.alternateImage = NSImage(named: "KMImageNameUXIconBtnSetNor")
+                item?.target = self
+//                item?.btnTag = KMToolbarType.merge.rawValue
+//                item?.toolTip = NSLocalizedString("Combine multiple files into a new PDF.", comment: "")
+                item?.titleName = NSLocalizedString("Setting", comment: "")
+                item?.boxImagePosition = .imageOnly
+                item?.btnAction = #selector(itemAction)
+
+                let menuItem = NSMenuItem.init(title: "Setting", action: #selector(mergeMenuItemAction), target: self)
+                menuItem.tag = item!.btnTag
+                item?.menuFormRepresentation = menuItem
             }
         }
         return item!

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

@@ -58,12 +58,13 @@ let KMToolbarLinkAnnotationItemIdentifier =  "KMToolbarLinkAnnotationItemIdentif
 let KMToolbarSignSignatureAnnotationItemIdentifier =  "KMToolbarSignSignatureAnnotationItemIdentifier"
 let KMAnnotationStampToolbarItemIdentifier =  "KMAnnotationStampToolbarItemIdentifier"
 let KMToolbarShowToolbarItemIdentifier =  "KMToolbarShowToolbarItemIdentifier"
+let KMToolbarAnnotationSettingItemIdentifier =  "KMToolbarAnnotationSettingItemIdentifier"
 let annotationToolIdentifiers = [KMToolbarMoveToolModeItemIdentifier, KMToolbarMagnifyToolModeItemIdentifier, KMToolbarSelectToolModeItemIdentifier,
                                  KMToolbarZoomToSelectionItemIdentifier, KMToolbarHighlightAnnotationItemIdentifier, KMToolbarUnderlineAnnotationItemIdentifier,
                                  KMToolbarStrikeOutAnnotationItemIdentifier, KMToolbarInkAnnotationItemIdentifier, KMToolbarFreeTextAnnotationItemIdentifier,
                                  KMToolbarAnchoredAnnotationItemIdentifier, KMToolbarSquareAnnotationItemIdentifier, KMToolbarCircleAnnotationItemIdentifier,
                                  KMToolbarLineAnnotationItemIdentifier, KMToolbarArrowAnnotationItemIdentifier, KMToolbarLinkAnnotationItemIdentifier,
-                                 KMToolbarSignSignatureAnnotationItemIdentifier, KMAnnotationStampToolbarItemIdentifier, KMToolbarShowToolbarItemIdentifier]
+                                 KMToolbarSignSignatureAnnotationItemIdentifier, KMAnnotationStampToolbarItemIdentifier, KMToolbarShowToolbarItemIdentifier, KMToolbarAnnotationSettingItemIdentifier]
 
 // PageEdit
 let KMToolbarPageEditPageRangeItemIdentifier = "KMToolbarPageEditPageRangeItemIdentifier"

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

@@ -2920,6 +2920,13 @@ extension KMMainViewController : KMMainToolbarControllerDelegate {
             self.changePDFViewGotoNextPageAction()
         } else if toolbarItem.itemIdentifier == KMDocumentViewSettingToolbarItemIdentifier {
             Swift.debugPrint("KMDocumentViewSettingToolbarItemIdentifier ...")
+        } else if toolbarItem.itemIdentifier == KMToolbarAnnotationSettingItemIdentifier {
+            Swift.debugPrint("KMToolbarAnnotationSettingItemIdentifier ...")
+//            self.customWindowController = [[[KMToolbarCustomWindowController alloc] init] autorelease];
+//            self.customWindowController.toolbar = self;
+//            [self.window beginSheet:self.customWindowController.window completionHandler:nil];
+            let windowC = KMToolbarCustomWindowController()
+            self.km_beginSheet(windowC: windowC)
         }
     }
     

+ 1 - 0
PDF Office/PDF Master/PDF_Master-Bridging-Header.h

@@ -55,3 +55,4 @@
 #import "KMColorPickerViewController.h"
 
 #import "KMConvertURLToPDF.h"
+#import "KMToolbarCustomWindowController.h"