Procházet zdrojové kódy

综合-右键菜单与Undo Redo的部分UI绑定

zhuyi před 1 rokem
rodič
revize
3012a8acbe

+ 14 - 4
Demo/Examples/Compdfkit_Tools/Annotation/AnnotationControl/AnnotationControl.xaml.cs

@@ -191,8 +191,8 @@ namespace Compdfkit_Tools.PDFControl
             PDFAnnotationControl.ClearAnnotationBar += PdfAnnotationControl_ClearAnnotationBar;
             //PDFViewControl.PDFView.AnnotEditHandler -= PDFView_AnnotEditHandler;
             //PDFViewControl.PDFView.AnnotEditHandler += PDFView_AnnotEditHandler;
-            //PDFViewControl.PDFView.UndoManager.PropertyChanged -= UndoManager_PropertyChanged;
-            //PDFViewControl.PDFView.UndoManager.PropertyChanged += UndoManager_PropertyChanged;
+            PDFViewControl.PDFViewTool.GetCPDFViewer().UndoManager.PropertyChanged -= UndoManager_PropertyChanged;
+            PDFViewControl.PDFViewTool.GetCPDFViewer().UndoManager.PropertyChanged += UndoManager_PropertyChanged;
             //PDFViewControl.PDFView.AnnotActiveHandler -= PDFView_AnnotActiveHandler;
             //PDFViewControl.PDFView.AnnotActiveHandler += PDFView_AnnotActiveHandler;
 
@@ -215,12 +215,19 @@ namespace Compdfkit_Tools.PDFControl
                 case MouseHitTestType.kSelectRect:
                     CreateAnnotContextMenu(sender, ref ContextMenu, e.annotType);
                     break;
+                case MouseHitTestType.kText:
+                    CreateSelectTextContextMenu(sender, ref ContextMenu);
+                    break;
                 default:
-                    ContextMenu=null;
+                    ContextMenu.Items.Add(new MenuItem() { Header = "Paste", Command = ApplicationCommands.Paste, CommandTarget = (UIElement)sender });
                     break;
             }
             PDFViewControl.SetRightMenu(ContextMenu);
+        }
 
+        private void CreateSelectTextContextMenu(object sender, ref ContextMenu menu)
+        {
+            menu.Items.Add(new MenuItem() { Header = "Copy", Command = ApplicationCommands.Copy, CommandTarget = (UIElement)sender });
         }
 
         private void CreateAnnotContextMenu(object sender, ref ContextMenu menu, C_ANNOTATION_TYPE annotType)
@@ -232,7 +239,8 @@ namespace Compdfkit_Tools.PDFControl
                 default:
                     menu.Items.Add(new MenuItem() { Header = "Delete", Command = ApplicationCommands.Delete, CommandTarget = (UIElement)sender });
                     menu.Items.Add(new MenuItem() { Header = "Copy", Command = ApplicationCommands.Copy, CommandTarget = (UIElement)sender });
-                    menu.Items.Add(new MenuItem() { Header = "Cut", Command = ApplicationCommands.Cut, CommandTarget = (UIElement)sender });
+                    //menu.Items.Add(new MenuItem() { Header = "Cut", Command = ApplicationCommands.Cut, CommandTarget = (UIElement)sender });
+                    menu.Items.Add(new MenuItem() { Header = "Paste", Command = ApplicationCommands.Paste, CommandTarget = (UIElement)sender });
                     break;
             }
         }
@@ -674,6 +682,7 @@ namespace Compdfkit_Tools.PDFControl
             if (PDFViewControl != null && PDFViewControl.PDFViewTool.GetCPDFViewer() != null)
             {
                 PDFViewControl.PDFViewTool.GetCPDFViewer().UndoManager?.Undo();
+                PDFViewControl.PDFViewTool.GetCPDFViewer().UpDateAnnotFrame();
             }
         }
 
@@ -682,6 +691,7 @@ namespace Compdfkit_Tools.PDFControl
             if (PDFViewControl != null && PDFViewControl.PDFViewTool.GetCPDFViewer() != null)
             {
                 PDFViewControl.PDFViewTool.GetCPDFViewer().UndoManager?.Redo();
+                PDFViewControl.PDFViewTool.GetCPDFViewer().UpDateAnnotFrame();
             }
         }
 

+ 21 - 25
Demo/Examples/Compdfkit_Tools/Edit/ContentEditCOntrol/ContentEditControl.xaml.cs

