Jelajahi Sumber

【注释】补充Button、Choice Form注释创建面板

wanjun 1 tahun lalu
induk
melakukan
d4eaf12cbf
14 mengubah file dengan 1194 tambahan dan 15 penghapusan
  1. 0 1
      PDF Office/PDF Master/Class/PDFTools/PageEdit/Window/KMPDFEditInsertBlankPageWindow.swift
  2. 254 0
      PDF Office/PDF Master/Class/PDFWindowController/Form/KMFormActionButtonPopWindowController.swift
  3. 218 0
      PDF Office/PDF Master/Class/PDFWindowController/Form/KMFormActionButtonPopWindowController.xib
  4. 253 0
      PDF Office/PDF Master/Class/PDFWindowController/Form/KMFormListMenuPopWindowController.swift
  5. 328 0
      PDF Office/PDF Master/Class/PDFWindowController/Form/KMFormListMenuPopWindowController.xib
  6. 3 1
      PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListView.h
  7. 2 0
      PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListView.m
  8. 2 1
      PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListViewExtension/CPDFListView+Event.m
  9. 69 1
      PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListViewExtension/CPDFListView+Form.swift
  10. 14 0
      PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/ViewController/FormProperties/KMAnnotationChoiceWidgeOptionsTextField.swift
  11. 1 1
      PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/ViewController/FormProperties/KMAnnotationChoiceWidgetAppearanceViewController.swift
  12. 8 8
      PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/ViewController/FormProperties/KMAnnotationChoiceWidgetOptionsViewController.xib
  13. 2 2
      PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/WindowController/KMAnnotationFontWindowController.xib
  14. 40 0
      PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

+ 0 - 1
PDF Office/PDF Master/Class/PDFTools/PageEdit/Window/KMPDFEditInsertBlankPageWindow.swift

