Browse Source

链接-选中文本,点击链接工具

OYXH\oyxh 1 year ago
parent
commit
f15abb9c9b

+ 68 - 20
PDF Office/ViewModels/PropertyPanel/AnnotPanel/LinkAnnotPropertyViewModel.cs

@@ -516,7 +516,9 @@ namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
 
         public DelegateCommand<object> LoadedCommand { get; set; }
         public DelegateCommand<object> PageNumTextLostFocusCommand { get; set; }
+        public DelegateCommand<object> PageNumTextGotFocusCommand { get; set; }
 
+        
         public DelegateCommand<object> PageNumTextKeyDownCommand { get; set; }
 
         public DelegateCommand<object> PageMailTextLostFocusCommand { get; set; }
@@ -542,6 +544,7 @@ namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
 
             LoadedCommand = new DelegateCommand<object>(Loaded);
             PageNumTextLostFocusCommand = new DelegateCommand<object>(PageNumTextLostFocus);
+            //PageNumTextGotFocusCommand = new DelegateCommand<object>(PageNumTextGotFocus);
             PageNumTextKeyDownCommand = new DelegateCommand<object>(PageNumTextKeyDown);
             PageMailTextLostFocusCommand = new DelegateCommand<object>(PageMailTextLostFocus);
             PageMailTextKeyDownCommand = new DelegateCommand<object>(PageMailTextKeyDown);
@@ -555,6 +558,8 @@ namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
             InitString();
         }
 
+        
+
         private void PageWebTextKeyDown(object obj)
         {
             if (obj is KeyEventArgs keyEventArgs)
@@ -625,7 +630,15 @@ namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
                 }
             }
         }
-
+        /// <summary>
+        /// 页码文本框获取焦点
+        /// </summary>
+        /// <param name="obj"></param>
+        private void PageNumTextGotFocus(object obj)
+        {
+            BtnLocationIsEnabled = false;
+            viewContentViewModel.ShowTip(false);
+        }
         /// <summary>
         /// 页码文本框失去焦点
         /// </summary>
@@ -657,15 +670,25 @@ namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
                     if (viewContentViewModel.IsRightMenuSelectedTextAddLink == false)
                     {
                         int index = (int)AnnotAttribEvent.Attribs[AnnotAttrib.LinkDestIndx];
-                        if (LinkAnnotArgs.AnnotIndex != -1)
+                        if (viewContentViewModel.IsSelectedTextAddLink)
                         {
-                            AnnotAttribEvent?.UpdateAttrib(AnnotAttrib.LinkType, LINK_TYPE.GOTO);
-                            AnnotAttribEvent?.UpdateAttrib(AnnotAttrib.LinkDestIndx, pageNum - 1);
-                            AnnotAttribEvent?.UpdateAnnot();
+                            viewContentViewModel.IsSelectedTextAddLink = false;
+                            LinkAnnotArgs.DestIndex = pageNum - 1;
+                            pdfViewer.CreatePageAnnot(pdfViewer.CurrentIndex, LinkAnnotArgs);
                         }
                         else
                         {
-                            LinkAnnotArgs?.InvokeLinkSaveCalled(this, EventArgs.Empty);
+                            
+                            if (LinkAnnotArgs.AnnotIndex != -1)
+                            {
+                                AnnotAttribEvent?.UpdateAttrib(AnnotAttrib.LinkType, LINK_TYPE.GOTO);
+                                AnnotAttribEvent?.UpdateAttrib(AnnotAttrib.LinkDestIndx, pageNum - 1);
+                                AnnotAttribEvent?.UpdateAnnot();
+                            }
+                            else
+                            {
+                                LinkAnnotArgs?.InvokeLinkSaveCalled(this, EventArgs.Empty);
+                            }
                         }
                     }
                     else
@@ -698,6 +721,7 @@ namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
             }
             else
             {
+                
                 BtnLocationIsEnabled = true;
             }
         }
@@ -809,6 +833,7 @@ namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
 
             BtnLocationIsChecked = true;
 
+            
             if (region.Regions.ContainsRegionWithName(viewContentViewModel.TipContentRegionName))
             {
                 var views = region.Regions[viewContentViewModel.TipContentRegionName].Views;
@@ -823,7 +848,7 @@ namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
                     region.RequestNavigate(viewContentViewModel.TipContentRegionName, "LinkAnnotTip");
                 }
             }
