RibbonLayoutGroup.cs 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. using System.Windows.Forms;
  2. using FastReport.Controls;
  3. using FastReport.Utils;
  4. namespace FastReport.Design.RibbonDesigner
  5. {
  6. internal class RibbonLayoutGroup : RibbonGroup
  7. {
  8. #region Fields
  9. private WrappedPanel Panel1 { get; }
  10. private StackedPanel Panel2 { get; }
  11. private WrappedPanel alignPanel { get; }
  12. private WrappedPanel sizePanel { get; }
  13. private WrappedPanel intervalPanel { get; }
  14. private ToolbarLabel lblAlign;
  15. private ToolbarLabel lblSize;
  16. private ToolbarLabel lblInterval;
  17. public ToolbarButton btnAlignToGrid;
  18. public ToolbarButton btnLeft;
  19. public ToolbarButton btnCenter;
  20. public ToolbarButton btnRight;
  21. public ToolbarButton btnTop;
  22. public ToolbarButton btnMiddle;
  23. public ToolbarButton btnBottom;
  24. public ToolbarButton btnSameWidth;
  25. public ToolbarButton btnSameHeight;
  26. public ToolbarButton btnSameSize;
  27. public ToolbarButton btnSizeToGrid;
  28. public ToolbarButton btnSpaceHorizontally;
  29. public ToolbarButton btnIncreaseHorizontalSpacing;
  30. public ToolbarButton btnDecreaseHorizontalSpacing;
  31. public ToolbarButton btnRemoveHorizontalSpacing;
  32. public ToolbarButton btnSpaceVertically;
  33. public ToolbarButton btnIncreaseVerticalSpacing;
  34. public ToolbarButton btnDecreaseVerticalSpacing;
  35. public ToolbarButton btnRemoveVerticalSpacing;
  36. public ToolbarButton btnCenterHorizontally;
  37. public ToolbarButton btnCenterVertically;
  38. public ToolbarButton btnBringToFront;
  39. public ToolbarButton btnSendToBack;
  40. public ToolbarButton btnGroup;
  41. public ToolbarButton btnUngroup;
  42. #endregion
  43. #region Private Methods
  44. private void UpdateControls()
  45. {
  46. bool oneObjSelected = Designer.SelectedComponents.Count > 0;
  47. bool threeObjSelected = Designer.SelectedComponents.Count >= 3;
  48. bool severalObjSelected = Designer.SelectedComponents.Count > 1;
  49. bool canChangeOrder = Designer.SelectedComponents.Count > 0 &&
  50. Designer.SelectedComponents.First.HasFlag(Flags.CanChangeOrder);
  51. bool canMove = Designer.SelectedComponents.Count > 0 &&
  52. Designer.SelectedComponents.First.HasFlag(Flags.CanMove);
  53. bool canResize = Designer.SelectedComponents.Count > 0 &&
  54. Designer.SelectedComponents.First.HasFlag(Flags.CanResize);
  55. btnAlignToGrid.Enabled = oneObjSelected && canMove;
  56. btnLeft.Enabled = severalObjSelected && canMove;
  57. btnCenter.Enabled = severalObjSelected && canMove;
  58. btnRight.Enabled = severalObjSelected && canMove;
  59. btnTop.Enabled = severalObjSelected && canMove;
  60. btnMiddle.Enabled = severalObjSelected && canMove;
  61. btnBottom.Enabled = severalObjSelected && canMove;
  62. btnSameWidth.Enabled = severalObjSelected && canResize;
  63. btnSameHeight.Enabled = severalObjSelected && canResize;
  64. btnSameSize.Enabled = severalObjSelected && canResize;
  65. btnSizeToGrid.Enabled = oneObjSelected && canResize;
  66. btnSpaceHorizontally.Enabled = threeObjSelected && canMove;
  67. btnIncreaseHorizontalSpacing.Enabled = severalObjSelected && canMove;
  68. btnDecreaseHorizontalSpacing.Enabled = severalObjSelected && canMove;
  69. btnRemoveHorizontalSpacing.Enabled = severalObjSelected && canMove;
  70. btnSpaceVertically.Enabled = threeObjSelected && canMove;
  71. btnIncreaseVerticalSpacing.Enabled = severalObjSelected && canMove;
  72. btnDecreaseVerticalSpacing.Enabled = severalObjSelected && canMove;
  73. btnRemoveVerticalSpacing.Enabled = severalObjSelected && canMove;
  74. btnCenterHorizontally.Enabled = oneObjSelected && canMove;
  75. btnCenterVertically.Enabled = oneObjSelected && canMove;
  76. btnBringToFront.Enabled = canChangeOrder;
  77. btnSendToBack.Enabled = canChangeOrder;
  78. btnGroup.Enabled = Designer.cmdGroup.Enabled;
  79. btnUngroup.Enabled = Designer.cmdUngroup.Enabled;
  80. }
  81. #endregion
  82. #region Public Methods
  83. public override void SelectionChanged()
  84. {
  85. base.SelectionChanged();
  86. Throttle.Execute(UpdateControls);
  87. }
  88. public override void UpdateContent()
  89. {
  90. base.UpdateContent();
  91. Throttle.Execute(UpdateControls);
  92. }
  93. public override void Localize()
  94. {
  95. base.Localize();
  96. MyRes res = new MyRes("Designer,Toolbar,Layout");
  97. Text = res.Get("");
  98. SetItemText(btnAlignToGrid, res.Get("AlignToGrid"));
  99. SetItemText(btnLeft, res.Get("Left"));
  100. SetItemText(btnCenter, res.Get("Center"));
  101. SetItemText(btnRight, res.Get("Right"));
  102. SetItemText(btnTop, res.Get("Top"));
  103. SetItemText(btnMiddle, res.Get("Middle"));
  104. SetItemText(btnBottom, res.Get("Bottom"));
  105. SetItemText(btnSameWidth, res.Get("SameWidth"));
  106. SetItemText(btnSameHeight, res.Get("SameHeight"));
  107. SetItemText(btnSameSize, res.Get("SameSize"));
  108. SetItemText(btnSizeToGrid, res.Get("SizeToGrid"));
  109. SetItemText(btnSpaceHorizontally, res.Get("SpaceHorizontally"));
  110. SetItemText(btnIncreaseHorizontalSpacing, res.Get("IncreaseHorizontalSpacing"));
  111. SetItemText(btnDecreaseHorizontalSpacing, res.Get("DecreaseHorizontalSpacing"));
  112. SetItemText(btnRemoveHorizontalSpacing, res.Get("RemoveHorizontalSpacing"));
  113. SetItemText(btnSpaceVertically, res.Get("SpaceVertically"));
  114. SetItemText(btnIncreaseVerticalSpacing, res.Get("IncreaseVerticalSpacing"));
  115. SetItemText(btnDecreaseVerticalSpacing, res.Get("DecreaseVerticalSpacing"));
  116. SetItemText(btnRemoveVerticalSpacing, res.Get("RemoveVerticalSpacing"));
  117. SetItemText(btnCenterHorizontally, res.Get("CenterHorizontally"));
  118. SetItemText(btnCenterVertically, res.Get("CenterVertically"));
  119. SetItemText(btnBringToFront, res.Get("BringToFront"));
  120. SetItemText(btnSendToBack, res.Get("SendToBack"));
  121. res = new MyRes("Designer,Toolbar,Standard");
  122. SetItemText(btnGroup, res.Get("Group"));
  123. SetItemText(btnUngroup, res.Get("Ungroup"));
  124. res = new MyRes("Designer,Ribbon");
  125. lblAlign.Text = res.Get("Alignment");
  126. lblSize.Text = res.Get("Size");
  127. lblInterval.Text = res.Get("Spacing");
  128. }
  129. public override void UpdateDpiDependencies()
  130. {
  131. if (State == GroupState.Collapsed)
  132. return;
  133. base.UpdateDpiDependencies();
  134. Panel1.MaxWidth = 50;
  135. Panel1.UpdateDpiDependencies();
  136. sizePanel.MaxWidth = 80;
  137. sizePanel.UpdateDpiDependencies();
  138. alignPanel.MaxWidth = 110;
  139. alignPanel.UpdateDpiDependencies();
  140. intervalPanel.MaxWidth = 100;
  141. intervalPanel.UpdateDpiDependencies();
  142. }
  143. public override void UpdateState()
  144. {
  145. // do nothing
  146. }
  147. #endregion
  148. public RibbonLayoutGroup(Designer designer) : base(designer)
  149. {
  150. Name = "LayoutToolbar";
  151. CollapsedImageName = "Ribbon.AlignMenu.png";
  152. CollapsedButton.MakeBig(100);
  153. btnAlignToGrid = new ToolbarButton("btnLayoutAlignToGrid", 98, Designer.SelectedComponents.AlignToGrid);
  154. btnSizeToGrid = new ToolbarButton("btnLayoutSizeToGrid", 57, Designer.SelectedComponents.SizeToGrid);
  155. btnLeft = new ToolbarButton("btnLayoutLeft", 41, Designer.SelectedComponents.AlignLeft);
  156. btnCenter = new ToolbarButton("btnLayoutCenter", 42, Designer.SelectedComponents.AlignCenter);
  157. btnRight = new ToolbarButton("btnLayoutRight", 45, Designer.SelectedComponents.AlignRight);
  158. btnTop = new ToolbarButton("btnLayoutTop", 46, Designer.SelectedComponents.AlignTop);
  159. btnMiddle = new ToolbarButton("btnLayoutMiddle", 47, Designer.SelectedComponents.AlignMiddle);
  160. btnBottom = new ToolbarButton("btnLayoutBottom", 50, Designer.SelectedComponents.AlignBottom);
  161. btnSameWidth = new ToolbarButton("btnLayoutSameWidth", 83, Designer.SelectedComponents.SameWidth);
  162. btnSameHeight = new ToolbarButton("btnLayoutSameHeight", 84, Designer.SelectedComponents.SameHeight);
  163. btnSameSize = new ToolbarButton("btnLayoutSameSize", 91, Designer.SelectedComponents.SameSize);
  164. btnSpaceHorizontally = new ToolbarButton("btnLayoutSpaceHorizontally", 44, Designer.SelectedComponents.SpaceHorizontally);
  165. btnIncreaseHorizontalSpacing = new ToolbarButton("btnLayoutIncreaseHorizontalSpacing", 92, Designer.SelectedComponents.IncreaseHorizontalSpacing);
  166. btnDecreaseHorizontalSpacing = new ToolbarButton("btnLayoutDecreaseHorizontalSpacing", 93, Designer.SelectedComponents.DecreaseHorizontalSpacing);
  167. btnRemoveHorizontalSpacing = new ToolbarButton("btnLayoutRemoveHorizontalSpacing", 94, Designer.SelectedComponents.RemoveHorizontalSpacing);
  168. btnSpaceVertically = new ToolbarButton("btnLayoutSpaceVertically", 49, Designer.SelectedComponents.SpaceVertically);
  169. btnIncreaseVerticalSpacing = new ToolbarButton("btnLayoutIncreaseVerticalSpacing", 95, Designer.SelectedComponents.IncreaseVerticalSpacing);
  170. btnDecreaseVerticalSpacing = new ToolbarButton("btnLayoutDecreaseVerticalSpacing", 96, Designer.SelectedComponents.DecreaseVerticalSpacing);
  171. btnRemoveVerticalSpacing = new ToolbarButton("btnLayoutRemoveVerticalSpacing", 97, Designer.SelectedComponents.RemoveVerticalSpacing);
  172. btnCenterHorizontally = new ToolbarButton("btnLayoutCenterHorizontally", 43, Designer.SelectedComponents.CenterHorizontally);
  173. btnCenterHorizontally.BeginGroup = true;
  174. btnCenterVertically = new ToolbarButton("btnLayoutCenterVertically", 48, Designer.SelectedComponents.CenterVertically);
  175. btnCenterVertically.BeginGroup = true;
  176. btnBringToFront = new ToolbarButton("btnLayoutBringToFront", 14, Designer.cmdBringToFront.Invoke);
  177. btnSendToBack = new ToolbarButton("btnLayoutSendToBack", 15, Designer.cmdSendToBack.Invoke);
  178. btnGroup = new ToolbarButton("btnStdGroup", 17, Designer.cmdGroup.Invoke);
  179. btnUngroup = new ToolbarButton("btnStdUngroup", 16, Designer.cmdUngroup.Invoke);
  180. Panel1 = new WrappedPanel() { Margin = new Padding(0, 0, 0, 2) };
  181. Panel1.AddItems(
  182. btnAlignToGrid, btnSizeToGrid,
  183. btnBringToFront, btnSendToBack,
  184. btnGroup, btnUngroup);
  185. Panel2 = new StackedPanel() { Vertical = false };
  186. var panel = new StackedPanel();
  187. lblSize = new ToolbarLabel();
  188. sizePanel = new WrappedPanel() { Margin = new Padding(0, 3, 0, 3) };
  189. sizePanel.AddItems(
  190. btnSameWidth, btnSameHeight, btnSameSize);
  191. panel.Controls.Add(lblSize);
  192. panel.Controls.Add(sizePanel);
  193. Panel2.Controls.Add(panel);
  194. Panel2.Controls.Add(new ToolStripSeparator(true));
  195. panel = new StackedPanel();
  196. lblAlign = new ToolbarLabel();
  197. alignPanel = new WrappedPanel() { Margin = new Padding(0, 3, 0, 3) };
  198. alignPanel.AddItems(
  199. btnLeft, btnCenter, btnRight, btnCenterHorizontally,
  200. btnTop, btnMiddle, btnBottom, btnCenterVertically);
  201. panel.Controls.Add(lblAlign);
  202. panel.Controls.Add(alignPanel);
  203. Panel2.Controls.Add(panel);
  204. Panel2.Controls.Add(new ToolStripSeparator(true));
  205. panel = new StackedPanel();
  206. lblInterval = new ToolbarLabel();
  207. intervalPanel = new WrappedPanel() { Margin = new Padding(0, 3, 0, 3) };
  208. intervalPanel.AddItems(
  209. btnSpaceHorizontally, btnIncreaseHorizontalSpacing, btnDecreaseHorizontalSpacing, btnRemoveHorizontalSpacing,
  210. btnSpaceVertically, btnIncreaseVerticalSpacing, btnDecreaseVerticalSpacing, btnRemoveVerticalSpacing);
  211. panel.Controls.Add(lblInterval);
  212. panel.Controls.Add(intervalPanel);
  213. Panel2.Controls.Add(panel);
  214. Panel.Controls.AddRange(new Control[]
  215. {
  216. Panel1, new ToolStripSeparator(true), Panel2
  217. });
  218. Panel.CollapseTo(CollapsedButton);
  219. Localize();
  220. UpdateDpiDependencies();
  221. }
  222. }
  223. }