using FastReport.Controls; using FastReport.Utils; using System.Windows.Forms; namespace FastReport.Design.RibbonDesigner { internal class RibbonPolygonGroup : RibbonGroup { #region Fields private StackedPanel Panel1 { get; } public ToolbarButton btnMove; public ToolbarButton btnPointer; public ToolbarButton btnAddPoint; public ToolbarButton btnAddBezier; public ToolbarButton btnRemovePoint; #endregion #region Private Methods private void UpdateControls() { bool enabled = (Designer.SelectedObjects.Count == 1) && (Designer.SelectedObjects[0] is PolyLineObject); Visible = enabled; btnMove.Enabled = enabled; btnPointer.Enabled = enabled; btnAddBezier.Enabled = enabled; btnAddPoint.Enabled = enabled; btnRemovePoint.Enabled = enabled; if (enabled) { PolyLineObject plobj = (Designer.SelectedObjects[0] as PolyLineObject); selectBtn(plobj.SelectionMode); } else { btnPointer.Checked = false; btnMove.Checked = false; btnAddPoint.Checked = false; btnAddBezier.Checked = false; btnRemovePoint.Checked = false; } } private void selectBtn(PolyLineObject.PolygonSelectionMode index) { btnMove.Checked = index == PolyLineObject.PolygonSelectionMode.MoveAndScale; btnPointer.Checked = index == PolyLineObject.PolygonSelectionMode.Normal; btnAddPoint.Checked = index == PolyLineObject.PolygonSelectionMode.AddToLine; btnAddBezier.Checked = index == PolyLineObject.PolygonSelectionMode.AddBezier; btnRemovePoint.Checked = index == PolyLineObject.PolygonSelectionMode.Delete; } #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 Localize() { base.Localize(); MyRes res = new MyRes("Designer,Toolbar,Polygon"); Text = res.Get(""); SetItemText(btnMove, res.Get("MoveScale")); SetItemText(btnPointer, res.Get("Pointer")); SetItemText(btnAddPoint, res.Get("AddPoint")); SetItemText(btnAddBezier, res.Get("Bezier")); SetItemText(btnRemovePoint, res.Get("RemovePoint")); } public override void UpdateDpiDependencies() { if (State == GroupState.Collapsed) return; base.UpdateDpiDependencies(); Panel1.UpdateDpiDependencies(); btnMove.Image = Designer.GetImage("Ribbon.PolygonMove.png"); btnPointer.Image = Designer.GetImage("Ribbon.PolygonSelect.png"); } public override void UpdateState() { base.UpdateState(); btnAddPoint.DisplayStyle = btnAddBezier.DisplayStyle = btnRemovePoint.DisplayStyle = State == GroupState.Reduced ? ToolStripItemDisplayStyle.Image : ToolStripItemDisplayStyle.ImageAndText; } #endregion public RibbonPolygonGroup(Designer designer) : base(designer) { Name = "PolygonGroup"; CollapsedImageName = "Ribbon.Polygon.png"; btnMove = new ToolbarButton("btnMove", 256, Designer.CmdPolySelectMove.Invoke); btnMove.MakeBig(); btnPointer = new ToolbarButton("btnPolygonPointer", 252, Designer.CmdPolySelectPointer.Invoke); btnPointer.MakeBig(); btnAddPoint = new ToolbarButton("btnPolygonAddPoint", 253, Designer.CmdPolySelectAddPoint.Invoke); btnAddBezier = new ToolbarButton("btnPolygonAddPointToStart", 254, Designer.CmdPolySelectBezier.Invoke); btnRemovePoint = new ToolbarButton("btnPolygonRemovePoint", 255, Designer.CmdPolySelectRemovePoint.Invoke); Panel1 = new StackedPanel() { Margin = new Padding(0, 0, 0, 2) }; Panel1.AddItems(btnAddPoint, btnAddBezier, btnRemovePoint); Panel.AddItems(btnMove, btnPointer); Panel.AddPanels(Panel1); selectBtn(PolyLineObject.PolygonSelectionMode.Normal); Localize(); UpdateState(); UpdateDpiDependencies(); } } }