Browse Source

【左边栏】KMLeftSideEmptyFileViewController OC转Swift

tangchao 1 year ago
parent
commit
13f6cb8b46

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

@@ -2753,6 +2753,12 @@
 		BB6B4C0C292F62B20071CA06 /* KMPDFThumbnialPageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6B4C0B292F62B20071CA06 /* KMPDFThumbnialPageView.swift */; };
 		BB6B4C0D292F62B20071CA06 /* KMPDFThumbnialPageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6B4C0B292F62B20071CA06 /* KMPDFThumbnialPageView.swift */; };
 		BB6B4C0E292F62B20071CA06 /* KMPDFThumbnialPageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6B4C0B292F62B20071CA06 /* KMPDFThumbnialPageView.swift */; };
+		BB6BA4C42B0B4A0F00462CAE /* KMLeftSideEmptyFileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6BA4C32B0B4A0F00462CAE /* KMLeftSideEmptyFileViewController.swift */; };
+		BB6BA4C52B0B4A0F00462CAE /* KMLeftSideEmptyFileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6BA4C32B0B4A0F00462CAE /* KMLeftSideEmptyFileViewController.swift */; };
+		BB6BA4C62B0B4A0F00462CAE /* KMLeftSideEmptyFileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6BA4C32B0B4A0F00462CAE /* KMLeftSideEmptyFileViewController.swift */; };
+		BB6BA4C82B0B4A4200462CAE /* KMLeftSideEmptyFileViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB6BA4C72B0B4A4100462CAE /* KMLeftSideEmptyFileViewController.xib */; };
+		BB6BA4C92B0B4A4200462CAE /* KMLeftSideEmptyFileViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB6BA4C72B0B4A4100462CAE /* KMLeftSideEmptyFileViewController.xib */; };
+		BB6BA4CA2B0B4A4200462CAE /* KMLeftSideEmptyFileViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = BB6BA4C72B0B4A4100462CAE /* KMLeftSideEmptyFileViewController.xib */; };
 		BB6CA4CC298BB0D000A13864 /* KMPreferenceWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6CA4CA298BB0D000A13864 /* KMPreferenceWindowController.swift */; };
 		BB6CA4CD298BB0D000A13864 /* KMPreferenceWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6CA4CA298BB0D000A13864 /* KMPreferenceWindowController.swift */; };
 		BB6CA4CE298BB0D000A13864 /* KMPreferenceWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BB6CA4CA298BB0D000A13864 /* KMPreferenceWindowController.swift */; };
@@ -4934,6 +4940,8 @@
 		BB6B436A2A04935000E02B54 /* KMPDFThumbViewBaseController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPDFThumbViewBaseController.swift; sourceTree = "<group>"; };
 		BB6B4C07292F53CE0071CA06 /* KMMergeFileModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMMergeFileModel.swift; sourceTree = "<group>"; };
 		BB6B4C0B292F62B20071CA06 /* KMPDFThumbnialPageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPDFThumbnialPageView.swift; sourceTree = "<group>"; };
+		BB6BA4C32B0B4A0F00462CAE /* KMLeftSideEmptyFileViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMLeftSideEmptyFileViewController.swift; sourceTree = "<group>"; };
+		BB6BA4C72B0B4A4100462CAE /* KMLeftSideEmptyFileViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = KMLeftSideEmptyFileViewController.xib; sourceTree = "<group>"; };
 		BB6CA4CA298BB0D000A13864 /* KMPreferenceWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMPreferenceWindowController.swift; sourceTree = "<group>"; };
 		BB6CA4CB298BB0D000A13864 /* KMPreferenceWindowController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMPreferenceWindowController.xib; sourceTree = "<group>"; };
 		BB6DD80A29347F77001F0544 /* KMSecureEncryptWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMSecureEncryptWindowController.swift; sourceTree = "<group>"; };
@@ -5643,6 +5651,8 @@
 				BBC8A7632B05C93900FA9377 /* KMThumbnailTableView.swift */,
 				BBC8A7672B05EB8000FA9377 /* KMThumbnailTableviewCell.swift */,
 				BB3A668B2B06FD0100575343 /* KMBotaEnum.swift */,
+				BB6BA4C32B0B4A0F00462CAE /* KMLeftSideEmptyFileViewController.swift */,
+				BB6BA4C72B0B4A4100462CAE /* KMLeftSideEmptyFileViewController.xib */,
 				899700F128F40308009AF911 /* Annotation */,
 				899700F228F40308009AF911 /* BookMarks */,
 				899700F028F40308009AF911 /* From */,
@@ -10439,6 +10449,7 @@
 				BB0B2CD82B04AE560088FFD8 /* LeftSideView.xib in Resources */,
 				BBADCF642AF3CB92004ECE0C /* KMWatermarkCollectionViewItem.xib in Resources */,
 				ADC31FAC2A0E0C3900ED44A2 /* KMEditPropertyAlignmentView.xib in Resources */,
+				BB6BA4C82B0B4A4200462CAE /* KMLeftSideEmptyFileViewController.xib in Resources */,
 				ADD1B6F82946C0CA00C3FFF7 /* KMPrintChoosePageSizeMultipageView.xib in Resources */,
 				89E4E76429656A88002DBA6F /* KMAnnotationStampViewController.xib in Resources */,
 				BBC745ED295F067B0072C2ED /* KMCropSettingWindowController.xib in Resources */,
@@ -10803,6 +10814,7 @@
 				ADE3C1C529A4C13700793B13 /* KMPrintAccessoryController_OC.xib in Resources */,
 				ADAFDA7A2AEB5FCD00F084BC /* KMHomeHistoryCollectionItem.xib in Resources */,
 				9F8DDF312924B855006CDC73 /* KMPDFToolsViewController.xib in Resources */,
+				BB6BA4C92B0B4A4200462CAE /* KMLeftSideEmptyFileViewController.xib in Resources */,
 				9F853A002947137500DF644E /* throbber.png in Resources */,
 				BBC348372955A118008D2CD1 /* KMCreateBackgroundController.xib in Resources */,
 				ADC31FAD2A0E0C3900ED44A2 /* KMEditPropertyAlignmentView.xib in Resources */,
@@ -11140,6 +11152,7 @@
 				9F1F82B9292DEF370092C4B4 /* KMCloudDocumentsViewController.xib in Resources */,
 				ADBC374729CAD2D300D93208 /* SF-Pro-Text-Bold.otf in Resources */,
 				ADAFDA7B2AEB5FCD00F084BC /* KMHomeHistoryCollectionItem.xib in Resources */,
