|
@@ -1,10 +1,20 @@
|
|
|
using ComPDFKit.PDFDocument;
|
|
|
+using ComPDFKit.PDFPage;
|
|
|
+using compdfkit_tools.Data;
|
|
|
+using compdfkit_tools.Edit;
|
|
|
using compdfkit_tools.Helper;
|
|
|
using compdfkit_tools.PDFControl;
|
|
|
+using ComPDFKitViewer;
|
|
|
+using ComPDFKitViewer.PdfViewer;
|
|
|
using Microsoft.Win32;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
+using System.ComponentModel;
|
|
|
+using System.Diagnostics;
|
|
|
+using System.Drawing;
|
|
|
+using System.IO;
|
|
|
using System.Linq;
|
|
|
+using System.Runtime.CompilerServices;
|
|
|
using System.Text;
|
|
|
using System.Threading.Tasks;
|
|
|
using System.Windows;
|
|
@@ -16,22 +26,65 @@ using System.Windows.Input;
|
|
|
using System.Windows.Media;
|
|
|
using System.Windows.Media.Imaging;
|
|
|
using System.Windows.Shapes;
|
|
|
+using Path = System.IO.Path;
|
|
|
|
|
|
namespace compdfkit
|
|
|
{
|
|
|
/// <summary>
|
|
|
/// MainWindow.xaml 的交互逻辑
|
|
|
/// </summary>
|
|
|
- public partial class MainWindow : Window
|
|
|
+ public partial class MainWindow : Window, INotifyPropertyChanged
|
|
|
{
|
|
|
private bool isFirstLoad = true;
|
|
|
private string currentMode = "Viewer";
|
|
|
private PDFViewControl passwordViewer;
|
|
|
private PDFViewControl pdfViewControl = new PDFViewControl();
|
|
|
private CPDFAnnotationControl pdfAnnotationControl = null;
|
|
|
+ private UIElement pdfEditControl = null;
|
|
|
|
|
|
private double[] zoomLevelList = { 1f, 8f, 12f, 25, 33f, 50, 66f, 75, 100, 125, 150, 200, 300, 400, 600, 800, 1000 };
|
|
|
|
|
|
+ public bool CanSave
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ if (pdfViewControl != null && pdfViewControl.PDFView != null)
|
|
|
+ {
|
|
|
+ return pdfViewControl.PDFView.UndoManager.CanSave;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public bool CanUndo
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ if (pdfViewControl != null && pdfViewControl.PDFView != null)
|
|
|
+ {
|
|
|
+ return pdfViewControl.PDFView.UndoManager.CanUndo;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public bool CanRedo
|
|
|
+ {
|
|
|
+ get
|
|
|
+ {
|
|
|
+ if (pdfViewControl != null && pdfViewControl.PDFView != null)
|
|
|
+ {
|
|
|
+ return pdfViewControl.PDFView.UndoManager.CanRedo;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ /// <summary>
|
|
|
+ /// The last edit object
|
|
|
+ /// </summary>
|
|
|
+ private PDFEditEvent lastPDFEditEvent = null;
|
|
|
+ public event PropertyChangedEventHandler PropertyChanged;
|
|
|
+
|
|
|
public MainWindow()
|
|
|
{
|
|
|
InitializeComponent();
|
|
@@ -41,6 +94,7 @@ namespace compdfkit
|
|
|
|
|
|
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
+ pdfAnnotationControl = new CPDFAnnotationControl();
|
|
|
LoadDefaultDocument();
|
|
|
BindZoomLevel();
|
|
|
}
|
|
@@ -124,6 +178,12 @@ namespace compdfkit
|
|
|
PDFGrid.Child = pdfViewControl;
|
|
|
pdfViewControl.PDFView.InfoChanged -= PdfViewer_InfoChanged;
|
|
|
pdfViewControl.PDFView.InfoChanged += PdfViewer_InfoChanged;
|
|
|
+ pdfViewControl.PDFView.PDFEditCommandHandler -= PDFView_PDFEditCommandHandler;
|
|
|
+ pdfViewControl.PDFView.PDFEditCommandHandler += PDFView_PDFEditCommandHandler;
|
|
|
+ pdfViewControl.PDFView.AnnotCommandHandler -= PDFView_AnnotCommandHandler;
|
|
|
+ pdfViewControl.PDFView.AnnotCommandHandler += PDFView_AnnotCommandHandler;
|
|
|
+ pdfViewControl.PDFView.UndoManager.PropertyChanged -= UndoManager_PropertyChanged;
|
|
|
+ pdfViewControl.PDFView.UndoManager.PropertyChanged += UndoManager_PropertyChanged;
|
|
|
PasswordUI.Closed -= PasswordUI_Closed;
|
|
|
PasswordUI.Canceled -= PasswordUI_Canceled;
|
|
|
PasswordUI.Confirmed -= PasswordUI_Confirmed;
|
|
@@ -149,13 +209,495 @@ namespace compdfkit
|
|
|
((CPDFBookmarkControl)currentBotaTool).InitWithPDFViewer(pdfViewControl.PDFView);
|
|
|
((CPDFBookmarkControl)currentBotaTool).LoadBookmark();
|
|
|
}
|
|
|
-
|
|
|
+ pdfAnnotationControl.SetPDFViewer(pdfViewControl.PDFView);
|
|
|
ViewSettingBtn.IsChecked = false;
|
|
|
PropertyContainer.Child = null;
|
|
|
PropertyContainer.Visibility = Visibility.Collapsed;
|
|
|
ZoomTextBox.Text = string.Format("{0}", (int)(pdfViewControl.PDFView.ZoomFactor * 100)) + "%";
|
|
|
}
|
|
|
|
|
|
+ private void UndoManager_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
|
|
+ {
|
|
|
+ OnPropertyChanged(e.PropertyName);
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 文字编辑右键菜单
|
|
|
+ /// </summary>
|
|
|
+ private void PDFEditTextContextMenu(object sender, PDFEditCommand editCommand)
|
|
|
+ {
|
|
|
+ editCommand.PopupMenu = new ContextMenu();
|
|
|
+ if (lastPDFEditEvent != null)
|
|
|
+ {
|
|
|
+ editCommand.PopupMenu.Items.Add(new MenuItem() { Header = "Copy", Command = ApplicationCommands.Copy, CommandTarget = (UIElement)sender });
|
|
|
+ editCommand.PopupMenu.Items.Add(new MenuItem() { Header = "Cut", Command = ApplicationCommands.Cut, CommandTarget = (UIElement)sender });
|
|
|
+ editCommand.PopupMenu.Items.Add(new MenuItem() { Header = "Delete", Command = ApplicationCommands.Delete, CommandTarget = (UIElement)sender });
|
|
|
+ editCommand.PopupMenu.Items.Add(new MenuItem() { Header = "Paste", Command = ApplicationCommands.Paste, CommandTarget = (UIElement)sender });
|
|
|
+ MenuItem propertyMenu = new MenuItem();
|
|
|
+ propertyMenu.Header = "Property";
|
|
|
+ propertyMenu.Click += (o, p) =>
|
|
|
+ {
|
|
|
+
|
|
|
+ if (lastPDFEditEvent != null && lastPDFEditEvent.EditType == CPDFEditType.EditText)
|
|
|
+ {
|
|
|
+ PDFTextEditControl textEditControl = new PDFTextEditControl();
|
|
|
+ textEditControl.SetPDFTextEditData(lastPDFEditEvent);
|
|
|
+ PropertyContainer.Child = textEditControl;
|
|
|
+ PropertyContainer.Visibility = Visibility.Visible;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ editCommand.PopupMenu.Items.Add(propertyMenu);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ editCommand.PopupMenu.Items.Add(new MenuItem() { Header = "Paste", Command = ApplicationCommands.Paste, CommandTarget = (UIElement)sender });
|
|
|
+ if (editCommand.TextAreaCopied)
|
|
|
+ {
|
|
|
+ editCommand.PopupMenu.Items.Add(new MenuItem() { Header = "Paste And Match Style", Command = CustomCommands.PasteMatchStyle, CommandTarget = (UIElement)sender });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 图片编辑右键菜单
|
|
|
+ /// </summary>
|
|
|
+ private void PDFEditImageContextMenu(object sender, PDFEditCommand editCommand)
|
|
|
+ {
|
|
|
+ editCommand.PopupMenu = new ContextMenu();
|
|
|
+ if (lastPDFEditEvent != null)
|
|
|
+ {
|
|
|
+ MenuItem rotateLeftMenu = new MenuItem();
|
|
|
+ rotateLeftMenu.Header = "Left Rotate";
|
|
|
+ rotateLeftMenu.Click += (o, p) =>
|
|
|
+ {
|
|
|
+ if (lastPDFEditEvent != null && lastPDFEditEvent.EditType == CPDFEditType.EditImage)
|
|
|
+ {
|
|
|
+ lastPDFEditEvent.Rotate = -90;
|
|
|
+ lastPDFEditEvent.UpdatePDFEditByEventArgs();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ editCommand.PopupMenu.Items.Add(rotateLeftMenu);
|
|
|
+
|
|
|
+ MenuItem rotateRightMenu = new MenuItem();
|
|
|
+ rotateRightMenu.Header = "Right Rotate";
|
|
|
+ rotateRightMenu.Click += (o, p) =>
|
|
|
+ {
|
|
|
+ if (lastPDFEditEvent != null && lastPDFEditEvent.EditType == CPDFEditType.EditImage)
|
|
|
+ {
|
|
|
+ lastPDFEditEvent.Rotate = 90;
|
|
|
+ lastPDFEditEvent.UpdatePDFEditByEventArgs();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ editCommand.PopupMenu.Items.Add(rotateRightMenu);
|
|
|
+
|
|
|
+ MenuItem replaceMenu = new MenuItem();
|
|
|
+ replaceMenu.Header = "Replace";
|
|
|
+ replaceMenu.Click += (o, p) =>
|
|
|
+ {
|
|
|
+ if (lastPDFEditEvent != null && lastPDFEditEvent.EditType == CPDFEditType.EditImage)
|
|
|
+ {
|
|
|
+ OpenFileDialog openFileDialog = new OpenFileDialog();
|
|
|
+ openFileDialog.Filter = "Image Files(*.jpg;*.jpeg;*.png;*.bmp)|*.jpg;*.jpeg;*.png;*.bmp;";
|
|
|
+ if (openFileDialog.ShowDialog() == true)
|
|
|
+ {
|
|
|
+ lastPDFEditEvent.ReplaceImagePath = openFileDialog.FileName;
|
|
|
+ lastPDFEditEvent.UpdatePDFEditByEventArgs();
|
|
|
+ pdfViewControl.PDFView?.ClearSelectPDFEdit();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ editCommand.PopupMenu.Items.Add(replaceMenu);
|
|
|
+
|
|
|
+ MenuItem exportMenu = new MenuItem();
|
|
|
+ exportMenu.Header = "Export";
|
|
|
+ exportMenu.Click += (o, p) =>
|
|
|
+ {
|
|
|
+ if (pdfViewControl != null && pdfViewControl.PDFView != null)
|
|
|
+ {
|
|
|
+ Dictionary<int, List<Bitmap>> imageDict = pdfViewControl.PDFView.GetSelectedImages();
|
|
|
+ if (imageDict != null && imageDict.Count > 0)
|
|
|
+ {
|
|
|
+ System.Windows.Forms.FolderBrowserDialog folderBrowser = new System.Windows.Forms.FolderBrowserDialog();
|
|
|
+ if (folderBrowser.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
|
|
+ {
|
|
|
+ string choosePath = folderBrowser.SelectedPath;
|
|
|
+ string openPath = choosePath;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ foreach (int pageIndex in imageDict.Keys)
|
|
|
+ {
|
|
|
+ List<Bitmap> imageList = imageDict[pageIndex];
|
|
|
+ foreach (Bitmap image in imageList)
|
|
|
+ {
|
|
|
+ string savePath = System.IO.Path.Combine(choosePath, Guid.NewGuid() + ".jpg");
|
|
|
+ image.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg);
|
|
|
+ openPath = savePath;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Process.Start("explorer", "/select,\"" + openPath + "\"");
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ editCommand.PopupMenu.Items.Add(exportMenu);
|
|
|
+
|
|
|
+ MenuItem opacityMenu = new MenuItem();
|
|
|
+ opacityMenu.Header = "Opacity";
|
|
|
+ editCommand.PopupMenu.Items.Add(opacityMenu);
|
|
|
+
|
|
|
+ AppendOpacityMenu(opacityMenu);
|
|
|
+
|
|
|
+ MenuItem horizonMirror = new MenuItem();
|
|
|
+ horizonMirror.Header = "HMirror";
|
|
|
+ horizonMirror.Click += (o, p) =>
|
|
|
+ {
|
|
|
+ if (lastPDFEditEvent != null && lastPDFEditEvent.EditType == CPDFEditType.EditImage)
|
|
|
+ {
|
|
|
+ lastPDFEditEvent.HorizontalMirror = true;
|
|
|
+ lastPDFEditEvent.UpdatePDFEditByEventArgs();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ editCommand.PopupMenu.Items.Add(horizonMirror);
|
|
|
+
|
|
|
+ MenuItem verticalMirror = new MenuItem();
|
|
|
+ verticalMirror.Header = "VMirror";
|
|
|
+ verticalMirror.Click += (o, p) =>
|
|
|
+ {
|
|
|
+ if (lastPDFEditEvent != null && lastPDFEditEvent.EditType == CPDFEditType.EditImage)
|
|
|
+ {
|
|
|
+ lastPDFEditEvent.VerticalMirror = true;
|
|
|
+ lastPDFEditEvent.UpdatePDFEditByEventArgs();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ editCommand.PopupMenu.Items.Add(verticalMirror);
|
|
|
+
|
|
|
+ MenuItem cropMenu = new MenuItem();
|
|
|
+ cropMenu.Header = "Crop";
|
|
|
+ cropMenu.Click += (o, p) =>
|
|
|
+ {
|
|
|
+ if (lastPDFEditEvent != null && lastPDFEditEvent.EditType == CPDFEditType.EditImage)
|
|
|
+ {
|
|
|
+ lastPDFEditEvent.ClipImage = true;
|
|
|
+ lastPDFEditEvent.UpdatePDFEditByEventArgs();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ editCommand.PopupMenu.Items.Add(cropMenu);
|
|
|
+
|
|
|
+ editCommand.PopupMenu.Items.Add(new MenuItem() { Header = "Copy", Command = ApplicationCommands.Copy, CommandTarget = (UIElement)sender });
|
|
|
+ editCommand.PopupMenu.Items.Add(new MenuItem() { Header = "Cut", Command = ApplicationCommands.Cut, CommandTarget = (UIElement)sender });
|
|
|
+ editCommand.PopupMenu.Items.Add(new MenuItem() { Header = "Delete", Command = ApplicationCommands.Delete, CommandTarget = (UIElement)sender });
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ editCommand.PopupMenu.Items.Add(new MenuItem() { Header = "Paste", Command = ApplicationCommands.Paste, CommandTarget = (UIElement)sender });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 图片编辑透明度二级菜单
|
|
|
+ /// </summary>
|
|
|
+ private void AppendOpacityMenu(MenuItem parentMenu)
|
|
|
+ {
|
|
|
+ List<int> opacityList = new List<int>()
|
|
|
+ {
|
|
|
+ 25,50,75,100
|
|
|
+ };
|
|
|
+
|
|
|
+ foreach (int opacity in opacityList)
|
|
|
+ {
|
|
|
+ MenuItem opacityMenu = new MenuItem();
|
|
|
+ opacityMenu.Header = string.Format("{0}%", opacity);
|
|
|
+ opacityMenu.Click += (o, p) =>
|
|
|
+ {
|
|
|
+ if (lastPDFEditEvent != null && lastPDFEditEvent.EditType == CPDFEditType.EditImage)
|
|
|
+ {
|
|
|
+ lastPDFEditEvent.Transparency = (int)Math.Ceiling(opacity * 255 / 100D);
|
|
|
+ lastPDFEditEvent.UpdatePDFEditByEventArgs();
|
|
|
+ }
|
|
|
+ };
|
|
|
+ parentMenu.Items.Add(opacityMenu);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void PDFView_PDFEditCommandHandler(object sender, PDFEditCommand e)
|
|
|
+ {
|
|
|
+ if (e == null)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (e.EditType == CPDFEditType.EditText)
|
|
|
+ {
|
|
|
+ e.Handle = true;
|
|
|
+ PDFEditTextContextMenu(sender, e);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (e.EditType == CPDFEditType.EditImage)
|
|
|
+ {
|
|
|
+ e.Handle = true;
|
|
|
+ PDFEditImageContextMenu(sender, e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void ExtraImage_Click(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ System.Windows.Forms.FolderBrowserDialog folderDialog = new System.Windows.Forms.FolderBrowserDialog();
|
|
|
+ if (folderDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
|
|
|
+ {
|
|
|
+ string choosePath = folderDialog.SelectedPath;
|
|
|
+ string openPath = choosePath;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Dictionary<int, List<Bitmap>> imageDict = pdfViewControl.PDFView?.GetSelectedImages();
|
|
|
+
|
|
|
+ if (imageDict != null && imageDict.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (int pageIndex in imageDict.Keys)
|
|
|
+ {
|
|
|
+ List<Bitmap> imageList = imageDict[pageIndex];
|
|
|
+ foreach (Bitmap image in imageList)
|
|
|
+ {
|
|
|
+ string savePath = Path.Combine(choosePath, Guid.NewGuid() + ".jpg");
|
|
|
+ image.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg);
|
|
|
+ openPath = savePath;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Process.Start("explorer", "/select,\"" + openPath + "\"");
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void CopyImage_Click(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ Dictionary<int, List<Bitmap>> imageDict = pdfViewControl.PDFView?.GetSelectedImages();
|
|
|
+
|
|
|
+ if (imageDict != null && imageDict.Count > 0)
|
|
|
+ {
|
|
|
+ foreach (int pageIndex in imageDict.Keys)
|
|
|
+ {
|
|
|
+ List<Bitmap> imageList = imageDict[pageIndex];
|
|
|
+ foreach (Bitmap image in imageList)
|
|
|
+ {
|
|
|
+ MemoryStream ms = new MemoryStream();
|
|
|
+ image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
|
|
|
+ BitmapImage imageData = new BitmapImage();
|
|
|
+ imageData.BeginInit();
|
|
|
+ imageData.StreamSource = ms;
|
|
|
+ imageData.CacheOption = BitmapCacheOption.OnLoad;
|
|
|
+ imageData.EndInit();
|
|
|
+ imageData.Freeze();
|
|
|
+ Clipboard.SetImage(imageData);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void PDFView_AnnotCommandHandler(object sender, ComPDFKitViewer.AnnotEvent.AnnotCommandArgs e)
|
|
|
+ {
|
|
|
+ switch (e.CommandType)
|
|
|
+ {
|
|
|
+ case CommandType.Context:
|
|
|
+ e.Handle = true;
|
|
|
+ if (e.CommandTarget == TargetType.Annot)
|
|
|
+ {
|
|
|
+ e.Handle = true;
|
|
|
+ e.PopupMenu = new ContextMenu();
|
|
|
+ if (e.PressOnLink)
|
|
|
+ {
|
|
|
+ e.PopupMenu.Items.Add(new MenuItem() { Header = "Delete", Command = ApplicationCommands.Delete, CommandTarget = (UIElement)sender });
|
|
|
+ MenuItem propertyMenu = new MenuItem();
|
|
|
+ propertyMenu = new MenuItem();
|
|
|
+ propertyMenu.Header = "Edit";
|
|
|
+ WeakEventManager<MenuItem, RoutedEventArgs>.AddHandler(propertyMenu, "Click", EditLink_Click);
|
|
|
+ propertyMenu.CommandParameter = e;
|
|
|
+ e.PopupMenu.Items.Add(propertyMenu);
|
|
|
+ }
|
|
|
+ else if (e.PressOnAnnot)
|
|
|
+ {
|
|
|
+ e.PopupMenu.Items.Add(new MenuItem() { Header = "Delete", Command = ApplicationCommands.Delete, CommandTarget = (UIElement)sender });
|
|
|
+ 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 });
|
|
|
+ }
|
|
|
+ else if (e.PressOnMedia || e.PressOnSound)
|
|
|
+ {
|
|
|
+ e.Handle = true;
|
|
|
+ e.PopupMenu.Items.Add(new MenuItem() { Header = "Play", Command = MediaCommands.Play, CommandTarget = (UIElement)sender, CommandParameter = e });
|
|
|
+ e.PopupMenu.Items.Add(new MenuItem() { Header = "Delete", Command = ApplicationCommands.Delete, CommandTarget = (UIElement)sender });
|
|
|
+ }
|
|
|
+ else if (e.PressOnSelectedText)
|
|
|
+ {
|
|
|
+ e.PopupMenu.Items.Add(new MenuItem() { Header = "Copy", Command = ApplicationCommands.Copy, 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) =>
|
|
|
+ {
|
|
|
+ if (pdfViewControl != null)
|
|
|
+ {
|
|
|
+ pdfViewControl.PDFView?.ChangeFitMode(FitMode.FitWidth);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ e.PopupMenu.Items.Add(fitWidthMenu);
|
|
|
+
|
|
|
+ MenuItem fitSizeMenu = new MenuItem();
|
|
|
+ fitSizeMenu.Header = "Actual Size";
|
|
|
+ fitSizeMenu.Click += (o, p) =>
|
|
|
+ {
|
|
|
+ if (pdfViewControl != null)
|
|
|
+ {
|
|
|
+ pdfViewControl.PDFView?.ChangeFitMode(FitMode.FitSize);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ e.PopupMenu.Items.Add(fitSizeMenu);
|
|
|
+
|
|
|
+ MenuItem zoomInMenu = new MenuItem();
|
|
|
+ zoomInMenu.Header = "Zoom In";
|
|
|
+ zoomInMenu.Click += (o, p) =>
|
|
|
+ {
|
|
|
+ if (pdfViewControl != null)
|
|
|
+ {
|
|
|
+ double newZoom = CheckZoomLevel(pdfViewControl.PDFView.ZoomFactor + 0.01, true);
|
|
|
+ pdfViewControl.PDFView?.Zoom(newZoom);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ e.PopupMenu.Items.Add(zoomInMenu);
|
|
|
+
|
|
|
+ MenuItem zoomOutMenu = new MenuItem();
|
|
|
+ zoomOutMenu.Header = "Zoom Out";
|
|
|
+ zoomOutMenu.Click += (o, p) =>
|
|
|
+ {
|
|
|
+ if (pdfViewControl != null)
|
|
|
+ {
|
|
|
+ double newZoom = CheckZoomLevel(pdfViewControl.PDFView.ZoomFactor - 0.01, false);
|
|
|
+ pdfViewControl.PDFView?.Zoom(newZoom);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ e.PopupMenu.Items.Add(zoomOutMenu);
|
|
|
+ e.PopupMenu.Items.Add(new Separator());
|
|
|
+
|
|
|
+ MenuItem singleView = new MenuItem();
|
|
|
+ singleView.Header = "Single Page";
|
|
|
+ singleView.Click += (o, p) =>
|
|
|
+ {
|
|
|
+ if (pdfViewControl != null)
|
|
|
+ {
|
|
|
+ pdfViewControl.PDFView?.ChangeViewMode(ViewMode.Single);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ e.PopupMenu.Items.Add(singleView);
|
|
|
+
|
|
|
+ MenuItem singleContinuousView = new MenuItem();
|
|
|
+ singleContinuousView.Header = "Single Page Continuous";
|
|
|
+ singleContinuousView.Click += (o, p) =>
|
|
|
+ {
|
|
|
+ if (pdfViewControl != null)
|
|
|
+ {
|
|
|
+ pdfViewControl.PDFView?.ChangeViewMode(ViewMode.SingleContinuous);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ e.PopupMenu.Items.Add(singleContinuousView);
|
|
|
+
|
|
|
+ MenuItem doubleView = new MenuItem();
|
|
|
+ doubleView.Header = "Two Pages";
|
|
|
+ doubleView.Click += (o, p) =>
|
|
|
+ {
|
|
|
+ if (pdfViewControl != null)
|
|
|
+ {
|
|
|
+ pdfViewControl.PDFView?.ChangeViewMode(ViewMode.Double);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ e.PopupMenu.Items.Add(doubleView);
|
|
|
+
|
|
|
+ MenuItem doubleContinuousView = new MenuItem();
|
|
|
+ doubleContinuousView.Header = "Two Pages Continuous";
|
|
|
+ doubleContinuousView.Click += (o, p) =>
|
|
|
+ {
|
|
|
+ if (pdfViewControl != null)
|
|
|
+ {
|
|
|
+ pdfViewControl.PDFView?.ChangeViewMode(ViewMode.DoubleContinuous);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ e.PopupMenu.Items.Add(doubleContinuousView);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ else if (e.CommandTarget == TargetType.ImageSelection)
|
|
|
+ {
|
|
|
+ if (pdfViewControl != null && pdfViewControl.PDFView != null && pdfViewControl.PDFView.GetSelectImageCount() > 0)
|
|
|
+ {
|
|
|
+ e.Handle = true;
|
|
|
+ e.PopupMenu = new ContextMenu();
|
|
|
+
|
|
|
+ MenuItem imageCopyMenu = new MenuItem();
|
|
|
+ imageCopyMenu = new MenuItem();
|
|
|
+ imageCopyMenu.Header = "Copy Images";
|
|
|
+ WeakEventManager<MenuItem, RoutedEventArgs>.AddHandler(imageCopyMenu, "Click", CopyImage_Click);
|
|
|
+ imageCopyMenu.CommandParameter = e;
|
|
|
+ e.PopupMenu.Items.Add(imageCopyMenu);
|
|
|
+
|
|
|
+ MenuItem imageExtraMenu = new MenuItem();
|
|
|
+ imageExtraMenu = new MenuItem();
|
|
|
+ imageExtraMenu.Header = "Extract Images";
|
|
|
+ WeakEventManager<MenuItem, RoutedEventArgs>.AddHandler(imageExtraMenu, "Click", ExtraImage_Click);
|
|
|
+ imageExtraMenu.CommandParameter = e;
|
|
|
+ e.PopupMenu.Items.Add(imageExtraMenu);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case CommandType.Copy:
|
|
|
+ e.DoCommand();
|
|
|
+ break;
|
|
|
+ case CommandType.Cut:
|
|
|
+ case CommandType.Paste:
|
|
|
+ case CommandType.Delete:
|
|
|
+ e.DoCommand();
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void EditLink_Click(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ PropertyContainer.Visibility = Visibility.Visible;
|
|
|
+ }
|
|
|
+
|
|
|
private void OpenFile_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
try
|
|
@@ -200,7 +742,6 @@ namespace compdfkit
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
private void SaveFileBtn_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
if (pdfViewControl != null && pdfViewControl.PDFView != null && pdfViewControl.PDFView.Document != null)
|
|
@@ -431,7 +972,6 @@ namespace compdfkit
|
|
|
}
|
|
|
ExpandBotaTool(OutlineToolButton.IsChecked == true);
|
|
|
ClearToolState(OutlineToolButton);
|
|
|
-
|
|
|
}
|
|
|
|
|
|
private void BookmarkToolButtonn_Click(object sender, RoutedEventArgs e)
|
|
@@ -488,6 +1028,10 @@ namespace compdfkit
|
|
|
PropertyContainer.Width = 260;
|
|
|
PropertyContainer.Child = properytPanel;
|
|
|
PropertyContainer.Visibility = visible;
|
|
|
+ if (visible == Visibility.Hidden || visible == Visibility.Collapsed)
|
|
|
+ {
|
|
|
+ RightPanelButton.IsChecked = false;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
private void RightPanelButton_Click(object sender, RoutedEventArgs e)
|
|
@@ -497,7 +1041,18 @@ namespace compdfkit
|
|
|
{
|
|
|
if (toggleButton.IsChecked == true)
|
|
|
{
|
|
|
- ExpandRightPropertyPanel(pdfAnnotationControl, Visibility.Visible);
|
|
|
+ if (currentMode == "Annotation")
|
|
|
+ {
|
|
|
+ ExpandRightPropertyPanel(pdfAnnotationControl, Visibility.Visible);
|
|
|
+ }
|
|
|
+ else if (currentMode == "Edit")
|
|
|
+ {
|
|
|
+ ExpandRightPropertyPanel(pdfEditControl, Visibility.Visible);
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ExpandRightPropertyPanel(null, Visibility.Visible);
|
|
|
+ }
|
|
|
if ((bool)ViewSettingBtn.IsChecked)
|
|
|
{
|
|
|
ViewSettingBtn.IsChecked = false;
|
|
@@ -510,50 +1065,293 @@ namespace compdfkit
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
/// <summary>
|
|
|
- /// 每一项退出时执行操作
|
|
|
- /// 每一项进入时执行操作
|
|
|
+ /// Actions performed when switching modes:
|
|
|
+ /// Separated into actions performed upon entering and exiting the mode.
|
|
|
/// </summary>
|
|
|
- /// <param name="sender"></param>
|
|
|
- /// <param name="e"></param>
|
|
|
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
|
|
{
|
|
|
if (isFirstLoad)
|
|
|
{
|
|
|
isFirstLoad = false;
|
|
|
- return;
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
var item = (sender as ComboBox).SelectedItem as ComboBoxItem;
|
|
|
switch (currentMode)
|
|
|
{
|
|
|
case "Viewer":
|
|
|
-
|
|
|
+
|
|
|
break;
|
|
|
+ //Behavior when exit Edit mode
|
|
|
+ // Clear the ToolBar
|
|
|
+ // Collapse the ToolBar
|
|
|
+ // Clear And Collapse the property panel.
|
|
|
case "Annotation":
|
|
|
- ToolBarContainer.Visibility = Visibility.Collapsed;
|
|
|
+ AnnotationBarControl.Visibility = Visibility.Collapsed;
|
|
|
+ AnnotationBarControl.ClearAllToolState();
|
|
|
+ ExpandRightPropertyPanel(null, Visibility.Collapsed);
|
|
|
+
|
|
|
break;
|
|
|
+
|
|
|
+ // Behavior when exit Edit mode:
|
|
|
+ // Collapsed the ToolBar
|
|
|
+ // Set the mode to allow editing None
|
|
|
+ // Set the mouse mode to PanTool
|
|
|
+ // Reload Document
|
|
|
+ // Unsubscribe click event.
|
|
|
+ // Clear And Collapse the property panel.
|
|
|
case "Edit":
|
|
|
- ToolBarContainer.Visibility = Visibility.Collapsed;
|
|
|
+ PDFEditTool.Visibility = Visibility.Collapsed;
|
|
|
+ pdfViewControl.PDFView?.SetShowLink(true);
|
|
|
+ pdfViewControl.PDFView?.SetPDFEditType(CPDFEditType.None);
|
|
|
+ pdfViewControl.PDFView?.SetMouseMode(MouseModes.PanTool);
|
|
|
+ pdfViewControl.PDFView?.ReloadDocument();
|
|
|
+
|
|
|
+ pdfViewControl.PDFView.PDFEditActiveHandler -= PDFView_PDFEditActiveHandler;
|
|
|
+ ExpandRightPropertyPanel(null, Visibility.Collapsed);
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
+ // Behavior when switching to Viewer mode:
|
|
|
+ // Hide the ToolBar
|
|
|
if ((string)item.Content == "Viewer")
|
|
|
{
|
|
|
-
|
|
|
+ ToolBarContainer.Visibility = Visibility.Collapsed;
|
|
|
}
|
|
|
+
|
|
|
+ // Behavior when switching to Annotation mode:
|
|
|
+ // Show the ToolBar
|
|
|
+ // Show the AnnotationBar
|
|
|
else if ((string)item.Content == "Annotation")
|
|
|
{
|
|
|
ToolBarContainer.Visibility = Visibility.Visible;
|
|
|
+ AnnotationBarControl.Visibility = Visibility.Visible;
|
|
|
}
|
|
|
+
|
|
|
+ // Behavior when switching to Edit mode:
|
|
|
+ // Show the ToolBar
|
|
|
+ // Show the EditBar
|
|
|
+ // Set the mode to allow editing of both text and images
|
|
|
+ // Set the mouse mode to PDFEdit
|
|
|
+ // Reload Document
|
|
|
else if ((string)item.Content == "Edit")
|
|
|
{
|
|
|
ToolBarContainer.Visibility = Visibility.Visible;
|
|
|
- }
|
|
|
+ PDFEditTool.Visibility = Visibility.Visible;
|
|
|
+ pdfViewControl.PDFView?.SetPDFEditType(CPDFEditType.EditText | CPDFEditType.EditImage);
|
|
|
+ pdfViewControl.PDFView?.SetMouseMode(MouseModes.PDFEdit);
|
|
|
+ pdfViewControl.PDFView?.ReloadDocument();
|
|
|
|
|
|
+ pdfViewControl.PDFView.PDFEditActiveHandler += PDFView_PDFEditActiveHandler;
|
|
|
+ }
|
|
|
currentMode = (string)item.Content;
|
|
|
}
|
|
|
+
|
|
|
+ #region Annotation Mode
|
|
|
+
|
|
|
+ private void AnnotationBarControl_Loaded(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ CPDFAnnotationType[] annotationProperties = { CPDFAnnotationType.Highlight, CPDFAnnotationType.Underline, CPDFAnnotationType.Strikeout, CPDFAnnotationType.Squiggly, CPDFAnnotationType.Freehand, CPDFAnnotationType.FreeText, CPDFAnnotationType.Note, CPDFAnnotationType.Circle, CPDFAnnotationType.Square, CPDFAnnotationType.Arrow, CPDFAnnotationType.Line, CPDFAnnotationType.Stamp, CPDFAnnotationType.Signature, CPDFAnnotationType.Link, CPDFAnnotationType.Audio };
|
|
|
+ AnnotationBarControl.InitAnnotationBar(annotationProperties);
|
|
|
+ AnnotationBarControl.AnnotationPropertyChanged += AnnotationBarControl_AnnotationPropertyChanged;
|
|
|
+ AnnotationBarControl.AnnotationCancel += AnnotationBarControl_AnnotationCancel;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void AnnotationBarControl_AnnotationCancel(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ ToggleButton toggleButton = sender as ToggleButton;
|
|
|
+ if (toggleButton != null)
|
|
|
+ {
|
|
|
+ if (toggleButton.IsChecked == true)
|
|
|
+ {
|
|
|
+ if (pdfAnnotationControl != null)
|
|
|
+ {
|
|
|
+ ExpandRightPropertyPanel(pdfAnnotationControl, Visibility.Visible);
|
|
|
+ if ((bool)ViewSettingBtn.IsChecked)
|
|
|
+ {
|
|
|
+ ViewSettingBtn.IsChecked = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ ExpandRightPropertyPanel(null, Visibility.Collapsed);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void AnnotationBarControl_AnnotationPropertyChanged(object sender, CPDFAnnotationType e)
|
|
|
+ {
|
|
|
+ pdfAnnotationControl.LoadAnnotationPanel(e);
|
|
|
+ if (e != CPDFAnnotationType.Audio)
|
|
|
+ {
|
|
|
+ ExpandRightPropertyPanel(pdfAnnotationControl, Visibility.Visible);
|
|
|
+ RightPanelButton.IsChecked = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void AnnotationBarControl_Unloaded(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ AnnotationBarControl.AnnotationPropertyChanged -= AnnotationBarControl_AnnotationPropertyChanged;
|
|
|
+ AnnotationBarControl.AnnotationCancel -= AnnotationBarControl_AnnotationCancel;
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+
|
|
|
+ #region Edit Mode
|
|
|
+ /// <summary>
|
|
|
+ /// Clear the selected state of editing-related buttons.
|
|
|
+ /// </summary>
|
|
|
+ private void ClearPDFEditState(ToggleButton ignoreBtn = null)
|
|
|
+ {
|
|
|
+ List<ToggleButton> clearBtnList = new List<ToggleButton>()
|
|
|
+ {
|
|
|
+ PDFTextEditButton,
|
|
|
+ PDFImageEditButton
|
|
|
+ };
|
|
|
+
|
|
|
+ foreach (ToggleButton item in clearBtnList)
|
|
|
+ {
|
|
|
+ if (ignoreBtn == item)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ item.IsChecked = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void PDFTextEditButton_Click(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ ToggleButton senderBtn = sender as ToggleButton;
|
|
|
+ if (senderBtn != null && pdfViewControl != null)
|
|
|
+ {
|
|
|
+ ClearPDFEditState(senderBtn);
|
|
|
+ if (senderBtn.IsChecked == true)
|
|
|
+ {
|
|
|
+ pdfViewControl.PDFView?.SetMouseMode(MouseModes.PanTool);
|
|
|
+ pdfViewControl.PDFView?.SetPDFEditType(CPDFEditType.EditText);
|
|
|
+ pdfViewControl.PDFView?.SetPDFEditCreateType(CPDFEditType.EditText);
|
|
|
+ pdfViewControl.PDFView?.SetMouseMode(MouseModes.PDFEdit);
|
|
|
+ pdfViewControl.PDFView?.ReloadDocument();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ pdfViewControl.PDFView?.SetPDFEditCreateType(CPDFEditType.None);
|
|
|
+ pdfViewControl.PDFView?.SetPDFEditType(CPDFEditType.EditImage | CPDFEditType.EditText);
|
|
|
+ pdfViewControl.PDFView?.SetMouseMode(MouseModes.PDFEdit);
|
|
|
+ pdfViewControl.PDFView?.ReloadDocument();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void PDFImageEditButton_Click(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ ToggleButton senderBtn = sender as ToggleButton;
|
|
|
+ if (senderBtn != null && pdfViewControl != null)
|
|
|
+ {
|
|
|
+ senderBtn.IsChecked = false;
|
|
|
+ OpenFileDialog openFileDialog = new OpenFileDialog();
|
|
|
+ openFileDialog.Filter = "Image Files(*.jpg;*.jpeg;*.png;*.bmp)|*.jpg;*.jpeg;*.png;*.bmp;";
|
|
|
+ if (openFileDialog.ShowDialog() == true)
|
|
|
+ {
|
|
|
+ ClearPDFEditState(senderBtn);
|
|
|
+ pdfViewControl.PDFView?.ClearSelectPDFEdit();
|
|
|
+ pdfViewControl.PDFView?.SetPDFEditType(CPDFEditType.EditImage | CPDFEditType.EditText);
|
|
|
+ pdfViewControl.PDFView?.SetMouseMode(MouseModes.PDFEdit);
|
|
|
+ pdfViewControl.PDFView?.ReloadDocument();
|
|
|
+
|
|
|
+ ExpandRightPropertyPanel(null, Visibility.Collapsed);
|
|
|
+ pdfViewControl.PDFView?.SetPDFEditCreateType(CPDFEditType.EditImage);
|
|
|
+ pdfViewControl.PDFView?.AddPDFEditImage(openFileDialog.FileName);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void UndoBtn_Click(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ if (pdfViewControl != null && pdfViewControl.PDFView != null)
|
|
|
+ {
|
|
|
+ pdfViewControl.PDFView.UndoManager?.Undo();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void RedoBtn_Click(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ if (pdfViewControl != null && pdfViewControl.PDFView != null)
|
|
|
+ {
|
|
|
+ pdfViewControl.PDFView.UndoManager?.Redo();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Text and Image Selected Event
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="sender"></param>
|
|
|
+ /// <param name="e"></param>
|
|
|
+ private void PDFView_PDFEditActiveHandler(object sender, ComPDFKitViewer.PDFEditEvent e)
|
|
|
+ {
|
|
|
+ lastPDFEditEvent = e;
|
|
|
+ ViewSettingBtn.IsChecked = false;
|
|
|
+ if (e == null)
|
|
|
+ {
|
|
|
+ pdfEditControl = null;
|
|
|
+ PropertyContainer.Child = pdfEditControl;
|
|
|
+ ExpandRightPropertyPanel(null, Visibility.Collapsed);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (Mouse.RightButton == MouseButtonState.Pressed)
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (e.EditType == CPDFEditType.EditText)
|
|
|
+ {
|
|
|
+ PDFTextEditControl textEditControl = new PDFTextEditControl();
|
|
|
+ textEditControl.SetPDFTextEditData(e);
|
|
|
+ pdfEditControl = textEditControl as UIElement;
|
|
|
+ PropertyContainer.Child = pdfEditControl;
|
|
|
+ ExpandRightPropertyPanel(pdfEditControl, Visibility.Visible);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (e.EditType == CPDFEditType.EditImage && pdfViewControl != null)
|
|
|
+ {
|
|
|
+ UIElement pageView = sender as UIElement;
|
|
|
+ if (pageView != null)
|
|
|
+ {
|
|
|
+ pageView.MouseLeftButtonUp += PageView_MouseLeftButtonUp; ;
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void PageView_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
|
|
|
+ {
|
|
|
+ UIElement pageView = sender as UIElement;
|
|
|
+ if (pageView != null)
|
|
|
+ {
|
|
|
+ pageView.MouseLeftButtonUp -= PageView_MouseLeftButtonUp;
|
|
|
+ }
|
|
|
+ if (lastPDFEditEvent != null && lastPDFEditEvent.EditType == CPDFEditType.EditImage)
|
|
|
+ {
|
|
|
+ PDFImageEditControl imageEditControl = new PDFImageEditControl();
|
|
|
+ imageEditControl.InitWithPDFViewer(pdfViewControl.PDFView);
|
|
|
+ imageEditControl.SetPDFImageEditData(lastPDFEditEvent);
|
|
|
+ pdfEditControl = imageEditControl as UIElement;
|
|
|
+ PropertyContainer.Child = pdfEditControl;
|
|
|
+ ExpandRightPropertyPanel(pdfEditControl, Visibility.Visible);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ #endregion
|
|
|
+ /// <summary>
|
|
|
+ ///触发属性更改事件通知
|
|
|
+ /// </summary>
|
|
|
+ protected void OnPropertyChanged([CallerMemberName] string name = null)
|
|
|
+ {
|
|
|
+ PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
|
|
|
+ }
|
|
|
}
|
|
|
}
|