|
@@ -35,7 +35,7 @@ namespace compdfkit
|
|
|
/// MainPage.xaml 的交互逻辑
|
|
|
/// </summary>
|
|
|
public partial class MainPage : UserControl, INotifyPropertyChanged
|
|
|
- {
|
|
|
+ {
|
|
|
private bool isFirstLoad = true;
|
|
|
private string currentMode = "Viewer";
|
|
|
private PDFViewControl passwordViewer;
|
|
@@ -85,9 +85,9 @@ namespace compdfkit
|
|
|
/// </summary>
|
|
|
private PDFEditEvent lastPDFEditEvent = null;
|
|
|
|
|
|
- public event Func<string, bool> CheckExistBeforeOpenFileEvent;
|
|
|
+ public event Func<string[], bool> CheckExistBeforeOpenFileEvent;
|
|
|
public event PropertyChangedEventHandler PropertyChanged;
|
|
|
-
|
|
|
+
|
|
|
public MainPage()
|
|
|
{
|
|
|
InitializeComponent();
|
|
@@ -163,7 +163,7 @@ namespace compdfkit
|
|
|
|
|
|
private void PdfAnnotationControl_ClearAnnotationBar(object sender, EventArgs e)
|
|
|
{
|
|
|
- AnnotationBarControl.ClearAllToolState();
|
|
|
+ AnnotationBarControl.ClearAllToolState();
|
|
|
}
|
|
|
|
|
|
#region Load Document
|
|
@@ -736,6 +736,32 @@ namespace compdfkit
|
|
|
|
|
|
#region UI Action
|
|
|
|
|
|
+ public void SaveAsFile()
|
|
|
+ {
|
|
|
+ {
|
|
|
+ if (pdfViewControl != null && pdfViewControl.PDFView != null && pdfViewControl.PDFView.Document != null)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ CPDFDocument pdfDoc = pdfViewControl.PDFView.Document;
|
|
|
+ SaveFileDialog saveDialog = new SaveFileDialog();
|
|
|
+ saveDialog.Filter = "(*.pdf)|*.pdf";
|
|
|
+ saveDialog.DefaultExt = ".pdf";
|
|
|
+ saveDialog.OverwritePrompt = true;
|
|
|
+
|
|
|
+ if (saveDialog.ShowDialog() == true)
|
|
|
+ {
|
|
|
+ pdfDoc.WriteToFilePath(saveDialog.FileName);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
public void SaveFile()
|
|
|
{
|
|
|
if (pdfViewControl != null && pdfViewControl.PDFView != null && pdfViewControl.PDFView.Document != null)
|
|
@@ -745,6 +771,7 @@ namespace compdfkit
|
|
|
CPDFDocument pdfDoc = pdfViewControl.PDFView.Document;
|
|
|
if (pdfDoc.WriteToLoadedPath())
|
|
|
{
|
|
|
+ pdfViewControl.PDFView.UndoManager.CanSave = false;
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -765,26 +792,28 @@ namespace compdfkit
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void OpenFile_Click(object sender, RoutedEventArgs e)
|
|
|
+ public void OpenFile()
|
|
|
{
|
|
|
try
|
|
|
{
|
|
|
string filePath = CommonHelper.GetFilePathOrEmpty();
|
|
|
- if ((bool)CheckExistBeforeOpenFileEvent?.Invoke(filePath))
|
|
|
- {
|
|
|
- return;
|
|
|
- }
|
|
|
+ string oldFilePath = pdfViewControl.PDFView.Document.FilePath;
|
|
|
+
|
|
|
if (!string.IsNullOrEmpty(filePath) && pdfViewControl != null)
|
|
|
{
|
|
|
if (pdfViewControl.PDFView != null && pdfViewControl.PDFView.Document != null)
|
|
|
{
|
|
|
- string oldFilePath = pdfViewControl.PDFView.Document.FilePath;
|
|
|
if (oldFilePath.ToLower() == filePath.ToLower())
|
|
|
{
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if ((bool)CheckExistBeforeOpenFileEvent?.Invoke(new string[]{ filePath, oldFilePath}))
|
|
|
+ {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
passwordViewer = new PDFViewControl();
|
|
|
passwordViewer.PDFView.InitDocument(filePath);
|
|
|
if (passwordViewer.PDFView.Document == null)
|
|
@@ -812,12 +841,16 @@ namespace compdfkit
|
|
|
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ private void OpenFile_Click(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ OpenFile();
|
|
|
+ }
|
|
|
#endregion
|
|
|
|
|
|
private void SaveFileBtn_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
SaveFile();
|
|
|
- pdfViewControl.PDFView.UndoManager.CanSave = false;
|
|
|
}
|
|
|
|
|
|
#region ToolPanel
|
|
@@ -980,6 +1013,7 @@ namespace compdfkit
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// Actions performed when switching modes:
|
|
|
/// Separated into actions performed upon entering and exiting the mode.
|
|
@@ -996,8 +1030,9 @@ namespace compdfkit
|
|
|
switch (currentMode)
|
|
|
{
|
|
|
case "Viewer":
|
|
|
-
|
|
|
+ pdfViewControl.PDFView?.SetMouseMode(MouseModes.Viewer);
|
|
|
break;
|
|
|
+
|
|
|
//Behavior when exit Edit mode
|
|
|
// Clear the ToolBar
|
|
|
// Collapse the ToolBar
|
|
@@ -1009,7 +1044,6 @@ namespace compdfkit
|
|
|
pdfAnnotationControl.ClearPanel();
|
|
|
ExpandRightPropertyPanel(null, Visibility.Collapsed);
|
|
|
pdfViewControl.PDFView?.SetMouseMode(MouseModes.PanTool);
|
|
|
-
|
|
|
break;
|
|
|
|
|
|
// Behavior when exit Edit mode:
|
|
@@ -1028,6 +1062,7 @@ namespace compdfkit
|
|
|
|
|
|
pdfViewControl.PDFView.PDFEditActiveHandler -= PDFView_PDFEditActiveHandler;
|
|
|
ExpandRightPropertyPanel(null, Visibility.Collapsed);
|
|
|
+ ClearPDFEditState();
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
@@ -1038,6 +1073,7 @@ namespace compdfkit
|
|
|
if ((string)item.Content == "Viewer")
|
|
|
{
|
|
|
ToolBarContainer.Visibility = Visibility.Collapsed;
|
|
|
+ pdfViewControl.PDFView.SetMouseMode(MouseModes.Viewer);
|
|
|
}
|
|
|
|
|
|
// Behavior when switching to Annotation mode:
|
|
@@ -1047,6 +1083,7 @@ namespace compdfkit
|
|
|
{
|
|
|
ToolBarContainer.Visibility = Visibility.Visible;
|
|
|
AnnotationBarControl.Visibility = Visibility.Visible;
|
|
|
+ pdfViewControl.PDFView.SetMouseMode(MouseModes.PanTool);
|
|
|
}
|
|
|
|
|
|
// Behavior when switching to Edit mode:
|
|
@@ -1092,25 +1129,10 @@ namespace compdfkit
|
|
|
|
|
|
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);
|
|
|
- }
|
|
|
- }
|
|
|
+ pdfAnnotationControl.AnnotationCancel();
|
|
|
+ ExpandRightPropertyPanel(null, Visibility.Collapsed);
|
|
|
+ RightPanelButton.IsChecked = false;
|
|
|
+ ViewSettingBtn.IsChecked = false;
|
|
|
}
|
|
|
|
|
|
private void AnnotationBarControl_AnnotationPropertyChanged(object sender, CPDFAnnotationType e)
|
|
@@ -1128,7 +1150,7 @@ namespace compdfkit
|
|
|
AnnotationBarControl.AnnotationPropertyChanged -= AnnotationBarControl_AnnotationPropertyChanged;
|
|
|
AnnotationBarControl.AnnotationCancel -= AnnotationBarControl_AnnotationCancel;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
private void PDFTextEditButton_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
ToggleButton senderBtn = sender as ToggleButton;
|
|
@@ -1196,7 +1218,7 @@ namespace compdfkit
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
private void UndoBtn_Click(object sender, RoutedEventArgs e)
|
|
|
{
|
|
|
if (pdfViewControl != null && pdfViewControl.PDFView != null)
|
|
@@ -1222,12 +1244,39 @@ namespace compdfkit
|
|
|
|
|
|
public void SetPDFViewer(PDFViewControl newPdfViewer)
|
|
|
{
|
|
|
-
|
|
|
- if(newPdfViewer!=null)
|
|
|
+
|
|
|
+ if (newPdfViewer != null)
|
|
|
{
|
|
|
pdfViewControl = newPdfViewer;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void CPDFTitleBarControl_Loaded(object sender, RoutedEventArgs e)
|
|
|
+ {
|
|
|
+ CPDFTitleBarControl.OpenFileEvent -= CPDFTitleBarControl_OpenFileEvent;
|
|
|
+ CPDFTitleBarControl.OpenFileEvent += CPDFTitleBarControl_OpenFileEvent;
|
|
|
+
|
|
|
+ CPDFTitleBarControl.SaveAsFileEvent -= CPDFTitleBarControl_SaveAsFileEvent;
|
|
|
+ CPDFTitleBarControl.SaveAsFileEvent += CPDFTitleBarControl_SaveAsFileEvent;
|
|
|
+
|
|
|
+ CPDFTitleBarControl.SaveFileEvent -= CPDFTitleBarControl_SaveFileEvent;
|
|
|
+ CPDFTitleBarControl.SaveFileEvent += CPDFTitleBarControl_SaveFileEvent; ;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void CPDFTitleBarControl_SaveFileEvent(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ SaveFile();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void CPDFTitleBarControl_SaveAsFileEvent(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ SaveAsFile();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void CPDFTitleBarControl_OpenFileEvent(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ OpenFile();
|
|
|
}
|
|
|
}
|
|
|
}
|