MainPage.xaml.cs 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261
  1. using ComPDFKit.PDFAnnotation;
  2. using ComPDFKit.PDFAnnotation.Form;
  3. using ComPDFKit.PDFDocument;
  4. using ComPDFKit.Tool;
  5. using ComPDFKit.Tool.Help;
  6. using ComPDFKit.Controls.Annotation.PDFAnnotationPanel.PDFAnnotationUI;
  7. using ComPDFKit.Controls.Helper;
  8. using ComPDFKit.Controls.Measure;
  9. using ComPDFKit.Controls.PDFControl;
  10. using ComPDFKit.Controls.PDFView;
  11. using ComPDFKitViewer;
  12. using ComPDFKitViewer.Widget;
  13. using Microsoft.Win32;
  14. using System;
  15. using System.Collections.Generic;
  16. using System.ComponentModel;
  17. using System.Runtime.CompilerServices;
  18. using System.Windows;
  19. using System.Windows.Controls;
  20. using System.Windows.Controls.Primitives;
  21. using System.Windows.Input;
  22. using ComPDFKit.Controls.PDFControlUI;
  23. using ComPDFKit.Controls.Snapshot;
  24. using System.Windows.Media;
  25. namespace PDFViewer
  26. {
  27. public partial class MainPage : UserControl, INotifyPropertyChanged
  28. {
  29. #region Properties
  30. private string currentMode = "Viewer";
  31. private double[] zoomLevelList = { 1f, 8f, 12f, 25, 33f, 50, 66f, 75, 100, 125, 150, 200, 300, 400, 600, 800, 1000 };
  32. private PDFViewControl viewControl;
  33. private PDFViewControl passwordViewer;
  34. private RegularViewerControl regularViewerControl = new RegularViewerControl();
  35. private ComparisonControl comparisonControl = new ComparisonControl();
  36. private AnnotationControl annotationControl = new AnnotationControl();
  37. private FormControl formControl = new FormControl();
  38. private ContentEditControl contentEditControl = new ContentEditControl();
  39. private PageEditControl pageEditControl = new PageEditControl();
  40. private MeasureControl measureControl = new MeasureControl();
  41. private DigitalSignatureControl digitalSignatureControl = new DigitalSignatureControl();
  42. private SignatureStatusBarControl signatureStatusBarControl = new SignatureStatusBarControl();
  43. private CPDFBOTABarControl botaBarControl = new CPDFBOTABarControl();
  44. private CPDFDisplaySettingsControl displaySettingsControl = new CPDFDisplaySettingsControl();
  45. private PanelState panelState = PanelState.GetInstance();
  46. public event EventHandler FileChangeEvent;
  47. public event Func<string[], bool> CheckExistBeforeOpenFileEvent;
  48. public event EventHandler<string> AfterSaveAsFileEvent;
  49. public event PropertyChangedEventHandler PropertyChanged;
  50. private bool _canSave = false;
  51. /// <summary>
  52. /// Whether the save operation can be performed.
  53. /// </summary>
  54. public bool CanSave
  55. {
  56. get => _canSave;
  57. set
  58. {
  59. _canSave = value;
  60. OnPropertyChanged();
  61. }
  62. }
  63. public PDFViewControl GetPDFViewControl()
  64. {
  65. return viewControl;
  66. }
  67. /// <summary>
  68. /// Whether the left panel is expanded.
  69. /// </summary>
  70. public bool LeftToolPanelButtonIsChecked
  71. {
  72. get => panelState.IsLeftPanelExpand;
  73. set
  74. {
  75. panelState.IsLeftPanelExpand = value;
  76. OnPropertyChanged();
  77. }
  78. }
  79. /// <summary>
  80. /// Whether the right panel is expanded.
  81. /// </summary>
  82. public bool RightToolPanelButtonIsChecked
  83. {
  84. get => panelState.RightPanel == PanelState.RightPanelState.PropertyPanel;
  85. set
  86. {
  87. panelState.RightPanel = (value) ? PanelState.RightPanelState.PropertyPanel : PanelState.RightPanelState.None;
  88. OnPropertyChanged();
  89. }
  90. }
  91. /// <summary>
  92. /// Whether the view setting panel is expanded.
  93. /// </summary>
  94. public bool ViewSettingBtnIsChecked
  95. {
  96. get
  97. {
  98. return (panelState.RightPanel == PanelState.RightPanelState.ViewSettings);
  99. }
  100. set
  101. {
  102. panelState.RightPanel = (value) ? PanelState.RightPanelState.ViewSettings : PanelState.RightPanelState.None;
  103. OnPropertyChanged();
  104. }
  105. }
  106. private Visibility _notDocsEditorVisible = Visibility.Visible;
  107. /// <summary>
  108. /// Whether the Document Editor panel is visible.
  109. /// </summary>
  110. public Visibility NotDocsEditorVisible
  111. {
  112. get => _notDocsEditorVisible;
  113. set
  114. {
  115. _notDocsEditorVisible = value;
  116. OnPropertyChanged();
  117. }
  118. }
  119. public MainPage()
  120. {
  121. InitializeComponent();
  122. this.DataContext = this;
  123. }
  124. #endregion
  125. #region Load document
  126. /// <summary>
  127. /// Initialize the PDFViewer and load the PDF file.
  128. /// </summary>
  129. /// <param name="filePath"></param>
  130. public void InitWithFilePath(string filePath)
  131. {
  132. viewControl = new PDFViewControl();
  133. viewControl.InitDocument(filePath);
  134. }
  135. public void InitWithDocument(CPDFDocument document)
  136. {
  137. viewControl = new PDFViewControl();
  138. viewControl.GetCPDFViewer().InitDoc(document);
  139. }
  140. /// <summary>
  141. /// Init controls and set events.
  142. /// </summary>
  143. private void LoadDocument()
  144. {
  145. if (viewControl != null && viewControl.PDFViewTool != null)
  146. {
  147. CPDFViewer pdfviewer = viewControl.PDFViewTool.GetCPDFViewer();
  148. CPDFDocument pdfDoc = pdfviewer?.GetDocument();
  149. if (pdfDoc == null)
  150. {
  151. return;
  152. }
  153. SizeChanged -= MainPage_SizeChanged;
  154. SizeChanged += MainPage_SizeChanged;
  155. PasswordUI.Closed -= PasswordUI_Closed;
  156. PasswordUI.Canceled -= PasswordUI_Canceled;
  157. PasswordUI.Confirmed -= PasswordUI_Confirmed;
  158. PasswordUI.Closed += PasswordUI_Closed;
  159. PasswordUI.Canceled += PasswordUI_Canceled;
  160. PasswordUI.Confirmed += PasswordUI_Confirmed;
  161. CPDFSaclingControl.InitWithPDFViewer(viewControl);
  162. ModeComboBox.SelectedIndex = 0;
  163. CPDFSaclingControl.SetZoomTextBoxText(string.Format("{0}", (int)(pdfviewer.GetZoom() * 100)));
  164. botaBarControl.AddBOTAContent(new[] { BOTATools.Thumbnail, BOTATools.Outline, BOTATools.Bookmark, BOTATools.Annotation, BOTATools.Search });
  165. botaBarControl.ViewCertificateEvent -= digitalSignatureControl.ViewCertificateEvent;
  166. botaBarControl.ViewCertificateEvent += digitalSignatureControl.ViewCertificateEvent;
  167. botaBarControl.ViewSignatureEvent -= digitalSignatureControl.ViewSignatureEvent;
  168. botaBarControl.ViewSignatureEvent += digitalSignatureControl.ViewSignatureEvent;
  169. botaBarControl.DeleteSignatureEvent -= BotaBarControl_DeleteSignatureEvent;
  170. botaBarControl.DeleteSignatureEvent += BotaBarControl_DeleteSignatureEvent;
  171. botaBarControl.SelectBotaTool(BOTATools.Thumbnail);
  172. ViewSettingBtn.IsChecked = false;
  173. botaBarControl.InitWithPDFViewer(viewControl);
  174. botaBarControl.SelectBotaTool(BOTATools.Thumbnail);
  175. displaySettingsControl.InitWithPDFViewer(viewControl);
  176. LoadCustomControl();
  177. panelState.PropertyChanged -= PanelState_PropertyChanged;
  178. panelState.PropertyChanged += PanelState_PropertyChanged;
  179. displaySettingsControl.SplitModeChanged -= DisplaySettingsControl_SplitModeChanged;
  180. displaySettingsControl.SplitModeChanged += DisplaySettingsControl_SplitModeChanged;
  181. viewControl.PDFToolManager.MouseLeftButtonDownHandler -= PDFToolManager_MouseLeftButtonDownHandler;
  182. viewControl.PDFToolManager.MouseLeftButtonDownHandler += PDFToolManager_MouseLeftButtonDownHandler;
  183. pdfviewer.SetLinkHighlight(Properties.Settings.Default.IsHighlightLinkArea);
  184. pdfviewer.SetFormFieldHighlight(Properties.Settings.Default.IsHighlightFormArea);
  185. pdfviewer.GetDocument().FontSubset = Properties.Settings.Default.FontSubsetting;
  186. pdfviewer.ScrollStride = Properties.Settings.Default.Divisor;
  187. }
  188. }
  189. private void BotaBarControl_DeleteSignatureEvent(object sender, EventArgs e)
  190. {
  191. viewControl.PDFViewTool.IsDocumentModified = true;
  192. DigitalSignatureControl_OnSignatureStatusChanged(sender, e);
  193. }
  194. private void PDFToolManager_MouseLeftButtonDownHandler(object sender, MouseEventObject e)
  195. {
  196. if (e.annotType == C_ANNOTATION_TYPE.C_ANNOTATION_WIDGET)
  197. {
  198. BaseWidget baseWidget = viewControl.GetCacheHitTestWidget();
  199. if (baseWidget != null)
  200. {
  201. AnnotParam annotParam = ParamConverter.CPDFDataConverterToAnnotParam(
  202. viewControl.PDFViewTool.GetCPDFViewer().GetDocument(),
  203. baseWidget.GetAnnotData().PageIndex,
  204. baseWidget.GetAnnotData().Annot);
  205. if ((annotParam as WidgetParm).WidgetType == C_WIDGET_TYPE.WIDGET_SIGNATUREFIELDS)
  206. {
  207. var sigWidget = baseWidget.GetAnnotData().Annot as CPDFSignatureWidget;
  208. if(sigWidget == null)
  209. {
  210. return;
  211. }
  212. var sig = sigWidget.GetSignature(viewControl.GetCPDFViewer().GetDocument());
  213. if (sigWidget.IsSigned() && sig != null && sig.SignerList.Count > 0)
  214. {
  215. return;
  216. }
  217. if (currentMode == "Annotation")
  218. {
  219. CPDFSignatureUI signatureProperty = new CPDFSignatureUI();
  220. signatureProperty.SetFormProperty(annotParam, viewControl, baseWidget.GetAnnotData().Annot);
  221. panelState.RightPanel = PanelState.RightPanelState.PropertyPanel;
  222. annotationControl.SetPropertyContainer(signatureProperty);
  223. }
  224. else if (currentMode == "Viewer")
  225. {
  226. CPDFSignatureUI signatureProperty = new CPDFSignatureUI();
  227. signatureProperty.SetFormProperty(annotParam, viewControl, baseWidget.GetAnnotData().Annot);
  228. panelState.RightPanel = PanelState.RightPanelState.PropertyPanel;
  229. regularViewerControl.SetPropertyContainer(signatureProperty);
  230. }
  231. }
  232. }
  233. }
  234. }
  235. private void MainPage_SizeChanged(object sender, SizeChangedEventArgs e)
  236. {
  237. viewControl.WindowSizeChange();
  238. }
  239. private void DisplaySettingsControl_SplitModeChanged(object sender, ComPDFKit.Controls.PDFControlUI.CPDFViewModeUI.SplitMode e)
  240. {
  241. viewControl.SetSplitViewMode(e);
  242. }
  243. /// <summary>
  244. /// When the RightPanel state is changed, decide whether to display the ViewSettingPanel or RightToolPanel.
  245. /// </summary>
  246. /// <param name="sender"></param>
  247. /// <param name="e"></param>
  248. private void PanelState_PropertyChanged(object sender, PropertyChangedEventArgs e)
  249. {
  250. if (e.PropertyName == "RightPanel")
  251. {
  252. OnPropertyChanged(nameof(RightToolPanelButtonIsChecked));
  253. OnPropertyChanged(nameof(ViewSettingBtnIsChecked));
  254. }
  255. }
  256. public void SetFeatureMode(string featureName)
  257. {
  258. if (!string.IsNullOrEmpty(featureName))
  259. {
  260. switch (featureName)
  261. {
  262. case "Viewer":
  263. ModeComboBox.SelectedIndex = 0;
  264. break;
  265. case "Annotations":
  266. ModeComboBox.SelectedIndex = 1;
  267. break;
  268. case "Forms":
  269. ModeComboBox.SelectedIndex = 2;
  270. break;
  271. case "Signatures":
  272. ModeComboBox.SelectedIndex = 5;
  273. break;
  274. case "Document Editor":
  275. ModeComboBox.SelectedIndex = 4;
  276. break;
  277. case "Content Editor":
  278. ModeComboBox.SelectedIndex = 3;
  279. break;
  280. case "Measurement":
  281. ModeComboBox.SelectedIndex = 6;
  282. break;
  283. case "Compare Documents":
  284. ModeComboBox.SelectedIndex = 7;
  285. break;
  286. default:
  287. break;
  288. }
  289. }
  290. }
  291. internal void SetPDFViewer(PDFViewControl newPdfViewer)
  292. {
  293. if (newPdfViewer != null)
  294. {
  295. viewControl = newPdfViewer;
  296. }
  297. }
  298. #endregion
  299. #region Password
  300. /// <summary>
  301. /// Event handler for confirming the password. Open the PDF file if the password is correct.
  302. /// </summary>
  303. /// <param name="sender"></param>
  304. /// <param name="e"></param>
  305. private void PasswordUI_Confirmed(object sender, string e)
  306. {
  307. if (passwordViewer != null && passwordViewer.PDFViewTool != null)
  308. {
  309. CPDFViewer pdfviewer = passwordViewer.PDFViewTool.GetCPDFViewer();
  310. CPDFDocument pdfDoc = pdfviewer?.GetDocument();
  311. if (pdfDoc == null)
  312. {
  313. return;
  314. }
  315. pdfDoc.UnlockWithPassword(e);
  316. if (pdfDoc.IsLocked == false)
  317. {
  318. PasswordUI.SetShowError("", Visibility.Collapsed);
  319. PasswordUI.ClearPassword();
  320. PasswordUI.Visibility = Visibility.Collapsed;
  321. PopupBorder.Visibility = Visibility.Collapsed;
  322. viewControl = passwordViewer;
  323. LoadDocument();
  324. viewControl.PDFViewTool.GetCPDFViewer().UpdateVirtualNodes();
  325. FileChangeEvent?.Invoke(null, EventArgs.Empty);
  326. }
  327. else
  328. {
  329. PasswordUI.SetShowError("Wrong Password", Visibility.Visible);
  330. }
  331. }
  332. }
  333. /// <summary>
  334. /// Event handler for canceling password input.
  335. /// </summary>
  336. /// <param name="sender"></param>
  337. /// <param name="e"></param>
  338. private void PasswordUI_Canceled(object sender, EventArgs e)
  339. {
  340. PopupBorder.Visibility = Visibility.Collapsed;
  341. PasswordUI.Visibility = Visibility.Collapsed;
  342. }
  343. /// <summary>
  344. /// Event handler for closing the password input dialog.
  345. /// </summary>
  346. /// <param name="sender"></param>
  347. /// <param name="e"></param>
  348. private void PasswordUI_Closed(object sender, EventArgs e)
  349. {
  350. PopupBorder.Visibility = Visibility.Collapsed;
  351. PasswordUI.Visibility = Visibility.Collapsed;
  352. }
  353. #endregion
  354. #region Load custom control
  355. /// <summary>
  356. /// Load the custom controls for the PDF viewer.
  357. /// </summary>
  358. private void LoadCustomControl()
  359. {
  360. regularViewerControl.PdfViewControl = viewControl;
  361. regularViewerControl.OnCanSaveChanged -= ControlOnCanSaveChanged;
  362. regularViewerControl.OnCanSaveChanged += ControlOnCanSaveChanged;
  363. regularViewerControl.InitWithPDFViewer(viewControl);
  364. //regularViewerControl.PdfViewControl.PDFView.SetMouseMode(MouseModes.Viewer);
  365. regularViewerControl.SetBOTAContainer(null);
  366. regularViewerControl.SetBOTAContainer(botaBarControl);
  367. regularViewerControl.SetDisplaySettingsControl(displaySettingsControl);
  368. PDFGrid.Child = regularViewerControl;
  369. SignatureHelper.InitEffectiveSignatureList(viewControl.GetCPDFViewer().GetDocument());
  370. SignatureHelper.VerifySignatureList(viewControl.GetCPDFViewer().GetDocument());
  371. signatureStatusBarControl.SetStatus(SignatureHelper.SignatureList);
  372. viewControl.PDFToolManager.SetToolType(ToolType.Viewer);
  373. viewControl.PDFViewTool.DocumentModifiedChanged -= PDFViewTool_DocumentModifiedChanged;
  374. viewControl.PDFViewTool.DocumentModifiedChanged += PDFViewTool_DocumentModifiedChanged;
  375. }
  376. /// <summary>
  377. /// Event handler for the Loaded event of the MainPage.
  378. /// </summary>
  379. /// <param name="sender"></param>
  380. /// <param name="e"></param>
  381. private void MainPage_Loaded(object sender, RoutedEventArgs e)
  382. {
  383. LoadDocument();
  384. }
  385. #endregion
  386. #region Event handle
  387. private void PdfViewer_InfoChanged(object sender, KeyValuePair<string, object> e)
  388. {
  389. if (e.Key == "Zoom")
  390. {
  391. CPDFSaclingControl.SetZoomTextBoxText(string.Format("{0}", (int)((double)e.Value * 100)));
  392. }
  393. }
  394. /// <summary>
  395. /// Command for opening a PDF file saved with a signature.
  396. /// </summary>
  397. /// <param name="sender"></param>
  398. /// <param name="e"></param>
  399. private void DigitalSignatureControl_AfterFillSignature(object sender, string e)
  400. {
  401. OpenFile(e);
  402. }
  403. /// <summary>
  404. /// Event handler for deleting a signature from the BOTA. Set the CanSave property to true and update the signature status.
  405. /// </summary>
  406. /// <param name="sender"></param>
  407. /// <param name="e"></param>
  408. private void BotaControlOnDeleteSignatureEvent(object sender, EventArgs e)
  409. {
  410. DigitalSignatureControl_OnSignatureStatusChanged(sender, e);
  411. }
  412. /// <summary>
  413. /// Event handler for updating a signature. Update the signature status.
  414. /// </summary>
  415. /// <param name="sender"></param>
  416. /// <param name="e"></param>
  417. private void DigitalSignatureControl_OnSignatureStatusChanged(object sender, EventArgs e)
  418. {
  419. SignatureHelper.InitEffectiveSignatureList(viewControl.GetCPDFViewer().GetDocument());
  420. SignatureHelper.VerifySignatureList(viewControl.GetCPDFViewer().GetDocument());
  421. signatureStatusBarControl.SetStatus(SignatureHelper.SignatureList);
  422. botaBarControl.LoadSignatureList();
  423. }
  424. /// <summary>
  425. /// Event handler for updating the CanSave property.
  426. /// </summary>
  427. /// <param name="sender"></param>
  428. /// <param name="e"></param>
  429. private void DigitalSignatureControl_OnCanSaveChanged(object sender, bool e)
  430. {
  431. this.CanSave = e;
  432. }
  433. #endregion
  434. #region Private Command Event
  435. /// <summary>
  436. /// Close all the expanded panels.
  437. /// </summary>
  438. private void ClearPanelState()
  439. {
  440. LeftToolPanelButtonIsChecked = false;
  441. ViewSettingBtnIsChecked = false;
  442. RightToolPanelButtonIsChecked = false;
  443. }
  444. private void LeftToolPanelButton_Click(object sender, RoutedEventArgs e)
  445. {
  446. panelState.IsLeftPanelExpand = (sender as ToggleButton).IsChecked == true;
  447. }
  448. private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
  449. {
  450. var item = (sender as ComboBox).SelectedItem as ComboBoxItem;
  451. if ((string)item.Tag == currentMode)
  452. {
  453. return;
  454. }
  455. if((string)item.Tag == "Viewer" || (string)item.Tag == "Annotation")
  456. {
  457. SnapshotButton.Visibility = Visibility.Visible;
  458. }
  459. else
  460. {
  461. SnapshotButton.Visibility = Visibility.Collapsed;
  462. }
  463. ClearPanelState();
  464. if (ViewSettingBtn != null)
  465. ViewSettingBtn.IsChecked = false;
  466. if (RightPanelButton != null)
  467. RightPanelButton.IsChecked = false;
  468. if (viewControl != null && viewControl.GetCPDFViewer() != null)
  469. {
  470. // pdfViewer.PDFView.ToolManager.EnableClickCreate = false;
  471. }
  472. if (currentMode == "Viewer")
  473. {
  474. regularViewerControl.ClearViewerControl();
  475. }
  476. else if (currentMode == "Annotation")
  477. {
  478. annotationControl.UnloadEvent();
  479. annotationControl.ClearViewerControl();
  480. annotationControl.PDFAnnotationControl.AnnotationCancel();
  481. viewControl.SetIsShowStampMouse(false);
  482. }
  483. else if (currentMode == "Form")
  484. {
  485. formControl.UnloadEvent();
  486. formControl.ClearViewerControl();
  487. viewControl.SetIsShowStampMouse(false);
  488. viewControl.GetCPDFViewer().SetFormFieldHighlight(Properties.Settings.Default.IsHighlightFormArea);
  489. }
  490. else if (currentMode == "Content Editor")
  491. {
  492. botaBarControl.ReplaceFunctionEnabled = false;
  493. displaySettingsControl.SetVisibilityWhenContentEdit(Visibility.Visible);
  494. contentEditControl.ClearViewerControl();
  495. contentEditControl.ClearPDFEditState();
  496. }
  497. else if (currentMode == "Document Editor")
  498. {
  499. pageEditControl.ExitPageEdit -= PageEditControl_ExitPageEdit;
  500. NotDocsEditorVisible = Visibility.Visible;
  501. botaBarControl.LoadThumbnail();
  502. }
  503. else if (currentMode == "Digital Signature")
  504. {
  505. RightPanelButton.Visibility = Visibility.Visible;
  506. digitalSignatureControl.ClearViewerControl();
  507. botaBarControl.RemoveBOTAContent(BOTATools.Signature);
  508. digitalSignatureControl.UnloadEvent();
  509. }
  510. else if (currentMode == "Measurement")
  511. {
  512. RightPanelButton.Visibility = Visibility.Visible;
  513. GetPDFViewControl().PDFViewTool.GetDefaultSettingParam().IsOpenMeasure = false;
  514. measureControl.ClearAllToolState();
  515. measureControl.ClearViewerControl();
  516. measureControl.UnloadEvent();
  517. }
  518. else if(currentMode == "Comparison")
  519. {
  520. comparisonControl.ClearViewerControl();
  521. }
  522. if (item.Tag as string == "Viewer")
  523. {
  524. regularViewerControl.PdfViewControl = viewControl;
  525. regularViewerControl.InitWithPDFViewer(viewControl);
  526. if (regularViewerControl.PdfViewControl != null)
  527. {
  528. PDFGrid.Child = regularViewerControl;
  529. viewControl.SetToolType(ToolType.Viewer);
  530. regularViewerControl.OnCanSaveChanged -= ControlOnCanSaveChanged;
  531. regularViewerControl.OnCanSaveChanged += ControlOnCanSaveChanged;
  532. regularViewerControl.SetBOTAContainer(botaBarControl);
  533. regularViewerControl.SetDisplaySettingsControl(displaySettingsControl);
  534. }
  535. }
  536. else if (item.Tag as string == "Annotation")
  537. {
  538. annotationControl.SetToolBarContainerVisibility(Visibility.Visible);
  539. annotationControl.PDFViewControl = viewControl;
  540. annotationControl.InitWithPDFViewer(viewControl);
  541. if (annotationControl.PDFViewControl != null)
  542. {
  543. PDFGrid.Child = annotationControl;
  544. viewControl.SetToolType(ToolType.Pan);
  545. annotationControl.OnCanSaveChanged -= ControlOnCanSaveChanged;
  546. annotationControl.OnCanSaveChanged += ControlOnCanSaveChanged;
  547. annotationControl.OnAnnotEditHandler -= PdfFormControlRefreshAnnotList;
  548. annotationControl.OnAnnotEditHandler += PdfFormControlRefreshAnnotList;
  549. annotationControl.InitialPDFViewControl(annotationControl.PDFViewControl);
  550. annotationControl.SetBOTAContainer(botaBarControl);
  551. annotationControl.SetDisplaySettingsControl(displaySettingsControl);
  552. }
  553. }
  554. else if (item.Tag as string == "Form")
  555. {
  556. formControl.SetToolBarContainerVisibility(Visibility.Visible);
  557. formControl.PdfViewControl = viewControl;
  558. formControl.InitWithPDFViewer(viewControl);
  559. if (formControl.PdfViewControl != null)
  560. {
  561. PDFGrid.Child = formControl;
  562. viewControl.SetToolType(ToolType.WidgetEdit);
  563. formControl.OnCanSaveChanged -= ControlOnCanSaveChanged;
  564. formControl.OnCanSaveChanged += ControlOnCanSaveChanged;
  565. formControl.OnAnnotEditHandler -= PdfFormControlRefreshAnnotList;
  566. formControl.OnAnnotEditHandler += PdfFormControlRefreshAnnotList;
  567. formControl.SetBOTAContainer(botaBarControl);
  568. formControl.InitialPDFViewControl(formControl.PdfViewControl);
  569. formControl.SetDisplaySettingsControl(displaySettingsControl);
  570. viewControl.GetCPDFViewer().SetFormFieldHighlight(true);
  571. }
  572. }
  573. else if (item.Tag as string == "Content Editor")
  574. {
  575. contentEditControl.PdfViewControl = viewControl;
  576. contentEditControl.InitWithPDFViewer(viewControl);
  577. displaySettingsControl.SetVisibilityWhenContentEdit(Visibility.Collapsed);
  578. if (contentEditControl.pdfContentEditControl != null && contentEditControl.PdfViewControl != null)
  579. {
  580. PDFGrid.Child = contentEditControl;
  581. viewControl.SetToolType(ToolType.ContentEdit);
  582. contentEditControl.OnCanSaveChanged -= ControlOnCanSaveChanged;
  583. contentEditControl.OnCanSaveChanged += ControlOnCanSaveChanged;
  584. contentEditControl.SetBOTAContainer(botaBarControl);
  585. contentEditControl.SetDisplaySettingsControl(displaySettingsControl);
  586. contentEditControl.PdfViewControl.SetSplitViewMode(CPDFViewModeUI.SplitMode.None);
  587. }
  588. }
  589. else if (item.Tag as string == "Document Editor")
  590. {
  591. pageEditControl.PDFViewControl = viewControl;
  592. pageEditControl.ExitPageEdit += PageEditControl_ExitPageEdit;
  593. pageEditControl.OnCanSaveChanged -= ControlOnCanSaveChanged;
  594. pageEditControl.OnCanSaveChanged += ControlOnCanSaveChanged;
  595. PDFGrid.Child = pageEditControl;
  596. NotDocsEditorVisible = Visibility.Collapsed;
  597. }
  598. else if (item.Tag as string == "Digital Signature")
  599. {
  600. if (digitalSignatureControl.PDFViewControl != null)
  601. {
  602. RightPanelButton.Visibility = Visibility.Collapsed;
  603. PDFGrid.Child = digitalSignatureControl;
  604. viewControl.PDFToolManager.SetToolType(ToolType.Viewer);
  605. digitalSignatureControl.PDFViewControl = viewControl;
  606. botaBarControl.AddBOTAContent(BOTATools.Signature);
  607. digitalSignatureControl.InitWithPDFViewer(viewControl);
  608. digitalSignatureControl.SetBOTAContainer(botaBarControl);
  609. digitalSignatureControl.SetDisplaySettingsControl(displaySettingsControl);
  610. digitalSignatureControl.SetSignatureStatusBarControl(signatureStatusBarControl);
  611. signatureStatusBarControl.OnViewSignatureButtonClicked -= ViewAllSignatures;
  612. signatureStatusBarControl.OnViewSignatureButtonClicked += ViewAllSignatures;
  613. digitalSignatureControl.OnCanSaveChanged -= DigitalSignatureControl_OnCanSaveChanged;
  614. digitalSignatureControl.OnCanSaveChanged += DigitalSignatureControl_OnCanSaveChanged;
  615. digitalSignatureControl.SignatureStatusChanged -= DigitalSignatureControl_OnSignatureStatusChanged;
  616. digitalSignatureControl.SignatureStatusChanged += DigitalSignatureControl_OnSignatureStatusChanged;
  617. digitalSignatureControl.AfterFillSignature -= DigitalSignatureControl_AfterFillSignature;
  618. digitalSignatureControl.AfterFillSignature += DigitalSignatureControl_AfterFillSignature;
  619. }
  620. }
  621. else if (item.Tag as string == "Measurement")
  622. {
  623. if (contentEditControl.pdfContentEditControl != null && viewControl != null)
  624. {
  625. RightPanelButton.Visibility = Visibility.Visible;
  626. PDFGrid.Child = measureControl;
  627. viewControl.PDFToolManager.SetToolType(ToolType.Pan);
  628. viewControl.SetToolType(ToolType.Pan);
  629. measureControl.InitWithPDFViewer(viewControl);
  630. measureControl.SetBOTAContainer(botaBarControl);
  631. measureControl.ClearAllToolState();
  632. measureControl.SetSettingsControl(displaySettingsControl);
  633. GetPDFViewControl().PDFViewTool.GetDefaultSettingParam().IsOpenMeasure = true;
  634. measureControl.OnAnnotEditHandler -= PdfFormControlRefreshAnnotList;
  635. measureControl.OnAnnotEditHandler += PdfFormControlRefreshAnnotList;
  636. }
  637. }
  638. else if(item.Tag as string == "Comparison")
  639. {
  640. comparisonControl.PdfViewControl = viewControl;
  641. comparisonControl.InitWithPDFViewer(viewControl);
  642. if (comparisonControl.PdfViewControl != null)
  643. {
  644. PDFGrid.Child = comparisonControl;
  645. viewControl?.SetToolType(ToolType.Viewer);
  646. comparisonControl.OnCanSaveChanged -= ControlOnCanSaveChanged;
  647. comparisonControl.OnCanSaveChanged += ControlOnCanSaveChanged;
  648. comparisonControl.OnCompareStatusChanged -= ComparisonControl_OnCompareStatusChanged;
  649. comparisonControl.OnCompareStatusChanged += ComparisonControl_OnCompareStatusChanged;
  650. comparisonControl.SetBOTAContainer(botaBarControl);
  651. comparisonControl.SetDisplaySettingsControl(displaySettingsControl);
  652. }
  653. }
  654. currentMode = item.Tag as string;
  655. RightToolPanelButtonIsChecked = false;
  656. SnapshotButton.IsChecked = false;
  657. viewControl.FocusPDFViewTool.RemovePageSelectdUserControl();
  658. }
  659. private void ComparisonControl_OnCompareStatusChanged(object sender, UIElement e)
  660. {
  661. CompareResultGrid.Children.Clear();
  662. if (e != null)
  663. {
  664. CompareResultGrid.Children.Add(e);
  665. CompareResultGrid.Visibility = Visibility.Visible;
  666. }
  667. else
  668. {
  669. CompareResultGrid.Visibility = Visibility.Collapsed;
  670. }
  671. }
  672. /// <summary>
  673. /// Event handler for ViewSignatureBtn click event. Expand the bota control and select the Signature tool.
  674. /// </summary>
  675. /// <param name="sender"></param>
  676. /// <param name="e"></param>
  677. private void ViewAllSignatures(object sender, EventArgs e)
  678. {
  679. LeftToolPanelButton.IsChecked = true;
  680. botaBarControl.SelectBotaTool(BOTATools.Signature);
  681. }
  682. private void PageEditControl_ExitPageEdit(object sender, EventArgs e)
  683. {
  684. ModeComboBox.SelectedIndex = 0;
  685. }
  686. private void PageInfoBtn_Click(object sender, RoutedEventArgs e)
  687. {
  688. PasswordUI.Visibility = Visibility.Collapsed;
  689. FileInfoUI.Visibility = Visibility.Visible;
  690. FileInfoControl.InitWithPDFViewer(viewControl);
  691. PopupBorder.Visibility = Visibility.Visible;
  692. }
  693. private void ViewSettingBtn_Click(object sender, RoutedEventArgs e)
  694. {
  695. panelState.RightPanel =
  696. ((sender as ToggleButton).IsChecked == true) ?
  697. PanelState.RightPanelState.ViewSettings : PanelState.RightPanelState.None;
  698. }
  699. private void RightPanelButton_Click(object sender, RoutedEventArgs e)
  700. {
  701. panelState.RightPanel =
  702. ((sender as ToggleButton).IsChecked == true) ?
  703. PanelState.RightPanelState.PropertyPanel : PanelState.RightPanelState.None;
  704. }
  705. private void ExpandSearchBtn_Click(object sender, RoutedEventArgs e)
  706. {
  707. LeftToolPanelButton.IsChecked = true;
  708. botaBarControl.SelectBotaTool(BOTATools.Search);
  709. }
  710. private void CPDFTitleBarControl_Loaded(object sender, RoutedEventArgs e)
  711. {
  712. CPDFTitleBarControl.OpenFileEvent -= CPDFTitleBarControl_OpenFileEvent;
  713. CPDFTitleBarControl.OpenFileEvent += CPDFTitleBarControl_OpenFileEvent;
  714. CPDFTitleBarControl.SaveAsFileEvent -= CPDFTitleBarControl_SaveAsFileEvent;
  715. CPDFTitleBarControl.SaveAsFileEvent += CPDFTitleBarControl_SaveAsFileEvent;
  716. CPDFTitleBarControl.SaveFileEvent -= CPDFTitleBarControl_SaveFileEvent;
  717. CPDFTitleBarControl.SaveFileEvent += CPDFTitleBarControl_SaveFileEvent;
  718. CPDFTitleBarControl.FlattenEvent -= CPDFTitleBarControl_FlattenEvent;
  719. CPDFTitleBarControl.FlattenEvent += CPDFTitleBarControl_FlattenEvent;
  720. CPDFTitleBarControl.PrintEvent -= CPDFTitleBarControl_PrintEvent;
  721. CPDFTitleBarControl.PrintEvent += CPDFTitleBarControl_PrintEvent;
  722. }
  723. private void CPDFTitleBarControl_PrintEvent(object sender, EventArgs e)
  724. {
  725. PrinterDialog printerDialog = new PrinterDialog();
  726. printerDialog.Document = viewControl.GetCPDFViewer().GetDocument();
  727. printerDialog.ShowDialog();
  728. }
  729. private void CPDFTitleBarControl_FlattenEvent(object sender, EventArgs e)
  730. {
  731. if (viewControl != null && viewControl.GetCPDFViewer() != null && viewControl.GetCPDFViewer().GetDocument() != null)
  732. {
  733. string savePath = ComPDFKit.Controls.Helper.CommonHelper.GetGeneratePathOrEmpty("PDF files (*.pdf)|*.pdf", viewControl.GetCPDFViewer().GetDocument().FileName + "_Flattened.pdf");
  734. if (!string.IsNullOrEmpty(savePath))
  735. {
  736. if (CanSave)
  737. {
  738. SaveFile();
  739. viewControl.PDFViewTool.IsDocumentModified = false;
  740. }
  741. CPDFDocument document = CPDFDocument.InitWithFilePath(viewControl.GetCPDFViewer().GetDocument().FilePath);
  742. if (document?.WriteFlattenToFilePath(savePath) == true)
  743. {
  744. System.Diagnostics.Process.Start("Explorer.exe", "/select," + savePath);
  745. }
  746. document?.Release();
  747. }
  748. }
  749. }
  750. private void CPDFTitleBarControl_SaveFileEvent(object sender, EventArgs e)
  751. {
  752. SaveFile();
  753. }
  754. private void CPDFTitleBarControl_SaveAsFileEvent(object sender, EventArgs e)
  755. {
  756. SaveAsFile();
  757. }
  758. private void CPDFTitleBarControl_OpenFileEvent(object sender, EventArgs e)
  759. {
  760. OpenFile();
  761. }
  762. private void FileInfoCloseBtn_Click(object sender, RoutedEventArgs e)
  763. {
  764. PopupBorder.Visibility = Visibility.Collapsed;
  765. }
  766. /// <summary>
  767. /// Refresh the annotation list when a annotation is edited.
  768. /// </summary>
  769. /// <param name="sender"></param>
  770. /// <param name="e"></param>
  771. private void PdfFormControlRefreshAnnotList(object sender, EventArgs e)
  772. {
  773. botaBarControl.LoadAnnotationList();
  774. }
  775. /// <summary>
  776. /// When a CanSave property of a control is changed, the CanSave property of current page is changed.
  777. /// </summary>
  778. /// <param name="sender"></param>
  779. /// <param name="e"></param>
  780. private void ControlOnCanSaveChanged(object sender, bool e)
  781. {
  782. this.CanSave = e;
  783. }
  784. private void PDFViewTool_DocumentModifiedChanged(object sender, EventArgs e)
  785. {
  786. CanSave = viewControl.PDFViewTool.IsDocumentModified;
  787. }
  788. protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
  789. {
  790. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  791. }
  792. private void SnapShotButton_Click(object sender, RoutedEventArgs e)
  793. {
  794. if((sender as ToggleButton).IsChecked == true)
  795. {
  796. SnapshotEditToolArgs snapshotArgs = new SnapshotEditToolArgs();
  797. SnapshotMenu snapMenu = new SnapshotMenu();
  798. snapshotArgs.ControlPointColor = Colors.White;
  799. snapshotArgs.BgColor = Color.FromArgb(0x99, 0x00, 0x00, 0x00);
  800. snapshotArgs.LineColor = Color.FromArgb(0xFF, 0x47, 0x7E, 0xDE);
  801. snapshotArgs.ToolPanel = snapMenu;
  802. snapshotArgs.Viewer = viewControl;
  803. snapMenu.SnapToolArgs = snapshotArgs;
  804. snapMenu.PdfViewer = viewControl;
  805. snapMenu.SnapToolEvent += SnapMenu_SnapToolEvent;
  806. viewControl.PDFToolManager.SetToolType(ToolType.SelectedPage);
  807. viewControl.FocusPDFViewTool.SetPageSelectdUserControl(snapshotArgs.ToolPanel);
  808. }
  809. else
  810. {
  811. if ((ModeComboBox.SelectedItem as ComboBoxItem).Tag.ToString() == "Viewer")
  812. {
  813. viewControl.PDFToolManager.SetToolType(ToolType.Viewer);
  814. }
  815. else if ((ModeComboBox.SelectedItem as ComboBoxItem).Tag.ToString() == "Annotation")
  816. {
  817. viewControl.PDFToolManager.SetToolType(ToolType.Pan);
  818. }
  819. viewControl.FocusPDFViewTool.RemovePageSelectdUserControl();
  820. }
  821. }
  822. private void SnapMenu_SnapToolEvent(object sender, KeyValuePair<string, object> e)
  823. {
  824. switch (e.Key)
  825. {
  826. case "CloseSnap":
  827. {
  828. if ((ModeComboBox.SelectedItem as ComboBoxItem).Tag.ToString() == "Viewer")
  829. {
  830. viewControl.PDFToolManager.SetToolType(ToolType.Viewer);
  831. }
  832. else if ((ModeComboBox.SelectedItem as ComboBoxItem).Tag.ToString() == "Annotation")
  833. {
  834. viewControl.PDFToolManager.SetToolType(ToolType.Pan);
  835. }
  836. SnapshotButton.IsChecked = false;
  837. viewControl.FocusPDFViewTool.RemovePageSelectdUserControl();
  838. }
  839. break;
  840. case "Save":
  841. CanSave = true;
  842. break;
  843. default:
  844. break;
  845. }
  846. }
  847. #endregion
  848. #region Open and Save file
  849. private void SaveFileBtn_Click(object sender, RoutedEventArgs e)
  850. {
  851. SaveFile();
  852. CanSave = false;
  853. }
  854. private void OpenFile(string filePath = "")
  855. {
  856. if (viewControl != null && viewControl.PDFViewTool != null)
  857. {
  858. CPDFViewer pdfviewer = viewControl.PDFViewTool.GetCPDFViewer();
  859. CPDFDocument pdfDoc = pdfviewer?.GetDocument();
  860. if (pdfDoc == null)
  861. {
  862. return;
  863. }
  864. if (string.IsNullOrEmpty(filePath))
  865. {
  866. filePath = ComPDFKit.Controls.Helper.CommonHelper.GetExistedPathOrEmpty();
  867. }
  868. string oldFilePath = pdfDoc.FilePath;
  869. if (!string.IsNullOrEmpty(filePath) && regularViewerControl.PdfViewControl != null)
  870. {
  871. if (oldFilePath.ToLower() == filePath.ToLower())
  872. {
  873. return;
  874. }
  875. if ((bool)CheckExistBeforeOpenFileEvent?.Invoke(new string[] { filePath, oldFilePath }))
  876. {
  877. return;
  878. }
  879. if (CanSave)
  880. {
  881. string fileName = pdfDoc.FileName;
  882. var message = fileName + " " + LanguageHelper.CommonManager.GetString("Warn_NotSave");
  883. var result = MessageBox.Show(message, LanguageHelper.CommonManager.GetString("Caption_Warning"), MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
  884. if (result == MessageBoxResult.Yes)
  885. {
  886. SaveFile();
  887. }
  888. else if (result == MessageBoxResult.Cancel)
  889. {
  890. return;
  891. }
  892. }
  893. passwordViewer = new PDFViewControl();
  894. passwordViewer.InitDocument(filePath);
  895. CPDFViewer tempViewer = passwordViewer.PDFViewTool?.GetCPDFViewer();
  896. CPDFDocument tempDoc = tempViewer?.GetDocument();
  897. if (tempDoc == null)
  898. {
  899. MessageBox.Show("Open File Failed");
  900. return;
  901. }
  902. if (passwordViewer.GetCPDFViewer().GetDocument().IsLocked)
  903. {
  904. PasswordUI.SetShowText(System.IO.Path.GetFileName(filePath) + " " + LanguageHelper.CommonManager.GetString("Tip_Encrypted"));
  905. PasswordUI.ClearPassword();
  906. PopupBorder.Visibility = Visibility.Visible;
  907. PasswordUI.Visibility = Visibility.Visible;
  908. }
  909. else
  910. {
  911. pdfDoc.Release();
  912. viewControl = passwordViewer;
  913. LoadDocument();
  914. FileChangeEvent?.Invoke(null, EventArgs.Empty);
  915. }
  916. }
  917. }
  918. }
  919. private void OpenFile_Click(object sender, RoutedEventArgs e)
  920. {
  921. OpenFile();
  922. }
  923. /// <summary>
  924. /// Save the file to another PDF file.
  925. /// </summary>
  926. public void SaveAsFile()
  927. {
  928. if (viewControl != null && viewControl.PDFViewTool != null)
  929. {
  930. CPDFViewer pdfviewer = viewControl.PDFViewTool.GetCPDFViewer();
  931. CPDFDocument pdfDoc = pdfviewer?.GetDocument();
  932. if (pdfDoc == null)
  933. {
  934. return;
  935. }
  936. SaveFileDialog saveDialog = new SaveFileDialog();
  937. saveDialog.Filter = "(*.pdf)|*.pdf";
  938. saveDialog.DefaultExt = ".pdf";
  939. saveDialog.OverwritePrompt = true;
  940. if (saveDialog.ShowDialog() == true)
  941. {
  942. pdfDoc.WriteToFilePath(saveDialog.FileName);
  943. }
  944. }
  945. }
  946. /// <summary>
  947. /// Save the file in the current path.
  948. /// </summary>
  949. public void SaveFile()
  950. {
  951. if (viewControl != null && viewControl.PDFViewTool != null)
  952. {
  953. CPDFViewer pdfviewer = viewControl.PDFViewTool.GetCPDFViewer();
  954. CPDFDocument pdfDoc = pdfviewer?.GetDocument();
  955. if (pdfDoc == null)
  956. {
  957. return;
  958. }
  959. try
  960. {
  961. if (!string.IsNullOrEmpty(pdfDoc.FilePath))
  962. {
  963. if (pdfDoc.WriteToLoadedPath())
  964. {
  965. return;
  966. }
  967. }
  968. SaveFileDialog saveDialog = new SaveFileDialog
  969. {
  970. Filter = "(*.pdf)|*.pdf",
  971. DefaultExt = ".pdf",
  972. OverwritePrompt = true
  973. };
  974. if (saveDialog.ShowDialog() == true)
  975. {
  976. if (pdfDoc.WriteToFilePath(saveDialog.FileName))
  977. {
  978. AfterSaveAsFileEvent?.Invoke(this, saveDialog.FileName);
  979. }
  980. }
  981. }
  982. catch (Exception ex)
  983. {
  984. return;
  985. }
  986. }
  987. }
  988. public void CloseFile()
  989. {
  990. if (viewControl != null && viewControl.PDFViewTool != null)
  991. {
  992. CPDFViewer pdfviewer = viewControl.PDFViewTool.GetCPDFViewer();
  993. CPDFDocument pdfDoc = pdfviewer?.GetDocument();
  994. if(pdfDoc !=null)
  995. {
  996. pdfDoc.Release();
  997. }
  998. }
  999. }
  1000. #endregion
  1001. #region Command Binding
  1002. private double CheckZoomLevel(double zoom, bool IsGrowth)
  1003. {
  1004. double standardZoom = 100;
  1005. if (zoom <= 0.01)
  1006. {
  1007. return 0.01;
  1008. }
  1009. if (zoom >= 10)
  1010. {
  1011. return 10;
  1012. }
  1013. zoom *= 100;
  1014. for (int i = 0; i < zoomLevelList.Length - 1; i++)
  1015. {
  1016. if (zoom > zoomLevelList[i] && zoom <= zoomLevelList[i + 1] && IsGrowth)
  1017. {
  1018. standardZoom = zoomLevelList[i + 1];
  1019. break;
  1020. }
  1021. if (zoom >= zoomLevelList[i] && zoom < zoomLevelList[i + 1] && !IsGrowth)
  1022. {
  1023. standardZoom = zoomLevelList[i];
  1024. break;
  1025. }
  1026. }
  1027. return standardZoom / 100;
  1028. }
  1029. private void CommandBinding_Executed_Open(object sender, ExecutedRoutedEventArgs e)
  1030. {
  1031. OpenFile();
  1032. }
  1033. private void CommandBinding_Executed_Save(object sender, ExecutedRoutedEventArgs e)
  1034. {
  1035. if (CanSave)
  1036. {
  1037. SaveFile();
  1038. }
  1039. }
  1040. private void CommandBinding_Executed_SaveAs(object sender, ExecutedRoutedEventArgs e)
  1041. {
  1042. SaveAsFile();
  1043. }
  1044. private void CommandBinding_Executed_ControlLeftPanel(object sender, ExecutedRoutedEventArgs e)
  1045. {
  1046. panelState.IsLeftPanelExpand = !panelState.IsLeftPanelExpand;
  1047. }
  1048. private void CommandBinding_Executed_ControlRightPanel(object sender, ExecutedRoutedEventArgs e)
  1049. {
  1050. if (panelState.RightPanel == PanelState.RightPanelState.PropertyPanel)
  1051. {
  1052. panelState.RightPanel = PanelState.RightPanelState.None;
  1053. }
  1054. else
  1055. {
  1056. panelState.RightPanel = PanelState.RightPanelState.PropertyPanel;
  1057. }
  1058. }
  1059. private void CommandBinding_Executed_Bookmark(object sender, ExecutedRoutedEventArgs e)
  1060. {
  1061. LeftToolPanelButton.IsChecked = true;
  1062. botaBarControl.SelectBotaTool(BOTATools.Bookmark);
  1063. }
  1064. private void CommandBinding_Executed_Outline(object sender, ExecutedRoutedEventArgs e)
  1065. {
  1066. LeftToolPanelButton.IsChecked = true;
  1067. botaBarControl.SelectBotaTool(BOTATools.Outline);
  1068. }
  1069. private void CommandBinding_Executed_Thumbnail(object sender, ExecutedRoutedEventArgs e)
  1070. {
  1071. LeftToolPanelButton.IsChecked = true;
  1072. botaBarControl.SelectBotaTool(BOTATools.Thumbnail);
  1073. }
  1074. private void CommandBinding_Executed_Annotation(object sender, ExecutedRoutedEventArgs e)
  1075. {
  1076. LeftToolPanelButton.IsChecked = true;
  1077. botaBarControl.SelectBotaTool(BOTATools.Annotation);
  1078. }
  1079. private void CommandBinding_Executed_Search(object sender, ExecutedRoutedEventArgs e)
  1080. {
  1081. LeftToolPanelButton.IsChecked = true;
  1082. botaBarControl.SelectBotaTool(BOTATools.Search);
  1083. }
  1084. private void CommandBinding_Executed_ScaleAdd(object sender, ExecutedRoutedEventArgs e)
  1085. {
  1086. if (viewControl != null && viewControl.PDFViewTool != null)
  1087. {
  1088. CPDFViewer pdfViewer = viewControl.PDFViewTool.GetCPDFViewer();
  1089. if (pdfViewer != null)
  1090. {
  1091. double newZoom = CheckZoomLevel(pdfViewer.GetZoom() + 0.01, true);
  1092. pdfViewer.SetZoom(newZoom);
  1093. }
  1094. }
  1095. }
  1096. private void CommandBinding_Executed_ScaleSubtract(object sender, ExecutedRoutedEventArgs e)
  1097. {
  1098. if (viewControl != null && viewControl.PDFViewTool != null)
  1099. {
  1100. CPDFViewer pdfViewer = viewControl.PDFViewTool.GetCPDFViewer();
  1101. if (pdfViewer != null)
  1102. {
  1103. double newZoom = CheckZoomLevel(pdfViewer.GetZoom() - 0.01, false);
  1104. pdfViewer.SetZoom(newZoom);
  1105. }
  1106. }
  1107. }
  1108. private void CommandBinding_Executed_DisplaySettings(object sender, ExecutedRoutedEventArgs e)
  1109. {
  1110. panelState.RightPanel = PanelState.RightPanelState.ViewSettings;
  1111. }
  1112. private void CommandBinding_Executed_DocumentInfo(object sender, ExecutedRoutedEventArgs e)
  1113. {
  1114. if (PopupBorder.Visibility != Visibility.Visible)
  1115. {
  1116. PasswordUI.Visibility = Visibility.Collapsed;
  1117. FileInfoControl.Visibility = Visibility.Visible;
  1118. FileInfoControl.InitWithPDFViewer(viewControl);
  1119. FileInfoControl.CloseInfoEvent -= CPDFInfoControl_CloseInfoEvent;
  1120. FileInfoControl.CloseInfoEvent += CPDFInfoControl_CloseInfoEvent;
  1121. PopupBorder.Visibility = Visibility.Visible;
  1122. }
  1123. else
  1124. {
  1125. FileInfoControl.Visibility = Visibility.Collapsed;
  1126. PopupBorder.Visibility = Visibility.Collapsed;
  1127. this.Focus();
  1128. }
  1129. }
  1130. private void CPDFInfoControl_CloseInfoEvent(object sender, EventArgs e)
  1131. {
  1132. PopupBorder.Visibility = Visibility.Collapsed;
  1133. }
  1134. #endregion
  1135. }
  1136. }