@@ -48,7 +48,6 @@ class KMPDFEditInsertBlankPageWindow: NSWindowController {
     deinit {
         KMPrint("KMPDFEditInsertBlankPageWindow deinit.")
     }
-    
     convenience init(document: CPDFDocument) {
         self.init(windowNibName: "KMPDFEditInsertBlankPageWindow")
         

+ 254 - 0
PDF Office/PDF Master/Class/PDFWindowController/Form/KMFormActionButtonPopWindowController.swift

@@ -0,0 +1,254 @@
+//
+//  KMFormActionButtonPopWindowController.swift
+//  PDF Reader Pro
+//
+//  Created by wanjun on 2024/2/2.
+//
+
+import Cocoa
+
+@objcMembers
+class KMFormActionButtonPopWindowController: NSWindowController {
+    
+    @IBOutlet private weak var actionLabel: NSTextField!
+    @IBOutlet private weak var actionComboBox: NSComboBox!
+    @IBOutlet private weak var label: NSTextField!
+    @IBOutlet private weak var labelTextField: NSTextField!
+    @IBOutlet private weak var presenceLabel: NSTextField!
+    @IBOutlet private weak var visibleComboBox: NSComboBox!
+    @IBOutlet private weak var emailButton: NSButton!
+    @IBOutlet private weak var emailTextField: NSTextField!
+    @IBOutlet private weak var urlButton: NSButton!
+    @IBOutlet private weak var urlTextField: NSTextField!
+    @IBOutlet private weak var cancelButton: NSButton!
+    @IBOutlet private weak var okButton: NSButton!
+    
+    private var settingButtonWidget: CPDFButtonWidgetAnnotation?
+    private var isEdit: Bool = false
+    private var handler: ((Int) -> Void)!
+
+    // MARK: Dealloc
+    
+    deinit {
+        NotificationCenter.default.removeObserver(self)
+    }
+    
+    // MARK: init Methods
+
+    convenience init(buttonWidget: CPDFButtonWidgetAnnotation, isEdit: Bool) {
+        self.init(windowNibName: "KMFormActionButtonPopWindowController")
+        
+        settingButtonWidget = buttonWidget
+        self.isEdit = isEdit
+    }
+    
+    // MARK: Life Cycle
+    
+    override func windowDidLoad() {
+        super.windowDidLoad()
+        
+        localizedString()
+        if isEdit {
+            configuViews()
+        }
+        emailTextField.inputContext?.allowedInputSourceLocales = [NSAllRomanInputSourcesLocaleIdentifier]
+        urlTextField.inputContext?.allowedInputSourceLocales = [NSAllRomanInputSourcesLocaleIdentifier]
+    }
+    
+    // MARK: Private Methods
+    
+    func localizedString() {
+        cancelButton.title = NSLocalizedString("Cancel", comment: "")
+        okButton.title = NSLocalizedString("OK", comment: "")
+        actionLabel.stringValue = NSLocalizedString("Action", comment: "")
+        presenceLabel.stringValue = NSLocalizedString("Button Field", comment: "")
+        label.stringValue = NSLocalizedString("Label", comment: "")
+        labelTextField.stringValue = NSLocalizedString("Submit", comment: "")
+        
+        actionComboBox.removeAllItems()
+        actionComboBox.stringValue = NSLocalizedString("Submit", comment: "")
+        actionComboBox.addItems(withObjectValues: [
+            NSLocalizedString("Submit", comment: ""),
+            NSLocalizedString("Print", comment: "")
+        ])
+        actionComboBox.selectItem(at: 0)
+        
+        visibleComboBox.removeAllItems()
+        visibleComboBox.stringValue = NSLocalizedString("Visible", comment: "")
+        visibleComboBox.addItems(withObjectValues: [
+            NSLocalizedString("Visible", comment: ""),
+            NSLocalizedString("Hidden", comment: ""),
+            NSLocalizedString("Visible but doesn't print", comment: "")
+        ])
+        
+        emailButton.title = NSLocalizedString("Submit to Email", comment: "")
+        urlButton.title = NSLocalizedString("Submit to URL", comment: "")
+        
+        urlTextField.isEnabled = false
+        emailTextField.isEnabled = true
+        
+        NotificationCenter.default.addObserver(self, selector: #selector(textFieldDidChange), name: NSControl.textDidChangeNotification, object: labelTextField)
+    }
+
+    func configuViews() {
+        labelTextField.stringValue = settingButtonWidget?.caption() ?? NSLocalizedString("Submit", comment: "")
+        let shouldDisplay = settingButtonWidget?.shouldDisplay() ?? false
+        let shouldPrint = settingButtonWidget?.shouldPrint() ?? false
+        
+        if shouldDisplay && !shouldPrint {
+            visibleComboBox.selectItem(at: 2)
+        } else if shouldDisplay && shouldPrint {
+            visibleComboBox.selectItem(at: 0)
+        } else if shouldPrint && !shouldDisplay {
+            visibleComboBox.selectItem(at: 0)
+        }
+        
+//        if let mouseUpAction = settingButtonWidget.mouseUpAction, mouseUpAction as CPDFNamedAction {
+        if let mouseUpAction = settingButtonWidget?.mouseUpAction() as? CPDFAnnotation {
+            actionComboBox.selectItem(at: 1)
+            urlButton.isEnabled = false
+            emailButton.isEnabled = false
+            urlTextField.isEnabled = false
+            emailTextField.isEnabled = false
+        } else {
+            actionComboBox.selectItem(at: 0)
+            urlButton.isEnabled = true
+            emailButton.isEnabled = true
+            urlTextField.isEnabled = true
+            emailTextField.isEnabled = true
+            
+            if let urlAction = settingButtonWidget!.mouseUpAction as? CPDFURLAction {
+                if urlAction.url().fileURL.absoluteString.hasPrefix("mailto:") {
+                    urlButton.state = .off
+                    emailButton.state = .on
+                    emailTextField.stringValue = urlAction.url().fileURL.absoluteString
+                } else {
+                    urlButton.state = .on
+                    emailButton.state = .off
+                    urlTextField.stringValue = urlAction.url().fileURL.absoluteString
+                }
+            }
+        }
+    }
+    
+    @IBAction private func dismissSheet(_ sender: Any) {
+        if #available(macOS 10.13, *) {
+            NSApp.endSheet(window!, returnCode: (sender as? NSControl)?.tag ?? 0)
+        } else {
+            NSApp.endSheet(window!)
+        }
+        window!.orderOut(self)
+    }
+    
+    @objc private func didEndSheet(_ sheet: NSWindow?, returnCode: Int, contextInfo: UnsafeMutableRawPointer?) {
+        if contextInfo != nil && self.handler != nil {
+            self.handler!(returnCode)
+        }
+    }
+    
+    func beginSheetModal(for window: NSWindow?, completionHandler handler: ((Int) -> Void)?) {
+        if window != nil {
+            window!.beginSheet(self.window!) { ModalResponse in
+                self.handler?(ModalResponse.rawValue)
+            }
+        }
+        self.handler = handler
+    }
+    
+    // MARK: Button Actions
+    
+    @IBAction func comboBoxClicked_ActionSelect(_ sender: Any) {
+        guard let comboBox = sender as? NSComboBox else {
+            return
+        }
+        
+        if comboBox.indexOfSelectedItem == 1 {
+            emailButton.isEnabled = false
+            urlButton.isEnabled = false
+            urlTextField.stringValue = ""
+            emailTextField.stringValue = ""
+            urlTextField.isEnabled = false
+            emailTextField.isEnabled = false
+            
+            labelTextField.stringValue = NSLocalizedString("Print", comment: "")
+        } else {
+            emailButton.isEnabled = true
+            urlButton.isEnabled = true
+            urlTextField.isEnabled = true
+            emailTextField.isEnabled = true
+            labelTextField.stringValue = NSLocalizedString("Submit", comment: "")
+        }
+    }
+
+    @IBAction func buttonClicked_MailOrURLSelect(_ sender: Any) {
+        guard let button = sender as? NSButton else {
+            return
+        }
+        
+        if button.tag == 1 {
+            emailButton.state = NSControl.StateValue.off
+            urlButton.state = NSControl.StateValue.on
+            emailTextField.isEnabled = false
+            urlTextField.isEnabled = true
+        } else {
+            emailButton.state = NSControl.StateValue.on
+            urlButton.state = NSControl.StateValue.off
+            urlTextField.isEnabled = false
+            emailTextField.isEnabled = true
+        }
+    }
+
+    @IBAction func buttonClicked_CancelSetting(_ sender: Any) {
+        dismissSheet(cancelButton)
+    }
+    
+    @IBAction func buttonClicked_ConfirmSetting(_ sender: Any) {
+        if actionComboBox.indexOfSelectedItem == 0 {
+            var url: String?
+            if urlButton.state == .on {
+                if urlTextField.stringValue.hasPrefix("http://") || urlTextField.stringValue.hasPrefix("https://") {
+                    url = urlTextField.stringValue
+                } else {
+                    url = "http://\(urlTextField.stringValue)"
+                }
+            } else {
+                if emailTextField.stringValue.hasPrefix("mailto:") {
+                    url = emailTextField.stringValue
+                } else {
+                    url = "mailto:\(emailTextField.stringValue)"
+                }
+            }
+            if let action = CPDFURLAction(url: url) {
+//                settingButtonWidget.mouseUpAction = action
+            }
+        } else {
+            if let action = CPDFNamedAction(name: .print) {
+//                settingButtonWidget.mouseUpAction = action
+            }
+        }
+        
+        if visibleComboBox.indexOfSelectedItem == 0 {
+            settingButtonWidget?.setShouldDisplay(true)
+            settingButtonWidget?.setShouldPrint(true)
+        } else if visibleComboBox.indexOfSelectedItem == 1 {
+            settingButtonWidget?.setShouldDisplay(false)
+            settingButtonWidget?.setShouldPrint(true)
+        } else {
+            settingButtonWidget?.setShouldDisplay(true)
+            settingButtonWidget?.setShouldPrint(false)
+        }
+        
+        settingButtonWidget?.setCaption(labelTextField.stringValue)
+
+        NotificationCenter.default.post(name: NSNotification.Name("KMFormActionButtonChange"), object: nil, userInfo: nil)
+        dismissSheet(okButton)
+    }
+    
+    // MARK: NSNotification Action
+    
+    @objc func textFieldDidChange() {
+        settingButtonWidget?.setCaption(labelTextField.stringValue)
+        
+        NotificationCenter.default.post(name: Notification.Name("KMFormActionButtonLabelTextField"), object: self)
+    }
+}

+ 218 - 0
PDF Office/PDF Master/Class/PDFWindowController/Form/KMFormActionButtonPopWindowController.xib

@@ -0,0 +1,218 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMFormActionButtonPopWindowController" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <connections>
+                <outlet property="actionComboBox" destination="Bmd-Qo-clZ" id="XeC-hy-MxS"/>
+                <outlet property="actionLabel" destination="gOb-OI-feU" id="kON-pw-8oW"/>
+                <outlet property="cancelButton" destination="AmK-R1-fam" id="Frn-z2-uhY"/>
+                <outlet property="emailButton" destination="VHh-E5-AVJ" id="FP2-zc-4qH"/>
+                <outlet property="emailTextField" destination="pJK-CS-UiB" id="M5g-Kc-JJm"/>
+                <outlet property="label" destination="LfD-bl-T3c" id="Axk-0r-o7h"/>
+                <outlet property="labelTextField" destination="jQK-hR-5Yw" id="JjS-pu-CT1"/>
+                <outlet property="okButton" destination="dz5-Ak-kQt" id="xES-MW-LGv"/>
+                <outlet property="presenceLabel" destination="bOj-H3-vy9" id="hna-ZW-SCe"/>
+                <outlet property="urlButton" destination="KhV-Aq-35U" id="oyK-2d-d4z"/>
+                <outlet property="urlTextField" destination="aQw-DO-oGy" id="VdL-62-Rtd"/>
+                <outlet property="visibleComboBox" destination="q5S-9w-Wv1" id="lNB-s0-bpP"/>
+                <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="F0z-JX-Cv5">
+            <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="520" height="270"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
+            <view key="contentView" wantsLayer="YES" id="se5-gp-TjO">
+                <rect key="frame" x="0.0" y="0.0" width="520" height="270"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="AmK-R1-fam">
+                        <rect key="frame" x="289" y="13" width="111" height="33"/>
+                        <buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="Ohq-AM-h7E">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                            <string key="keyEquivalent" base64-UTF8="YES">
+Gw
+</string>
+                        </buttonCell>
+                        <constraints>
+                            <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="97" id="lPn-o1-y8Q"/>
+                            <constraint firstAttribute="height" constant="21" id="xKS-JG-CFD"/>
+                        </constraints>
+                        <connections>
+                            <action selector="buttonClicked_CancelSetting:" target="-2" id="mzW-TE-MQ4"/>
+                        </connections>
+                    </button>
+                    <comboBox focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="q5S-9w-Wv1">
+                        <rect key="frame" x="97" y="198" width="124" height="23"/>
+                        <constraints>
+                            <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="120" id="k2M-n5-pOf"/>
+                        </constraints>
+                        <comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" alignment="center" title="Visible" drawsBackground="YES" completes="NO" numberOfVisibleItems="5" id="eEB-pT-Eo0">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                            <objectValues>
+                                <string>Hidden</string>
+                                <string>Visible</string>
+                                <string>Visible but doesn't print</string>
+                            </objectValues>
+                        </comboBoxCell>
+                    </comboBox>
+                    <textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bOj-H3-vy9">
+                        <rect key="frame" x="18" y="202" width="77" height="16"/>
+                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Button Field" id="eTp-99-RIg">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                    <textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jQK-hR-5Yw">
+                        <rect key="frame" x="342" y="235" width="120" height="21"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="120" id="g3a-bz-d3J"/>
+                        </constraints>
+                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="center" title="Submit" drawsBackground="YES" id="tSZ-WR-xno">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                    <textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="LfD-bl-T3c">
+                        <rect key="frame" x="302" y="237" width="37" height="16"/>
+                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Label" id="gL2-5w-EYB">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                    <button tag="1" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="KhV-Aq-35U">
+                        <rect key="frame" x="18" y="110" width="114" height="18"/>
+                        <buttonCell key="cell" type="radio" title="Submit to URL" bezelStyle="regularSquare" imagePosition="left" alignment="left" inset="2" id="oke-c2-aLs">
+                            <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="buttonClicked_MailOrURLSelect:" target="-2" id="3l2-eu-33j"/>
+                        </connections>
+                    </button>
+                    <button tag="1" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dz5-Ak-kQt">
+                        <rect key="frame" x="406" y="13" width="111" height="33"/>
+                        <buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="2qZ-jR-9Ci">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                            <string key="keyEquivalent" base64-UTF8="YES">
+DQ
+</string>
+                        </buttonCell>
+                        <connections>
+                            <action selector="buttonClicked_ConfirmSetting:" target="-2" id="JnO-KZ-z5f"/>
+                        </connections>
+                    </button>
+                    <comboBox focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Bmd-Qo-clZ">
+                        <rect key="frame" x="97" y="233" width="124" height="23"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="120" id="jY9-1s-ubU"/>
+                        </constraints>
+                        <comboBoxCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" alignment="center" title="Submit" drawsBackground="YES" completes="NO" numberOfVisibleItems="2" id="ix3-0H-16S">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                            <objectValues>
+                                <string>Submit</string>
+                                <string>Print</string>
+                            </objectValues>
+                        </comboBoxCell>
+                        <connections>
+                            <action selector="comboBoxClicked_ActionSelect:" target="-2" id="f3W-XT-oRb"/>
+                        </connections>
+                    </comboBox>
+                    <textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="pJK-CS-UiB">
+                        <rect key="frame" x="40" y="132" width="320" height="21"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="320" id="wlv-Bh-5ip"/>
+                        </constraints>
+                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="support@pdfreaderpro.com" drawsBackground="YES" id="aya-7F-2Ni">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                    <textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="aQw-DO-oGy">
+                        <rect key="frame" x="40" y="85" width="320" height="21"/>
+                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" placeholderString="https://www.pdfreaderpro.com" drawsBackground="YES" id="fpF-jv-uu6">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                    <textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="gOb-OI-feU">
+                        <rect key="frame" x="52" y="237" width="43" height="16"/>
+                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Action" id="LQ5-tv-Vbx">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                    <box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="ekx-q5-dQF">
+                        <rect key="frame" x="11" y="182" width="496" height="5"/>
+                    </box>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VHh-E5-AVJ">
+                        <rect key="frame" x="18" y="157" width="121" height="18"/>
+                        <buttonCell key="cell" type="radio" title="Submit to Email" bezelStyle="regularSquare" imagePosition="left" alignment="left" state="on" inset="2" id="VX6-ks-mcx">
+                            <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="buttonClicked_MailOrURLSelect:" target="-2" id="Omm-hc-BjC"/>
+                        </connections>
+                    </button>
+                </subviews>
+                <constraints>
+                    <constraint firstItem="jQK-hR-5Yw" firstAttribute="leading" secondItem="LfD-bl-T3c" secondAttribute="trailing" constant="5" id="1ed-WS-Iu0"/>
+                    <constraint firstItem="q5S-9w-Wv1" firstAttribute="centerY" secondItem="bOj-H3-vy9" secondAttribute="centerY" id="1iy-RI-ed3"/>
+                    <constraint firstItem="dz5-Ak-kQt" firstAttribute="leading" secondItem="AmK-R1-fam" secondAttribute="trailing" constant="20" id="Crn-7s-d7U"/>
+                    <constraint firstAttribute="trailing" secondItem="dz5-Ak-kQt" secondAttribute="trailing" constant="10" id="Fep-6W-em8"/>
+                    <constraint firstItem="ekx-q5-dQF" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="11" id="Flc-6s-OLJ"/>
+                    <constraint firstAttribute="bottom" secondItem="dz5-Ak-kQt" secondAttribute="bottom" constant="20" id="FmY-WD-T4w"/>
+                    <constraint firstItem="pJK-CS-UiB" firstAttribute="top" secondItem="VHh-E5-AVJ" secondAttribute="bottom" constant="5" id="Iua-HH-2R6"/>
+                    <constraint firstItem="Bmd-Qo-clZ" firstAttribute="centerY" secondItem="gOb-OI-feU" secondAttribute="centerY" id="Jqt-q0-wKx"/>
+                    <constraint firstItem="q5S-9w-Wv1" firstAttribute="top" secondItem="Bmd-Qo-clZ" secondAttribute="bottom" constant="15" id="K6f-Dx-PBY"/>
+                    <constraint firstItem="bOj-H3-vy9" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="20" id="K8i-Jc-er2"/>
+                    <constraint firstItem="q5S-9w-Wv1" firstAttribute="leading" secondItem="Bmd-Qo-clZ" secondAttribute="leading" id="LAE-OF-y6k"/>
+                    <constraint firstItem="LfD-bl-T3c" firstAttribute="centerY" secondItem="gOb-OI-feU" secondAttribute="centerY" id="bUA-gZ-D5y"/>
+                    <constraint firstItem="pJK-CS-UiB" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="40" id="eee-rw-Tyv"/>
+                    <constraint firstItem="KhV-Aq-35U" firstAttribute="top" secondItem="pJK-CS-UiB" secondAttribute="bottom" constant="5" id="esH-x3-c75"/>
+                    <constraint firstItem="aQw-DO-oGy" firstAttribute="leading" secondItem="pJK-CS-UiB" secondAttribute="leading" id="ggp-Xc-Cfc"/>
+                    <constraint firstItem="ekx-q5-dQF" firstAttribute="top" secondItem="q5S-9w-Wv1" secondAttribute="bottom" constant="15" id="h4j-cC-HfL"/>
+                    <constraint firstItem="aQw-DO-oGy" firstAttribute="trailing" secondItem="pJK-CS-UiB" secondAttribute="trailing" id="hcP-rn-udO"/>
+                    <constraint firstItem="KhV-Aq-35U" firstAttribute="leading" secondItem="VHh-E5-AVJ" secondAttribute="leading" id="jdj-ru-8Jy"/>
+                    <constraint firstItem="aQw-DO-oGy" firstAttribute="top" secondItem="KhV-Aq-35U" secondAttribute="bottom" constant="5" id="jqo-V7-0iY"/>
+                    <constraint firstItem="dz5-Ak-kQt" firstAttribute="width" secondItem="AmK-R1-fam" secondAttribute="width" id="m9i-Ke-vVu"/>
+                    <constraint firstItem="jQK-hR-5Yw" firstAttribute="centerY" secondItem="gOb-OI-feU" secondAttribute="centerY" id="maW-oA-Vhs"/>
+                    <constraint firstItem="VHh-E5-AVJ" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="20" id="pyQ-uc-P7j"/>
+                    <constraint firstItem="VHh-E5-AVJ" firstAttribute="top" secondItem="ekx-q5-dQF" secondAttribute="bottom" constant="10" id="tJk-TL-Sk3"/>
+                    <constraint firstItem="LfD-bl-T3c" firstAttribute="centerX" secondItem="se5-gp-TjO" secondAttribute="centerX" constant="60" id="ur7-c5-7Kf"/>
+                    <constraint firstItem="Bmd-Qo-clZ" firstAttribute="leading" secondItem="gOb-OI-feU" secondAttribute="trailing" constant="5" id="uug-ul-oFQ"/>
+                    <constraint firstAttribute="trailing" secondItem="ekx-q5-dQF" secondAttribute="trailing" constant="13" id="v2o-WK-fxc"/>
+                    <constraint firstItem="Bmd-Qo-clZ" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" constant="15" id="x55-v4-6JN"/>
+                    <constraint firstItem="dz5-Ak-kQt" firstAttribute="height" secondItem="AmK-R1-fam" secondAttribute="height" id="yQr-5p-M02"/>
+                    <constraint firstItem="q5S-9w-Wv1" firstAttribute="leading" secondItem="bOj-H3-vy9" secondAttribute="trailing" constant="5" id="yrk-JU-4k0"/>
+                    <constraint firstItem="dz5-Ak-kQt" firstAttribute="centerY" secondItem="AmK-R1-fam" secondAttribute="centerY" id="zvb-rU-Gld"/>
+                </constraints>
+            </view>
+            <connections>
+                <outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
+            </connections>
+            <point key="canvasLocation" x="139" y="147"/>
+        </window>
+    </objects>
+</document>

+ 253 - 0
PDF Office/PDF Master/Class/PDFWindowController/Form/KMFormListMenuPopWindowController.swift

@@ -0,0 +1,253 @@
+//
+//  KMFormListMenuPopWindowController.swift
+//  PDF Reader Pro
+//
+//  Created by wanjun on 2024/2/2.
+//
+
+import Cocoa
+
+@objcMembers
+class KMFormListMenuPopWindowController: NSWindowController {
+    
+    @IBOutlet private weak var label: NSTextField!
+    @IBOutlet private weak var nameLabel: NSTextField!
+    @IBOutlet private weak var nameTextField: NSTextField!
+    @IBOutlet private weak var listLabel: NSTextField!
+    @IBOutlet private weak var valueLabel: NSTextField!
+    @IBOutlet private weak var listTextField: NSTextField!
+    @IBOutlet private weak var valueTextField: NSTextField!
+    @IBOutlet private weak var tableView: NSTableView!
+    @IBOutlet private weak var addButton: NSButton!
+    @IBOutlet private weak var removeButton: NSButton!
+    @IBOutlet private weak var upButton: NSButton!
+    @IBOutlet private weak var downButton: NSButton!
+    @IBOutlet private weak var cancelButton: NSButton!
+    @IBOutlet private weak var okButton: NSButton!
+
+    private var list: [String] = []
+    private var values: [String] = []
+    private var settingWidget: CPDFChoiceWidgetAnnotation?
+    private var isEdit: Bool = false
+    private var handler: ((Int) -> Void)!
+
+    deinit {
+        NotificationCenter.default.removeObserver(self)
+    }
+    
+    convenience init(choiceWidget: CPDFChoiceWidgetAnnotation, isEdit: Bool) {
+        self.init(windowNibName: "KMFormListMenuPopWindowController")
+        
+        settingWidget = choiceWidget
+        self.isEdit = isEdit
+    }
+    
+    // MARK: Life Cycle
+    
+    override func windowDidLoad() {
+        super.windowDidLoad()
+        
+        localizedString()
+        initData()
+        initSetting()
+    }
+    
+    // MARK: Private Methods
+    
+    private func localizedString() {
+        if settingWidget!.isListChoice {
+            label.stringValue = NSLocalizedString("List Box", comment: "")
+        } else {
+            label.stringValue = NSLocalizedString("Combo Box", comment: "")
+        }
+
+        nameLabel.stringValue = NSLocalizedString("Name:", comment: "")
+        listLabel.stringValue = NSLocalizedString("Item:", comment: "")
+        valueLabel.stringValue = NSLocalizedString("Value:", comment: "")
+        addButton.title = NSLocalizedString("Add", comment: "")
+        removeButton.title = NSLocalizedString("Remove", comment: "")
+        upButton.title = NSLocalizedString("Up", comment: "")
+        downButton.title = NSLocalizedString("Down", comment: "")
+        cancelButton.title = NSLocalizedString("Cancel", comment: "")
+        okButton.title = NSLocalizedString("OK", comment: "")
+        nameTextField.stringValue = settingWidget?.fieldName() ?? ""
+
+        addButton.isEnabled = false
+        removeButton.isEnabled = false
+        upButton.isEnabled = false
+        downButton.isEnabled = false
+
+        NotificationCenter.default.addObserver(self, selector: #selector(dropdownProjectTextFieldDidChange), name: NSControl.textDidChangeNotification, object: listTextField)
+        NotificationCenter.default.addObserver(self, selector: #selector(dropdownProjectTextFieldDidMouseDown), name: Notification.Name("KMAnnotationChoiceWidgeOptionsTextField"), object: listTextField)
+    }
+
+    private func initSetting() {
+        tableView.delegate = self
+        tableView.dataSource = self
+
+        listTextField.delegate = self
+        valueTextField.isEditable = false
+    }
+
+    private func initData() {
+        if isEdit {
+            list = (settingWidget?.choices())!
+            values = (settingWidget?.choices())!
+        }
+    }
+    
+    @IBAction private func dismissSheet(_ sender: Any) {
+        if #available(macOS 10.13, *) {
+            NSApp.endSheet(window!, returnCode: (sender as? NSControl)?.tag ?? 0)
+        } else {
+            NSApp.endSheet(window!)
+        }
+        window!.orderOut(self)
+    }
+    
+    @objc private func didEndSheet(_ sheet: NSWindow?, returnCode: Int, contextInfo: UnsafeMutableRawPointer?) {
+        if contextInfo != nil && self.handler != nil {
+            self.handler!(returnCode)
+        }
+    }
+    
+    func beginSheetModal(for window: NSWindow?, completionHandler handler: ((Int) -> Void)?) {
+        if window != nil {
+            window!.beginSheet(self.window!) { ModalResponse in
+                self.handler?(ModalResponse.rawValue)
+            }
+        }
+        self.handler = handler
+    }
+
+
+    // MARK: Button Action
+    
+    @IBAction private func buttonClicked_Add(_ sender: Any) {
+        if listTextField.stringValue.isEmpty {
+            listTextField.stringValue = ""
+        }
+        
+        if valueTextField.stringValue.isEmpty {
+            valueTextField.stringValue = ""
+        }
+        
+        list.append(listTextField.stringValue)
+        values.append(valueTextField.stringValue)
+        tableView.reloadData()
+        
+        listTextField.stringValue = ""
+        valueTextField.stringValue = ""
+        
+        addButton.isEnabled = false
+    }
+
+    @IBAction private func buttonClicked_Remove(_ sender: Any) {
+        if tableView.selectedRow >= 0 {
+            let indexSet = IndexSet(integer: tableView.selectedRow)
+            list.remove(at: tableView.selectedRow)
+            values.remove(at: tableView.selectedRow)
+            tableView.reloadData()
+            tableView.selectRowIndexes(indexSet, byExtendingSelection: false)
+        }
+    }
+
+    @IBAction private func buttonClicked_Up(_ sender: Any) {
+        if tableView.selectedRow > 0 {
+            list.swapAt(tableView.selectedRow, tableView.selectedRow - 1)
+            values.swapAt(tableView.selectedRow, tableView.selectedRow - 1)
+            tableView.reloadData()
+        }
+    }
+    
+    @IBAction private func buttonClicked_Down(_ sender: Any) {
+        let selectedRow = tableView.selectedRow
+        if selectedRow >= 0 && selectedRow < list.count - 1 {
+            list.swapAt(selectedRow, selectedRow + 1)
+            values.swapAt(selectedRow, selectedRow + 1)
+            tableView.reloadData()
+        }
+    }
+
+    @IBAction private func buttonClicked_Cancel(_ sender: Any) {
+        dismissSheet(cancelButton as Any)
+    }
+
+    @IBAction private func buttonClicked_Ok(_ sender: Any) {
+        guard list.count > 0 else {
+            let alert = NSAlert()
+            alert.alertStyle = .critical
+            alert.messageText = NSLocalizedString("The list cannot be empty.", comment: "")
+            alert.runModal()
+            return
+        }
+
+        settingWidget?.setChoices(list)
+        settingWidget?.setString(list[0])
+        settingWidget?.setFieldName(nameTextField.stringValue)
+
+        dismissSheet(okButton)
+    }
+    
+    // MARK: NSNotification
+    
+    func dropdownProjectTextFieldDidChange() {
+        if (list.contains(listTextField.stringValue) && list.count > 0) || isEmpty(listTextField.stringValue) {
+            addButton.isEnabled = false
+        } else {
+            addButton.isEnabled = true
+        }
+    }
+
+    func dropdownProjectTextFieldDidMouseDown() {
+        removeButton.isEnabled = false
+        upButton.isEnabled = false
+        downButton.isEnabled = false
+    }
+
+    private func isEmpty(_ string: String) -> Bool {
+        let set = CharacterSet.whitespacesAndNewlines
+        let trimmedString = string.trimmingCharacters(in: set)
+        return trimmedString.isEmpty
+    }
+}
+
+extension KMFormListMenuPopWindowController: NSTableViewDataSource, NSTableViewDelegate {
+    func numberOfRows(in tableView: NSTableView) -> Int {
+        return list.count
+    }
+
+    func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {
+        guard let identifier = tableColumn?.identifier else {
+            return nil
+        }
+
+        if identifier.rawValue == "List" {
+            if let cellView = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: identifier.rawValue), owner: self) as? NSTableCellView {
+                cellView.textField?.stringValue = list[row]
+                return cellView
+            }
+        } else if identifier.rawValue == "Value" {
+            if let cellView = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: identifier.rawValue), owner: self) as? NSTableCellView {
+                cellView.textField?.stringValue = values[row]
+                return cellView
+            }
+        }
+
+        return nil
+    }
+
+    func tableViewSelectionDidChange(_ notification: Notification) {
+        removeButton.isEnabled = true
+        upButton.isEnabled = true
+        downButton.isEnabled = true
+    }
+}
+
+extension KMFormListMenuPopWindowController: NSTextFieldDelegate {
+    func controlTextDidChange(_ obj: Notification) {
+        if let textField = obj.object as? NSTextField, textField == listTextField {
+            valueTextField.stringValue = listTextField.stringValue
+        }
+    }
+}

