AnnotToolContentViewModel.Layout.cs 51 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142
  1. using ComPDFKit.PDFDocument;
  2. using ComPDFKitViewer;
  3. using ComPDFKitViewer.AnnotEvent;
  4. using ComPDFKitViewer.PdfViewer;
  5. using PDF_Master.CustomControl;
  6. using PDF_Master.CustomControl.CompositeControl;
  7. using PDF_Master.Helper;
  8. using PDF_Master.Model.PropertyPanel.AnnotPanel;
  9. using Prism.Commands;
  10. using Prism.Mvvm;
  11. using Prism.Regions;
  12. using System;
  13. using System.Collections.Generic;
  14. using System.ComponentModel;
  15. using System.IO;
  16. using System.Linq;
  17. using System.Text;
  18. using System.Threading.Tasks;
  19. using System.Windows;
  20. using System.Windows.Controls;
  21. using System.Windows.Input;
  22. using System.Windows.Markup;
  23. using System.Windows.Media;
  24. using System.Windows.Media.Imaging;
  25. using System.Windows.Shapes;
  26. using WIA;
  27. using static Dropbox.Api.TeamLog.AdminAlertSeverityEnum;
  28. using MenuItem = System.Windows.Controls.MenuItem;
  29. namespace PDF_Master.ViewModels.Tools
  30. {
  31. //文件说明:与布局相关的代码逻辑:菜单、属性面板
  32. public sealed partial class AnnotToolContentViewModel : BindableBase, INavigationAware
  33. {
  34. #region 属性面板
  35. /// <summary>
  36. /// 导航到同一个注释xaml时,需要区分某个注释;比如高亮、删除线、下划线
  37. /// </summary>
  38. /// <param name="viewContent">对应的注释面板</param>
  39. /// <param name="toolTag">导航到同一个注释xaml时,需要区分某个注释;比如高亮、删除线、下划线</param>
  40. /// <param name="annot">注释</param>
  41. /// <param name="annotAttribsList">更改注释属性的键值对,更改值后会自动记录undoRedo容器里</param>
  42. private void AddToPropertyPanel(string viewContent, string toolTag = null, List<AnnotHandlerEventArgs> annots = null, AnnotAttribEvent annotAttribEvent = null)
  43. {
  44. if (annots != null)
  45. {
  46. PropertyPanel.annotlists = annots;
  47. PropertyPanel.annot = annots[0];
  48. }
  49. else
  50. {
  51. PropertyPanel.annotlists = null;
  52. PropertyPanel.annot = null;
  53. }
  54. PropertyPanel.AnnotEvents = null;
  55. PropertyPanel.AnnotEvent = null;
  56. if (annots != null)
  57. {
  58. if (annots.Count > 1)
  59. {
  60. if (PropertyPanel.AnnotEvents == null)
  61. {
  62. PropertyPanel.AnnotEvents = new List<AnnotAttribEvent>();
  63. }
  64. PropertyPanel.AnnotEvents.Clear();
  65. foreach (var itemAnnot in annots)
  66. {
  67. var eventitem = AnnotAttribEvent.GetAnnotAttribEvent(itemAnnot, itemAnnot.GetAnnotAttrib(), PDFViewer);
  68. //eventitem.ClearChangeAttribute();
  69. PropertyPanel.AnnotEvents.Add(eventitem);
  70. }
  71. }
  72. PropertyPanel.AnnotEvent = AnnotAttribEvent.GetAnnotAttribEvent(annots[0], annots[0].GetAnnotAttrib(), PDFViewer);
  73. //propertyPanel.AnnotEvent.ClearChangeAttribute();
  74. if (annots[0] is LinkAnnotArgs && annotAttribEvent != null)
  75. {
  76. PropertyPanel.AnnotEvent = annotAttribEvent;
  77. }
  78. }
  79. PropertyPanel.SetIsTextFill(false);
  80. if (string.IsNullOrEmpty(viewContent) == false)
  81. {
  82. ViewContentViewModel.SelectedPrpoertyPanel(viewContent, PropertyPanel);
  83. }
  84. }
  85. /// <summary>
  86. /// 展开显示属性面板
  87. /// </summary>
  88. private void ShowPropertyPanel(bool show = true)
  89. {
  90. ViewContentViewModel.IsPropertyOpen = show;
  91. }
  92. #endregion 属性面板
  93. #region 阅读页 - 右键菜单
  94. #region 右击菜单文案
  95. /// <summary>
  96. /// 右键菜单文案
  97. /// </summary>
  98. ///
  99. public string T_RightMenuSelectionCopy = App.MainPageLoader.GetString("ViewRightMenuSelection_Copy");
  100. public string T_RightMenuSelectionPaste = App.MainPageLoader.GetString("ViewRightMenuSelection_Paste");
  101. public string T_RightMenuSelectionHighlight = App.MainPageLoader.GetString("ViewRightMenuSelection_Highlight");
  102. public string T_RightMenuSelectionUnderline = App.MainPageLoader.GetString("ViewRightMenuSelection_Underline");
  103. public string T_RightMenuSelectionStrikethrough = App.MainPageLoader.GetString("ViewRightMenuSelection_Strikethrough");
  104. public string T_RightMenuSelectionText = App.MainPageLoader.GetString("ViewRightMenuSelection_Text");
  105. public string T_RightMenuSelectionNote = App.MainPageLoader.GetString("ViewRightMenuSelection_Note");
  106. public string T_RightMenuSelectionRectangle = App.MainPageLoader.GetString("ViewRightMenuSelection_Rectangle");
  107. public string T_RightMenuSelectionOval = App.MainPageLoader.GetString("ViewRightMenuSelection_Oval");
  108. public string T_RightMenuSelectionStraightLine = App.MainPageLoader.GetString("ViewRightMenuSelection_StraightLine");
  109. public string T_RightMenuSelectionAddLink = App.MainPageLoader.GetString("ViewRightMenuSelection_AddLink");
  110. public string T_RightMenuSelectionAddOutline = App.MainPageLoader.GetString("ViewRightMenuSelection_AddOutline");
  111. public string T_RightMenuSelectionExtractImage = App.MainPageLoader.GetString("ViewRightMenuSelection_ExtractImage");
  112. #endregion 右击菜单文案
  113. private ContextMenu ViewerContextMenu(object sender)
  114. {
  115. //ContextMenu contextMenu = CommonHelper.DeepClone(App.Current.FindResource("ViewerContextMenu") as ContextMenu);
  116. string xaml = XamlWriter.Save(App.Current.FindResource("ViewerContextMenu") as ContextMenu);
  117. ContextMenu contextMenu = XamlReader.Parse(xaml) as ContextMenu;
  118. //contextMenu.Loaded += ContextMenu_Loaded;
  119. ViewerContextMenu_Loaded(contextMenu, sender);
  120. return contextMenu;
  121. }
  122. private void ViewerContextMenu_Loaded(object sender, object e)
  123. {
  124. ContextMenu contextMenu = sender as ContextMenu;
  125. contextMenu.DataContext = ViewContentViewModel;
  126. if (contextMenu.Items.Count > 0)
  127. {
  128. int index = PDFViewer.CurrentIndex;
  129. //检测是否已存在相同数据
  130. CPDFBookmark list = PDFViewer.Document.GetBookmarkList().FirstOrDefault(q => q.PageIndex == index);
  131. if (list != null)
  132. {
  133. isAddBookMark = false;
  134. }
  135. else
  136. {
  137. isAddBookMark = true;
  138. }
  139. var separator = contextMenu.Items[contextMenu.Items.Count - 3];
  140. InBookModeSetIsHidden(separator);
  141. foreach (var item in contextMenu.Items)
  142. {
  143. if (item is MenuItem menuItem1)
  144. {
  145. switch (menuItem1.Tag.ToString())
  146. {
  147. case "Paste":
  148. Separator separator1 = (Separator)contextMenu.Items[1];
  149. //粘贴
  150. if (!ApplicationCommands.Paste.CanExecute(null, (UIElement)e))
  151. {
  152. //menuItem1.IsEnabled = false;
  153. //menuItem1.Opacity = 0.5;
  154. menuItem1.Visibility = Visibility.Collapsed;
  155. separator1.Visibility = Visibility.Collapsed;
  156. }
  157. else
  158. {
  159. //menuItem1.IsEnabled = true;
  160. //menuItem1.Opacity = 1;
  161. menuItem1.Visibility = Visibility.Visible;
  162. separator1.Visibility = Visibility.Visible;
  163. }
  164. menuItem1.CommandTarget = (UIElement)e;
  165. menuItem1.Command = ApplicationCommands.Paste;
  166. break;
  167. case "AddAnnotation":
  168. if (menuItem1.Items.Count > 0)
  169. {
  170. SetAddAnnotation(menuItem1.Items);
  171. }
  172. break;
  173. case "HiddenAnnot":
  174. menuItem1.Click -= HiddenAnnot_Click;
  175. menuItem1.Click += HiddenAnnot_Click;
  176. SetMenuItemVisibility(menuItem1, "DisplayAnnot", "HiddenAnnot", BtnShowAnnotIsChecked);
  177. break;
  178. case "DisplayAnnot":
  179. menuItem1.Click -= DisplayAnnot_Click;
  180. menuItem1.Click += DisplayAnnot_Click;
  181. SetMenuItemVisibility(menuItem1, "DisplayAnnot", "HiddenAnnot", BtnShowAnnotIsChecked);
  182. break;
  183. case "AddBookMark":
  184. menuItem1.Command = AddBookMarkCommand;
  185. SetMenuItemVisibility(menuItem1, "DelBookMark", "AddBookMark", isAddBookMark);
  186. break;
  187. case "DelBookMark":
  188. menuItem1.Click -= DelBookMark_Click;
  189. menuItem1.Click += DelBookMark_Click;
  190. SetMenuItemVisibility(menuItem1, "DelBookMark", "AddBookMark", isAddBookMark);
  191. break;
  192. case "ToolMode":
  193. if (menuItem1.Items.Count > 0)
  194. {
  195. SetToolMode(menuItem1.Items);
  196. }
  197. break;
  198. case "ReadModel":
  199. SetMenuItemVisibility(menuItem1, "ReadModel", "UnReadModel", ViewContentViewModel.mainViewModel.IsBookMode);
  200. menuItem1.Click -= ReadModel_Click;
  201. menuItem1.Click += ReadModel_Click;
  202. break;
  203. case "UnReadModel":
  204. SetMenuItemVisibility(menuItem1, "ReadModel", "UnReadModel", ViewContentViewModel.mainViewModel.IsBookMode);
  205. menuItem1.Click -= UnReadModel_Click;
  206. menuItem1.Click += UnReadModel_Click;
  207. break;
  208. case "ViewZoom":
  209. InBookModeSetIsHidden(menuItem1);
  210. if (menuItem1.Items.Count > 0)
  211. {
  212. ViewZoom(menuItem1.Items);
  213. }
  214. break;
  215. case "PageDisplay":
  216. if (menuItem1.Items.Count > 0)
  217. {
  218. PageDisplay(menuItem1.Items);
  219. }
  220. break;
  221. case "Select":
  222. InBookModeSetIsHidden(menuItem1);
  223. menuItem1.Click -= Select_Click;
  224. menuItem1.Click += Select_Click;
  225. break;
  226. case "Print":
  227. InBookModeSetIsHidden(menuItem1);
  228. menuItem1.Command = ViewContentViewModel.PrintCommand;
  229. break;
  230. case "HighlightLinks":
  231. InBookModeSetIsHidden(menuItem1);
  232. if (OpenFileInfo != null)
  233. {
  234. menuItem1.IsChecked = OpenFileInfo.ShowHighLightLink;
  235. }
  236. menuItem1.Click -= HighlightLinks_Click;
  237. menuItem1.Click += HighlightLinks_Click;
  238. break;
  239. }
  240. }
  241. }
  242. }
  243. }
  244. private void HighlightLinks_Click(object sender, RoutedEventArgs e)
  245. {
  246. if (sender is MenuItem menuItem)
  247. {
  248. //if (OpenFileInfo != null)
  249. //{
  250. // menuItem.IsChecked = OpenFileInfo.ShowHighLightLink;
  251. //}
  252. if (menuItem.IsChecked)
  253. {
  254. PDFViewer.SetShowLink(true);
  255. }
  256. else
  257. {
  258. PDFViewer.SetShowLink(false);
  259. }
  260. if (OpenFileInfo != null)
  261. {
  262. OpenFileInfo.ShowHighLightLink = menuItem.IsChecked;
  263. }
  264. //if (menuItem.IsChecked == true)
  265. //{
  266. // menuItem.IsChecked = false;
  267. //}
  268. }
  269. }
  270. private void SetMenuItemVisibility(MenuItem menuItem1, string right, string deny, bool flag)
  271. {
  272. if (menuItem1.Tag.ToString() == right && flag)
  273. {
  274. menuItem1.Visibility = Visibility.Collapsed;
  275. }
  276. if (menuItem1.Tag.ToString() == right && flag == false)
  277. {
  278. menuItem1.Visibility = Visibility.Visible;
  279. }
  280. if (menuItem1.Tag.ToString() == deny && flag == false)
  281. {
  282. menuItem1.Visibility = Visibility.Collapsed;
  283. }
  284. if (menuItem1.Tag.ToString() == deny && flag)
  285. {
  286. menuItem1.Visibility = Visibility.Visible;
  287. }
  288. }
  289. private void CopyMenu_Click(object sender, RoutedEventArgs e)
  290. {
  291. //限制权限密码文档的图片复制
  292. if (!ViewContentViewModel.CheckPermissionBeforeOption())
  293. {
  294. return;
  295. }
  296. try
  297. {
  298. Clipboard.Clear();
  299. Dictionary<int, List<System.Drawing.Bitmap>> imageDict = PDFViewer?.GetSelectedImages();
  300. if (imageDict != null && imageDict.Count > 0)
  301. {
  302. foreach (int pageIndex in imageDict.Keys)
  303. {
  304. List<System.Drawing.Bitmap> imageList = imageDict[pageIndex];
  305. foreach (System.Drawing.Bitmap image in imageList)
  306. {
  307. MemoryStream ms = new MemoryStream();
  308. image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
  309. BitmapImage imageData = new BitmapImage();
  310. imageData.BeginInit();
  311. imageData.StreamSource = ms;
  312. imageData.CacheOption = BitmapCacheOption.OnLoad;
  313. imageData.EndInit();
  314. imageData.Freeze();
  315. Clipboard.SetImage(imageData);
  316. break;
  317. }
  318. }
  319. }
  320. }
  321. catch (Exception ex)
  322. {
  323. }
  324. }
  325. /// <summary>
  326. /// 选择文本或者图像的右键菜单
  327. /// </summary>
  328. /// <param name="sender"></param>
  329. /// <param name="annotCommand"></param>
  330. /// <returns></returns>
  331. private ContextMenu SelectedTextOrImageContextMenu(object sender, AnnotCommandArgs annotCommand)
  332. {
  333. StrAnnotToolChecked = "";
  334. ContextMenu popMenu = new ContextMenu();
  335. popMenu.FontSize = 14;
  336. MenuItem menuItem = new MenuItem();
  337. menuItem = new MenuItem();
  338. menuItem.CommandTarget = (UIElement)sender;
  339. menuItem.Header = T_RightMenuSelectionCopy;
  340. menuItem.InputGestureText = "Ctrl+C";
  341. if (annotCommand.CommandTarget == TargetType.ImageSelection && PDFViewer.GetSelectImageCount() > 0)
  342. {
  343. menuItem.IsEnabled = true;
  344. PDFViewer.ClearCopyData();
  345. menuItem.Click -= CopyMenu_Click;
  346. menuItem.Click += CopyMenu_Click;
  347. }
  348. else
  349. {
  350. menuItem.Command = ApplicationCommands.Copy;
  351. }
  352. popMenu.Items.Add(menuItem);
  353. menuItem = new MenuItem();
  354. menuItem.Header = T_RightMenuSelectionPaste;
  355. if (!ApplicationCommands.Paste.CanExecute(null, (UIElement)sender))
  356. {
  357. //menuItem1.IsEnabled = false;
  358. //menuItem1.Opacity = 0.5;
  359. menuItem.Visibility = Visibility.Collapsed;
  360. }
  361. else
  362. {
  363. //menuItem1.IsEnabled = true;
  364. //menuItem1.Opacity = 1;
  365. menuItem.Visibility = Visibility.Visible;
  366. }
  367. menuItem.CommandTarget = (UIElement)sender;
  368. menuItem.Command = ApplicationCommands.Paste;
  369. popMenu.Items.Add(menuItem);
  370. Separator separator = null;
  371. if (annotCommand.CommandTarget == TargetType.ImageSelection)
  372. {
  373. separator = SetSeparator();
  374. popMenu.Items.Add(separator);
  375. SetSelectTextOrImageMenuItem(T_RightMenuSelectionExtractImage, "ExportPicture", annotCommand, out menuItem);
  376. if (PDFViewer.GetSelectImageCount() > 0)
  377. {
  378. menuItem.IsEnabled = true;
  379. }
  380. popMenu.Items.Add(menuItem);
  381. }
  382. else if (annotCommand.CommandTarget == TargetType.Annot)
  383. {
  384. separator = SetSeparator();
  385. popMenu.Items.Add(separator);
  386. SetSelectTextOrImageMenuItem(T_RightMenuSelectionHighlight, "HighLight", annotCommand, out menuItem);
  387. popMenu.Items.Add(menuItem);
  388. SetSelectTextOrImageMenuItem(T_RightMenuSelectionUnderline, "UnderLine", annotCommand, out menuItem);
  389. popMenu.Items.Add(menuItem);
  390. SetSelectTextOrImageMenuItem(T_RightMenuSelectionStrikethrough, "Strikeout", annotCommand, out menuItem);
  391. popMenu.Items.Add(menuItem);
  392. separator = SetSeparator();
  393. //popMenu.Items.Add(separator);
  394. SetSelectTextOrImageMenuItem(T_RightMenuSelectionText, "Freetext", annotCommand, out menuItem);
  395. //popMenu.Items.Add(menuItem);
  396. SetSelectTextOrImageMenuItem(T_RightMenuSelectionNote, "StickyNote", annotCommand, out menuItem);
  397. //popMenu.Items.Add(menuItem);
  398. separator = SetSeparator();
  399. popMenu.Items.Add(separator);
  400. SetSelectTextOrImageMenuItem(T_RightMenuSelectionRectangle, "Rect", annotCommand, out menuItem);
  401. popMenu.Items.Add(menuItem);
  402. SetSelectTextOrImageMenuItem(T_RightMenuSelectionOval, "Circle", annotCommand, out menuItem);
  403. popMenu.Items.Add(menuItem);
  404. SetSelectTextOrImageMenuItem(T_RightMenuSelectionStraightLine, "Line", annotCommand, out menuItem);
  405. //popMenu.Items.Add(menuItem);
  406. }
  407. separator = SetSeparator();
  408. popMenu.Items.Add(separator);
  409. InBookModeSetIsHidden(separator);
  410. SetSelectTextOrImageMenuItem(T_RightMenuSelectionAddLink, "Link", annotCommand, out menuItem);
  411. popMenu.Items.Add(menuItem);
  412. if (annotCommand.CommandTarget == TargetType.Annot)
  413. {
  414. SetSelectTextOrImageMenuItem(T_RightMenuSelectionAddOutline, "OutLine", annotCommand, out menuItem);
  415. popMenu.Items.Add(menuItem);
  416. }
  417. return popMenu;
  418. }
  419. private void SetSelectTextOrImageMenuItem(string header, string tag, AnnotCommandArgs annotCommand, out MenuItem menuItem)
  420. {
  421. menuItem = new MenuItem();
  422. menuItem.Header = header;
  423. menuItem.Tag = tag;
  424. if (tag == "OutLine" || tag == "Link")
  425. {
  426. InBookModeSetIsHidden(menuItem);
  427. }
  428. menuItem.Click -= AnnotToolMenu_Click;
  429. menuItem.Click += AnnotToolMenu_Click;
  430. menuItem.CommandParameter = annotCommand;
  431. }
  432. private Separator SetSeparator()
  433. {
  434. Separator separator = new Separator
  435. {
  436. Height = 1,
  437. BorderBrush = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#33000000")),
  438. BorderThickness = new Thickness(1),
  439. Style = (Style)App.Current.FindResource(System.Windows.Controls.ToolBar.SeparatorStyleKey)
  440. };
  441. return separator;
  442. }
  443. #endregion 阅读页 - 右键菜单
  444. #region 注释-右键菜单
  445. #region 注释-右键菜单文案
  446. //public string T_RightMenuAnnotCopy = App.MainPageLoader.GetString("ViewRightMenuSelection_Copy");
  447. //public string T_RightMenuAnnotPaste = App.MainPageLoader.GetString("ViewRightMenuSelection_Paste");
  448. //public string T_RightMenuAnnotHighlight = App.MainPageLoader.GetString("ViewRightMenuSelection_Highlight");
  449. //public string T_RightMenuAnnotUnderline = App.MainPageLoader.GetString("ViewRightMenuSelection_Underline");
  450. //public string T_RightMenuAnnotStrikethrough = App.MainPageLoader.GetString("ViewRightMenuSelection_Strikethrough");
  451. //public string T_RightMenuAnnotText = App.MainPageLoader.GetString("ViewRightMenuSelection_Text");
  452. //public string T_RightMenuAnnotNote = App.MainPageLoader.GetString("ViewRightMenuSelection_Note");
  453. public string T_RightMenuAnnotCopy = App.MainPageLoader.GetString("ViewRightMenuAnnot_Copy");
  454. public string T_RightMenuAnnotCut = App.MainPageLoader.GetString("ViewRightMenuAnnot_Cut");
  455. public string T_RightMenuAnnotPaste = App.MainPageLoader.GetString("ViewRightMenuAnnot_Paste");
  456. public string T_RightMenuAnnotDelete = App.MainPageLoader.GetString("ViewRightMenuAnnot_Delete");
  457. public string T_RightMenuAnnotAddNote = App.MainPageLoader.GetString("ViewRightMenuAnnot_AddNote");
  458. public string T_RightMenuAnnotDefault = App.MainPageLoader.GetString("ViewRightMenuAnnot_Default");
  459. public string T_RightMenuFreehandAnnotColor = App.MainPageLoader.GetString("ViewRightMenuFreehandAnnot_Color");
  460. public string T_RightMenuFreehandAnnotLineStyle = App.MainPageLoader.GetString("ViewRightMenuFreehandAnnot_LineStyle");
  461. public string T_RightMenuFreehandAnnotLineStyleSolid = App.MainPageLoader.GetString("ViewRightMenuFreehandAnnotLineStyle_SolidLine");
  462. public string T_RightMenuFreehandAnnotLineStyleDotted = App.MainPageLoader.GetString("ViewRightMenuFreehandAnnotLineStyle_DottedLine");
  463. public string T_RightMenuFreetextAnnotFontColor = App.MainPageLoader.GetString("ViewRightMenuFreetextAnnot_FontColor");
  464. public string T_RightMenuFreetextAnnotFillColor = App.MainPageLoader.GetString("ViewRightMenuFreetextAnnot_FillColor");
  465. public string T_RightMenuFreetextAnnotFont = App.MainPageLoader.GetString("ViewRightMenuFreetextAnnot_Font");
  466. public string T_RightMenuFreetextAnnotFontCourierNew = App.MainPageLoader.GetString("ViewRightMenuFreetextAnnotFont_CourierNew");
  467. public string T_RightMenuFreetextAnnotFontHelvetica = App.MainPageLoader.GetString("ViewRightMenuFreetextAnnotFont_Helvetica");
  468. public string T_RightMenuFreetextAnnotFontTimesNewRoman = App.MainPageLoader.GetString("ViewRightMenuFreetextAnnotFont_TimesNewRoman");
  469. public string T_RightMenuFreetextAnnotTextAlignment = App.MainPageLoader.GetString("ViewRightMenuFreetextAnnot_TextAlignment");
  470. public string T_RightMenuFreetextAnnotTextAlignmentAlignLeft = App.MainPageLoader.GetString("ViewRightMenuFreetextAnnotTextAlignment_AlignLeft");
  471. public string T_RightMenuFreetextAnnotTextAlignmentAlignCenter = App.MainPageLoader.GetString("ViewRightMenuFreetextAnnotTextAlignment_AlignCenter");
  472. public string T_RightMenuFreetextAnnotTextAlignmentAlignRight = App.MainPageLoader.GetString("ViewRightMenuFreetextAnnotTextAlignment_AlignRight");
  473. public string T_RightMenuFreetextAnnotTextAlignmentFullyJustified = App.MainPageLoader.GetString("ViewRightMenuFreetextAnnotTextAlignment_FullyJustified");
  474. public string T_RightMenuStickyNoteAnnotColor = App.MainPageLoader.GetString("ViewRightMenuStickyNoteAnnot_Color");
  475. public string T_RightMenuStickyNoteAnnotEdit = App.MainPageLoader.GetString("ViewRightMenuStickyNoteAnnot_Edit");
  476. public string T_RightMenuSharpsNoteAnnotColor = App.MainPageLoader.GetString("ViewRightMenuSharpsAnnot_Color");
  477. public string T_RightMenuSharpsNoteAnnotLineStyleSolidline = App.MainPageLoader.GetString("ViewRightMenuSharpsAnnotLineStyle_SolidLine");
  478. public string T_RightMenuSharpsNoteAnnotLineStyleDottedLine = App.MainPageLoader.GetString("ViewRightMenuSharpsAnnotLineStyle_DottedLine");
  479. public string T_RightMenuSharpsNoteAnnotLineStyle = App.MainPageLoader.GetString("ViewRightMenuSharpsAnnot_LineStyle");
  480. public string T_RightMenuSharpsNoteAnnotDirection = App.MainPageLoader.GetString("ViewRightMenuSharpsAnnot_Direction");
  481. public string T_RightMenuSharpsNoteAnnotDirectionVertical = App.MainPageLoader.GetString("ViewRightMenuSharpsAnnotDirection_Vertical");
  482. public string T_RightMenuSharpsNoteAnnotDirectionHorizontal = App.MainPageLoader.GetString("ViewRightMenuSharpsAnnotDirection_Horizontal");
  483. public string T_RightMenuSharpsNoteAnnotBorderColor = App.MainPageLoader.GetString("ViewRightMenuSharpsAnnot_BorderColor");
  484. public string T_RightMenuSharpsNoteAnnotFillColor = App.MainPageLoader.GetString("ViewRightMenuSharpsAnnot_FillColor");
  485. public string T_RightMenuStampNoteAnnotExport = App.MainPageLoader.GetString("ViewRightMenuStampAnnot_Export");
  486. public string T_RightMenuStampNoteAnnotExportPNG = App.MainPageLoader.GetString("ViewRightMenuStampAnnotExport_PNG");
  487. public string T_RightMenuStampNoteAnnotExportPDF = App.MainPageLoader.GetString("ViewRightMenuStampAnnotExport_PDF");
  488. public string T_RightMenuTextNoteAnnotCopyText = App.MainPageLoader.GetString("ViewRightMenuTextAnnot_CopyText");
  489. public string T_RightMenuTextNoteAnnotDelete = App.MainPageLoader.GetString("ViewRightMenuTextAnnot_Delete");
  490. #endregion 注释-右键菜单文案
  491. private ColorMenuItem colorContent;
  492. /// <summary>
  493. /// 高亮注释,右键菜单
  494. /// </summary>
  495. ///
  496. private void InitSelectHightAnnotMenu()
  497. {
  498. var popMenu = new ContextMenu();
  499. PopMenu pop = new PopMenu(popMenu);
  500. colorContent = new ColorMenuItem();
  501. colorContent.Name = "hightcolor";
  502. colorContent.ColorChanged -= colorContent_SelectedColorHandler;
  503. colorContent.ColorChanged += colorContent_SelectedColorHandler;
  504. colorContent.VerticalAlignment = VerticalAlignment.Top;
  505. colorContent.Margin = new Thickness(0, 0, 0, -15);
  506. var menuItem = new MenuItem();
  507. menuItem.Name = "hightColor";
  508. menuItem.Height = 20 + 15;
  509. menuItem.Header = colorContent;
  510. var hightColorStyle = App.Current.FindResource("UIElementMenuItem") as Style;
  511. if (hightColorStyle != null)
  512. menuItem.Style = hightColorStyle;
  513. colorContent.DataContext = pop.AddItem(menuItem);
  514. pop.AddItem(GetSeparator());
  515. menuItem = new MenuItem();
  516. menuItem.Name = "hightCopyText";
  517. menuItem.Header = T_RightMenuTextNoteAnnotCopyText;
  518. pop.BindingEvent(pop.AddItem(menuItem), HightAnnotCopyText_MenuCommand);
  519. menuItem = new MenuItem();
  520. menuItem.Name = "hightdelete";
  521. menuItem.Header = T_RightMenuTextNoteAnnotDelete;
  522. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Delete);
  523. pop.AddItem(GetSeparator());
  524. menuItem = new MenuItem();
  525. menuItem.Name = "hightAddNote";
  526. menuItem.Header = T_RightMenuAnnotAddNote;
  527. pop.BindingEvent(pop.AddItem(menuItem), AnnotAddNoteText_MenuCommand);
  528. menuItem = new MenuItem();
  529. menuItem.Name = "hightdefault";
  530. menuItem.Header = T_RightMenuAnnotDefault;
  531. pop.BindingEvent(pop.AddItem(menuItem), AnnotDefaultValue_MenuCommand);
  532. HightAnnotPopMenu = pop;
  533. }
  534. private Separator GetSeparator()
  535. {
  536. Separator separator = new Separator();
  537. separator.Height = 1;
  538. separator.BorderBrush = new SolidColorBrush(Color.FromArgb(0x33, 0x00, 0x00, 0x00));
  539. separator.BorderThickness = new Thickness(1);
  540. separator.Margin = new Thickness(-30, 0, 0, 0);
  541. return separator;
  542. }
  543. private async void colorContent_SelectedColorHandler(object sender, Color e)
  544. {
  545. if (e == null) return;
  546. if (sender is Ellipse)
  547. {
  548. var item = new ColorDropBoxPop();
  549. item.DataContext = (sender as Ellipse).DataContext;
  550. item.ColorSelected -= AnnotMenu_ColorSelected;
  551. item.ColorSelected += AnnotMenu_ColorSelected;
  552. if (popup == null)
  553. popup = new System.Windows.Controls.Primitives.Popup();
  554. ContentControl window = null;
  555. if (PDFViewer.Parent as ContentControl != null)
  556. window = PDFViewer.Parent as ContentControl;
  557. else
  558. window = App.Current.MainWindow;
  559. popup.Child = item;
  560. popup.PlacementRectangle = new Rect(Mouse.GetPosition(window), new Size(item.Width, item.Height));
  561. popup.Placement = System.Windows.Controls.Primitives.PlacementMode.MousePoint;
  562. popup.PlacementTarget = window;
  563. popup.IsOpen = true;
  564. Window parentWnd = Window.GetWindow(App.Current.MainWindow);
  565. if (parentWnd != null)
  566. {
  567. parentWnd.MouseDown -= parentWnd_MouseDown;
  568. parentWnd.MouseDown += parentWnd_MouseDown;
  569. }
  570. while (popup.IsOpen)
  571. await Task.Delay(20);
  572. parentWnd.MouseDown -= parentWnd_MouseDown;
  573. popup = null;
  574. }
  575. else
  576. {
  577. var cusMenuItem = (sender as FrameworkElement).DataContext as CusMenuItem;
  578. if (cusMenuItem != null && cusMenuItem.Parameter != null)
  579. {
  580. if (cusMenuItem.Parameter is TextHighlightAnnotArgs textHighlightAnnotArgs)
  581. {
  582. var anvent = AnnotAttribEvent.GetAnnotAttribEvent(textHighlightAnnotArgs, textHighlightAnnotArgs.GetAnnotAttrib(), PDFViewer);
  583. anvent.UpdateAttrib(AnnotAttrib.Color, e);
  584. anvent.UpdateAnnot();
  585. }
  586. if (cusMenuItem.Parameter is TextUnderlineAnnotArgs textUnderlineAnnotArgs)
  587. {
  588. var anvent = AnnotAttribEvent.GetAnnotAttribEvent(textUnderlineAnnotArgs, textUnderlineAnnotArgs.GetAnnotAttrib(), PDFViewer);
  589. anvent.UpdateAttrib(AnnotAttrib.Color, e);
  590. anvent.UpdateAnnot();
  591. }
  592. if (cusMenuItem.Parameter is TextStrikeoutAnnotArgs textStrikeoutAnnotArgs)
  593. {
  594. var anvent = AnnotAttribEvent.GetAnnotAttribEvent(textStrikeoutAnnotArgs, textStrikeoutAnnotArgs.GetAnnotAttrib());
  595. anvent.UpdateAttrib(AnnotAttrib.Color, e);
  596. anvent.UpdateAnnot();
  597. }
  598. //var test = cusMenuItem.Parameter as TextHighlightAnnotArgs;
  599. //if (test != null)
  600. //{
  601. // var anvent = AnnotAttribEvent.GetAnnotAttribEvent(test, test.GetAnnotAttrib());
  602. // anvent.UpdateAttrib(AnnotAttrib.Color, e);
  603. // anvent.UpdateAnnot();
  604. //}
  605. }
  606. }
  607. }
  608. /// <summary>
  609. /// 手绘
  610. /// </summary>
  611. private void InitSelectFreeHandAnnotMenu()
  612. {
  613. var popMenu = new ContextMenu();
  614. PopMenu pop = new PopMenu(popMenu);
  615. var menuItem = new MenuItem();
  616. menuItem.Name = "FreeHandCopy";
  617. menuItem.Header = T_RightMenuAnnotCopy;
  618. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Copy);
  619. menuItem = new MenuItem();
  620. menuItem.Name = "FreeHandCut";
  621. menuItem.Header = T_RightMenuAnnotCut;
  622. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Cut);
  623. menuItem = new MenuItem();
  624. menuItem.Name = "FreeHandPaste";
  625. menuItem.Header = T_RightMenuAnnotPaste;
  626. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Paste);
  627. menuItem = new MenuItem();
  628. menuItem.Name = "FreeHandDelete";
  629. menuItem.Header = T_RightMenuAnnotDelete;
  630. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Delete);
  631. pop.AddItem(GetSeparator());
  632. menuItem = new MenuItem();
  633. menuItem.Name = "FreeHandColor";
  634. menuItem.Header = T_RightMenuFreehandAnnotColor;
  635. menuItem.Tag = "Color";
  636. pop.BindingEvent(pop.AddItem(menuItem), AnnotColorPalette_MenuCommand);
  637. menuItem = new MenuItem();
  638. menuItem.Name = "FreeHandLineStyle";
  639. menuItem.Header = T_RightMenuFreehandAnnotLineStyle;
  640. pop.AddItem(menuItem);
  641. RadioButton radioButton = new RadioButton();
  642. radioButton.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style;
  643. radioButton.Background = new SolidColorBrush(Colors.Transparent);
  644. radioButton.Name = "FreeHandSolid";
  645. radioButton.Content = T_RightMenuFreehandAnnotLineStyleSolid;
  646. radioButton.GroupName = "LineStyle";
  647. radioButton.Tag = "Solid";
  648. pop.BindingEvent(pop.AddChild("FreeHandLineStyle", radioButton), FreeHandLineStyle_MenuCommand);
  649. radioButton = new RadioButton();
  650. radioButton.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style;
  651. radioButton.Background = new SolidColorBrush(Colors.Transparent);
  652. radioButton.Name = "FreeHandDash";
  653. radioButton.Content = T_RightMenuFreehandAnnotLineStyleDotted;
  654. radioButton.GroupName = "LineStyle";
  655. radioButton.Tag = "Dash";
  656. pop.BindingEvent(pop.AddChild("FreeHandLineStyle", radioButton), FreeHandLineStyle_MenuCommand);
  657. menuItem = new MenuItem();
  658. menuItem.Name = "FreeHandAddNote";
  659. menuItem.Header = T_RightMenuAnnotAddNote;
  660. pop.BindingEvent(pop.AddItem(menuItem), AnnotAddNoteText_MenuCommand);
  661. menuItem = new MenuItem();
  662. menuItem.Name = "FreeHandDefault";
  663. menuItem.Header = T_RightMenuAnnotDefault;
  664. pop.BindingEvent(pop.AddItem(menuItem), AnnotDefaultValue_MenuCommand);
  665. FreeHandAnnotPopMenu = pop;
  666. }
  667. /// <summary>
  668. /// 文本
  669. /// </summary>
  670. private void InitSelectFreeTextAnnotMenu()
  671. {
  672. var popMenu = new ContextMenu();
  673. PopMenu pop = new PopMenu(popMenu);
  674. var menuItem = new MenuItem();
  675. menuItem.Name = "FreeTextCopy";
  676. menuItem.Header = T_RightMenuAnnotCopy;
  677. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Copy);
  678. menuItem = new MenuItem();
  679. menuItem.Name = "FreeTextCut";
  680. menuItem.Header = T_RightMenuAnnotCut;
  681. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Cut);
  682. menuItem = new MenuItem();
  683. menuItem.Name = "FreeTextPaste";
  684. menuItem.Header = T_RightMenuAnnotPaste;
  685. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Paste);
  686. menuItem = new MenuItem();
  687. menuItem.Name = "FreeTextDelete";
  688. menuItem.Header = T_RightMenuAnnotDelete;
  689. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Delete);
  690. pop.AddItem(GetSeparator());
  691. menuItem = new MenuItem();
  692. menuItem.Name = "FreeTextColor";
  693. menuItem.Header = T_RightMenuFreetextAnnotFontColor;
  694. menuItem.Tag = "FontColor";
  695. pop.BindingEvent(pop.AddItem(menuItem), AnnotColorPalette_MenuCommand);
  696. menuItem = new MenuItem();
  697. menuItem.Name = "FreeTextFillColor";
  698. menuItem.Header = T_RightMenuFreetextAnnotFillColor;
  699. menuItem.Tag = "FillColor";
  700. pop.BindingEvent(pop.AddItem(menuItem), AnnotColorPalette_MenuCommand);
  701. menuItem = new MenuItem();
  702. menuItem.Name = "FreeTextFontFamily";
  703. menuItem.Header = T_RightMenuFreetextAnnotFont;
  704. pop.AddItem(menuItem);
  705. var family = TextFont.GetFamily();
  706. foreach (var item in family)
  707. {
  708. RadioButton familyRdioBtn = new RadioButton();
  709. familyRdioBtn.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style;
  710. familyRdioBtn.Background = new SolidColorBrush(Colors.Transparent);
  711. familyRdioBtn.Name = item.ValueStr;
  712. familyRdioBtn.Tag = item.ValueStr;
  713. familyRdioBtn.GroupName = "FontFamily";
  714. familyRdioBtn.Content = item.Content;
  715. pop.BindingEvent(pop.AddChild("FreeTextFontFamily", familyRdioBtn), FreeTextFontFamily_MenuCommand);
  716. }
  717. menuItem = new MenuItem();
  718. menuItem.Name = "FreeTextAglin";
  719. menuItem.Header = T_RightMenuFreetextAnnotTextAlignment;
  720. pop.AddItem(menuItem);
  721. var radioButton = new RadioButton();
  722. radioButton.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style;
  723. radioButton.Background = new SolidColorBrush(Colors.Transparent);
  724. radioButton.Name = "FreeTextAglinLeft";
  725. radioButton.Tag = "Left";
  726. radioButton.GroupName = "Aglin";
  727. radioButton.Content = T_RightMenuFreetextAnnotTextAlignmentAlignLeft;
  728. pop.BindingEvent(pop.AddChild("FreeTextAglin", radioButton), FreeTextAglin_MenuCommand);
  729. radioButton = new RadioButton();
  730. radioButton.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style;
  731. radioButton.Background = new SolidColorBrush(Colors.Transparent);
  732. radioButton.Name = "FreeTextAglinCenter";
  733. radioButton.Tag = "Center";
  734. radioButton.GroupName = "Aglin";
  735. radioButton.Content = T_RightMenuFreetextAnnotTextAlignmentAlignCenter;
  736. pop.BindingEvent(pop.AddChild("FreeTextAglin", radioButton), FreeTextAglin_MenuCommand);
  737. radioButton = new RadioButton();
  738. radioButton.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style;
  739. radioButton.Background = new SolidColorBrush(Colors.Transparent);
  740. radioButton.Name = "FreeTextAglinRight";
  741. radioButton.Tag = "Right";
  742. radioButton.GroupName = "Aglin";
  743. radioButton.Content = T_RightMenuFreetextAnnotTextAlignmentAlignRight;
  744. pop.BindingEvent(pop.AddChild("FreeTextAglin", radioButton), FreeTextAglin_MenuCommand);
  745. radioButton = new RadioButton();
  746. radioButton.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style;
  747. radioButton.Background = new SolidColorBrush(Colors.Transparent);
  748. radioButton.Name = "FreeTextAglinJustify";
  749. radioButton.Tag = "Justify";
  750. radioButton.GroupName = "Aglin";
  751. radioButton.Content = T_RightMenuFreetextAnnotTextAlignmentFullyJustified;
  752. //pop.BindingEvent(pop.AddChild("FreeTextAglin", radioButton), FreeTextAglin_MenuCommand);
  753. menuItem = new MenuItem();
  754. menuItem.Name = "FreeHandDefault";
  755. menuItem.Header = T_RightMenuAnnotDefault;
  756. pop.BindingEvent(pop.AddItem(menuItem), AnnotDefaultValue_MenuCommand);
  757. FreeTextAnnotPopMenu = pop;
  758. }
  759. /// <summary>
  760. /// 便签
  761. /// </summary>
  762. private void InitSelectStrickNoteAnnotMenu()
  763. {
  764. var popMenu = new ContextMenu();
  765. PopMenu pop = new PopMenu(popMenu);
  766. var menuItem = new MenuItem();
  767. menuItem.Name = "StrickNoteCopy";
  768. menuItem.Header = T_RightMenuAnnotCopy;
  769. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Copy);
  770. menuItem = new MenuItem();
  771. menuItem.Name = "StrickNoteCut";
  772. menuItem.Header = T_RightMenuAnnotCut;
  773. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Cut);
  774. menuItem = new MenuItem();
  775. menuItem.Name = "StrickNotePaste";
  776. menuItem.Header = T_RightMenuAnnotPaste;
  777. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Paste);
  778. menuItem = new MenuItem();
  779. menuItem.Name = "StrickNoteDelete";
  780. menuItem.Header = T_RightMenuAnnotDelete;
  781. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Delete);
  782. pop.AddItem(GetSeparator());
  783. menuItem = new MenuItem();
  784. menuItem.Name = "StrickNoteColor";
  785. menuItem.Header = T_RightMenuStickyNoteAnnotColor;
  786. pop.BindingEvent(pop.AddItem(menuItem), AnnotColorPalette_MenuCommand);
  787. menuItem = new MenuItem();
  788. menuItem.Name = "StrickNoteEdit";
  789. menuItem.Header = T_RightMenuStickyNoteAnnotEdit;
  790. pop.BindingEvent(pop.AddItem(menuItem), StrikeNoteEditStrike_MenuCommand);
  791. menuItem = new MenuItem();
  792. menuItem.Name = "StrickNoteDefault";
  793. menuItem.Header = T_RightMenuAnnotDefault;
  794. pop.BindingEvent(pop.AddItem(menuItem), AnnotDefaultValue_MenuCommand);
  795. StrickNoteAnnotPopMenu = pop;
  796. }
  797. /// <summary>
  798. /// 形状
  799. /// </summary>
  800. private void InitSelectShapeAnnotMenu()
  801. {
  802. var popMenu = new ContextMenu();
  803. PopMenu pop = new PopMenu(popMenu);
  804. var menuItem = new MenuItem();
  805. menuItem.Name = "ShapeCopy";
  806. menuItem.Header = T_RightMenuAnnotCopy;
  807. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Copy);
  808. menuItem = new MenuItem();
  809. menuItem.Name = "ShapeCut";
  810. menuItem.Header = T_RightMenuAnnotCut;
  811. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Cut);
  812. menuItem = new MenuItem();
  813. menuItem.Name = "ShapePaste";
  814. menuItem.Header = T_RightMenuAnnotPaste;
  815. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Paste);
  816. menuItem = new MenuItem();
  817. menuItem.Name = "ShapeDelete";
  818. menuItem.Header = T_RightMenuAnnotDelete;
  819. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Delete);
  820. pop.AddItem(GetSeparator());
  821. menuItem = new MenuItem();
  822. menuItem.Name = "ShapeColor";
  823. menuItem.Header = T_RightMenuSharpsNoteAnnotBorderColor;
  824. menuItem.Tag = "Color";
  825. pop.BindingEvent(pop.AddItem(menuItem), AnnotColorPalette_MenuCommand);
  826. menuItem = new MenuItem();
  827. menuItem.Name = "ShapeFillColor";
  828. menuItem.Header = T_RightMenuSharpsNoteAnnotFillColor;
  829. menuItem.Tag = "FillColor";
  830. pop.BindingEvent(pop.AddItem(menuItem), AnnotColorPalette_MenuCommand);
  831. menuItem = new MenuItem();
  832. menuItem.Name = "ShapeLineStyle";
  833. menuItem.Header = T_RightMenuSharpsNoteAnnotLineStyle;
  834. pop.AddItem(menuItem);
  835. RadioButton radioButton = new RadioButton();
  836. radioButton.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style;
  837. radioButton.Background = new SolidColorBrush(Colors.Transparent);
  838. radioButton.Name = "ShapeSolid";
  839. radioButton.Content = T_RightMenuSharpsNoteAnnotLineStyleSolidline;
  840. radioButton.GroupName = "LineStyle";
  841. radioButton.Tag = "Solid";
  842. pop.BindingEvent(pop.AddChild("ShapeLineStyle", radioButton), ShapeLineStyle_MenuCommand);
  843. radioButton = new RadioButton();
  844. radioButton.Style = App.Current.Resources["MenuRadioBtnStyle"] as Style;
  845. radioButton.Background = new SolidColorBrush(Colors.Transparent);
  846. radioButton.Name = "ShapeDash";
  847. radioButton.Content = T_RightMenuSharpsNoteAnnotLineStyleDottedLine;
  848. radioButton.GroupName = "LineStyle";
  849. radioButton.Tag = "Dash";
  850. pop.BindingEvent(pop.AddChild("ShapeLineStyle", radioButton), ShapeLineStyle_MenuCommand);
  851. menuItem = new MenuItem();
  852. menuItem.Name = "ShapeDirect";
  853. menuItem.Header = T_RightMenuSharpsNoteAnnotDirection;
  854. pop.AddItem(menuItem);
  855. menuItem = new MenuItem();
  856. menuItem.Name = "ShapeVer";
  857. menuItem.Header = T_RightMenuSharpsNoteAnnotDirectionVertical;
  858. menuItem.Tag = "Ver";
  859. pop.BindingEvent(pop.AddChild("ShapeDirect", menuItem), ShapeLineDirect_MenuCommand);
  860. menuItem = new MenuItem();
  861. menuItem.Name = "ShapeHor";
  862. menuItem.Header = T_RightMenuSharpsNoteAnnotDirectionHorizontal;
  863. menuItem.Tag = "Hor";
  864. pop.BindingEvent(pop.AddChild("ShapeDirect", menuItem), ShapeLineDirect_MenuCommand);
  865. menuItem = new MenuItem();
  866. menuItem.Name = "ShapeNoteText";
  867. menuItem.Header = T_RightMenuAnnotAddNote;
  868. pop.BindingEvent(pop.AddItem(menuItem), AnnotAddNoteText_MenuCommand);
  869. menuItem = new MenuItem();
  870. menuItem.Name = "ShapeDefault";
  871. menuItem.Header = T_RightMenuAnnotDefault;
  872. pop.BindingEvent(pop.AddItem(menuItem), AnnotDefaultValue_MenuCommand);
  873. ShapeAnnotPopMenu = pop;
  874. }
  875. /// <summary>
  876. /// 链接
  877. /// </summary>
  878. private void InitSelectLinkAnnotMenu()
  879. {
  880. var popMenu = new ContextMenu();
  881. PopMenu pop = new PopMenu(popMenu);
  882. var menuItem = new MenuItem();
  883. menuItem.Name = "LinkCopy";
  884. menuItem.Header = T_RightMenuAnnotCopy;
  885. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Copy);
  886. menuItem = new MenuItem();
  887. menuItem.Name = "LinkCut";
  888. menuItem.Header = T_RightMenuAnnotCut;
  889. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Cut);
  890. menuItem = new MenuItem();
  891. menuItem.Name = "LinkPaste";
  892. menuItem.Header = T_RightMenuAnnotPaste;
  893. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Paste);
  894. menuItem = new MenuItem();
  895. menuItem.Name = "LinkDelete";
  896. menuItem.Header = T_RightMenuAnnotDelete;
  897. //pop.BindingEvent(pop.AddItem(menuItem), Link_MenuCommand);
  898. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Delete);
  899. LinkAnnotPopMenu = pop;
  900. }
  901. /// <summary>
  902. /// 图章、签名
  903. /// </summary>
  904. private void InitSelectStampAnnotMenu()
  905. {
  906. var popMenu = new ContextMenu();
  907. PopMenu pop = new PopMenu(popMenu);
  908. var menuItem = new MenuItem();
  909. menuItem.Name = "StampCopy";
  910. menuItem.Header = T_RightMenuAnnotCopy;
  911. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Copy);
  912. menuItem = new MenuItem();
  913. menuItem.Name = "StampCut";
  914. menuItem.Header = T_RightMenuAnnotCut;
  915. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Cut);
  916. menuItem = new MenuItem();
  917. menuItem.Name = "StampPaste";
  918. menuItem.Header = T_RightMenuAnnotPaste;
  919. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Paste);
  920. menuItem = new MenuItem();
  921. menuItem.Name = "StampDelete";
  922. menuItem.Header = T_RightMenuAnnotDelete;
  923. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Delete);
  924. pop.AddItem(GetSeparator());
  925. menuItem = new MenuItem();
  926. menuItem.Name = "StampExportPicture";
  927. menuItem.Header = T_RightMenuStampNoteAnnotExport;
  928. pop.AddItem(menuItem);
  929. menuItem = new MenuItem();
  930. menuItem.Name = "StampExportPNG";
  931. menuItem.Header = T_RightMenuStampNoteAnnotExportPNG;
  932. menuItem.Tag = "PNG";
  933. pop.BindingEvent(pop.AddChild("StampExportPicture", menuItem), StampExportPicture_MenuCommand);
  934. //已跟设计确认,暂时不需要JPG格式
  935. //menuItem = new MenuItem();
  936. //menuItem.Name = "StampExportPNG";
  937. //menuItem.Header = "JPG";
  938. //menuItem.Tag = "JPG";
  939. //pop.BindingEvent(pop.AddChild("StampExportPicture", menuItem), StampExportPicture_MenuCommand);
  940. menuItem = new MenuItem();
  941. menuItem.Name = "StampExportPDF";
  942. menuItem.Header = T_RightMenuStampNoteAnnotExportPDF;
  943. menuItem.Tag = "PDF";
  944. pop.BindingEvent(pop.AddChild("StampExportPicture", menuItem), StampExportPicture_MenuCommand);
  945. menuItem = new MenuItem();
  946. menuItem.Name = "StampAddNote";
  947. menuItem.Header = T_RightMenuAnnotAddNote;
  948. pop.BindingEvent(pop.AddItem(menuItem), AnnotAddNoteText_MenuCommand);
  949. StampAnnotPopMenu = pop;
  950. }
  951. /// <summary>
  952. /// 多选注释
  953. /// </summary>
  954. private void InitSelectMultiAnnotMenu()
  955. {
  956. var popMenu = new ContextMenu();
  957. PopMenu pop = new PopMenu(popMenu);
  958. var menuItem = new MenuItem();
  959. menuItem.Name = "MultiCopy";
  960. menuItem.Header = T_RightMenuAnnotCopy;
  961. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Copy);
  962. menuItem = new MenuItem();
  963. menuItem.Name = "MultiCut";
  964. menuItem.Header = T_RightMenuAnnotCut;
  965. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Cut);
  966. menuItem = new MenuItem();
  967. menuItem.Name = "MultiDelete";
  968. menuItem.Header = T_RightMenuAnnotDelete;
  969. pop.BindingEvent(pop.AddItem(menuItem), ApplicationCommands.Delete);
  970. MultiAnnotPopMenu = pop;
  971. }
  972. #endregion 注释-右键菜单
  973. }
  974. }