TextToolbar.cs 9.9 KB

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