+ 328 - 0
PDF Office/PDF Master/Class/PDFWindowController/Form/KMFormListMenuPopWindowController.xib

@@ -0,0 +1,328 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+    <dependencies>
+        <deployment identifier="macosx"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <customObject id="-2" userLabel="File's Owner" customClass="KMFormListMenuPopWindowController" customModule="PDF_Reader_Pro" customModuleProvider="target">
+            <connections>
+                <outlet property="addButton" destination="oC2-mJ-9Xm" id="WCF-Wd-Fqb"/>
+                <outlet property="cancelButton" destination="Q41-K7-sWd" id="gqh-l5-OTB"/>
+                <outlet property="downButton" destination="SlY-Bg-Yck" id="Op4-ha-Qsf"/>
+                <outlet property="label" destination="BL8-Ft-RyC" id="1Ru-5K-pZT"/>
+                <outlet property="listLabel" destination="R2M-Vr-m1T" id="F9f-Ai-POc"/>
+                <outlet property="listTextField" destination="odf-9k-s6l" id="dxM-mW-PbB"/>
+                <outlet property="nameLabel" destination="eOQ-1j-Qzd" id="Ywd-vE-Jha"/>
+                <outlet property="nameTextField" destination="yzy-7k-keE" id="caD-il-g0V"/>
+                <outlet property="okButton" destination="8XW-t1-L4b" id="wU1-q2-D5E"/>
+                <outlet property="removeButton" destination="LYQ-eq-UPY" id="ste-H9-4YJ"/>
+                <outlet property="tableView" destination="BO8-qe-WIa" id="Hdt-RF-YTu"/>
+                <outlet property="upButton" destination="4zZ-gd-O3U" id="8u3-Sv-k48"/>
+                <outlet property="valueLabel" destination="jmg-Ze-vQc" id="9GJ-Lh-UrK"/>
+                <outlet property="valueTextField" destination="lBb-hZ-pZp" id="SlJ-am-v5q"/>
+                <outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
+            </connections>
+        </customObject>
+        <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
+        <customObject id="-3" userLabel="Application" customClass="NSObject"/>
+        <window title="Window" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" animationBehavior="default" id="F0z-JX-Cv5">
+            <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="500" height="290"/>
+            <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1415"/>
+            <view key="contentView" wantsLayer="YES" id="se5-gp-TjO">
+                <rect key="frame" x="0.0" y="0.0" width="500" height="288"/>
+                <autoresizingMask key="autoresizingMask"/>
+                <subviews>
+                    <textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="eOQ-1j-Qzd">
+                        <rect key="frame" x="43" y="231" width="44" height="16"/>
+                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Name:" id="WiV-JI-zm6">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                    <textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="yzy-7k-keE">
+                        <rect key="frame" x="85" y="228" width="297" height="21"/>
+                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="kFX-SC-2ao">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                    <scrollView autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="a1d-Xa-Wvh">
+                        <rect key="frame" x="45" y="42" width="337" height="111"/>
+                        <clipView key="contentView" id="ENp-Ei-IGN">
+                            <rect key="frame" x="1" y="1" width="335" height="109"/>
+                            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                            <subviews>
+                                <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" id="BO8-qe-WIa">
+                                    <rect key="frame" x="0.0" y="0.0" width="335" height="109"/>
+                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                    <size key="intercellSpacing" width="3" height="2"/>
+                                    <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                    <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
+                                    <tableColumns>
+                                        <tableColumn identifier="List" width="160" minWidth="40" maxWidth="1000" id="teP-dQ-aW1">
+                                            <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
+                                                <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
+                                                <color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
+                                            </tableHeaderCell>
+                                            <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="Whf-Fp-Jvg">
+                                                <font key="font" metaFont="system"/>
+                                                <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                                                <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                            </textFieldCell>
+                                            <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
+                                            <prototypeCellViews>
+                                                <tableCellView id="HDx-Y0-aC1">
+                                                    <rect key="frame" x="1" y="1" width="165" height="17"/>
+                                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                                    <subviews>
+                                                        <textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VuI-X2-8Z3">
+                                                            <rect key="frame" x="0.0" y="0.0" width="165" height="17"/>
+                                                            <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+                                                            <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="RS8-BG-f3d">
+                                                                <font key="font" metaFont="system"/>
+                                                                <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                                                                <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                                                            </textFieldCell>
+                                                        </textField>
+                                                    </subviews>
+                                                    <connections>
+                                                        <outlet property="textField" destination="VuI-X2-8Z3" id="Owa-4g-CaF"/>
+                                                    </connections>
+                                                </tableCellView>
+                                            </prototypeCellViews>
+                                        </tableColumn>
+                                        <tableColumn identifier="Value" width="131" minWidth="40" maxWidth="1000" id="T4E-8V-WMx">
+                                            <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border" alignment="left">
+                                                <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
+                                                <color key="backgroundColor" white="0.33333298560000002" alpha="1" colorSpace="calibratedWhite"/>
+                                            </tableHeaderCell>
+                                            <textFieldCell key="dataCell" lineBreakMode="truncatingTail" selectable="YES" editable="YES" alignment="left" title="Text Cell" id="DLe-80-5nY">
+                                                <font key="font" metaFont="system"/>
+                                                <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                                                <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                            </textFieldCell>
+                                            <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
+                                            <prototypeCellViews>
+                                                <tableCellView id="uu5-OF-9lU">
+                                                    <rect key="frame" x="169" y="1" width="135" height="17"/>
+                                                    <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                                                    <subviews>
+                                                        <textField focusRingType="none" verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="HFp-qh-yCQ">
+                                                            <rect key="frame" x="0.0" y="0.0" width="135" height="17"/>
+                                                            <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+                                                            <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="Mmw-Ei-zLR">
+                                                                <font key="font" metaFont="system"/>
+                                                                <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                                                                <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                                                            </textFieldCell>
+                                                        </textField>
+                                                    </subviews>
+                                                    <connections>
+                                                        <outlet property="textField" destination="HFp-qh-yCQ" id="0S6-1J-e0H"/>
+                                                    </connections>
+                                                </tableCellView>
+                                            </prototypeCellViews>
+                                        </tableColumn>
+                                    </tableColumns>
+                                </tableView>
+                            </subviews>
+                        </clipView>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="111" id="IxC-0M-KIX"/>
+                            <constraint firstAttribute="width" constant="337" id="zG2-bJ-M3k"/>
+                        </constraints>
+                        <scroller key="horizontalScroller" hidden="YES" verticalHuggingPriority="750" horizontal="YES" id="sjI-5K-8t9">
+                            <rect key="frame" x="-100" y="-100" width="223" height="15"/>
+                            <autoresizingMask key="autoresizingMask"/>
+                        </scroller>
+                        <scroller key="verticalScroller" hidden="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="YNC-S6-2Ye">
+                            <rect key="frame" x="-100" y="-100" width="15" height="102"/>
+                            <autoresizingMask key="autoresizingMask"/>
+                        </scroller>
+                    </scrollView>
+                    <textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jmg-Ze-vQc">
+                        <rect key="frame" x="266" y="191" width="42" height="16"/>
+                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Value:" id="knQ-Bp-M8u">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                    <textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="R2M-Vr-m1T">
+                        <rect key="frame" x="97" y="191" width="30" height="16"/>
+                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="List:" id="uc7-pY-dni">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="4zZ-gd-O3U">
+                        <rect key="frame" x="382" y="69" width="84" height="33"/>
+                        <buttonCell key="cell" type="push" title="Up" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="6k5-SG-FFH">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="buttonClicked_Up:" target="-2" id="UEE-qZ-skn"/>
+                        </connections>
+                    </button>
+                    <button tag="1" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8XW-t1-L4b">
+                        <rect key="frame" x="363" y="2" width="111" height="33"/>
+                        <buttonCell key="cell" type="push" title="OK" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="a1d-zU-qcy">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                            <string key="keyEquivalent" base64-UTF8="YES">
+DQ
+</string>
+                        </buttonCell>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="21" id="r9p-Q9-dRg"/>
+                            <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="97" id="zxU-x2-oWV"/>
+                        </constraints>
+                        <connections>
+                            <action selector="buttonClicked_Ok:" target="-2" id="07g-F2-7NF"/>
+                        </connections>
+                    </button>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Q41-K7-sWd">
+                        <rect key="frame" x="243" y="2" width="111" height="33"/>
+                        <buttonCell key="cell" type="push" title="Cancel" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="EfB-Yx-Sfi">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                            <string key="keyEquivalent" base64-UTF8="YES">
+Gw
+</string>
+                        </buttonCell>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="21" id="ByH-j7-qts"/>
+                            <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="97" id="hWq-sw-Qe3"/>
+                        </constraints>
+                        <connections>
+                            <action selector="buttonClicked_Cancel:" target="-2" id="ox1-rx-R6B"/>
+                        </connections>
+                    </button>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="LYQ-eq-UPY">
+                        <rect key="frame" x="382" y="113" width="84" height="33"/>
+                        <buttonCell key="cell" type="push" title="Remove" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="jFP-lK-H74">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="buttonClicked_Remove:" target="-2" id="SBA-3d-uud"/>
+                        </connections>
+                    </button>
+                    <box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="ga5-nj-MMe">
+                        <rect key="frame" x="12" y="213" width="476" height="5"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="476" id="IkY-QK-pmd"/>
+                        </constraints>
+                    </box>
+                    <textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="odf-9k-s6l" customClass="KMAnnotationChoiceWidgeOptionsTextField" customModule="PDF_Reader_Pro" customModuleProvider="target">
+                        <rect key="frame" x="45" y="168" width="143" height="21"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="143" id="Sx7-4m-eP4"/>
+                        </constraints>
+                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="Xl0-rw-8gf">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="oC2-mJ-9Xm">
+                        <rect key="frame" x="382" y="161" width="84" height="33"/>
+                        <buttonCell key="cell" type="push" title="Add" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="sgb-dU-7Zv">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <constraints>
+                            <constraint firstAttribute="height" constant="21" id="Aft-Py-gjX"/>
+                            <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="70" id="O68-3i-dO7"/>
+                        </constraints>
+                        <connections>
+                            <action selector="buttonClicked_Add:" target="-2" id="1mx-iO-G1z"/>
+                        </connections>
+                    </button>
+                    <textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="lBb-hZ-pZp" customClass="KMAnnotationChoiceWidgeOptionsTextField" customModule="PDF_Reader_Pro" customModuleProvider="target">
+                        <rect key="frame" x="196" y="168" width="186" height="21"/>
+                        <constraints>
+                            <constraint firstAttribute="width" constant="186" id="TiJ-aG-Ddm"/>
+                        </constraints>
+                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" drawsBackground="YES" id="qQe-wX-64p">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="SlY-Bg-Yck">
+                        <rect key="frame" x="382" y="43" width="84" height="33"/>
+                        <buttonCell key="cell" type="push" title="Down" bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="8qT-bU-dih">
+                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                            <font key="font" metaFont="system"/>
+                        </buttonCell>
+                        <connections>
+                            <action selector="buttonClicked_Down:" target="-2" id="AeO-x4-i7h"/>
+                        </connections>
+                    </button>
+                    <textField focusRingType="none" verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" translatesAutoresizingMaskIntoConstraints="NO" id="BL8-Ft-RyC">
+                        <rect key="frame" x="235" y="262" width="30" height="16"/>
+                        <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="center" title="List" id="mse-kY-uO9">
+                            <font key="font" metaFont="system"/>
+                            <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+                            <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+                        </textFieldCell>
+                    </textField>
+                </subviews>
+                <constraints>
+                    <constraint firstItem="BL8-Ft-RyC" firstAttribute="centerX" secondItem="se5-gp-TjO" secondAttribute="centerX" id="5Yf-YA-PoF"/>
+                    <constraint firstItem="SlY-Bg-Yck" firstAttribute="leading" secondItem="oC2-mJ-9Xm" secondAttribute="leading" id="68S-zP-1S4"/>
+                    <constraint firstAttribute="trailing" secondItem="8XW-t1-L4b" secondAttribute="trailing" constant="33" id="Bkj-5y-Ix0"/>
+                    <constraint firstItem="R2M-Vr-m1T" firstAttribute="top" secondItem="ga5-nj-MMe" secondAttribute="bottom" constant="8" id="BuS-mV-JD5"/>
+                    <constraint firstItem="odf-9k-s6l" firstAttribute="leading" secondItem="eOQ-1j-Qzd" secondAttribute="leading" id="Cnc-4r-JYS"/>
+                    <constraint firstAttribute="bottom" secondItem="Q41-K7-sWd" secondAttribute="bottom" constant="9" id="Gg6-zA-iEb"/>
+                    <constraint firstItem="LYQ-eq-UPY" firstAttribute="leading" secondItem="oC2-mJ-9Xm" secondAttribute="leading" id="INX-D4-USo"/>
+                    <constraint firstItem="yzy-7k-keE" firstAttribute="trailing" secondItem="lBb-hZ-pZp" secondAttribute="trailing" id="Iow-Cv-oso"/>
+                    <constraint firstItem="SlY-Bg-Yck" firstAttribute="top" secondItem="4zZ-gd-O3U" secondAttribute="bottom" constant="5" id="JGO-Rh-YZD"/>
+                    <constraint firstItem="a1d-Xa-Wvh" firstAttribute="top" secondItem="odf-9k-s6l" secondAttribute="bottom" constant="15" id="KJQ-US-IVU"/>
+                    <constraint firstItem="SlY-Bg-Yck" firstAttribute="height" secondItem="oC2-mJ-9Xm" secondAttribute="height" id="MvF-vB-Vyq"/>
+                    <constraint firstItem="4zZ-gd-O3U" firstAttribute="height" secondItem="oC2-mJ-9Xm" secondAttribute="height" id="NC3-e4-QsS"/>
+                    <constraint firstItem="ga5-nj-MMe" firstAttribute="top" secondItem="yzy-7k-keE" secondAttribute="bottom" constant="12" id="NHx-kS-Bl8"/>
+                    <constraint firstItem="lBb-hZ-pZp" firstAttribute="centerY" secondItem="odf-9k-s6l" secondAttribute="centerY" id="NOS-sm-rqM"/>
+                    <constraint firstItem="LYQ-eq-UPY" firstAttribute="width" secondItem="oC2-mJ-9Xm" secondAttribute="width" id="QDf-C0-cng"/>
+                    <constraint firstItem="4zZ-gd-O3U" firstAttribute="top" secondItem="LYQ-eq-UPY" secondAttribute="bottom" constant="23" id="W6d-PN-dX0"/>
+                    <constraint firstItem="eOQ-1j-Qzd" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" constant="41" id="XAs-y1-Uul"/>
+                    <constraint firstItem="8XW-t1-L4b" firstAttribute="leading" secondItem="Q41-K7-sWd" secondAttribute="trailing" constant="23" id="ZHT-rG-IJO"/>
+                    <constraint firstItem="R2M-Vr-m1T" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="99" id="ZtC-F0-Z4U"/>
+                    <constraint firstItem="yzy-7k-keE" firstAttribute="centerY" secondItem="eOQ-1j-Qzd" secondAttribute="centerY" id="dcP-g0-klB"/>
+                    <constraint firstItem="SlY-Bg-Yck" firstAttribute="width" secondItem="oC2-mJ-9Xm" secondAttribute="width" id="eOT-g9-2Qr"/>
+                    <constraint firstItem="a1d-Xa-Wvh" firstAttribute="leading" secondItem="eOQ-1j-Qzd" secondAttribute="leading" id="ehB-Wf-Xpb"/>
+                    <constraint firstItem="lBb-hZ-pZp" firstAttribute="leading" secondItem="odf-9k-s6l" secondAttribute="trailing" constant="8" id="eib-EX-Cdg"/>
+                    <constraint firstAttribute="trailing" secondItem="jmg-Ze-vQc" secondAttribute="trailing" constant="194" id="gfs-Pr-d7n"/>
+                    <constraint firstItem="eOQ-1j-Qzd" firstAttribute="leading" secondItem="se5-gp-TjO" secondAttribute="leading" constant="45" id="hJG-Ie-bKl"/>
+                    <constraint firstItem="jmg-Ze-vQc" firstAttribute="centerY" secondItem="R2M-Vr-m1T" secondAttribute="centerY" id="hVn-7t-UN1"/>
+                    <constraint firstItem="LYQ-eq-UPY" firstAttribute="top" secondItem="oC2-mJ-9Xm" secondAttribute="bottom" constant="27" id="hmP-tB-M9U"/>
+                    <constraint firstItem="8XW-t1-L4b" firstAttribute="centerY" secondItem="Q41-K7-sWd" secondAttribute="centerY" id="jQe-qT-WYe"/>
+                    <constraint firstItem="BL8-Ft-RyC" firstAttribute="top" secondItem="se5-gp-TjO" secondAttribute="top" constant="10" id="jg9-ky-YyC"/>
+                    <constraint firstItem="4zZ-gd-O3U" firstAttribute="width" secondItem="oC2-mJ-9Xm" secondAttribute="width" id="jls-jY-cbL"/>
+                    <constraint firstItem="4zZ-gd-O3U" firstAttribute="leading" secondItem="oC2-mJ-9Xm" secondAttribute="leading" id="lJj-jt-ZSJ"/>
+                    <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="oC2-mJ-9Xm" secondAttribute="trailing" id="mma-Nh-2Oo"/>
+                    <constraint firstItem="yzy-7k-keE" firstAttribute="leading" secondItem="eOQ-1j-Qzd" secondAttribute="trailing" id="obz-Vu-b2V"/>
+                    <constraint firstItem="oC2-mJ-9Xm" firstAttribute="leading" secondItem="lBb-hZ-pZp" secondAttribute="trailing" constant="7" id="ow5-Bx-Ixm"/>
+                    <constraint firstItem="ga5-nj-MMe" firstAttribute="centerX" secondItem="se5-gp-TjO" secondAttribute="centerX" id="pl8-W9-Bng"/>
+                    <constraint firstItem="oC2-mJ-9Xm" firstAttribute="centerY" secondItem="lBb-hZ-pZp" secondAttribute="centerY" id="q4U-OS-py2"/>
+                    <constraint firstItem="odf-9k-s6l" firstAttribute="top" secondItem="R2M-Vr-m1T" secondAttribute="bottom" constant="2" id="smE-Q3-tR0"/>
+                    <constraint firstItem="Q41-K7-sWd" firstAttribute="top" secondItem="a1d-Xa-Wvh" secondAttribute="bottom" constant="12" id="uhW-jS-dyy"/>
+                    <constraint firstItem="LYQ-eq-UPY" firstAttribute="height" secondItem="oC2-mJ-9Xm" secondAttribute="height" id="xc9-hA-SZj"/>
+                </constraints>
+            </view>
+            <connections>
+                <outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
+            </connections>
+            <point key="canvasLocation" x="131" y="147"/>
+        </window>
+    </objects>
+</document>

