Browse Source

PDFForm(Windows)-选中切换与右键菜单

zhuyi 1 year ago
parent
commit
76568a4f23

+ 23 - 1
compdfkit_demo_windows/compdfkit/compdfkit-tools/Form/FormBarControl.xaml.cs

@@ -52,6 +52,8 @@ namespace compdfkit_tools.Form
 
         private CPDFViewer pdfViewer;
 
+        private FromPropertyControl fromPropertyControl = null;
+
         #endregion
 
         #region Create Default UI
@@ -167,9 +169,28 @@ namespace compdfkit_tools.Form
 
         #region Even Process
 
-        public void SetPDFViewer(CPDFViewer pdfViewer)
+        public void SetPDFViewer(CPDFViewer pdfViewer, FromPropertyControl FromProperty)
         {
             this.pdfViewer = pdfViewer;
+            fromPropertyControl = FromProperty;
+        }
+
+        public void CheckedButtonForName(string name)
+        {
+            foreach (UIElement child in FormGrid.Children)
+            {
+                if (child is ToggleButton toggle)
+                {
+                    if (toggle.Tag.ToString() == name)
+                    {
+                        toggle.IsChecked = true;
+                    }
+                    else
+                    {
+                        toggle.IsChecked = false;
+                    }
+                }
+            }
         }
 
         public void ClearAllToolState()
@@ -197,6 +218,7 @@ namespace compdfkit_tools.Form
         private void FormBtn_Click(object sender, RoutedEventArgs e)
         {
             ClearToolState(sender as ToggleButton);
+            fromPropertyControl.SetPropertyForType(null, null);
             if ((bool)(sender as ToggleButton).IsChecked)
             {
                 switch (StringToType((sender as ToggleButton).Tag.ToString()))

+ 5 - 0
compdfkit_demo_windows/compdfkit/compdfkit-tools/Form/FromPropertyControl.xaml.cs

@@ -38,6 +38,11 @@ namespace compdfkit_tools.Form
         public void SetPropertyForType(WidgetArgs Args, AnnotAttribEvent e) 
         {
             currentPanel = null;
+            if (Args==null||e==null)
+            {
+                SetAnnotationPanel(currentPanel);
+                return;
+            }
             switch (Args.WidgeType)
             {
                 case ComPDFKit.PDFAnnotation.Form.C_WIDGET_TYPE.WIDGET_PUSHBUTTON:

+ 4 - 2
compdfkit_demo_windows/compdfkit/compdfkit-tools/Form/Property/TextFieldProperty.xaml

@@ -5,7 +5,9 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
              xmlns:local="clr-namespace:compdfkit_tools.Form.Property" xmlns:cpdfcommon="clr-namespace:compdfkit_tools.Common"
              mc:Ignorable="d"
-             Loaded="UserControl_Loaded">
+             Loaded="UserControl_Loaded"
+             Unloaded="UserControl_Unloaded"
+             >
     <UserControl.Resources>
         <ResourceDictionary>
             <ResourceDictionary.MergedDictionaries>
@@ -36,7 +38,7 @@
                     <StackPanel Grid.Column="1">
                         <StackPanel  >
                             <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Text" FontSize="14" FontFamily="Segoe UI" FontWeight="Bold"/>
-                            <TextBox x:Name="FieldNameText" Margin="0,8,0,0"/>
+                            <TextBox x:Name="FieldNameText" Margin="0,8,0,0" TextChanged="FieldNameText_TextChanged"/>
                         </StackPanel>
                         <StackPanel >
                             <TextBlock Margin="0,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Text="Form Field" FontSize="14" FontFamily="Segoe UI" FontWeight="Bold"/>

+ 22 - 4
compdfkit_demo_windows/compdfkit/compdfkit-tools/Form/Property/TextFieldProperty.xaml.cs

@@ -40,15 +40,19 @@ namespace compdfkit_tools.Form.Property
         private WidgetTextBoxArgs widgetArgs = null;
         private AnnotAttribEvent annotAttribEvent = null;
         public ObservableCollection<int> SizeList { get; set; } = new ObservableCollection<int>
-        {                 
+        {
             6,8,9,10,12,14,18,20,24,26,28,32,30,32,48,72
         };
 
+        bool IsLoadedData = false;
 
         public TextFieldProperty()
         {
             InitializeComponent();
         }
+
+        #region Loaded
+
         public void SetProperty(WidgetArgs Args, AnnotAttribEvent e)
         {
             widgetArgs = (WidgetTextBoxArgs)Args;
@@ -62,7 +66,6 @@ namespace compdfkit_tools.Form.Property
             SizeListbinding.Path = new System.Windows.PropertyPath("SizeList");
             FontSizeCombox.SetBinding(ComboBox.ItemsSourceProperty, SizeListbinding);
 
-
             FieldNameText.Text = widgetArgs.FieldName;
             FormFieldCombox.SelectedIndex = (int)widgetArgs.FormField;
             SetColor(BorderColorPickerControl, widgetArgs.LineColor);
@@ -72,9 +75,9 @@ namespace compdfkit_tools.Form.Property
             SetFontStyle(widgetArgs.IsItalic, widgetArgs.IsBold);
             SetFontSize(widgetArgs.FontSize);
             TextAlignmentCombox.SelectedIndex = (int)widgetArgs.Alignment;
-            DefaultText.Text=widgetArgs.Text;
+            DefaultText.Text = widgetArgs.Text;
             chkMutiline.IsChecked = widgetArgs.IsMultiLine;
-
+            IsLoadedData = true;
         }
 
         private void SetFontSize(double size)
@@ -134,5 +137,20 @@ namespace compdfkit_tools.Form.Property
                 Control.SetIsChecked(index);
             }
         }
+
+        #endregion
+        private void FieldNameText_TextChanged(object sender, TextChangedEventArgs e)
+        {
+            if (IsLoadedData)
+            {
+                annotAttribEvent.UpdateAttrib(AnnotAttrib.FieldName, (sender as TextBox).Text);
+                annotAttribEvent.UpdateAnnot();
+            }
+        }
+
+        private void UserControl_Unloaded(object sender, RoutedEventArgs e)
+        {
+            IsLoadedData = false;
+        }
     }
 }

+ 13 - 3
compdfkit_demo_windows/compdfkit/form-ctrl-demo/MainWindow.xaml.cs

@@ -150,11 +150,22 @@ namespace form_ctrl_demo
                         e.PopupMenu.Items.Add(imageExtraMenu);
                     }
                 }