@@ -23,6 +23,7 @@ using System.Windows.Media;
 using static ComPDFKit.Tool.CPDFToolManager;
 using System.Windows.Media.Imaging;
 using ComPDFKit.Tool.Help;
+using ComPDFKit.Tool.UndoManger;
 
 namespace Compdfkit_Tools.PDFControl
 {
@@ -57,11 +58,11 @@ namespace Compdfkit_Tools.PDFControl
                         return pdfViewer.UndoManager.CanUndo;
                     }
                 }
-                catch(Exception ex)
+                catch (Exception ex)
                 {
 
                 }
-                
+
                 return false;
             }
         }
@@ -121,7 +122,7 @@ namespace Compdfkit_Tools.PDFControl
             panelState.PropertyChanged -= PanelState_PropertyChanged;
             panelState.PropertyChanged += PanelState_PropertyChanged;
         }
-        
+
         private void PanelState_PropertyChanged(object sender, PropertyChangedEventArgs e)
         {
             if (e.PropertyName == nameof(PanelState.IsLeftPanelExpand))
@@ -165,7 +166,7 @@ namespace Compdfkit_Tools.PDFControl
             PdfViewControl.PDFViewTool.GetCPDFViewer().SetIsVisibleCustomMouse(false);
             PdfViewControl.PDFViewTool.GetCPDFViewer().SetIsShowStampMouse(false);
         }
-         
+
         private void PDFTextEditButton_Click(object sender, RoutedEventArgs e)
         {
             ToggleButton senderBtn = sender as ToggleButton;
@@ -338,14 +339,14 @@ namespace Compdfkit_Tools.PDFControl
 
         private void UserControl_Loaded(object sender, RoutedEventArgs e)
         {
-          
+
         }
 
         private void UserControl_UnLoaded(object sender, RoutedEventArgs e)
         {
-          
+
         }
-         
+
         public void ExpandRightPropertyPanel(UIElement propertytPanel, Visibility visible)
         {
             PropertyContainer.Width = 260;
@@ -379,9 +380,10 @@ namespace Compdfkit_Tools.PDFControl
             }
             switch (e.hitTestType)
             {
-                case MouseHitTestType.kAnnot:
-                case MouseHitTestType.kSelectRect:
-                    CreateAnnotContextMenu(sender, ref ContextMenu, e.annotType); 
+                case MouseHitTestType.kTextEdit:
+                    CreateEditTextMenu(sender, ref ContextMenu);
+                    break;
+                case MouseHitTestType.kImageEdit:
                     break;
                 default:
                     ContextMenu = null;
@@ -389,18 +391,12 @@ namespace Compdfkit_Tools.PDFControl
             }
             PdfViewControl.SetRightMenu(ContextMenu);
         }