+ 3 - 1
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListView.h

@@ -140,7 +140,7 @@ typedef NS_ENUM(NSInteger, KMPDFViewSplitMode) {
 
 @protocol CPDFListViewDelegate;
 
-@class CStampSignatureObject,CPDFListStampAnnotation,CPDFListSignatureAnnotation;
+@class CStampSignatureObject,CPDFListStampAnnotation,CPDFListSignatureAnnotation, KMFormListMenuPopWindowController;
 
 @interface CPDFListView : CPDFView
 
@@ -196,6 +196,8 @@ typedef NS_ENUM(NSInteger, KMPDFViewSplitMode) {
 @property (nonatomic,assign) KMPDFViewMode viewMode;
 @property (nonatomic,assign) KMPDFViewSplitMode viewSplitMode;
 
+@property (nonatomic,strong) KMFormListMenuPopWindowController *listWindowController;
+
 - (CPDFAnnotation *)addAnnotationWithType:(CAnnotationType)annotationType selection:(CPDFSelection *)selection page:(CPDFPage *)page bounds:(NSRect)bounds;
 - (void)addAnnotationWithAnnotation:(CPDFAnnotation *)annotation toPage:(CPDFPage *)page;
 

+ 2 - 0
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListView.m

@@ -968,6 +968,8 @@ NSNotificationName const KMPDFViewTableAnnotationDidChangeNotification = @"KMPDF
         [[self window] makeFirstResponder:self];
         
         [self setNeedsDisplayAnnotation:annotation];
+    } else if ([annotation isKindOfClass:[CPDFButtonWidgetAnnotation class]] || [annotation isKindOfClass:[CPDFChoiceWidgetAnnotation class]]) {
+        [self editFormAnnotation:self.activeAnnotation];
     } else {
         if([self.pdfListViewDelegate respondsToSelector:@selector(PDFListViewEditAnnotation:forAnnotation:)]) {
             [self.pdfListViewDelegate PDFListViewEditAnnotation:self forAnnotation:annotation];

+ 2 - 1
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListViewExtension/CPDFListView+Event.m

@@ -2934,7 +2934,7 @@ static inline CPDFAreaOfInterest CAreaOfInterestForResizeHandle(CRectEdges mask,
                     }
                 } else {
                     if (annotation) {
-//                        [self showEditableFormAnnotationEditor:annotation];
+                        [self showEditableFormAnnotationEditor:annotation];
                     }
                     break;
                 }
@@ -2951,6 +2951,7 @@ static inline CPDFAreaOfInterest CAreaOfInterestForResizeHandle(CRectEdges mask,
                 defaultSize = ([page rotation] % 180 == 0) ? NSMakeSize(defaultSize.width, defaultSize.height) : NSMakeSize(defaultSize.height, defaultSize.width);
                 
                 annotation = [self addFormAnnotationWithType:self.annotationType selection:nil page:page bounds:SKRectFromCenterAndSize(NSMakePoint(round(pagePoint.x), round(pagePoint.y)), defaultSize)];
+                [self showEditableFormAnnotationEditor:annotation];
                 break;
             } else if ([theEvent type] == NSLeftMouseDragged){
                 if (self.activeAnnotation == nil) {

+ 69 - 1
PDF Office/PDF Master/Class/PDFWindowController/PDFListView/CPDFListViewExtension/CPDFListView+Form.swift

@@ -7,7 +7,6 @@
 
 import Foundation
 
-
 extension CPDFListView {
     
     // MARK: Edit
@@ -44,5 +43,74 @@ extension CPDFListView {
         
         return returnSize
     }
+    
+    // MARK: Swift & OC
+    
+    func objectiveCEditAnnotation(_ editAnnotation: CPDFAnnotation) -> Void {
+        self.edit(editAnnotation)
+    }
+    
+    // MARK: Show
+    
+    @objc func editFormAnnotation(_ editAnnotation: CPDFAnnotation) {
+        if !(editAnnotation is CPDFChoiceWidgetAnnotation) && !(editAnnotation is CPDFButtonWidgetAnnotation) {
+            objectiveCEditAnnotation(editAnnotation)
+            return
+        } else {
+            if let choiceWidget = editAnnotation as? CPDFChoiceWidgetAnnotation {
+                listWindowController = KMFormListMenuPopWindowController(choiceWidget: choiceWidget, isEdit: true)
+                
+                listWindowController.beginSheetModal(for: window!) { result in
+                    if result == 0 {
+                        self.remove(editAnnotation)
+                    } else {
+                        NotificationCenter.default.post(name: NSNotification.Name(rawValue: "SKPDFViewActiveAnnotationDidChangeNotification"), object: self)
+                    }
+                }
+            } else if let buttonWidget = editAnnotation as? CPDFButtonWidgetAnnotation {
+                let buttonWindowController = KMFormActionButtonPopWindowController(buttonWidget: buttonWidget, isEdit: true)
+                buttonWindowController.beginSheetModal(for: window!, completionHandler: nil)
+            }
+        }
+    }
+    
+    @objc func showEditableFormAnnotationEditor(_ editAnnotation: CPDFAnnotation?) {
+        guard let editAnnotation = editAnnotation else {
+            return
+        }
+        
+        if editAnnotation.isKind(of: CPDFTextWidgetAnnotation.self) {
+            return
+        }
+        
+        if editAnnotation.isKind(of: CPDFSignatureWidgetAnnotation.self) {
+            NotificationCenter.default.post(name: Notification.Name("KMSignatureListSelectNotification"), object: editAnnotation)
+            return
+        }
+
+        if !(editAnnotation.isKind(of: CPDFChoiceWidgetAnnotation.self)) && !(editAnnotation.isKind(of: CPDFButtonWidgetAnnotation.self)) {
+            objectiveCEditAnnotation(editAnnotation)
+            return
+        } else {
+            if editAnnotation.isKind(of: CPDFChoiceWidgetAnnotation.self) {
+                listWindowController = KMFormListMenuPopWindowController(choiceWidget: editAnnotation as! CPDFChoiceWidgetAnnotation, isEdit: false)
+                
+                listWindowController.beginSheetModal(for: window!) { result in
+                    if result == 0 {
+                        self.remove(editAnnotation)
+                    } else {
+                        NotificationCenter.default.post(name: NSNotification.Name(rawValue: "SKPDFViewActiveAnnotationDidChangeNotification"), object: self)
+                    }
+                }
+            } else if let buttonWidget = editAnnotation as? CPDFButtonWidgetAnnotation {
+                let buttonWindowController = KMFormActionButtonPopWindowController(buttonWidget: buttonWidget, isEdit: false)
+                buttonWindowController.beginSheetModal(for: window!) { result in
+                    if result == 0 {
+                        self.remove(editAnnotation)
+                    }
+                }
+            }
+        }
+    }
 
 }

+ 14 - 0
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/ViewController/FormProperties/KMAnnotationChoiceWidgeOptionsTextField.swift

@@ -0,0 +1,14 @@
+//
+//  KMAnnotationChoiceWidgeOptionsTextField.swift
+//  PDF Reader Pro
+//
+//  Created by wanjun on 2024/2/2.
+//
+
+import Cocoa
+
+class KMAnnotationChoiceWidgeOptionsTextField: NSTextField {
+    override func mouseDown(with event: NSEvent) {
+        NotificationCenter.default.post(name: NSNotification.Name(rawValue: "KMAnnotationChoiceWidgeOptionsTextField"), object: self)
+    }
+}

+ 1 - 1
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/ViewController/FormProperties/KMAnnotationChoiceWidgetAppearanceViewController.swift

@@ -405,7 +405,7 @@ private enum KMPDFAnnotationFontWeightType: Int {
         updateAnnotation()
     }
     
-    @IBAction func buttonClickedChangeFont(_ sender: Any) {
+    @IBAction func buttonClicked_ChangeFont(_ sender: Any) {
 //        guard let weakSelf = self else { return }
 
 //        let fontWindowController = KMAnnotationFontWindowController.sharedAnnotationFont()

+ 8 - 8
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/ViewController/FormProperties/KMAnnotationChoiceWidgetOptionsViewController.xib

@@ -46,7 +46,7 @@
                                             <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
                                         </textFieldCell>
                                     </textField>
-                                    <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="KOu-JO-ZmC" customClass="KMAnnotationChoiceWidgeOptionsTextField">
+                                    <textField focusRingType="none" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="KOu-JO-ZmC" customClass="KMAnnotationChoiceWidgeOptionsTextField" customModule="PDF_Reader_Pro" customModuleProvider="target">
                                         <rect key="frame" x="0.0" y="150" width="405" height="24"/>
                                         <constraints>
                                             <constraint firstAttribute="height" constant="24" id="BSu-eg-pXL"/>
@@ -72,7 +72,7 @@
                                         </connections>
                                     </button>
                                     <textField focusRingType="none" horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="25V-pe-fRU">
-                                        <rect key="frame" x="-2" y="93" width="69" height="37"/>
+                                        <rect key="frame" x="-2" y="90" width="69" height="40"/>
                                         <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" sendsActionOnEndEditing="YES" title="Project list" id="J9h-bh-1z5">
                                             <font key="font" metaFont="system"/>
                                             <color key="textColor" red="0.40000000000000002" green="0.40000000000000002" blue="0.40000000000000002" alpha="1" colorSpace="calibratedRGB"/>
@@ -80,13 +80,13 @@
                                         </textFieldCell>
                                     </textField>
                                     <scrollView autohidesScrollers="YES" horizontalLineScroll="24" horizontalPageScroll="10" verticalLineScroll="24" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Nm4-rt-SbW">
-                                        <rect key="frame" x="0.0" y="10" width="405" height="76"/>
+                                        <rect key="frame" x="0.0" y="10" width="405" height="73"/>
                                         <clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="uLy-rA-FGT">
-                                            <rect key="frame" x="1" y="1" width="403" height="74"/>
+                                            <rect key="frame" x="1" y="1" width="403" height="71"/>
                                             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                             <subviews>
                                                 <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" tableStyle="fullWidth" columnSelection="YES" multipleSelection="NO" autosaveColumns="NO" rowHeight="24" rowSizeStyle="systemDefault" viewBased="YES" id="Qb0-eB-HGc">
-                                                    <rect key="frame" x="0.0" y="0.0" width="403" height="74"/>
+                                                    <rect key="frame" x="0.0" y="0.0" width="403" height="71"/>
                                                     <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                                     <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
                                                     <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
@@ -103,7 +103,7 @@
                                                             </textFieldCell>
                                                             <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
                                                             <prototypeCellViews>
-                                                                <tableCellView id="ca8-QR-1Vg" customClass="KMChoiceWidgetTableViewCell">
+                                                                <tableCellView id="ca8-QR-1Vg" customClass="KMChoiceWidgetTableViewCell" customModule="PDF_Reader_Pro" customModuleProvider="target">
                                                                     <rect key="frame" x="0.0" y="0.0" width="403" height="42"/>
                                                                     <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                                                     <subviews>
@@ -149,7 +149,7 @@
                                         </scroller>
                                     </scrollView>
                                     <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="7H2-bR-KEa">
-                                        <rect key="frame" x="413" y="38" width="21" height="21"/>
+                                        <rect key="frame" x="413" y="36" width="21" height="21"/>
                                         <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="KMImageNameWidgetMoveupOptional" imagePosition="only" lineBreakMode="truncatingTail" state="on" borderStyle="border" inset="2" id="dWY-AB-ng2">
                                             <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                                             <font key="font" metaFont="system"/>
@@ -177,7 +177,7 @@
                                         </connections>
                                     </button>
                                     <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="V1U-zZ-24v">
-                                        <rect key="frame" x="413" y="65" width="21" height="21"/>
+                                        <rect key="frame" x="413" y="62" width="21" height="21"/>
                                         <buttonCell key="cell" type="square" bezelStyle="shadowlessSquare" image="KMImageNameUXWidgetZoomoutNor" imagePosition="only" lineBreakMode="truncatingTail" state="on" borderStyle="border" inset="2" id="UE2-Bv-oFj">
                                             <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
                                             <font key="font" metaFont="system"/>

+ 2 - 2
PDF Office/PDF Master/Class/PDFWindowController/Side/RightSide/AnnotationProperty/WindowController/KMAnnotationFontWindowController.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22154" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22505" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22154"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22505"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>

+ 40 - 0
PDF Office/PDF Reader Pro.xcodeproj/project.pbxproj

@@ -1065,6 +1065,21 @@
 		9FD0FA4E29D43D6800F2AB0D /* KMDeviceBrowserWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9FD0FA4A29D43D6800F2AB0D /* KMDeviceBrowserWindowController.xib */; };
 		9FD0FA4F29D43D6800F2AB0D /* KMDeviceBrowserWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9FD0FA4A29D43D6800F2AB0D /* KMDeviceBrowserWindowController.xib */; };
 		9FD0FA5029D43D6800F2AB0D /* KMDeviceBrowserWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9FD0FA4A29D43D6800F2AB0D /* KMDeviceBrowserWindowController.xib */; };
+		9FDCD80E2B6C904900E22166 /* KMFormListMenuPopWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FDCD80C2B6C904900E22166 /* KMFormListMenuPopWindowController.swift */; };
+		9FDCD80F2B6C904900E22166 /* KMFormListMenuPopWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FDCD80C2B6C904900E22166 /* KMFormListMenuPopWindowController.swift */; };
+		9FDCD8102B6C904900E22166 /* KMFormListMenuPopWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FDCD80C2B6C904900E22166 /* KMFormListMenuPopWindowController.swift */; };
+		9FDCD8112B6C904900E22166 /* KMFormListMenuPopWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9FDCD80D2B6C904900E22166 /* KMFormListMenuPopWindowController.xib */; };
+		9FDCD8122B6C904900E22166 /* KMFormListMenuPopWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9FDCD80D2B6C904900E22166 /* KMFormListMenuPopWindowController.xib */; };
+		9FDCD8132B6C904900E22166 /* KMFormListMenuPopWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9FDCD80D2B6C904900E22166 /* KMFormListMenuPopWindowController.xib */; };
+		9FDCD8162B6CC88000E22166 /* KMFormActionButtonPopWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FDCD8142B6CC88000E22166 /* KMFormActionButtonPopWindowController.swift */; };
+		9FDCD8172B6CC88000E22166 /* KMFormActionButtonPopWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FDCD8142B6CC88000E22166 /* KMFormActionButtonPopWindowController.swift */; };
+		9FDCD8182B6CC88000E22166 /* KMFormActionButtonPopWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FDCD8142B6CC88000E22166 /* KMFormActionButtonPopWindowController.swift */; };
+		9FDCD8192B6CC88000E22166 /* KMFormActionButtonPopWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9FDCD8152B6CC88000E22166 /* KMFormActionButtonPopWindowController.xib */; };
+		9FDCD81A2B6CC88000E22166 /* KMFormActionButtonPopWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9FDCD8152B6CC88000E22166 /* KMFormActionButtonPopWindowController.xib */; };
+		9FDCD81B2B6CC88000E22166 /* KMFormActionButtonPopWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 9FDCD8152B6CC88000E22166 /* KMFormActionButtonPopWindowController.xib */; };
+		9FDCD81D2B6CDEFE00E22166 /* KMAnnotationChoiceWidgeOptionsTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FDCD81C2B6CDEFE00E22166 /* KMAnnotationChoiceWidgeOptionsTextField.swift */; };
+		9FDCD81E2B6CDEFE00E22166 /* KMAnnotationChoiceWidgeOptionsTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FDCD81C2B6CDEFE00E22166 /* KMAnnotationChoiceWidgeOptionsTextField.swift */; };
+		9FDCD81F2B6CDEFE00E22166 /* KMAnnotationChoiceWidgeOptionsTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FDCD81C2B6CDEFE00E22166 /* KMAnnotationChoiceWidgeOptionsTextField.swift */; };
 		9FDD0F64294AB645000C4DAD /* KMMainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FDD0F62294AB645000C4DAD /* KMMainViewController.swift */; };
 		9FDD0F65294AB645000C4DAD /* KMMainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FDD0F62294AB645000C4DAD /* KMMainViewController.swift */; };
 		9FDD0F66294AB645000C4DAD /* KMMainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9FDD0F62294AB645000C4DAD /* KMMainViewController.swift */; };
