LayoutToolbar.cs 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. using System;
  2. using FastReport.Controls;
  3. using FastReport.Utils;
  4. namespace FastReport.Design.Toolbars
  5. {
  6. internal class LayoutToolbar : DesignerToolbarBase
  7. {
  8. #region Fields
  9. public ToolbarButton btnAlignToGrid;
  10. public ToolbarButton btnLeft;
  11. public ToolbarButton btnCenter;
  12. public ToolbarButton btnRight;
  13. public ToolbarButton btnTop;
  14. public ToolbarButton btnMiddle;
  15. public ToolbarButton btnBottom;
  16. public ToolbarButton btnSameWidth;
  17. public ToolbarButton btnSameHeight;
  18. public ToolbarButton btnSameSize;
  19. public ToolbarButton btnSizeToGrid;
  20. public ToolbarButton btnSpaceHorizontally;
  21. public ToolbarButton btnIncreaseHorizontalSpacing;
  22. public ToolbarButton btnDecreaseHorizontalSpacing;
  23. public ToolbarButton btnRemoveHorizontalSpacing;
  24. public ToolbarButton btnSpaceVertically;
  25. public ToolbarButton btnIncreaseVerticalSpacing;
  26. public ToolbarButton btnDecreaseVerticalSpacing;
  27. public ToolbarButton btnRemoveVerticalSpacing;
  28. public ToolbarButton btnCenterHorizontally;
  29. public ToolbarButton btnCenterVertically;
  30. public ToolbarButton btnBringToFront;
  31. public ToolbarButton btnSendToBack;
  32. #endregion
  33. #region Private Methods
  34. private void UpdateControls()
  35. {
  36. bool oneObjSelected = Designer.SelectedComponents.Count > 0;
  37. bool threeObjSelected = Designer.SelectedComponents.Count >= 3;
  38. bool severalObjSelected = Designer.SelectedComponents.Count > 1;
  39. bool canChangeOrder = Designer.SelectedComponents.Count > 0 &&
  40. Designer.SelectedComponents.First.HasFlag(Flags.CanChangeOrder);
  41. bool canMove = Designer.SelectedComponents.Count > 0 &&
  42. Designer.SelectedComponents.First.HasFlag(Flags.CanMove);
  43. bool canResize = Designer.SelectedComponents.Count > 0 &&
  44. Designer.SelectedComponents.First.HasFlag(Flags.CanResize);
  45. btnAlignToGrid.Enabled = oneObjSelected && canMove;
  46. btnLeft.Enabled = severalObjSelected && canMove;
  47. btnCenter.Enabled = severalObjSelected && canMove;
  48. btnRight.Enabled = severalObjSelected && canMove;
  49. btnTop.Enabled = severalObjSelected && canMove;
  50. btnMiddle.Enabled = severalObjSelected && canMove;
  51. btnBottom.Enabled = severalObjSelected && canMove;
  52. btnSameWidth.Enabled = severalObjSelected && canResize;
  53. btnSameHeight.Enabled = severalObjSelected && canResize;
  54. btnSameSize.Enabled = severalObjSelected && canResize;
  55. btnSizeToGrid.Enabled = oneObjSelected && canResize;
  56. btnSpaceHorizontally.Enabled = threeObjSelected && canMove;
  57. btnIncreaseHorizontalSpacing.Enabled = severalObjSelected && canMove;
  58. btnDecreaseHorizontalSpacing.Enabled = severalObjSelected && canMove;
  59. btnRemoveHorizontalSpacing.Enabled = severalObjSelected && canMove;
  60. btnSpaceVertically.Enabled = threeObjSelected && canMove;
  61. btnIncreaseVerticalSpacing.Enabled = severalObjSelected && canMove;
  62. btnDecreaseVerticalSpacing.Enabled = severalObjSelected && canMove;
  63. btnRemoveVerticalSpacing.Enabled = severalObjSelected && canMove;
  64. btnCenterHorizontally.Enabled = oneObjSelected && canMove;
  65. btnCenterVertically.Enabled = oneObjSelected && canMove;
  66. btnBringToFront.Enabled = canChangeOrder;
  67. btnSendToBack.Enabled = canChangeOrder;
  68. }
  69. #endregion
  70. #region Public Methods
  71. public override void SelectionChanged()
  72. {
  73. base.SelectionChanged();
  74. Throttle.Execute(UpdateControls);
  75. }
  76. public override void UpdateContent()
  77. {
  78. base.UpdateContent();
  79. Throttle.Execute(UpdateControls);
  80. }
  81. public override void Localize()
  82. {
  83. base.Localize();
  84. MyRes res = new MyRes("Designer,Toolbar,Layout");
  85. Text = res.Get("");
  86. SetItemText(btnAlignToGrid, res.Get("AlignToGrid"));
  87. SetItemText(btnLeft, res.Get("Left"));
  88. SetItemText(btnCenter, res.Get("Center"));
  89. SetItemText(btnRight, res.Get("Right"));
  90. SetItemText(btnTop, res.Get("Top"));
  91. SetItemText(btnMiddle, res.Get("Middle"));
  92. SetItemText(btnBottom, res.Get("Bottom"));
  93. SetItemText(btnSameWidth, res.Get("SameWidth"));
  94. SetItemText(btnSameHeight, res.Get("SameHeight"));
  95. SetItemText(btnSameSize, res.Get("SameSize"));
  96. SetItemText(btnSizeToGrid, res.Get("SizeToGrid"));
  97. SetItemText(btnSpaceHorizontally, res.Get("SpaceHorizontally"));
  98. SetItemText(btnIncreaseHorizontalSpacing, res.Get("IncreaseHorizontalSpacing"));
  99. SetItemText(btnDecreaseHorizontalSpacing, res.Get("DecreaseHorizontalSpacing"));
  100. SetItemText(btnRemoveHorizontalSpacing, res.Get("RemoveHorizontalSpacing"));
  101. SetItemText(btnSpaceVertically, res.Get("SpaceVertically"));
  102. SetItemText(btnIncreaseVerticalSpacing, res.Get("IncreaseVerticalSpacing"));
  103. SetItemText(btnDecreaseVerticalSpacing, res.Get("DecreaseVerticalSpacing"));
  104. SetItemText(btnRemoveVerticalSpacing, res.Get("RemoveVerticalSpacing"));
  105. SetItemText(btnCenterHorizontally, res.Get("CenterHorizontally"));
  106. SetItemText(btnCenterVertically, res.Get("CenterVertically"));
  107. SetItemText(btnBringToFront, res.Get("BringToFront"));
  108. SetItemText(btnSendToBack, res.Get("SendToBack"));
  109. }
  110. #endregion
  111. public LayoutToolbar(Designer designer)
  112. : base(designer)
  113. {
  114. Name = "LayoutToolbar";
  115. btnAlignToGrid = new ToolbarButton("btnLayoutAlignToGrid", 98, Designer.SelectedComponents.AlignToGrid);
  116. btnSizeToGrid = new ToolbarButton("btnLayoutSizeToGrid", 57, Designer.SelectedComponents.SizeToGrid);
  117. btnLeft = new ToolbarButton("btnLayoutLeft", 41, Designer.SelectedComponents.AlignLeft);
  118. btnLeft.BeginGroup = true;
  119. btnCenter = new ToolbarButton("btnLayoutCenter", 42, Designer.SelectedComponents.AlignCenter);
  120. btnRight = new ToolbarButton("btnLayoutRight", 45, Designer.SelectedComponents.AlignRight);
  121. btnTop = new ToolbarButton("btnLayoutTop", 46, Designer.SelectedComponents.AlignTop);
  122. btnTop.BeginGroup = true;
  123. btnMiddle = new ToolbarButton("btnLayoutMiddle", 47, Designer.SelectedComponents.AlignMiddle);
  124. btnBottom = new ToolbarButton("btnLayoutBottom", 50, Designer.SelectedComponents.AlignBottom);
  125. btnSameWidth = new ToolbarButton("btnLayoutSameWidth", 83, Designer.SelectedComponents.SameWidth);
  126. btnSameWidth.BeginGroup = true;
  127. btnSameHeight = new ToolbarButton("btnLayoutSameHeight", 84, Designer.SelectedComponents.SameHeight);
  128. btnSameSize = new ToolbarButton("btnLayoutSameSize", 91, Designer.SelectedComponents.SameSize);
  129. btnSpaceHorizontally = new ToolbarButton("btnLayoutSpaceHorizontally", 44, Designer.SelectedComponents.SpaceHorizontally);
  130. btnSpaceHorizontally.BeginGroup = true;
  131. btnIncreaseHorizontalSpacing = new ToolbarButton("btnLayoutIncreaseHorizontalSpacing", 92, Designer.SelectedComponents.IncreaseHorizontalSpacing);
  132. btnDecreaseHorizontalSpacing = new ToolbarButton("btnLayoutDecreaseHorizontalSpacing", 93, Designer.SelectedComponents.DecreaseHorizontalSpacing);
  133. btnRemoveHorizontalSpacing = new ToolbarButton("btnLayoutRemoveHorizontalSpacing", 94, Designer.SelectedComponents.RemoveHorizontalSpacing);
  134. btnSpaceVertically = new ToolbarButton("btnLayoutSpaceVertically", 49, Designer.SelectedComponents.SpaceVertically);
  135. btnSpaceVertically.BeginGroup = true;
  136. btnIncreaseVerticalSpacing = new ToolbarButton("btnLayoutIncreaseVerticalSpacing", 95, Designer.SelectedComponents.IncreaseVerticalSpacing);
  137. btnDecreaseVerticalSpacing = new ToolbarButton("btnLayoutDecreaseVerticalSpacing", 96, Designer.SelectedComponents.DecreaseVerticalSpacing);
  138. btnRemoveVerticalSpacing = new ToolbarButton("btnLayoutRemoveVerticalSpacing", 97, Designer.SelectedComponents.RemoveVerticalSpacing);
  139. btnCenterHorizontally = new ToolbarButton("btnLayoutCenterHorizontally", 43, Designer.SelectedComponents.CenterHorizontally);
  140. btnCenterHorizontally.BeginGroup = true;
  141. btnCenterVertically = new ToolbarButton("btnLayoutCenterVertically", 48, Designer.SelectedComponents.CenterVertically);
  142. btnBringToFront = new ToolbarButton("btnLayoutBringToFront", 14, Designer.cmdBringToFront.Invoke);
  143. btnBringToFront.BeginGroup = true;
  144. btnSendToBack = new ToolbarButton("btnLayoutSendToBack", 15, Designer.cmdSendToBack.Invoke);
  145. AddItems(
  146. btnAlignToGrid, btnSizeToGrid,
  147. btnLeft, btnCenter, btnRight,
  148. btnTop, btnMiddle, btnBottom,
  149. btnSameWidth, btnSameHeight, btnSameSize,
  150. btnSpaceHorizontally, btnIncreaseHorizontalSpacing, btnDecreaseHorizontalSpacing, btnRemoveHorizontalSpacing,
  151. btnSpaceVertically, btnIncreaseVerticalSpacing, btnDecreaseVerticalSpacing, btnRemoveVerticalSpacing,
  152. btnCenterHorizontally, btnCenterVertically,
  153. btnBringToFront, btnSendToBack);
  154. Localize();
  155. UpdateDpiDependencies();
  156. }
  157. }
  158. }