RibbonClipboardGroup.cs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using FastReport.Controls;
  2. using FastReport.Utils;
  3. using System.Windows.Forms;
  4. namespace FastReport.Design.RibbonDesigner
  5. {
  6. internal class RibbonClipboardGroup : RibbonGroup
  7. {
  8. #region Fields
  9. private StackedPanel Panel1 { get; }
  10. public ToolbarButton btnCut;
  11. public ToolbarButton btnCopy;
  12. public ToolbarButton btnPaste;
  13. public ToolbarButton btnFormatPainter;
  14. private Timer clipboardTimer;
  15. #endregion
  16. #region Private Methods
  17. private void UpdateControls()
  18. {
  19. btnCut.Enabled = Designer.cmdCut.Enabled;
  20. btnCopy.Enabled = Designer.cmdCopy.Enabled;
  21. btnFormatPainter.Enabled = Designer.cmdFormatPainter.Enabled;
  22. btnFormatPainter.Checked = Designer.FormatPainter;
  23. }
  24. #endregion
  25. #region Protected Methods
  26. protected override void Dispose(bool disposing)
  27. {
  28. if (disposing)
  29. {
  30. clipboardTimer.Dispose();
  31. }
  32. base.Dispose(disposing);
  33. }
  34. #endregion
  35. #region Public Methods
  36. public override void SelectionChanged()
  37. {
  38. base.SelectionChanged();
  39. Throttle.Execute(UpdateControls);
  40. }
  41. public override void UpdateContent()
  42. {
  43. base.UpdateContent();
  44. Throttle.Execute(UpdateControls);
  45. }
  46. public override void Localize()
  47. {
  48. base.Localize();
  49. MyRes res = new MyRes("Designer,Menu,Edit");
  50. Text = Res.Get("Designer,Ribbon,Clipboard");
  51. SetItemText(btnCut, res.Get("Cut"));
  52. SetItemText(btnCopy, res.Get("Copy"));
  53. SetItemText(btnPaste, res.Get("Paste"));
  54. SetItemText(btnFormatPainter, Res.Get("Designer,Toolbar,Standard,FormatPainter"));
  55. }
  56. public override void UpdateDpiDependencies()
  57. {
  58. if (State == GroupState.Collapsed)
  59. return;
  60. base.UpdateDpiDependencies();
  61. Panel1.UpdateDpiDependencies();
  62. btnPaste.Image = Designer.GetImage("Ribbon.Paste.png");
  63. }
  64. public override void UpdateState()
  65. {
  66. base.UpdateState();
  67. btnCut.DisplayStyle = btnCopy.DisplayStyle = btnFormatPainter.DisplayStyle = State == GroupState.Reduced ? ToolStripItemDisplayStyle.Image : ToolStripItemDisplayStyle.ImageAndText;
  68. }
  69. #endregion
  70. public RibbonClipboardGroup(Designer designer) : base(designer)
  71. {
  72. Name = "EditGroup";
  73. CollapsedImageName = "Ribbon.Paste.png";
  74. btnCut = new ToolbarButton("btnStdCut", 5, Designer.cmdCut.Invoke);
  75. btnCut.BeginGroup = true;
  76. btnCopy = new ToolbarButton("btnStdCopy", 6, Designer.cmdCopy.Invoke);
  77. btnPaste = new ToolbarButton("btnStdPaste", 7, Designer.cmdPaste.Invoke);
  78. btnPaste.MakeBig();
  79. btnFormatPainter = new ToolbarButton("btnStdFormatPainter", 18, Designer.cmdFormatPainter.Invoke);
  80. btnFormatPainter.CheckOnClick = true;
  81. Panel1 = new StackedPanel() { Margin = new Padding(0, 0, 0, 2) };
  82. Panel1.AddItems(
  83. btnCut, btnCopy, btnFormatPainter);
  84. Panel.AddItems(btnPaste);
  85. Panel.AddPanels(Panel1);
  86. clipboardTimer = new Timer();
  87. clipboardTimer.Interval = 500;
  88. clipboardTimer.Tick += (s, e) => btnPaste.Enabled = Designer.cmdPaste.Enabled;
  89. clipboardTimer.Start();
  90. Localize();
  91. UpdateState();
  92. UpdateDpiDependencies();
  93. }
  94. }
  95. }