@@ -5476,6 +5491,11 @@
 		9FD0FA3029CD947000F2AB0D /* KMOpacityPanel.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMOpacityPanel.xib; sourceTree = "<group>"; };
 		9FD0FA4929D43D6800F2AB0D /* KMDeviceBrowserWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMDeviceBrowserWindowController.swift; sourceTree = "<group>"; };
 		9FD0FA4A29D43D6800F2AB0D /* KMDeviceBrowserWindowController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMDeviceBrowserWindowController.xib; sourceTree = "<group>"; };
+		9FDCD80C2B6C904900E22166 /* KMFormListMenuPopWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMFormListMenuPopWindowController.swift; sourceTree = "<group>"; };
+		9FDCD80D2B6C904900E22166 /* KMFormListMenuPopWindowController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMFormListMenuPopWindowController.xib; sourceTree = "<group>"; };
+		9FDCD8142B6CC88000E22166 /* KMFormActionButtonPopWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMFormActionButtonPopWindowController.swift; sourceTree = "<group>"; };
+		9FDCD8152B6CC88000E22166 /* KMFormActionButtonPopWindowController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMFormActionButtonPopWindowController.xib; sourceTree = "<group>"; };
+		9FDCD81C2B6CDEFE00E22166 /* KMAnnotationChoiceWidgeOptionsTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMAnnotationChoiceWidgeOptionsTextField.swift; sourceTree = "<group>"; };
 		9FDD0F62294AB645000C4DAD /* KMMainViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KMMainViewController.swift; sourceTree = "<group>"; };
 		9FDD0F63294AB645000C4DAD /* KMMainViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KMMainViewController.xib; sourceTree = "<group>"; };
 		9FDD0F6A294AD12C000C4DAD /* KMMainViewController+UI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "KMMainViewController+UI.swift"; sourceTree = "<group>"; };
@@ -8057,6 +8077,7 @@
 				9F88109C2B5762BD00F69815 /* KMAnnotationButtonOptionsViewController.xib */,
 				9F5752E72B58FF73005DC303 /* KMAnnotationFromViewController.swift */,
 				9F5752E82B58FF73005DC303 /* KMAnnotationFromViewController.xib */,