-
+            //viewContentViewModel.TipVisible = Visibility.Visible;
             if (BtnLocationIsChecked && viewContentViewModel.TipVisible == Visibility.Visible)
             {
                 pdfViewer.EnableDrawSelectArea(false);
@@ -888,16 +913,25 @@ namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
                         LinkAnnotArgs.DestinationPos = new System.Windows.Point(areaInfo.Area.X, pageSize.Height - areaInfo.Area.Y);
                         if (viewContentViewModel.IsRightMenuSelectedTextAddLink == false)
                         {
-                            if (LinkAnnotArgs.AnnotIndex != -1)
+                            if (viewContentViewModel.IsSelectedTextAddLink)
                             {
-                                AnnotAttribEvent?.UpdateAttrib(AnnotAttrib.LinkType, LINK_TYPE.GOTO);
-                                AnnotAttribEvent?.UpdateAttrib(AnnotAttrib.LinkDestIndx, areaInfo.PageIndex);
-                                AnnotAttribEvent?.UpdateAnnot();
+                                viewContentViewModel.IsSelectedTextAddLink = false;
+                                pdfViewer.CreatePageAnnot(historyPageIndex, LinkAnnotArgs);
                             }
                             else
                             {
-                                LinkAnnotArgs.InvokeLinkSaveCalled(this, EventArgs.Empty);
+                                if (LinkAnnotArgs.AnnotIndex != -1)
+                                {
+                                    AnnotAttribEvent?.UpdateAttrib(AnnotAttrib.LinkType, LINK_TYPE.GOTO);
+                                    AnnotAttribEvent?.UpdateAttrib(AnnotAttrib.LinkDestIndx, areaInfo.PageIndex);
+                                    AnnotAttribEvent?.UpdateAnnot();
+                                }
+                                else
+                                {
+                                    LinkAnnotArgs.InvokeLinkSaveCalled(this, EventArgs.Empty);
+                                }
                             }
+                            
                         }
                         else
                         {
@@ -926,13 +960,15 @@ namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
                         //}
 
                         //右键选择文本 创建链接
-                        if (viewContentViewModel.IsRightMenuSelectedTextAddLink || viewContentViewModel.IsRightMenuCreateLink)
+                        if (viewContentViewModel.IsRightMenuSelectedTextAddLink || viewContentViewModel.IsRightMenuCreateLink || viewContentViewModel.IsSelectedTextAddLink)
                         {
                             viewContentViewModel.IsRightMenuSelectedTextAddLink = false;
                             viewContentViewModel.IsRightMenuCreateLink = false;
+                            viewContentViewModel.IsSelectedTextAddLink = false;
+
                             viewContentViewModel.SelectedPrpoertyPanel("PropertyPanelContent", null);
-                            pdfViewer.DisableClearSelectAnnot(false);
-                            pdfViewer.ClearSelectAnnots();
+                            //pdfViewer.DisableClearSelectAnnot(false);
+                            //pdfViewer.ClearSelectAnnots();
                             var annotArgs = new SelectToolArgs();
                             pdfViewer.SetToolParam(annotArgs);
                             return;
@@ -1407,21 +1443,33 @@ namespace PDF_Master.ViewModels.PropertyPanel.AnnotPanel
                 if (viewContentViewModel.IsRightMenuCreateLink || viewContentViewModel.IsRightMenuSelectedTextAddLink)
                 {
                     IsEmptyPanelVisibility = viewContentViewModel.IsRightMenuSelectedTextAddLink ? Visibility.Collapsed : Visibility.Visible;
+
+                    
+
                     SetTextBoxEnableOrNot(true, totalPage);
 
                     //viewContentViewModel.IsRightMenuSelectedTextAddLink=false;
                 }
                 else
                 {
-                    if (propertyPanel.annot.AnnotIndex == -1 && propertyPanel.annot.PageIndex == -1)
+                    if (viewContentViewModel.IsSelectedTextAddLink)
                     {
-                        IsEmptyPanelVisibility = Visibility.Visible;
+                        IsEmptyPanelVisibility = viewContentViewModel.IsSelectedTextAddLink ? Visibility.Collapsed : Visibility.Visible;
+                        SetTextBoxEnableOrNot(true, totalPage);
                     }
-                    if (AnnotAttribEvent.IsAnnotCreateReset == false && propertyPanel.annot.AnnotIndex != -1 && propertyPanel.annot.PageIndex != -1)
+                    else
                     {
-                        IsEmptyPanelVisibility = Visibility.Collapsed;
+                        if (propertyPanel.annot.AnnotIndex == -1 && propertyPanel.annot.PageIndex == -1)
+                        {
+                            IsEmptyPanelVisibility = Visibility.Visible;
+                        }
+                        if (AnnotAttribEvent.IsAnnotCreateReset == false && propertyPanel.annot.AnnotIndex != -1 && propertyPanel.annot.PageIndex != -1)
+                        {
+                            IsEmptyPanelVisibility = Visibility.Collapsed;
+                        }
+                        SetTextBoxEnableOrNot(false, totalPage);
                     }
-                    SetTextBoxEnableOrNot(false, totalPage);
+                    
                 }
 
                 if (isLoaded)

+ 10 - 2
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.Function.cs

@@ -914,8 +914,16 @@ namespace PDF_Master.ViewModels.Tools
                     linkAnnot.ClientRect = drawRectTuple.Item2;
                     linkAnnot.URI = string.Empty;
                     linkAnnot.LinkType = LINK_TYPE.GOTO;
-                    linkAnnot.DestIndex = drawRectTuple.Item1;
-                    PDFViewer.CreatePageAnnot(drawRectTuple.Item1, linkAnnot);
+                    //linkAnnot.DestIndex = drawRectTuple.Item1;
+                    //PDFViewer.CreatePageAnnot(drawRectTuple.Item1, linkAnnot);
+                    List<AnnotHandlerEventArgs> lists = new List<AnnotHandlerEventArgs>();
+                    lists.Add(linkAnnot);
+                    PropertyPanel.IsAddLink = true;
+                    viewContentViewModel.IsSelectedTextAddLink = true;
+                    AnnotHandlerEventArgs annotArgs1 = GetLink(lists);
+                    //PDFViewer.SetMouseMode(MouseModes.AnnotCreate);
+                    //PDFViewer.SetToolParam(annotArgs1);
+                    viewContentViewModel.IsPropertyOpen = true;
 
                     annotHandler = linkAnnot;
                 }

+ 5 - 1
PDF Office/ViewModels/Tools/AnnotToolContentViewModel.cs

@@ -219,7 +219,7 @@ namespace PDF_Master.ViewModels.Tools
             dictVar.Add("isSnapshotEdit", false);
             AnnotHandlerEventArgs annotArgs = null;
             var tag = annotBtn.Tag.ToString();
-
+            viewContentViewModel.IsSelectedTextAddLink = false;
             if (annotBtn.IsChecked == true)
             {
                 PropertyPanel.AnnotSelect = StrAnnotToolChecked;
@@ -430,6 +430,8 @@ namespace PDF_Master.ViewModels.Tools
         /// <param name="sender"></param>
         private void AddAnnotation_Click(object sender)
         {
+            viewContentViewModel.IsSelectedTextAddLink = false;
+
             if (sender is MenuItem menuItem)
             {
                 StrAnnotToolChecked = "";
@@ -519,6 +521,8 @@ namespace PDF_Master.ViewModels.Tools
         /// <param name="e"></param>
         private void AnnotToolMenu_Click(object sender, RoutedEventArgs e)
         {
+            viewContentViewModel.IsSelectedTextAddLink = false;
+
             if (sender is MenuItem clickMenu && clickMenu.CommandParameter is AnnotCommandArgs)
             {
                 AnnotCommandArgs annotCommand = clickMenu.CommandParameter as AnnotCommandArgs;

+ 1 - 1
PDF Office/ViewModels/ViewContentViewModel.cs

@@ -708,7 +708,7 @@ namespace PDF_Master.ViewModels
         private string linkAnnotTipText = "Turn to the target page, then click or box area on the page to select the target page where the link will jump.";
         private bool isCreateLink = false;
         internal bool IsRightMenuSelectedTextAddLink = false;
-
+        internal bool IsSelectedTextAddLink = false;
         /// <summary>
         /// 上下左右滑动的距离
         /// </summary>

+ 4 - 1
PDF Office/Views/PropertyPanel/AnnotPanel/LinkAnnotProperty.xaml

@@ -193,8 +193,11 @@
                                 Text="{Binding PageNumTextContent, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                                 TipText="{Binding PageNumTipText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
                                 <i:Interaction.Triggers>
+                                    <i:EventTrigger EventName="GotFocus">
+                                        <i:InvokeCommandAction Command="{Binding PageNumTextGotFocusCommand}" PassEventArgsToCommand="True" />
+                                    </i:EventTrigger>
                                     <i:EventTrigger EventName="LostFocus">
-                                        <i:InvokeCommandAction Command="{Binding PageNumTextLostFocusCommand}" PassEventArgsToCommand="True" />
+                                    <i:InvokeCommandAction Command="{Binding PageNumTextLostFocusCommand}" PassEventArgsToCommand="True" />
                                     </i:EventTrigger>
                                     <i:EventTrigger EventName="KeyDown">
                                         <i:InvokeCommandAction Command="{Binding PageNumTextKeyDownCommand}" PassEventArgsToCommand="True" />

+ 9 - 0
PDF Office/Views/PropertyPanel/AnnotPanel/LinkAnnotProperty.xaml.cs

@@ -28,6 +28,15 @@ namespace PDF_Master.Views.PropertyPanel.AnnotPanel
             InitializeComponent();
         }
 
+        private void Grid_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
+        {
+            Keyboard.ClearFocus();
+        }
+
+        private void PageNumText_LostFocus(object sender, RoutedEventArgs e)
+        {
+        }
+
         //internal void SetTextBoxEnableOrNot(bool enable, int totalPage)
         //{
         //    TotalPage = totalPage;