+				BB6BA4CA2B0B4A4200462CAE /* KMLeftSideEmptyFileViewController.xib in Resources */,
 				BB2F615D2966B69D001CB369 /* KMWatermarkPropertyHomeController.xib in Resources */,
 				ADD1B6C12942DD3D00C3FFF7 /* KMPrintChooseView.xib in Resources */,
 				9F1F82C1292E01860092C4B4 /* KMCloudEmptyCollectionViewItem.xib in Resources */,
@@ -11969,6 +11982,7 @@
 				BB9E2F732A495BCD000DC68D /* KMConvertSettingLimitTipView.swift in Sources */,
 				9F1F82E32934D5240092C4B4 /* KMHomeExtractActionViewController.swift in Sources */,
 				89D2D2C5294972B900BFF5FE /* KMFormCellView.swift in Sources */,
+				BB6BA4C42B0B4A0F00462CAE /* KMLeftSideEmptyFileViewController.swift in Sources */,
 				BB897224294B07960045787C /* KMWatermarkAdjectiveTopBarItemView.swift in Sources */,
 				9F1F82BC292E01860092C4B4 /* KMCloudEmptyCollectionViewItem.swift in Sources */,
 				BBAC26A12AFDF54F00563A08 /* KMConvertOperationQueue.swift in Sources */,
@@ -12334,6 +12348,7 @@
 				BBD1F77D296F9BE000343885 /* KMPageEditSettingBaseWindowController.swift in Sources */,
 				BB0A55112A302DB700B6E84B /* KMTextField.swift in Sources */,
 				BB2F184B2A0C911B0003F65E /* KMBaseWindowController.swift in Sources */,
+				BB6BA4C52B0B4A0F00462CAE /* KMLeftSideEmptyFileViewController.swift in Sources */,
 				9FDD0FB329534FEA000C4DAD /* KMGlobal.swift in Sources */,
 				ADF6B87F2A485A8F0090CB78 /* KMComparativeViewCollectionItemItem.swift in Sources */,
 				BBB7B4922A03AD2A00B58A5A /* KMPDFEditToolbar.swift in Sources */,
@@ -13226,6 +13241,7 @@
 				9F8539C02943085A00DF644E /* KMBrowser.swift in Sources */,
 				BB3A66982B071B0300575343 /* KMSnapshotTableViewCell.swift in Sources */,
 				BB4DD04D299B296500E80DF6 /* KMCloudPathControl.swift in Sources */,
+				BB6BA4C62B0B4A0F00462CAE /* KMLeftSideEmptyFileViewController.swift in Sources */,
 				BBB9B32D299A5D6D004F3235 /* GTMOAuth2KeychainCompatibility.m in Sources */,
 				BB6719E72AD28527003D44D5 /* CPDFLineAnnotation+PDFListView.swift in Sources */,
 				9F0CB4EB2986559400007028 /* KMDesignToken+PaddingBottom.swift in Sources */,

+ 85 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideEmptyFileViewController.swift

@@ -0,0 +1,85 @@
+//
+//  KMLeftSideEmptyFileViewController.swift
+//  PDF Master
+//
+//  Created by tangchao on 2023/11/20.
+//
+
+import Cocoa
+
+class KMLeftSideEmptyFileViewController: NSViewController {
+
+    @IBOutlet weak var emptyOutlineView: NSView!
+    @IBOutlet weak var emptyAnnotationView: NSView!
+    @IBOutlet weak var emptySnapView: NSView!
+    @IBOutlet weak var addOutlineBox: NSBox!
+    
+    @IBOutlet weak var annotationBox: NSBox!
+    @IBOutlet weak var leftSnapBox: NSBox!
+    @IBOutlet weak var exportAnnotationBtn: NSButton!
+    @IBOutlet weak var deleteAnnotationBtn: NSButton!
+
+    @IBOutlet weak var filterAnnotationBtn: NSButton!
+    @IBOutlet weak var addOutlineBtn: NSButton!
+    @IBOutlet weak var deleteOutlineBtn: NSButton!
+    @IBOutlet weak var printSnapBtn: NSButton!
+    
+    @IBOutlet weak var exportSnapBtn: NSButton!
+    @IBOutlet weak var deleteSnapBtn: NSButton!
+    @IBOutlet weak var searchOutlineSearchField: NSSearchField!
+    @IBOutlet weak var outlineSearchView: NSView!
+    
+    @IBOutlet weak var notCreateOutLine: NSTextField!
+    @IBOutlet weak var emptyOutlineLabel: NSTextField!
+    @IBOutlet weak var emptyAnnotationLabel: NSTextField!
+    @IBOutlet weak var emptySnapLabel: NSTextField!
+    @IBOutlet weak var emptySearchResultLabel: NSTextField!
+    @IBOutlet weak var snapshotNotCreatedLabel: NSTextField!
+    
+    override func loadView() {
+        super.loadView()
+        
+        self.emptyOutlineLabel.stringValue = KMLocalizedString("To create outline item select header in contents, right click it and select \"Add Outline Item\"  or click \"+\"  above.",nil)
+        self.emptyOutlineLabel.textColor = KMAppearance.Layout.h2Color()
+        self.notCreateOutLine.stringValue = KMLocalizedString("No outlines", nil)
+        self.notCreateOutLine.textColor = KMAppearance.Layout.h0Color()
+        self.emptyAnnotationLabel.stringValue = KMLocalizedString("No Annotations",nil)
+        self.emptyAnnotationLabel.textColor = KMAppearance.Layout.h0Color()
+        self.emptySnapLabel.stringValue = KMLocalizedString("To create snapshot select an area in contents, right click it and select \"Snapshot\" .",nil)
+        self.emptySnapLabel.textColor = KMAppearance.Layout.h2Color()
+        self.snapshotNotCreatedLabel.stringValue = KMLocalizedString("No Snapshots", nil)
+        self.snapshotNotCreatedLabel.textColor = KMAppearance.Layout.h0Color()
+        self.searchOutlineSearchField.placeholderString = KMLocalizedString("Search Outline", nil)
+
+        
+        self.exportAnnotationBtn.toolTip = NSLocalizedString("Export Annotations…", tableName: "MainMenu", comment: "")
+        self.deleteAnnotationBtn.toolTip = NSLocalizedString("Remove All Annotations", tableName: "MainMenu", comment: "")
+        self.filterAnnotationBtn.toolTip = KMLocalizedString("Note Type", nil)
+        
+        self.addOutlineBox.toolTip = KMLocalizedString("Add Outline Item", nil)
+        self.deleteOutlineBtn.toolTip = KMLocalizedString("Delete", nil)
+
+        self.deleteSnapBtn.toolTip = KMLocalizedString("Delete", nil)
+        self.exportSnapBtn.toolTip = KMLocalizedString("Export", nil)
+        self.printSnapBtn.toolTip = KMLocalizedString("Print", nil)
+        
+        self.emptySearchResultLabel.stringValue = KMLocalizedString("No Results", nil)
+        self.emptySearchResultLabel.textColor = KMAppearance.Layout.h0Color()
+        
+        self.emptySnapView.wantsLayer = true
+        self.emptySnapView.layer?.backgroundColor = .clear
+        self.outlineSearchView.wantsLayer = true
+        self.outlineSearchView.layer?.backgroundColor = .clear
+        self.emptyAnnotationView.wantsLayer = true
+        self.emptyAnnotationView.layer?.backgroundColor = .clear
+        self.emptyOutlineView.wantsLayer = true
+        self.emptyOutlineView.layer?.backgroundColor = .clear
+        
+        var ss: [Int] = [Int](repeating: 0, count: 0)
+    }
+
+    override func viewDidLoad() {
+        super.viewDidLoad()
+        // Do view setup here.
+    }
+}