+				9FDCD81C2B6CDEFE00E22166 /* KMAnnotationChoiceWidgeOptionsTextField.swift */,
 			);
 			path = FormProperties;
 			sourceTree = "<group>";
@@ -8164,6 +8185,10 @@
 				9FF0D0572B6A43750018A732 /* KMPDFAnnotationButtonWidgetSub.swift */,
 				9FF0D05B2B6A4C210018A732 /* KMPDFAnnotationChoiceWidgetSub.swift */,
 				9FF0D05F2B6A5DCF0018A732 /* KMPDFAnnotationTextWidgetSub.swift */,
+				9FDCD80C2B6C904900E22166 /* KMFormListMenuPopWindowController.swift */,
+				9FDCD80D2B6C904900E22166 /* KMFormListMenuPopWindowController.xib */,
+				9FDCD8142B6CC88000E22166 /* KMFormActionButtonPopWindowController.swift */,
+				9FDCD8152B6CC88000E22166 /* KMFormActionButtonPopWindowController.xib */,
 			);
 			path = Form;
 			sourceTree = "<group>";
@@ -13107,6 +13132,7 @@
 				AD85D1BD2AF0D2DD000F4D28 /* KMHomeQuickToolsCollectionView.xib in Resources */,
 				ADAFD9F72AE68A8500F084BC /* KMCreatPDFView.xib in Resources */,
 				89E4E77C2967B370002DBA6F /* KMDynamicStampViewController.xib in Resources */,
