RibbonTextGroup.cs 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. using FastReport.Controls;
  2. using FastReport.Design.PageDesigners.Page;
  3. using FastReport.Utils;
  4. using System;
  5. using System.Drawing;
  6. using System.Windows.Forms;
  7. namespace FastReport.Design.RibbonDesigner
  8. {
  9. internal class RibbonTextGroup : RibbonGroup
  10. {
  11. #region Fields
  12. private WrappedPanel Panel1 { get; }
  13. public ToolbarFontComboBox cbxName;
  14. public ToolbarFontSizeComboBox cbxSize;
  15. public ToolbarButton btnBold;
  16. public ToolbarButton btnItalic;
  17. public ToolbarButton btnUnderline;
  18. public ToolbarButton btnLeft;
  19. public ToolbarButton btnCenter;
  20. public ToolbarButton btnRight;
  21. public ToolbarButton btnJustify;
  22. public ToolbarButton btnTop;
  23. public ToolbarButton btnMiddle;
  24. public ToolbarButton btnBottom;
  25. public ToolbarColorButton btnColor;
  26. public ToolbarTextAngleButton btnAngle;
  27. #endregion
  28. #region Private Methods
  29. private void UpdateControls()
  30. {
  31. bool enabled = Designer.SelectedTextObjects.Enabled;
  32. cbxName.Enabled = enabled;
  33. cbxSize.Enabled = enabled;
  34. btnBold.Enabled = enabled;
  35. btnItalic.Enabled = enabled;
  36. btnUnderline.Enabled = enabled;
  37. btnLeft.Enabled = enabled;
  38. btnCenter.Enabled = enabled;
  39. btnRight.Enabled = enabled;
  40. btnJustify.Enabled = enabled;
  41. btnTop.Enabled = enabled;
  42. btnMiddle.Enabled = enabled;
  43. btnBottom.Enabled = enabled;
  44. btnColor.Enabled = enabled;
  45. btnAngle.Enabled = enabled;
  46. if (enabled)
  47. {
  48. TextObject text = Designer.SelectedTextObjects.First;
  49. cbxName.FontName = text.Font.Name;
  50. cbxSize.FontSize = text.Font.Size;
  51. btnBold.Checked = text.Font.Bold;
  52. btnItalic.Checked = text.Font.Italic;
  53. btnUnderline.Checked = text.Font.Underline;
  54. btnLeft.Checked = text.HorzAlign == HorzAlign.Left;
  55. btnCenter.Checked = text.HorzAlign == HorzAlign.Center;
  56. btnRight.Checked = text.HorzAlign == HorzAlign.Right;
  57. btnJustify.Checked = text.HorzAlign == HorzAlign.Justify;
  58. btnTop.Checked = text.VertAlign == VertAlign.Top;
  59. btnMiddle.Checked = text.VertAlign == VertAlign.Center;
  60. btnBottom.Checked = text.VertAlign == VertAlign.Bottom;
  61. if (text.TextFill is SolidFill)
  62. btnColor.Color = (text.TextFill as SolidFill).Color;
  63. }
  64. else
  65. {
  66. cbxName.Text = "";
  67. cbxSize.Text = "";
  68. btnBold.Checked = false;
  69. btnItalic.Checked = false;
  70. btnUnderline.Checked = false;
  71. btnLeft.Checked = false;
  72. btnCenter.Checked = false;
  73. btnRight.Checked = false;
  74. btnJustify.Checked = false;
  75. btnTop.Checked = false;
  76. btnMiddle.Checked = false;
  77. btnBottom.Checked = false;
  78. }
  79. }
  80. private void cbxName_FontSelected(object sender, EventArgs e)
  81. {
  82. (Designer.ActiveReportTab.ActivePageDesigner as ReportPageDesigner).Workspace.Focus();
  83. Designer.SelectedTextObjects.SetFontName(cbxName.FontName);
  84. }
  85. private void cbxSize_SizeSelected(object sender, EventArgs e)
  86. {
  87. (Designer.ActiveReportTab.ActivePageDesigner as ReportPageDesigner).Workspace.Focus();
  88. Designer.SelectedTextObjects.SetFontSize(cbxSize.FontSize);
  89. }
  90. private void btnBold_Click(object sender, EventArgs e)
  91. {
  92. btnBold.Checked = !btnBold.Checked;
  93. Designer.SelectedTextObjects.ToggleFontStyle(FontStyle.Bold, btnBold.Checked);
  94. }
  95. private void btnItalic_Click(object sender, EventArgs e)
  96. {
  97. btnItalic.Checked = !btnItalic.Checked;
  98. Designer.SelectedTextObjects.ToggleFontStyle(FontStyle.Italic, btnItalic.Checked);
  99. }
  100. private void btnUnderline_Click(object sender, EventArgs e)
  101. {
  102. btnUnderline.Checked = !btnUnderline.Checked;
  103. Designer.SelectedTextObjects.ToggleFontStyle(FontStyle.Underline, btnUnderline.Checked);
  104. }
  105. private void btnLeft_Click(object sender, EventArgs e)
  106. {
  107. Designer.SelectedTextObjects.SetHAlign(HorzAlign.Left);
  108. }
  109. private void btnCenter_Click(object sender, EventArgs e)
  110. {
  111. Designer.SelectedTextObjects.SetHAlign(HorzAlign.Center);
  112. }
  113. private void btnRight_Click(object sender, EventArgs e)
  114. {
  115. Designer.SelectedTextObjects.SetHAlign(HorzAlign.Right);
  116. }
  117. private void btnJustify_Click(object sender, EventArgs e)
  118. {
  119. Designer.SelectedTextObjects.SetHAlign(HorzAlign.Justify);
  120. }
  121. private void btnTop_Click(object sender, EventArgs e)
  122. {
  123. Designer.SelectedTextObjects.SetVAlign(VertAlign.Top);
  124. }
  125. private void btnMiddle_Click(object sender, EventArgs e)
  126. {
  127. Designer.SelectedTextObjects.SetVAlign(VertAlign.Center);
  128. }
  129. private void btnBottom_Click(object sender, EventArgs e)
  130. {
  131. Designer.SelectedTextObjects.SetVAlign(VertAlign.Bottom);
  132. }
  133. private void btnColor_Click(object sender, EventArgs e)
  134. {
  135. Designer.SelectedTextObjects.SetTextColor(btnColor.DefaultColor);
  136. }
  137. private void btnAngle_AngleChanged(object sender, EventArgs e)
  138. {
  139. Designer.SelectedTextObjects.SetAngle((sender as ToolbarTextAngleButton).Angle);
  140. }
  141. #endregion
  142. #region Public Methods
  143. public override void SelectionChanged()
  144. {
  145. base.SelectionChanged();
  146. Throttle.Execute(UpdateControls);
  147. }
  148. public override void UpdateContent()
  149. {
  150. base.UpdateContent();
  151. Throttle.Execute(UpdateControls);
  152. }
  153. public override void SaveState()
  154. {
  155. base.SaveState();
  156. Storage.SetStr("MruFonts", cbxName.MruFonts);
  157. }
  158. public override void RestoreState()
  159. {
  160. base.RestoreState();
  161. cbxName.MruFonts = Storage.GetStr("MruFonts");
  162. }
  163. public override void Localize()
  164. {
  165. base.Localize();
  166. MyRes res = new MyRes("Designer,Toolbar,Text");
  167. Text = res.Get("");
  168. SetItemText(cbxName, res.Get("Name"));
  169. SetItemText(cbxSize, res.Get("Size"));
  170. SetItemText(btnBold, res.Get("Bold"));
  171. SetItemText(btnItalic, res.Get("Italic"));
  172. SetItemText(btnUnderline, res.Get("Underline"));
  173. SetItemText(btnLeft, res.Get("Left"));
  174. SetItemText(btnCenter, res.Get("Center"));
  175. SetItemText(btnRight, res.Get("Right"));
  176. SetItemText(btnJustify, res.Get("Justify"));
  177. SetItemText(btnTop, res.Get("Top"));
  178. SetItemText(btnMiddle, res.Get("Middle"));
  179. SetItemText(btnBottom, res.Get("Bottom"));
  180. SetItemText(btnColor, res.Get("Color"));
  181. SetItemText(btnAngle, res.Get("Angle"));
  182. }
  183. public override void UpdateUIStyle()
  184. {
  185. base.UpdateUIStyle();
  186. btnColor.SetStyle(Designer.UIStyle);
  187. cbxName.SetStyle(Designer.UIStyle);
  188. cbxSize.SetStyle(Designer.UIStyle);
  189. }
  190. public override void UpdateDpiDependencies()
  191. {
  192. if (State == GroupState.Collapsed)
  193. return;
  194. base.UpdateDpiDependencies();
  195. Panel1.MaxWidth = 250;
  196. Panel1.UpdateDpiDependencies();
  197. cbxName.Owner = Designer;
  198. cbxName.Width = Designer.LogicalToDevice(126);
  199. cbxName.UpdateDpiDependencies();
  200. cbxSize.Owner = Designer;
  201. cbxSize.Width = Designer.LogicalToDevice(40);
  202. cbxSize.UpdateDpiDependencies();
  203. }
  204. #endregion
  205. public RibbonTextGroup(Designer designer) : base(designer)
  206. {
  207. Name = "TextGroup";
  208. CollapsedImageName = "Ribbon.Text.png";
  209. Priority = GroupPriority.High;
  210. cbxName = new ToolbarFontComboBox("cbxTextName", cbxName_FontSelected);
  211. cbxSize = new ToolbarFontSizeComboBox("cbxTextSize", cbxSize_SizeSelected);
  212. btnBold = new ToolbarButton("btnTextBold", 20, btnBold_Click);
  213. btnItalic = new ToolbarButton("btnTextItalic", 21, btnItalic_Click);
  214. btnUnderline = new ToolbarButton("btnTextUnderline", 22, btnUnderline_Click);
  215. btnLeft = new ToolbarButton("btnTextLeft", 25, btnLeft_Click);
  216. btnCenter = new ToolbarButton("btnTextCenter", 26, btnCenter_Click);
  217. btnRight = new ToolbarButton("btnTextRight", 27, btnRight_Click);
  218. btnJustify = new ToolbarButton("btnTextJustify", 28, btnJustify_Click);
  219. btnTop = new ToolbarButton("btnTextTop", 29, btnTop_Click);
  220. btnTop.BeginGroup = true;
  221. btnMiddle = new ToolbarButton("btnTextMiddle", 30, btnMiddle_Click);
  222. btnBottom = new ToolbarButton("btnTextBottom", 31, btnBottom_Click);
  223. btnColor = new ToolbarColorButton("btnTextColor", 23, Color.Black, btnColor_Click);
  224. btnColor.BeginGroup = true;
  225. btnAngle = new ToolbarTextAngleButton(designer, this, "btnTextAngle", 64, btnAngle_AngleChanged);
  226. Panel1 = new WrappedPanel() { VerticalAlignment = System.Windows.VerticalAlignment.Center, Margin = new Padding(0, 3, 0, 3) };
  227. Panel1.AddItems(
  228. cbxName, cbxSize, btnBold, btnItalic, btnUnderline,
  229. btnLeft, btnCenter, btnRight, btnJustify,
  230. btnTop, btnMiddle, btnBottom,
  231. btnColor, btnAngle);
  232. Panel.AddPanels(Panel1);
  233. Localize();
  234. UpdateDpiDependencies();
  235. }
  236. }
  237. }