-        private void CreateAnnotContextMenu(object sender, ref ContextMenu menu, C_ANNOTATION_TYPE annotType)
+        private void CreateEditTextMenu(object sender, ref ContextMenu menu)
         {
-            switch (annotType)
-            {
-                case C_ANNOTATION_TYPE.C_ANNOTATION_WIDGET:
-                    break;
-                default:
-                    menu.Items.Add(new MenuItem() { Header = "Delete", Command = ApplicationCommands.Delete, CommandTarget = (UIElement)sender });
-                    menu.Items.Add(new MenuItem() { Header = "Copy", Command = ApplicationCommands.Copy, CommandTarget = (UIElement)sender });
-                    menu.Items.Add(new MenuItem() { Header = "Cut", Command = ApplicationCommands.Cut, CommandTarget = (UIElement)sender });
-                    break;
-            }
+            menu.Items.Add(new MenuItem() { Header = "Delete", Command = ApplicationCommands.Delete, CommandTarget = (UIElement)sender });
+            menu.Items.Add(new MenuItem() { Header = "Copy", Command = ApplicationCommands.Copy, CommandTarget = (UIElement)sender });
+            menu.Items.Add(new MenuItem() { Header = "Cut", Command = ApplicationCommands.Cut, CommandTarget = (UIElement)sender });
+            menu.Items.Add(new MenuItem() { Header = "Paste", Command = ApplicationCommands.Paste, CommandTarget = (UIElement)sender });
         }
         private void PDFToolManager_MouseLeftButtonUpHandler(object sender, MouseEventObject e)
         {
@@ -437,7 +433,7 @@ namespace Compdfkit_Tools.PDFControl
 
             int PageIndex = -1;
             CPDFEditArea editAreaArea = PdfViewControl.PDFToolManager.GetSelectedEditAreaObject(ref PageIndex);
-            if (editAreaArea==null)
+            if (editAreaArea == null)
             {
                 return;
             }
@@ -478,7 +474,7 @@ namespace Compdfkit_Tools.PDFControl
         /// </summary>
         private void PDFView_PDFEditActiveHandler(object sender, PDFEditParam e)
         {
-            lastPDFEditEvent = e; 
+            lastPDFEditEvent = e;
 
             if (e == null)
             {
@@ -533,7 +529,7 @@ namespace Compdfkit_Tools.PDFControl
                 pdfContentEditControl.SetPDFImageEditData((ImageEditParam)lastPDFEditEvent);
             }
         }
-        
+
         public void ClearViewerControl()
         {
             PDFGrid.Child = null;
@@ -541,7 +537,7 @@ namespace Compdfkit_Tools.PDFControl
             PropertyContainer.Child = null;
             displaySettingsControl = null;
         }
-        
+
         #region Property changed
         protected void OnPropertyChanged([CallerMemberName] string name = null)
         {

+ 4 - 1
Demo/Examples/Compdfkit_Tools/Form/FormControl/FormControl.xaml.cs

@@ -213,6 +213,7 @@ namespace Compdfkit_Tools.PDFControl
             if (PdfViewControl != null && PdfViewControl.PDFViewTool != null)
             {
                 PdfViewControl.PDFViewTool.GetCPDFViewer().UndoManager?.Undo();
+                PdfViewControl.PDFViewTool.GetCPDFViewer().UpDateAnnotFrame();
             }
         }
 
@@ -221,6 +222,7 @@ namespace Compdfkit_Tools.PDFControl
             if (PdfViewControl != null && PdfViewControl.PDFViewTool != null)
             {
                 PdfViewControl.PDFViewTool.GetCPDFViewer().UndoManager?.Redo();
+                PdfViewControl.PDFViewTool.GetCPDFViewer().UpDateAnnotFrame();
             }
         }
 
@@ -346,7 +348,7 @@ namespace Compdfkit_Tools.PDFControl
                     CreateFormContextMenu(sender, ref ContextMenu, e.annotType);
                     break;
                 default:
-                    ContextMenu = null;
+                    ContextMenu.Items.Add(new MenuItem() { Header = "Paste", Command = ApplicationCommands.Paste, CommandTarget = (UIElement)sender });
                     break;
             }
             PdfViewControl.SetRightMenu(ContextMenu);
@@ -359,6 +361,7 @@ namespace Compdfkit_Tools.PDFControl
                     menu.Items.Add(new MenuItem() { Header = "Delete", Command = ApplicationCommands.Delete, CommandTarget = (UIElement)sender });
                     menu.Items.Add(new MenuItem() { Header = "Copy", Command = ApplicationCommands.Copy, CommandTarget = (UIElement)sender });
                     menu.Items.Add(new MenuItem() { Header = "Cut", Command = ApplicationCommands.Cut, CommandTarget = (UIElement)sender });
+                    menu.Items.Add(new MenuItem() { Header = "Paste", Command = ApplicationCommands.Paste, CommandTarget = (UIElement)sender });
                     break;
                 default:
                     break;

+ 43 - 12
Demo/Examples/Compdfkit_Tools/PDFView/RegularViewerControl.xaml.cs

@@ -10,6 +10,8 @@ using Compdfkit_Tools.PDFControl;
 using ComPDFKit.DigitalSign;
 using ComPDFKit.PDFAnnotation.Form;
 using ComPDFKitViewer;
+using ComPDFKit.Tool;
+using ComPDFKit.PDFAnnotation;
 
 namespace Compdfkit_Tools.PDFView
 {
@@ -40,14 +42,14 @@ namespace Compdfkit_Tools.PDFView
                 return false;
             }
         }
-        
+
         public RegularViewerControl()
         {
             InitializeComponent();
             panelState.PropertyChanged -= PanelState_PropertyChanged;
             panelState.PropertyChanged += PanelState_PropertyChanged;
         }
-        
+
         private void PanelState_PropertyChanged(object sender, PropertyChangedEventArgs e)
         {
             if (e.PropertyName == nameof(PanelState.IsLeftPanelExpand))
@@ -71,7 +73,7 @@ namespace Compdfkit_Tools.PDFView
                 }
             }
         }
-        
+
         public void ExpandLeftPanel(bool isExpand)
         {
             BotaContainer.Visibility = isExpand ? Visibility.Visible : Visibility.Collapsed;
@@ -87,26 +89,55 @@ namespace Compdfkit_Tools.PDFView
                 BodyGrid.ColumnDefinitions[1].Width = new GridLength(0);
             }
         }