+				9FDCD8192B6CC88000E22166 /* KMFormActionButtonPopWindowController.xib in Resources */,
 				89316855296E45CA0073EA59 /* KMImageAccessoryController.xib in Resources */,
 				9FB220E22B10850400A5B208 /* KMAnnotationStampViewController.xib in Resources */,
 				ADAFDA6C2AEB470200F084BC /* KMQucikToolsView.xib in Resources */,
@@ -13385,6 +13411,7 @@
 				BBEC00DC295C39FD00A26C98 /* KMBatesPropertyInfoController.xib in Resources */,
 				BB6CA4CF298BB0D000A13864 /* KMPreferenceWindowController.xib in Resources */,
 				AD8810B529A846B100178CA1 /* KMVerficationCodeWindowController.xib in Resources */,
+				9FDCD8112B6C904900E22166 /* KMFormListMenuPopWindowController.xib in Resources */,
 				9FAAA32D290BD01D0046FFCE /* KMHomeHistoryFileViewController.xib in Resources */,
 				BBA19F3629ADACC5001A285A /* signPicture_nor.pdf in Resources */,
 				9F728FAB29926B4300F0C225 /* black_pdfreaderpro_home_en.pdf in Resources */,
@@ -13787,6 +13814,7 @@
 				BBA8B7B4293635D80097D183 /* KMPasswordInputWindow.xib in Resources */,
 				BBBAECF92B57672C00266BD3 /* TransitionSheet.xib in Resources */,
 				9F78EFBF28F7C1CC001E66F4 /* KMHomeViewController.xib in Resources */,