+                else if (e.CommandTarget == TargetType.WidgetView)
+                {
+                    e.Handle = true;
+                    e.PopupMenu = new ContextMenu();
+                    e.PopupMenu.Items.Add(new MenuItem() { Header = "Copy", Command = ApplicationCommands.Copy, CommandTarget = (UIElement)sender });
+                    e.PopupMenu.Items.Add(new MenuItem() { Header = "Cut", Command = ApplicationCommands.Cut, CommandTarget = (UIElement)sender });
+                    e.PopupMenu.Items.Add(new MenuItem() { Header = "Delete", Command = ApplicationCommands.Delete, CommandTarget = (UIElement)sender });
+                }
                 else
                 {
                     e.Handle = true;
                     e.PopupMenu = new ContextMenu();
 
+                    e.PopupMenu.Items.Add(new MenuItem() { Header = "Paste", Command = ApplicationCommands.Paste, CommandTarget = (UIElement)sender });
+                    e.PopupMenu.Items.Add(new Separator());
+
                     MenuItem fitWidthMenu = new MenuItem();
                     fitWidthMenu.Header = "Fit Width";
                     fitWidthMenu.Click += (o, p) =>
@@ -254,8 +265,7 @@ namespace form_ctrl_demo
                     e.PopupMenu.Items.Add(doubleContinuousView);
                 }
             }
-
-            if (e != null && e.CommandType == CommandType.Copy)
+            else
             {
                 e.DoCommand();
             }
@@ -793,7 +803,7 @@ namespace form_ctrl_demo
 
         public void InitialPDFViewControl(PDFViewControl newPDFViewer)
         {
-            PDFFormTool.SetPDFViewer(newPDFViewer.PDFView);
+            PDFFormTool.SetPDFViewer(newPDFViewer.PDFView, fromPropertyControl);
             fromPropertyControl.SetPDFViewer(newPDFViewer.PDFView);
             PDFFormTool.ClearAllToolState();
             newPDFViewer.PDFView.AnnotEditHandler += PDFView_AnnotEditHandler;