-        
+
         public void ExpandRightPropertyPanel(UIElement propertytPanel, Visibility visible)
         {
             PropertyContainer.Width = 260;
             PropertyContainer.Child = propertytPanel;
             PropertyContainer.Visibility = visible;
         }
-        
+
         #region Init PDFViewer
 
         private void InitialControl()
         {
             PdfViewControl.SetToolType(ComPDFKit.Tool.CPDFToolManager.ToolType.Pan);
             //PdfViewControl.PDFView?.SetShowLink(true);
-            PDFGrid.Child = PdfViewControl; 
+            PDFGrid.Child = PdfViewControl;
             PdfViewControl.PDFViewTool.GetCPDFViewer().UndoManager.PropertyChanged -= UndoManager_PropertyChanged;
             PdfViewControl.PDFViewTool.GetCPDFViewer().UndoManager.PropertyChanged += UndoManager_PropertyChanged;
+            PdfViewControl.MouseRightButtonDownHandler -= PdfViewControl_MouseRightButtonDownHandler;
+            PdfViewControl.MouseRightButtonDownHandler += PdfViewControl_MouseRightButtonDownHandler;
             //PdfViewControl.PDFView.SetFormFieldHighlight(true);
         }
 
+        private void PdfViewControl_MouseRightButtonDownHandler(object sender, ComPDFKit.Tool.MouseEventObject e)
+        {
+            ContextMenu ContextMenu = PdfViewControl.GetRightMenu();
+            if (ContextMenu == null)
+            {
+                ContextMenu = new ContextMenu();
+            }
+            switch (e.hitTestType)
+            {
+                case MouseHitTestType.kAnnot:
+                case MouseHitTestType.kSelectRect:
+                    break;
+                case MouseHitTestType.kText:
+                    CreateSelectTextContextMenu(sender, ref ContextMenu);
+                    break;
+                default:
+                    ContextMenu = null;
+                    break;
+            }
+            PdfViewControl.SetRightMenu(ContextMenu);
+        }
+
+        private void CreateSelectTextContextMenu(object sender, ref ContextMenu menu)
+        {
+            menu.Items.Add(new MenuItem() { Header = "Copy", Command = ApplicationCommands.Copy, CommandTarget = (UIElement)sender });
+        }
+
         public void InitWithPDFViewer(PDFViewControl pdfViewer)
         {
             PdfViewControl = pdfViewer;
@@ -114,7 +145,7 @@ namespace Compdfkit_Tools.PDFView
             FloatPageTool.InitWithPDFViewer(pdfViewer);
             InitialControl();
             DataContext = this;
-            if(PdfViewControl!=null && PdfViewControl.PDFViewTool.GetCPDFViewer()!=null)
+            if (PdfViewControl != null && PdfViewControl.PDFViewTool.GetCPDFViewer() != null)
             {
                 //PdfViewControl.PDFView.AnnotCommandHandler -= PDFView_AnnotCommandHandler;
                 //PdfViewControl.PDFView.AnnotCommandHandler += PDFView_AnnotCommandHandler;
@@ -136,7 +167,7 @@ namespace Compdfkit_Tools.PDFView
         //                return;
         //            }
         //        }
-                
+
         //        if (args.WidgetType == C_WIDGET_TYPE.WIDGET_SIGNATUREFIELDS)
         //        {
         //            panelState.RightPanel = PanelState.RightPanelState.PropertyPanel;
@@ -146,7 +177,7 @@ namespace Compdfkit_Tools.PDFView
         //        }
         //    }
         //}
-        
+
         public void CancelWidgetClickHandler()
         {
             //if (PdfViewControl != null && PdfViewControl.PDFView != null)
@@ -159,12 +190,12 @@ namespace Compdfkit_Tools.PDFView
         {
             this.BotaContainer.Child = botaControl;
         }
-        
+
         public void SetDisplaySettingsControl(CPDFDisplaySettingsControl displaySettingsControl)
         {
             this.displaySettingsControl = displaySettingsControl;
         }
-        
+
         public void SetSignatureStatusBarControl(SignatureStatusBarControl signatureStatusBarControl)
         {
             this.signatureStatusBarControl = signatureStatusBarControl;
@@ -210,7 +241,7 @@ namespace Compdfkit_Tools.PDFView
         }
 
         #endregion
-        
+
         #region Context Menu
 
         private void ExtraImage_Click(object sender, RoutedEventArgs e)