+				9FDCD8122B6C904900E22166 /* KMFormListMenuPopWindowController.xib in Resources */,
 				BBB376A52B10A7FD009539CC /* a_4b.png in Resources */,
 				BB0B2CD92B04AE560088FFD8 /* LeftSideView.xib in Resources */,
 				9F8810892B564E9700F69815 /* KMAnnotationButtonWidgetOptionsViewController.xib in Resources */,
@@ -14005,6 +14033,7 @@
 				BB6EA2A42B70B8F2000D4490 /* KMConvertComparePayViewController.xib in Resources */,
 				BBFE6E712930D9C600142C01 /* KMMergeSettingWindowController.xib in Resources */,
 				BBD9223E2B50D6D600DB9585 /* rate_pic_star.pdf in Resources */,
+				9FDCD81A2B6CC88000E22166 /* KMFormActionButtonPopWindowController.xib in Resources */,
 				BB6347B92AF224E200F5438E /* KMConvertCollectionViewHeader.xib in Resources */,
 				ADD1B6FD2946C0D400C3FFF7 /* KMPrintChoosePageSizePamphletView.xib in Resources */,
 				BB276A5D2B038D3A00AB5578 /* KMOCRPDFWindowController.xib in Resources */,
@@ -14117,6 +14146,7 @@
 				ADAFDA122AE8DD6600F084BC /* KMAdvertisementCollectionHeadView.xib in Resources */,
 				ADAFDA1E2AE8DD6600F084BC /* KMAdvertisementTableView.xib in Resources */,
 				ADAFDA0F2AE8DD6600F084BC /* KMAdvertisementCollectionViewItem.xib in Resources */,
+				9FDCD81B2B6CC88000E22166 /* KMFormActionButtonPopWindowController.xib in Resources */,
 				BBEC00D6295C33D600A26C98 /* KMCreateBatesController.xib in Resources */,
 				AD85D1BF2AF0D2DD000F4D28 /* KMHomeQuickToolsCollectionView.xib in Resources */,
 				ADAFD9F92AE68A8500F084BC /* KMCreatPDFView.xib in Resources */,
@@ -14395,6 +14425,7 @@
 				9F0CB49C29683E1000007028 /* KMPropertiesPanelTextSubVC.xib in Resources */,
 				AD3AAD182B0B5B2700DE5FE7 /* KMCompareContentWindowController.xib in Resources */,
 				BB49ED0B293F461500C82CA2 /* KMConvertCSVWindowController.xib in Resources */,
+				9FDCD8132B6C904900E22166 /* KMFormListMenuPopWindowController.xib in Resources */,
 				BB2E666429C885550000FEBC /* KMSignatureHelpViewController.xib in Resources */,
 				ADF1569929A62D31001D1018 /* KMLoginLeftImageView.xib in Resources */,
 				89752DEF293875FC003FF08E /* KMMainToolbarController.xib in Resources */,
@@ -15106,6 +15137,7 @@
 				BB146FC0299DC0D100784A6A /* GTMSessionFetcherLogging.m in Sources */,
 				AD1CA4212A061D190070541F /* KMAnnotationScreenAuthorViewItem.swift in Sources */,
 				BB2F9AB82AFCC3AD00F9DD93 /* KMProfileInfo.swift in Sources */,
+				9FDCD8162B6CC88000E22166 /* KMFormActionButtonPopWindowController.swift in Sources */,
 				BBC3481C295593F0008D2CD1 /* KMBackgroundListController.swift in Sources */,
 				ADFCEB752B4FC1660001EBAF /* KMAdsWebView.swift in Sources */,
 				9F5664872988B16F00020985 /* KMTextfieldVC.swift in Sources */,
@@ -15233,6 +15265,7 @@
 				BB8F457E295B00130037EA22 /* KMWatermarkAdjectiveTools.swift in Sources */,
 				BBA922322B4E97540061057A /* KMPurchaseLimitWindowController.swift in Sources */,
 				AD1D484E2AFB8506007AC1F0 /* KMMergeTableViewCell.swift in Sources */,
+				9FDCD81D2B6CDEFE00E22166 /* KMAnnotationChoiceWidgeOptionsTextField.swift in Sources */,
 				9FE0BBEB2B0F242C00CD1CAC /* NSUserDefaults_KMExtension.swift in Sources */,
 				AD02573A2A8601AA00EAD5D5 /* KMLoginManager.swift in Sources */,
 				BB332D532995D8B500CABB58 /* KMCloudDocumentTools.swift in Sources */,
@@ -15433,6 +15466,7 @@
 				9F1F82BC292E01860092C4B4 /* KMCloudEmptyCollectionViewItem.swift in Sources */,
 				BBAC26A12AFDF54F00563A08 /* KMConvertOperationQueue.swift in Sources */,
 				AD9527EA2955520C0039D2BC /* KMBaseTextFieldModel.swift in Sources */,
+				9FDCD80E2B6C904900E22166 /* KMFormListMenuPopWindowController.swift in Sources */,
 				BB146FEA299DC0D100784A6A /* GTLRDuration.m in Sources */,
 				BB146FFC299DC0D100784A6A /* OIDAuthState+Mac.m in Sources */,
 				BB1B0AD72B4FC6E900889528 /* KMOpenFileGuideProperty.swift in Sources */,
@@ -15929,6 +15963,7 @@
 				AD3AAD6E2B0DCC6800DE5FE7 /* KMCompareSaveWindow.swift in Sources */,
 				89752DF72938A236003FF08E /* PublicKey.swift in Sources */,
 				9F1FE4D329406E4700E952CA /* CTTabView.m in Sources */,
+				9FDCD80F2B6C904900E22166 /* KMFormListMenuPopWindowController.swift in Sources */,
 				BB31981B2AC567B600107371 /* CPDFSelection+PDFListView.swift in Sources */,
 				BB1BFF872AEA30B1003EB179 /* NSWindow+PopOver.swift in Sources */,
 				9FDD0F65294AB645000C4DAD /* KMMainViewController.swift in Sources */,
@@ -16370,6 +16405,7 @@
 				9F02017F2A1BAC1600C9B673 /* KMAIRewritingVC.swift in Sources */,
 				9FDD0F78294FEF64000C4DAD /* KMConvertPDFManager.swift in Sources */,
 				BBBB6CD72AD150D20035AA66 /* CPDFCircleAnnotation+PDFListView.swift in Sources */,
+				9FDCD81E2B6CDEFE00E22166 /* KMAnnotationChoiceWidgeOptionsTextField.swift in Sources */,
 				8942F80429262B2E00389627 /* KMSideViewController.swift in Sources */,
 				BB1D41D42B26D9BD00994EDC /* KMReusable.swift in Sources */,
 				9F0CB51E2986569B00007028 /* KMDesignToken+BorderRadiusBottomRight.swift in Sources */,
@@ -16719,6 +16755,7 @@
 				ADE8BC3029F8CD7200570F89 /* KMPDFThumbnailModel.swift in Sources */,
 				BB90E4EF2AF3546500B04B9F /* NSUserDefaultsController+KMExtension.swift in Sources */,
 				ADDEEA7F2AD3FB1D00EF675D /* KMImageAccessoryController.swift in Sources */,
+				9FDCD8172B6CC88000E22166 /* KMFormActionButtonPopWindowController.swift in Sources */,
 				BBA922232B4E7D340061057A /* HyperLinkButton.swift in Sources */,
 				BBA922332B4E97540061057A /* KMPurchaseLimitWindowController.swift in Sources */,
 				BBC8A76E2B05EDDF00FA9377 /* KMThumbnail.swift in Sources */,
@@ -17374,6 +17411,7 @@
 				9FDD0F822952FC36000C4DAD /* KMDesignToken.swift in Sources */,
 				BB1BFF6B2AEA02F8003EB179 /* KMBatchOperateSplitViewController.swift in Sources */,
 				BB4F7E8F2B0C7FE70077EC8C /* KMNoteColorCollectionViewItem.swift in Sources */,
+				9FDCD8102B6C904900E22166 /* KMFormListMenuPopWindowController.swift in Sources */,
 				ADDF83672B391A5C00A81A4E /* DSignatureFromFileViewController.swift in Sources */,
 				BB7648EE29ECEEF400931039 /* KMAppearance.swift in Sources */,
 				BB4A94932B04926700940F8B /* KMGOCROperation.swift in Sources */,
@@ -17490,6 +17528,7 @@
 				BB6B436D2A04935000E02B54 /* KMPDFThumbViewBaseController.swift in Sources */,
 				BB1E7F322B511079002D9785 /* SKInspectPublicTool.swift in Sources */,
 				ADDF83282B391A5C00A81A4E /* CPDFDigtalView.m in Sources */,
+				9FDCD81F2B6CDEFE00E22166 /* KMAnnotationChoiceWidgeOptionsTextField.swift in Sources */,
 				BBB9B330299A5D6D004F3235 /* GTMAppAuthFetcherAuthorization.m in Sources */,
 				BB146FBC299DC0D100784A6A /* GTLRBase64.m in Sources */,
 				F34BF928295303E8002C25A2 /* NSCursor+PDFListView.m in Sources */,
@@ -17549,6 +17588,7 @@
 				BB1A916C2AFB7868005E5FD8 /* KMConvertWindowController.swift in Sources */,
 				9FCFEC7E2AC579F600EAD2CB /* CPDFListSignatureAnnotation.swift in Sources */,
 				BB8115FD29924A5F0008F536 /* KMSecureEncryptCheckCellView.swift in Sources */,
+				9FDCD8182B6CC88000E22166 /* KMFormActionButtonPopWindowController.swift in Sources */,
 				9F78EFBD28F7C1CC001E66F4 /* KMHomeViewController.swift in Sources */,
 				BB1B0AEE2B4FC6E900889528 /* KMGuideCoverView.swift in Sources */,
 				9FCFEC9A2AD14EEF00EAD2CB /* KMMailHelper.swift in Sources */,