+ 396 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideEmptyFileViewController.xib

@@ -0,0 +1,396 @@
+<?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="KMLeftSideEmptyFileViewController" customModule="PDF_Master" customModuleProvider="target">
+            <connections>
+                <outlet property="addOutlineBox" destination="MIA-lH-jtO" id="u8H-eE-4q9"/>
+                <outlet property="addOutlineBtn" destination="X7a-nf-rDc" id="IsA-ct-1Nj"/>
+                <outlet property="annotationBox" destination="zwo-BA-10D" id="j56-Ia-5FV"/>
+                <outlet property="deleteAnnotationBtn" destination="ciN-Xf-UZ7" id="ihk-vP-kPm"/>
+                <outlet property="deleteOutlineBtn" destination="MvQ-sy-CY3" id="Jjp-If-ccX"/>
+                <outlet property="deleteSnapBtn" destination="dNM-Fh-l0S" id="zqN-rd-LmI"/>
+                <outlet property="emptyAnnotationLabel" destination="47g-Dt-afg" id="5wJ-ll-kvm"/>
+                <outlet property="emptyAnnotationView" destination="xPY-zh-ajV" id="LFU-Mq-My7"/>
+                <outlet property="emptyOutlineLabel" destination="7TT-b6-xI5" id="Mqs-EE-hBt"/>
+                <outlet property="emptyOutlineView" destination="t4B-v8-qQW" id="9Fc-tp-yrf"/>
+                <outlet property="emptySearchResultLabel" destination="hPH-of-lqx" id="S1a-fO-EwR"/>
+                <outlet property="emptySnapLabel" destination="yc4-ZB-O7V" id="wWh-hX-ENV"/>
+                <outlet property="emptySnapView" destination="1Hw-KB-Acz" id="6bx-Rj-S12"/>
+                <outlet property="exportAnnotationBtn" destination="VqP-1s-dWq" id="Tlx-09-4tj"/>
+                <outlet property="exportSnapBtn" destination="AKb-aF-sGs" id="vIn-GP-Ytw"/>
+                <outlet property="filterAnnotationBtn" destination="DG5-Xh-lr1" id="mae-jl-gYY"/>
+                <outlet property="leftSnapBox" destination="V9f-Zh-CxQ" id="6OQ-7Y-8ml"/>
+                <outlet property="notCreateOutLine" destination="oeS-AN-7yC" id="9hP-wm-XcF"/>
+                <outlet property="outlineSearchView" destination="Er5-ma-Hwn" id="fsM-AP-jSW"/>
+                <outlet property="printSnapBtn" destination="W35-Dq-30v" id="IwE-3h-7py"/>
+                <outlet property="searchOutlineSearchField" destination="2gK-9s-hTv" id="g2S-Hp-4mZ"/>
+                <outlet property="snapshotNotCreatedLabel" destination="Kte-98-v4B" id="iVA-uk-ELr"/>
+                <outlet property="view" destination="kla-cS-TDk" id="WyY-m0-NsX"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <customView id="t4B-v8-qQW">
+            <rect key="frame" x="0.0" y="0.0" width="250" height="248"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="eYO-qj-0Bd">
+                    <rect key="frame" x="55" y="108" width="140" height="140"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="140" id="DXu-I4-oz2"/>
+                        <constraint firstAttribute="width" constant="140" id="Vas-XV-2cJ"/>
+                    </constraints>
+                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="KMImageNameEmptyOutline" id="xTs-0M-2EN"/>
+                </imageView>
+                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7TT-b6-xI5">
+                    <rect key="frame" x="8" y="0.0" width="234" height="64"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="230" id="f8d-09-WPh"/>
+                    </constraints>
+                    <textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="center" title="To create outline item select header in contents, right click it and select &quot;Add Outline Item&quot;  or click &quot;Add Item&quot;  below." id="Tje-BZ-Sqq">
+                        <font key="font" metaFont="system"/>
+                        <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" 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="oeS-AN-7yC">
+                    <rect key="frame" x="105" y="72" width="41" height="20"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="20" id="inP-9J-jYt"/>
+                    </constraints>
+                    <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="h2p-oi-q3w">
+                        <font key="font" metaFont="systemSemibold" size="14"/>
+                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                    </textFieldCell>
+                </textField>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="bottom" secondItem="7TT-b6-xI5" secondAttribute="bottom" id="7ZT-X2-oLM"/>
+                <constraint firstItem="eYO-qj-0Bd" firstAttribute="centerX" secondItem="t4B-v8-qQW" secondAttribute="centerX" id="DIu-6B-kM2"/>
+                <constraint firstAttribute="trailing" secondItem="7TT-b6-xI5" secondAttribute="trailing" constant="10" id="GRZ-F1-QDA"/>
+                <constraint firstItem="7TT-b6-xI5" firstAttribute="centerX" secondItem="t4B-v8-qQW" secondAttribute="centerX" id="JQu-SD-CoJ"/>
+                <constraint firstItem="7TT-b6-xI5" firstAttribute="leading" secondItem="t4B-v8-qQW" secondAttribute="leading" constant="10" id="K86-vW-g9v"/>
+                <constraint firstItem="oeS-AN-7yC" firstAttribute="top" secondItem="eYO-qj-0Bd" secondAttribute="bottom" constant="16" id="Nfw-Uc-X0A"/>
+                <constraint firstItem="oeS-AN-7yC" firstAttribute="centerX" secondItem="t4B-v8-qQW" secondAttribute="centerX" id="VNd-Ea-ReC"/>
+                <constraint firstItem="eYO-qj-0Bd" firstAttribute="top" secondItem="t4B-v8-qQW" secondAttribute="top" id="flN-PB-ql1"/>
+                <constraint firstItem="7TT-b6-xI5" firstAttribute="top" secondItem="oeS-AN-7yC" secondAttribute="bottom" constant="8" id="mnu-kJ-hRJ"/>
+            </constraints>
+            <point key="canvasLocation" x="-6495" y="-11614"/>
+        </customView>
+        <customView id="xPY-zh-ajV">
+            <rect key="frame" x="0.0" y="0.0" width="250" height="173"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="MNd-Tq-dI0">
+                    <rect key="frame" x="55" y="33" width="140" height="140"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="140" id="Dui-92-tGN"/>
+                        <constraint firstAttribute="height" constant="140" id="gjm-Ne-Zi2"/>
+                    </constraints>
+                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="KMImageNameEmptyAnnotate" id="xQC-nQ-tTf"/>
+                </imageView>
+                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="47g-Dt-afg">
+                    <rect key="frame" x="8" y="0.0" width="234" height="17"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="230" id="J9X-mH-mGw"/>
+                    </constraints>
+                    <textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="center" title="No Annotations" id="oA8-fQ-hHY">
+                        <font key="font" metaFont="systemSemibold" size="14"/>
+                        <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>
+                </textField>
+            </subviews>
+            <constraints>
+                <constraint firstItem="MNd-Tq-dI0" firstAttribute="centerX" secondItem="xPY-zh-ajV" secondAttribute="centerX" id="8fl-Gc-wIB"/>
+                <constraint firstAttribute="trailing" secondItem="47g-Dt-afg" secondAttribute="trailing" constant="10" id="WKC-Wx-wqP"/>
+                <constraint firstAttribute="bottom" secondItem="47g-Dt-afg" secondAttribute="bottom" id="Wog-IZ-1y0"/>
+                <constraint firstItem="47g-Dt-afg" firstAttribute="centerX" secondItem="xPY-zh-ajV" secondAttribute="centerX" id="YcI-5q-uMG"/>
+                <constraint firstItem="47g-Dt-afg" firstAttribute="leading" secondItem="xPY-zh-ajV" secondAttribute="leading" constant="10" id="a6I-B7-vTl"/>
+                <constraint firstItem="MNd-Tq-dI0" firstAttribute="top" secondItem="xPY-zh-ajV" secondAttribute="top" id="ldH-gM-P0y"/>
+                <constraint firstItem="47g-Dt-afg" firstAttribute="top" secondItem="MNd-Tq-dI0" secondAttribute="bottom" constant="16" id="s2q-3Z-IiY"/>
+            </constraints>
+            <point key="canvasLocation" x="-6084" y="-11706"/>
+        </customView>
+        <customView id="1Hw-KB-Acz">
+            <rect key="frame" x="0.0" y="0.0" width="240" height="235"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="cff-47-1UN">
+                    <rect key="frame" x="50" y="95" width="140" height="140"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="140" id="D9R-rG-k1f"/>
+                        <constraint firstAttribute="height" constant="140" id="uWh-cy-dRq"/>
+                    </constraints>
+                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="KMImageNameEmptySnapshot" id="X5s-Om-ndi"/>
+                </imageView>
+                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="yc4-ZB-O7V">
+                    <rect key="frame" x="-2" y="0.0" width="244" height="51"/>
+                    <constraints>
+                        <constraint firstAttribute="width" constant="240" id="YrF-za-9sF"/>
+                    </constraints>
+                    <textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="center" title="To create snapshot select an area in contents, right click it and select &quot;Snapshot&quot; ." id="00J-ae-K5G">
+                        <font key="font" metaFont="system" size="14"/>
+                        <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>
+                </textField>
+                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Kte-98-v4B">
+                    <rect key="frame" x="46" y="59" width="149" height="20"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="20" id="NOe-Kc-oC0"/>
+                    </constraints>
+                    <textFieldCell key="cell" lineBreakMode="clipping" title="Snapshot not created" id="3xt-3c-PfH">
+                        <font key="font" metaFont="systemSemibold" size="14"/>
+                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                    </textFieldCell>
+                </textField>
+            </subviews>
+            <constraints>
+                <constraint firstAttribute="trailing" secondItem="yc4-ZB-O7V" secondAttribute="trailing" id="EFv-Sv-kOc"/>
+                <constraint firstItem="cff-47-1UN" firstAttribute="top" secondItem="1Hw-KB-Acz" secondAttribute="top" id="EuQ-mi-K7R"/>
+                <constraint firstItem="yc4-ZB-O7V" firstAttribute="centerX" secondItem="1Hw-KB-Acz" secondAttribute="centerX" id="FD9-Ay-ERd"/>
+                <constraint firstItem="Kte-98-v4B" firstAttribute="top" secondItem="cff-47-1UN" secondAttribute="bottom" constant="16" id="HZY-ov-V1R"/>
+                <constraint firstItem="cff-47-1UN" firstAttribute="centerX" secondItem="1Hw-KB-Acz" secondAttribute="centerX" id="aPz-YP-4di"/>
+                <constraint firstAttribute="bottom" secondItem="yc4-ZB-O7V" secondAttribute="bottom" id="cOo-2K-hXx"/>
+                <constraint firstItem="yc4-ZB-O7V" firstAttribute="leading" secondItem="1Hw-KB-Acz" secondAttribute="leading" id="ggE-kg-WOS"/>
+                <constraint firstItem="yc4-ZB-O7V" firstAttribute="top" secondItem="Kte-98-v4B" secondAttribute="bottom" constant="8" id="gsR-83-TXC"/>
+                <constraint firstItem="Kte-98-v4B" firstAttribute="centerX" secondItem="1Hw-KB-Acz" secondAttribute="centerX" id="xj4-V5-r29"/>
+            </constraints>
+            <point key="canvasLocation" x="-6452" y="-11265"/>
+        </customView>
+        <box boxType="custom" borderWidth="0.0" title="Box" id="MIA-lH-jtO">
+            <rect key="frame" x="0.0" y="0.0" width="227" height="35"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <view key="contentView" id="43g-o2-ZoX">
+                <rect key="frame" x="0.0" y="0.0" width="227" height="35"/>
+                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                <subviews>
+                    <button translatesAutoresizingMaskIntoConstraints="NO" id="X7a-nf-rDc">
+                        <rect key="frame" x="15" y="10" width="14" height="14"/>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="14" id="GEn-c9-BMH"/>
+                            <constraint firstAttribute="width" constant="14" id="M1L-DB-Big"/>
+                        </constraints>
+                        <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="KMImageNamePanelAdd" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="jRa-s3-3d8">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                    </button>
+                    <box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="bP3-Nf-C2I">
+                        <rect key="frame" x="0.0" y="32" width="227" height="5"/>
+                    </box>
+                    <button translatesAutoresizingMaskIntoConstraints="NO" id="MvQ-sy-CY3">
+                        <rect key="frame" x="198" y="10" width="14" height="14"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="14" id="5vf-vs-vKX"/>
+                            <constraint firstAttribute="height" constant="14" id="IGv-ad-Aet"/>
+                        </constraints>
+                        <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="KMImageNamePanelDelete" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="rpR-2M-lFY">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                    </button>
+                    <searchField wantsLayer="YES" verticalHuggingPriority="750" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2gK-9s-hTv">
+                        <rect key="frame" x="44" y="6" width="139" height="22"/>
+                        <searchFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" borderStyle="bezel" usesSingleLineMode="YES" bezelStyle="round" id="EUI-bh-kxn">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                        </searchFieldCell>
+                    </searchField>
+                </subviews>
+                <constraints>
+                    <constraint firstItem="MvQ-sy-CY3" firstAttribute="top" secondItem="bP3-Nf-C2I" secondAttribute="bottom" constant="10" id="7Yi-Y3-qMM"/>
+                    <constraint firstItem="MvQ-sy-CY3" firstAttribute="centerY" secondItem="X7a-nf-rDc" secondAttribute="centerY" id="Aty-6a-kVT"/>
+                    <constraint firstAttribute="bottom" secondItem="MvQ-sy-CY3" secondAttribute="bottom" constant="10" id="ESN-Gl-eQ0"/>
+                    <constraint firstItem="MvQ-sy-CY3" firstAttribute="leading" secondItem="2gK-9s-hTv" secondAttribute="trailing" constant="15" id="LTW-1z-8bO"/>
+                    <constraint firstItem="2gK-9s-hTv" firstAttribute="centerY" secondItem="X7a-nf-rDc" secondAttribute="centerY" id="OBU-Vx-jLe"/>
+                    <constraint firstItem="bP3-Nf-C2I" firstAttribute="top" secondItem="43g-o2-ZoX" secondAttribute="top" id="SeB-VQ-U80"/>
+                    <constraint firstItem="X7a-nf-rDc" firstAttribute="leading" secondItem="43g-o2-ZoX" secondAttribute="leading" constant="15" id="VDX-oF-T2N"/>
+                    <constraint firstAttribute="trailing" secondItem="MvQ-sy-CY3" secondAttribute="trailing" constant="15" id="cZ3-DD-XpG"/>
+                    <constraint firstAttribute="trailing" secondItem="bP3-Nf-C2I" secondAttribute="trailing" id="iWn-l6-ZFE"/>
+                    <constraint firstItem="bP3-Nf-C2I" firstAttribute="leading" secondItem="43g-o2-ZoX" secondAttribute="leading" id="ngY-G4-7Qr"/>
+                    <constraint firstItem="2gK-9s-hTv" firstAttribute="leading" secondItem="X7a-nf-rDc" secondAttribute="trailing" constant="15" id="p08-w0-Xu3"/>
+                </constraints>
+            </view>
+            <color key="borderColor" red="0.80000000000000004" green="0.80000000000000004" blue="0.80000000000000004" alpha="0.0" colorSpace="calibratedRGB"/>
+            <point key="canvasLocation" x="-6326.5" y="-10979.5"/>
+        </box>
+        <customView id="kla-cS-TDk">
+            <rect key="frame" x="0.0" y="0.0" width="163" height="96"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <point key="canvasLocation" x="138" y="154"/>
+        </customView>
+        <box boxType="custom" borderWidth="0.0" title="Box" id="zwo-BA-10D">
+            <rect key="frame" x="0.0" y="0.0" width="247" height="35"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <view key="contentView" id="RUl-h7-fvt">
+                <rect key="frame" x="0.0" y="0.0" width="247" height="35"/>
+                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                <subviews>
+                    <button translatesAutoresizingMaskIntoConstraints="NO" id="DG5-Xh-lr1">
+                        <rect key="frame" x="15" y="10" width="14" height="14"/>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="14" id="I1v-3I-Nky"/>
+                            <constraint firstAttribute="width" constant="14" id="z5E-6V-nHx"/>
+                        </constraints>
+                        <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="KMImageNamePanelFilter" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="LkR-sl-y1A">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                    </button>
+                    <button translatesAutoresizingMaskIntoConstraints="NO" id="ciN-Xf-UZ7">
+                        <rect key="frame" x="218" y="10" width="14" height="14"/>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="14" id="HuD-Zz-xap"/>
+                            <constraint firstAttribute="width" constant="14" id="ILG-LZ-dg3"/>
+                        </constraints>
+                        <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="KMImageNamePanelDelete" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="Mxj-ER-jfI">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                    </button>
+                    <button translatesAutoresizingMaskIntoConstraints="NO" id="VqP-1s-dWq">
+                        <rect key="frame" x="184" y="10" width="14" height="14"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="14" id="OKc-DO-wbd"/>
+                            <constraint firstAttribute="height" constant="14" id="i1W-er-sPF"/>
+                        </constraints>
+                        <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="KMImageNamePanelExport" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="kiC-vX-HTv">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                    </button>
+                    <box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="zOU-KG-4tM">
+                        <rect key="frame" x="0.0" y="32" width="247" height="5"/>
+                    </box>
+                </subviews>
+                <constraints>
+                    <constraint firstItem="VqP-1s-dWq" firstAttribute="centerY" secondItem="DG5-Xh-lr1" secondAttribute="centerY" id="4Xu-c8-bU3"/>
+                    <constraint firstAttribute="trailing" secondItem="ciN-Xf-UZ7" secondAttribute="trailing" constant="15" id="4t8-xC-vLZ"/>
+                    <constraint firstItem="ciN-Xf-UZ7" firstAttribute="centerY" secondItem="DG5-Xh-lr1" secondAttribute="centerY" id="D4n-gM-rmO"/>
+                    <constraint firstAttribute="bottom" secondItem="DG5-Xh-lr1" secondAttribute="bottom" constant="10" id="LCD-6D-NBq"/>
+                    <constraint firstAttribute="trailing" secondItem="zOU-KG-4tM" secondAttribute="trailing" id="OxU-f6-dnB"/>
+                    <constraint firstItem="zOU-KG-4tM" firstAttribute="top" secondItem="RUl-h7-fvt" secondAttribute="top" id="RIZ-bo-5ex"/>
+                    <constraint firstItem="DG5-Xh-lr1" firstAttribute="leading" secondItem="RUl-h7-fvt" secondAttribute="leading" constant="15" id="XcL-Cq-RNc"/>
+                    <constraint firstItem="ciN-Xf-UZ7" firstAttribute="leading" secondItem="VqP-1s-dWq" secondAttribute="trailing" constant="20" id="hop-ya-9B5"/>
+                    <constraint firstItem="DG5-Xh-lr1" firstAttribute="top" secondItem="zOU-KG-4tM" secondAttribute="bottom" constant="10" id="oBn-U6-rIH"/>
+                    <constraint firstItem="zOU-KG-4tM" firstAttribute="leading" secondItem="RUl-h7-fvt" secondAttribute="leading" id="yjZ-m4-CJe"/>
+                </constraints>
+            </view>
+            <color key="borderColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+            <point key="canvasLocation" x="-6059.5" y="-11542"/>
+        </box>
+        <box boxType="custom" borderWidth="0.0" title="Box" id="V9f-Zh-CxQ">
+            <rect key="frame" x="0.0" y="0.0" width="247" height="35"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <view key="contentView" id="Qu5-kE-Kbr">
+                <rect key="frame" x="0.0" y="0.0" width="247" height="35"/>
+                <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                <subviews>
+                    <button translatesAutoresizingMaskIntoConstraints="NO" id="W35-Dq-30v">
+                        <rect key="frame" x="15" y="10" width="14" height="14"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="14" id="J1Z-TB-ciy"/>
+                            <constraint firstAttribute="height" constant="14" id="R8j-T5-O7J"/>
+                        </constraints>
+                        <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="KMImageNamePanelPrint" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="dqz-ex-BsD">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                    </button>
+                    <button translatesAutoresizingMaskIntoConstraints="NO" id="dNM-Fh-l0S">
+                        <rect key="frame" x="218" y="10" width="14" height="14"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="14" id="PJC-51-nmM"/>
+                            <constraint firstAttribute="height" constant="14" id="k9v-LH-f7g"/>
+                        </constraints>
+                        <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="KMImageNamePanelDelete" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="46O-k3-rKG">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                    </button>
+                    <button translatesAutoresizingMaskIntoConstraints="NO" id="AKb-aF-sGs">
+                        <rect key="frame" x="184" y="10" width="14" height="14"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="14" id="CmC-ai-q58"/>
+                            <constraint firstAttribute="height" constant="14" id="lng-VI-nzE"/>
+                        </constraints>
+                        <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="KMImageNamePanelExport" imagePosition="only" alignment="center" imageScaling="proportionallyUpOrDown" inset="2" id="JrZ-Ml-RQb">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                    </button>
+                    <box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="4ld-Nj-QKb">
+                        <rect key="frame" x="0.0" y="32" width="247" height="5"/>
+                    </box>
+                </subviews>
+                <constraints>
+                    <constraint firstItem="4ld-Nj-QKb" firstAttribute="leading" secondItem="Qu5-kE-Kbr" secondAttribute="leading" id="0Hs-Ey-tu9"/>
+                    <constraint firstItem="AKb-aF-sGs" firstAttribute="centerY" secondItem="W35-Dq-30v" secondAttribute="centerY" id="5DW-o2-6Cw"/>
+                    <constraint firstAttribute="trailing" secondItem="4ld-Nj-QKb" secondAttribute="trailing" id="6lf-k9-MZe"/>
+                    <constraint firstAttribute="bottom" secondItem="W35-Dq-30v" secondAttribute="bottom" constant="10" id="I3f-V9-BE1"/>
+                    <constraint firstItem="dNM-Fh-l0S" firstAttribute="leading" secondItem="AKb-aF-sGs" secondAttribute="trailing" constant="20" id="JnN-Ra-bTd"/>
+                    <constraint firstItem="W35-Dq-30v" firstAttribute="top" secondItem="4ld-Nj-QKb" secondAttribute="bottom" constant="10" id="Lrr-NI-HRu"/>
+                    <constraint firstAttribute="trailing" secondItem="dNM-Fh-l0S" secondAttribute="trailing" constant="15" id="WyH-Ar-xb7"/>
+                    <constraint firstItem="4ld-Nj-QKb" firstAttribute="top" secondItem="Qu5-kE-Kbr" secondAttribute="top" id="dGF-qg-FGS"/>
+                    <constraint firstItem="dNM-Fh-l0S" firstAttribute="centerY" secondItem="W35-Dq-30v" secondAttribute="centerY" id="w0S-JN-ECI"/>
+                    <constraint firstItem="W35-Dq-30v" firstAttribute="leading" secondItem="Qu5-kE-Kbr" secondAttribute="leading" constant="15" id="xCJ-ht-iHS"/>
+                </constraints>
+            </view>
+            <color key="borderColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+            <point key="canvasLocation" x="-6067" y="-11455"/>
+        </box>
+        <customView id="Er5-ma-Hwn">
+            <rect key="frame" x="0.0" y="0.0" width="180" height="157"/>
+            <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+            <subviews>
+                <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="bJU-ri-rkZ">
+                    <rect key="frame" x="0.0" y="37" width="180" height="120"/>
+                    <constraints>
+                        <constraint firstAttribute="height" constant="120" id="NN9-AU-mWg"/>
+                        <constraint firstAttribute="width" constant="180" id="P8V-kU-bxm"/>
+                    </constraints>
+                    <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="KMImageNameEmptySearch" id="xKG-a1-oh4"/>
+                </imageView>
+                <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="hPH-of-lqx">
+                    <rect key="frame" x="70" y="0.0" width="41" height="17"/>
+                    <textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="7gf-oW-tWk">
+                        <font key="font" metaFont="systemSemibold" size="14"/>
+                        <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+                        <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                    </textFieldCell>
+                </textField>
+            </subviews>
+            <constraints>
+                <constraint firstItem="hPH-of-lqx" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Er5-ma-Hwn" secondAttribute="leading" constant="5" id="8QD-ab-UiZ"/>
+                <constraint firstItem="bJU-ri-rkZ" firstAttribute="top" secondItem="Er5-ma-Hwn" secondAttribute="top" id="AMe-Ca-Dgd"/>
+                <constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="hPH-of-lqx" secondAttribute="bottom" id="GhF-Wk-sWe"/>
+                <constraint firstItem="hPH-of-lqx" firstAttribute="centerX" secondItem="Er5-ma-Hwn" secondAttribute="centerX" id="Hmz-ws-6rx"/>
+                <constraint firstItem="bJU-ri-rkZ" firstAttribute="centerX" secondItem="Er5-ma-Hwn" secondAttribute="centerX" id="QIN-e6-e3J"/>
+                <constraint firstAttribute="trailing" secondItem="bJU-ri-rkZ" secondAttribute="trailing" id="c2h-B6-9kI"/>
+                <constraint firstItem="hPH-of-lqx" firstAttribute="top" secondItem="bJU-ri-rkZ" secondAttribute="bottom" constant="20" id="z1c-ys-ZvI"/>
+            </constraints>
+            <point key="canvasLocation" x="-6412" y="-11889.5"/>
+        </customView>
+    </objects>
+    <resources>
+        <image name="KMImageNameEmptyAnnotate" width="140" height="140"/>
+        <image name="KMImageNameEmptyOutline" width="140" height="141"/>
+        <image name="KMImageNameEmptySearch" width="140" height="140"/>
+        <image name="KMImageNameEmptySnapshot" width="140" height="140"/>
+        <image name="KMImageNamePanelAdd" width="14" height="14"/>
+        <image name="KMImageNamePanelDelete" width="14" height="14"/>
+        <image name="KMImageNamePanelExport" width="14" height="14"/>
+        <image name="KMImageNamePanelFilter" width="14" height="14"/>
+        <image name="KMImageNamePanelPrint" width="14" height="14"/>
+    </resources>
+</document>

