using FastReport.Controls; using FastReport.Design.PageDesigners.Page; using FastReport.Utils; using System; using System.Drawing; using System.Windows.Forms; namespace FastReport.Design.RibbonDesigner { internal class RibbonTextGroup : RibbonGroup { #region Fields private WrappedPanel Panel1 { get; } public ToolbarFontComboBox cbxName; public ToolbarFontSizeComboBox cbxSize; public ToolbarButton btnBold; public ToolbarButton btnItalic; public ToolbarButton btnUnderline; public ToolbarButton btnLeft; public ToolbarButton btnCenter; public ToolbarButton btnRight; public ToolbarButton btnJustify; public ToolbarButton btnTop; public ToolbarButton btnMiddle; public ToolbarButton btnBottom; public ToolbarColorButton btnColor; public ToolbarTextAngleButton btnAngle; #endregion #region Private Methods private void UpdateControls() { bool enabled = Designer.SelectedTextObjects.Enabled; cbxName.Enabled = enabled; cbxSize.Enabled = enabled; btnBold.Enabled = enabled; btnItalic.Enabled = enabled; btnUnderline.Enabled = enabled; btnLeft.Enabled = enabled; btnCenter.Enabled = enabled; btnRight.Enabled = enabled; btnJustify.Enabled = enabled; btnTop.Enabled = enabled; btnMiddle.Enabled = enabled; btnBottom.Enabled = enabled; btnColor.Enabled = enabled; btnAngle.Enabled = enabled; if (enabled) { TextObject text = Designer.SelectedTextObjects.First; cbxName.FontName = text.Font.Name; cbxSize.FontSize = text.Font.Size; btnBold.Checked = text.Font.Bold; btnItalic.Checked = text.Font.Italic; btnUnderline.Checked = text.Font.Underline; btnLeft.Checked = text.HorzAlign == HorzAlign.Left; btnCenter.Checked = text.HorzAlign == HorzAlign.Center; btnRight.Checked = text.HorzAlign == HorzAlign.Right; btnJustify.Checked = text.HorzAlign == HorzAlign.Justify; btnTop.Checked = text.VertAlign == VertAlign.Top; btnMiddle.Checked = text.VertAlign == VertAlign.Center; btnBottom.Checked = text.VertAlign == VertAlign.Bottom; if (text.TextFill is SolidFill) btnColor.Color = (text.TextFill as SolidFill).Color; } else { cbxName.Text = ""; cbxSize.Text = ""; btnBold.Checked = false; btnItalic.Checked = false; btnUnderline.Checked = false; btnLeft.Checked = false; btnCenter.Checked = false; btnRight.Checked = false; btnJustify.Checked = false; btnTop.Checked = false; btnMiddle.Checked = false; btnBottom.Checked = false; } } private void cbxName_FontSelected(object sender, EventArgs e) { (Designer.ActiveReportTab.ActivePageDesigner as ReportPageDesigner).Workspace.Focus(); Designer.SelectedTextObjects.SetFontName(cbxName.FontName); } private void cbxSize_SizeSelected(object sender, EventArgs e) { (Designer.ActiveReportTab.ActivePageDesigner as ReportPageDesigner).Workspace.Focus(); Designer.SelectedTextObjects.SetFontSize(cbxSize.FontSize); } private void btnBold_Click(object sender, EventArgs e) { btnBold.Checked = !btnBold.Checked; Designer.SelectedTextObjects.ToggleFontStyle(FontStyle.Bold, btnBold.Checked); } private void btnItalic_Click(object sender, EventArgs e) { btnItalic.Checked = !btnItalic.Checked; Designer.SelectedTextObjects.ToggleFontStyle(FontStyle.Italic, btnItalic.Checked); } private void btnUnderline_Click(object sender, EventArgs e) { btnUnderline.Checked = !btnUnderline.Checked; Designer.SelectedTextObjects.ToggleFontStyle(FontStyle.Underline, btnUnderline.Checked); } private void btnLeft_Click(object sender, EventArgs e) { Designer.SelectedTextObjects.SetHAlign(HorzAlign.Left); } private void btnCenter_Click(object sender, EventArgs e) { Designer.SelectedTextObjects.SetHAlign(HorzAlign.Center); } private void btnRight_Click(object sender, EventArgs e) { Designer.SelectedTextObjects.SetHAlign(HorzAlign.Right); } private void btnJustify_Click(object sender, EventArgs e) { Designer.SelectedTextObjects.SetHAlign(HorzAlign.Justify); } private void btnTop_Click(object sender, EventArgs e) { Designer.SelectedTextObjects.SetVAlign(VertAlign.Top); } private void btnMiddle_Click(object sender, EventArgs e) { Designer.SelectedTextObjects.SetVAlign(VertAlign.Center); } private void btnBottom_Click(object sender, EventArgs e) { Designer.SelectedTextObjects.SetVAlign(VertAlign.Bottom); } private void btnColor_Click(object sender, EventArgs e) { Designer.SelectedTextObjects.SetTextColor(btnColor.DefaultColor); } private void btnAngle_AngleChanged(object sender, EventArgs e) { Designer.SelectedTextObjects.SetAngle((sender as ToolbarTextAngleButton).Angle); } #endregion #region Public Methods public override void SelectionChanged() { base.SelectionChanged(); Throttle.Execute(UpdateControls); } public override void UpdateContent() { base.UpdateContent(); Throttle.Execute(UpdateControls); } public override void SaveState() { base.SaveState(); Storage.SetStr("MruFonts", cbxName.MruFonts); } public override void RestoreState() { base.RestoreState(); cbxName.MruFonts = Storage.GetStr("MruFonts"); } public override void Localize() { base.Localize(); MyRes res = new MyRes("Designer,Toolbar,Text"); Text = res.Get(""); SetItemText(cbxName, res.Get("Name")); SetItemText(cbxSize, res.Get("Size")); SetItemText(btnBold, res.Get("Bold")); SetItemText(btnItalic, res.Get("Italic")); SetItemText(btnUnderline, res.Get("Underline")); SetItemText(btnLeft, res.Get("Left")); SetItemText(btnCenter, res.Get("Center")); SetItemText(btnRight, res.Get("Right")); SetItemText(btnJustify, res.Get("Justify")); SetItemText(btnTop, res.Get("Top")); SetItemText(btnMiddle, res.Get("Middle")); SetItemText(btnBottom, res.Get("Bottom")); SetItemText(btnColor, res.Get("Color")); SetItemText(btnAngle, res.Get("Angle")); } public override void UpdateUIStyle() { base.UpdateUIStyle(); btnColor.SetStyle(Designer.UIStyle); cbxName.SetStyle(Designer.UIStyle); cbxSize.SetStyle(Designer.UIStyle); } public override void UpdateDpiDependencies() { if (State == GroupState.Collapsed) return; base.UpdateDpiDependencies(); Panel1.MaxWidth = 250; Panel1.UpdateDpiDependencies(); cbxName.Owner = Designer; cbxName.Width = Designer.LogicalToDevice(126); cbxName.UpdateDpiDependencies(); cbxSize.Owner = Designer; cbxSize.Width = Designer.LogicalToDevice(40); cbxSize.UpdateDpiDependencies(); } #endregion public RibbonTextGroup(Designer designer) : base(designer) { Name = "TextGroup"; CollapsedImageName = "Ribbon.Text.png"; Priority = GroupPriority.High; cbxName = new ToolbarFontComboBox("cbxTextName", cbxName_FontSelected); cbxSize = new ToolbarFontSizeComboBox("cbxTextSize", cbxSize_SizeSelected); btnBold = new ToolbarButton("btnTextBold", 20, btnBold_Click); btnItalic = new ToolbarButton("btnTextItalic", 21, btnItalic_Click); btnUnderline = new ToolbarButton("btnTextUnderline", 22, btnUnderline_Click); btnLeft = new ToolbarButton("btnTextLeft", 25, btnLeft_Click); btnCenter = new ToolbarButton("btnTextCenter", 26, btnCenter_Click); btnRight = new ToolbarButton("btnTextRight", 27, btnRight_Click); btnJustify = new ToolbarButton("btnTextJustify", 28, btnJustify_Click); btnTop = new ToolbarButton("btnTextTop", 29, btnTop_Click); btnTop.BeginGroup = true; btnMiddle = new ToolbarButton("btnTextMiddle", 30, btnMiddle_Click); btnBottom = new ToolbarButton("btnTextBottom", 31, btnBottom_Click); btnColor = new ToolbarColorButton("btnTextColor", 23, Color.Black, btnColor_Click); btnColor.BeginGroup = true; btnAngle = new ToolbarTextAngleButton(designer, this, "btnTextAngle", 64, btnAngle_AngleChanged); Panel1 = new WrappedPanel() { VerticalAlignment = System.Windows.VerticalAlignment.Center, Margin = new Padding(0, 3, 0, 3) }; Panel1.AddItems( cbxName, cbxSize, btnBold, btnItalic, btnUnderline, btnLeft, btnCenter, btnRight, btnJustify, btnTop, btnMiddle, btnBottom, btnColor, btnAngle); Panel.AddPanels(Panel1); Localize(); UpdateDpiDependencies(); } } }