+ 45 - 39
PDF Office/PDF Master/Class/PDFWindowController/Side/LeftSide/KMLeftSideViewController.swift

@@ -418,6 +418,12 @@ class KMLeftSideViewController: KMSideViewController {
     private let LABEL_COLUMNID = "label"
     var foldType: KMFoldAllAnnotationType = .none
     
+    lazy var leftSideEmptyVC: KMLeftSideEmptyFileViewController = {
+        let vc = KMLeftSideEmptyFileViewController(nibName: "KMLeftSideEmptyFileViewController", bundle: nil)
+        vc.view.wantsLayer = true
+        return vc
+    }()
+    
     override func loadView() {
         super.loadView()
         
@@ -824,16 +830,16 @@ class KMLeftSideViewController: KMSideViewController {
         frame.size.height = self.searchViewController.view.superview?.frame.size.height ?? .zero
         self.searchViewController.view.frame = frame
         
-//        frame = rightSideController.noteOutlineView.enclosingScrollView.frame;
-//        frame.origin.y = 0;
-//        frame.size.height = rightSideController.noteOutlineView.enclosingScrollView.superview.frame.size.height;
-//        rightSideController.noteOutlineView.enclosingScrollView.frame = frame;
+        frame = self.noteOutlineView.enclosingScrollView?.frame ?? .zero
+        frame.origin.y = 0
+        frame.size.height = self.noteOutlineView.enclosingScrollView?.superview?.frame.size.height ?? 0
+        self.noteOutlineView.enclosingScrollView?.frame = frame
         
-//        frame = rightSideController.snapshotTableView.enclosingScrollView.frame;
-//        frame.origin.y = 0;
-//        frame.size.height = rightSideController.snapshotTableView.enclosingScrollView.superview.frame.size.height;
-//        rightSideController.snapshotTableView.enclosingScrollView.frame = frame;
-//        [self.leftSideEmptyVC.emptySnapView removeFromSuperview];
+        frame = self.snapshotTableView.enclosingScrollView?.frame ?? .zero
+        frame.origin.y = 0
+        frame.size.height = self.snapshotTableView.enclosingScrollView?.superview?.frame.size.height ?? 0
+        self.snapshotTableView.enclosingScrollView?.frame = frame
+        self.leftSideEmptyVC.emptySnapView.removeFromSuperview()
         
 //        [self updataLeftSideSnapView];
     }
@@ -904,9 +910,9 @@ class KMLeftSideViewController: KMSideViewController {
         frame.size.height = self.snapshotTableView.enclosingScrollView?.superview?.frame.size.height ?? 0
         self.snapshotTableView.enclosingScrollView?.frame = frame
             
-        let view = self.noteOutlineView.enclosingScrollView
-//        CGSize emptyVcSize =  self.leftSideEmptyVC.emptyAnnotationView.frame.size;
-//        self.leftSideEmptyVC.emptyAnnotationView.frame = NSMakeRect((view.frame.size.width-emptyVcSize.width)/2.0,(view.frame.size.height-emptyVcSize.height)/2.0, emptyVcSize.width, emptyVcSize.height);
+        let view = self.noteOutlineView.enclosingScrollView!
+        let emptyVcSize =  self.leftSideEmptyVC.emptyAnnotationView.frame.size
+        self.leftSideEmptyVC.emptyAnnotationView.frame = NSMakeRect((view.frame.size.width-emptyVcSize.width)/2.0,(view.frame.size.height-emptyVcSize.height)/2.0, emptyVcSize.width, emptyVcSize.height)
         
         DispatchQueue.main.async {
             self.noteOutlineView.reloadData()
@@ -968,10 +974,10 @@ class KMLeftSideViewController: KMSideViewController {
         frame.size.height = self.tocOutlineView.enclosingScrollView?.superview?.frame.size.height ?? 0
         self.tocOutlineView.enclosingScrollView?.frame = frame
             
-//        frame = rightSideController.noteOutlineView.enclosingScrollView.frame;
-//        frame.origin.y = 0;
-//        frame.size.height = rightSideController.noteOutlineView.enclosingScrollView.superview.frame.size.height;
-//        rightSideController.noteOutlineView.enclosingScrollView.frame = frame;
+        frame = self.noteOutlineView.enclosingScrollView?.frame ?? .zero
+        frame.origin.y = 0
+        frame.size.height = self.noteOutlineView.enclosingScrollView?.superview?.frame.size.height ?? 0
+        self.noteOutlineView.enclosingScrollView?.frame = frame
         
         frame = self.snapshotTableView.enclosingScrollView?.frame ?? .zero
         frame.origin.y = 0
@@ -980,10 +986,10 @@ class KMLeftSideViewController: KMSideViewController {
         
 //        [self updateOutlineSelection];
         
-        let view = self.tocOutlineView.enclosingScrollView
-//        CGSize emptyVcSize =  self.leftSideEmptyVC.emptyOutlineView.frame.size;
+        let view = self.tocOutlineView.enclosingScrollView!
+        let emptyVcSize =  self.leftSideEmptyVC.emptyOutlineView.frame.size
         
-//        self.leftSideEmptyVC.emptyOutlineView.frame = NSMakeRect((view.frame.size.width-emptyVcSize.width)/2.0,(view.frame.size.height-emptyVcSize.height)/2.0, emptyVcSize.width, emptyVcSize.height);
+        self.leftSideEmptyVC.emptyOutlineView.frame = NSMakeRect((view.frame.size.width-emptyVcSize.width)/2.0,(view.frame.size.height-emptyVcSize.height)/2.0, emptyVcSize.width, emptyVcSize.height);
     }
     /*
      
@@ -2616,17 +2622,17 @@ extension KMLeftSideViewController: NSOutlineViewDelegate, NSOutlineViewDataSour
 //                item = [[pdfView document] outlineRoot];
                 var item = self.listView.document.outlineRoot()
                 if let data = item?.numberOfChildren, data == 0 && !self.isSearchOutlineMode {
-                    let view = self.tocOutlineView.enclosingScrollView
-//                    CGSize emptyVcSize =  self.leftSideEmptyVC.emptyOutlineView.frame.size;
-                    
-//                    self.leftSideEmptyVC.emptyOutlineView.frame = NSMakeRect((view.frame.size.width-emptyVcSize.width)/2.0,(view.frame.size.height-emptyVcSize.height)/2.0, emptyVcSize.width, emptyVcSize.height);
+                    let view = self.tocOutlineView.enclosingScrollView!
+                    let emptyVcSize =  self.leftSideEmptyVC.emptyOutlineView.frame.size
+//
+                    self.leftSideEmptyVC.emptyOutlineView.frame = NSMakeRect((view.frame.size.width-emptyVcSize.width)/2.0,(view.frame.size.height-emptyVcSize.height)/2.0, emptyVcSize.width, emptyVcSize.height)
                     
-//                    self.leftSideEmptyVC.emptyOutlineView.autoresizingMask = NSViewMinXMargin | NSViewMaxXMargin| NSViewMaxYMargin | NSViewMinYMargin;
-//                    [leftSideController.tocOutlineView.enclosingScrollView.documentView addSubview:self.leftSideEmptyVC.emptyOutlineView];
-//                    self.leftSideEmptyVC.deleteOutlineBtn.enabled = NO;
+                    self.leftSideEmptyVC.emptyOutlineView.autoresizingMask = [.minXMargin, .maxXMargin, .minYMargin, .maxYMargin]
+                    self.tocOutlineView.enclosingScrollView?.documentView?.addSubview(self.leftSideEmptyVC.emptyOutlineView)
+                    self.leftSideEmptyVC.deleteOutlineBtn.isEnabled = false
                 } else {
-//                    [self.leftSideEmptyVC.emptyOutlineView removeFromSuperview];
-//                    self.leftSideEmptyVC.deleteOutlineBtn.enabled = YES;
+                    self.leftSideEmptyVC.emptyOutlineView.removeFromSuperview()
+                    self.leftSideEmptyVC.deleteOutlineBtn.isEnabled = true
                 }
 //                PDFOutline *item = [[pdfView document] outlineRoot];
                 if let data = item?.numberOfChildren, data > 0 {
@@ -2675,15 +2681,15 @@ extension KMLeftSideViewController: NSOutlineViewDelegate, NSOutlineViewDataSour
 //                        leftSideController.noteSearchButton.enabled = NO;
 //                        leftSideController.noteFilterButton.enabled = NO;
 //                    }
-//
                     self.noteOutlineView.usesAlternatingRowBackgroundColors = false
-                    let view = self.noteOutlineView.enclosingScrollView
-//                    CGSize emptyVcSize =  self.leftSideEmptyVC.emptyAnnotationView.frame.size;
-//                    self.leftSideEmptyVC.emptyAnnotationView.frame = NSMakeRect((view.frame.size.width-emptyVcSize.width)/2.0,(view.frame.size.height-emptyVcSize.height)/2.0, emptyVcSize.width, emptyVcSize.height);
-//                    self.leftSideEmptyVC.emptyAnnotationView.autoresizingMask = NSViewMinXMargin | NSViewMaxXMargin | NSViewMaxYMargin | NSViewMinYMargin;
-//                    [rightSideController.noteOutlineView.enclosingScrollView.documentView addSubview:self.leftSideEmptyVC.emptyAnnotationView];
-//                    self.leftSideEmptyVC.exportAnnotationBtn.enabled = NO;
-//                    self.leftSideEmptyVC.deleteAnnotationBtn.enabled = NO;
+                    let view = self.noteOutlineView.enclosingScrollView!
+                    let emptyVcSize =  self.leftSideEmptyVC.emptyAnnotationView.frame.size
+                    self.leftSideEmptyVC.emptyAnnotationView.frame = NSMakeRect((view.frame.size.width-emptyVcSize.width)/2.0,(view.frame.size.height-emptyVcSize.height)/2.0, emptyVcSize.width, emptyVcSize.height)
+                    
+                    self.leftSideEmptyVC.emptyAnnotationView.autoresizingMask = [.minXMargin, .maxXMargin, .minYMargin, .maxYMargin]
+                    self.noteOutlineView.enclosingScrollView?.documentView?.addSubview(self.leftSideEmptyVC.emptyAnnotationView)
+                    self.leftSideEmptyVC.exportAnnotationBtn.isEnabled = false
+                    self.leftSideEmptyVC.deleteAnnotationBtn.isEnabled = false
 //
                     if (self.segmentedControl.selectedSegment == KMSelectedSegmentType.annotation.rawValue) {
                         self.noteHeaderView.isHidden = true
@@ -2695,9 +2701,9 @@ extension KMLeftSideViewController: NSOutlineViewDelegate, NSOutlineViewDataSour
 
                     self.noteOutlineView.usesAlternatingRowBackgroundColors = false
 
-//                    [self.leftSideEmptyVC.emptyAnnotationView removeFromSuperview];
-//                    self.leftSideEmptyVC.exportAnnotationBtn.enabled = YES;
-//                    self.leftSideEmptyVC.deleteAnnotationBtn.enabled = YES;
+                    self.leftSideEmptyVC.emptyAnnotationView.removeFromSuperview()
+                    self.leftSideEmptyVC.exportAnnotationBtn.isEnabled = true
+                    self.leftSideEmptyVC.deleteAnnotationBtn.isEnabled = true
 //
                     if (self.segmentedControl.selectedSegment == KMSelectedSegmentType.annotation.rawValue) {
                         self.noteHeaderView.isHidden = false