private void AddMirrorControls(FlowLayoutWidget buttonPanel) { List <GuiWidget> mirrorControls = new List <GuiWidget>(); double oldFixedWidth = view3DWidget.textImageButtonFactory.FixedWidth; view3DWidget.textImageButtonFactory.FixedWidth = view3DWidget.EditButtonHeight; FlowLayoutWidget buttonContainer = new FlowLayoutWidget(FlowDirection.LeftToRight); buttonContainer.HAnchor = HAnchor.ParentLeftRight; Button mirrorXButton = view3DWidget.textImageButtonFactory.Generate("X", centerText: true); buttonContainer.AddChild(mirrorXButton); mirrorControls.Add(mirrorXButton); mirrorXButton.Click += (object sender, EventArgs mouseEvent) => { if (view3DWidget.SelectedMeshGroupIndex != -1) { view3DWidget.SelectedMeshGroup.ReverseFaceEdges(); view3DWidget.SelectedMeshGroupTransform = PlatingHelper.ApplyAtCenter(view3DWidget.SelectedMeshGroup, view3DWidget.SelectedMeshGroupTransform, Matrix4X4.CreateScale(-1, 1, 1)); view3DWidget.PartHasBeenChanged(); Invalidate(); } }; Button mirrorYButton = view3DWidget.textImageButtonFactory.Generate("Y", centerText: true); buttonContainer.AddChild(mirrorYButton); mirrorControls.Add(mirrorYButton); mirrorYButton.Click += (object sender, EventArgs mouseEvent) => { if (view3DWidget.SelectedMeshGroupIndex != -1) { view3DWidget.SelectedMeshGroup.ReverseFaceEdges(); view3DWidget.SelectedMeshGroupTransform = PlatingHelper.ApplyAtCenter(view3DWidget.SelectedMeshGroup, view3DWidget.SelectedMeshGroupTransform, Matrix4X4.CreateScale(1, -1, 1)); view3DWidget.PartHasBeenChanged(); Invalidate(); } }; Button mirrorZButton = view3DWidget.textImageButtonFactory.Generate("Z", centerText: true); buttonContainer.AddChild(mirrorZButton); mirrorControls.Add(mirrorZButton); mirrorZButton.Click += (object sender, EventArgs mouseEvent) => { if (view3DWidget.SelectedMeshGroupIndex != -1) { view3DWidget.SelectedMeshGroup.ReverseFaceEdges(); view3DWidget.SelectedMeshGroupTransform = PlatingHelper.ApplyAtCenter(view3DWidget.SelectedMeshGroup, view3DWidget.SelectedMeshGroupTransform, Matrix4X4.CreateScale(1, 1, -1)); view3DWidget.PartHasBeenChanged(); Invalidate(); } }; buttonPanel.AddChild(buttonContainer); buttonPanel.AddChild(view3DWidget.GenerateHorizontalRule()); view3DWidget.textImageButtonFactory.FixedWidth = oldFixedWidth; }
private void AddMirrorControls(FlowLayoutWidget buttonPanel) { List <GuiWidget> mirrorControls = new List <GuiWidget>(); double oldFixedWidth = view3DWidget.textImageButtonFactory.FixedWidth; view3DWidget.textImageButtonFactory.FixedWidth = view3DWidget.EditButtonHeight; FlowLayoutWidget buttonContainer = new FlowLayoutWidget(FlowDirection.LeftToRight); buttonContainer.HAnchor = HAnchor.ParentLeftRight; Button mirrorXButton = view3DWidget.textImageButtonFactory.Generate("X", centerText: true); buttonContainer.AddChild(mirrorXButton); mirrorControls.Add(mirrorXButton); mirrorXButton.Click += (object sender, EventArgs mouseEvent) => { if (view3DWidget.SelectedMeshGroupIndex != -1) { view3DWidget.UndoBuffer.AddAndDo(new UndoRedoActions(() => MirrorOnAxis(0), () => MirrorOnAxis(0))); } }; Button mirrorYButton = view3DWidget.textImageButtonFactory.Generate("Y", centerText: true); buttonContainer.AddChild(mirrorYButton); mirrorControls.Add(mirrorYButton); mirrorYButton.Click += (object sender, EventArgs mouseEvent) => { if (view3DWidget.SelectedMeshGroupIndex != -1) { view3DWidget.UndoBuffer.AddAndDo(new UndoRedoActions(() => MirrorOnAxis(1), () => MirrorOnAxis(1))); } }; Button mirrorZButton = view3DWidget.textImageButtonFactory.Generate("Z", centerText: true); buttonContainer.AddChild(mirrorZButton); mirrorControls.Add(mirrorZButton); mirrorZButton.Click += (object sender, EventArgs mouseEvent) => { if (view3DWidget.SelectedMeshGroupIndex != -1) { view3DWidget.UndoBuffer.AddAndDo(new UndoRedoActions(() => MirrorOnAxis(2), () => MirrorOnAxis(2))); } }; buttonPanel.AddChild(buttonContainer); buttonPanel.AddChild(view3DWidget.GenerateHorizontalRule()); view3DWidget.textImageButtonFactory.FixedWidth = oldFixedWidth; }
private void AddScaleControls(FlowLayoutWidget buttonPanel) { List <GuiWidget> scaleControls = new List <GuiWidget>(); // Put in the scale ratio edit field { FlowLayoutWidget scaleRatioContainer = new FlowLayoutWidget(FlowDirection.LeftToRight); scaleRatioContainer.HAnchor = HAnchor.ParentLeftRight; scaleRatioContainer.Padding = new BorderDouble(5); string scaleRatioLabelText = "Ratio".Localize(); string scaleRatioLabelTextFull = "{0}:".FormatWith(scaleRatioLabelText); TextWidget scaleRatioLabel = new TextWidget(scaleRatioLabelTextFull, textColor: ActiveTheme.Instance.PrimaryTextColor); scaleRatioLabel.Margin = new BorderDouble(0, 0, 3, 0); scaleRatioLabel.VAnchor = VAnchor.ParentCenter; scaleRatioContainer.AddChild(scaleRatioLabel); scaleRatioContainer.AddChild(new HorizontalSpacer()); scaleRatioControl = new MHNumberEdit(1, pixelWidth: 50 * GuiWidget.DeviceScale, allowDecimals: true, increment: .05); scaleRatioControl.SelectAllOnFocus = true; scaleRatioControl.VAnchor = VAnchor.ParentCenter; scaleRatioContainer.AddChild(scaleRatioControl); scaleRatioControl.ActuallNumberEdit.KeyPressed += (sender, e) => { OnSelectedTransformChanged(this, null); }; scaleRatioControl.ActuallNumberEdit.KeyDown += (sender, e) => { OnSelectedTransformChanged(this, null); }; scaleRatioControl.ActuallNumberEdit.EnterPressed += (object sender, KeyEventArgs keyEvent) => { ApplyScaleFromEditField(); }; scaleRatioContainer.AddChild(CreateScaleDropDownMenu()); buttonPanel.AddChild(scaleRatioContainer); scaleControls.Add(scaleRatioControl); } applyScaleButton = view3DWidget.WhiteButtonFactory.Generate("Apply Scale".Localize(), centerText: true); applyScaleButton.Cursor = Cursors.Hand; buttonPanel.AddChild(applyScaleButton); scaleControls.Add(applyScaleButton); applyScaleButton.Click += (object sender, EventArgs mouseEvent) => { ApplyScaleFromEditField(); }; // add in the dimensions { buttonPanel.AddChild(CreateAxisScalingControl("x".ToUpper(), 0)); buttonPanel.AddChild(CreateAxisScalingControl("y".ToUpper(), 1)); buttonPanel.AddChild(CreateAxisScalingControl("z".ToUpper(), 2)); uniformScale = new CheckBox("Lock Ratio".Localize(), textColor: ActiveTheme.Instance.PrimaryTextColor); uniformScale.Checked = true; FlowLayoutWidget leftToRight = new FlowLayoutWidget(); leftToRight.Padding = new BorderDouble(5, 3); leftToRight.AddChild(uniformScale); buttonPanel.AddChild(leftToRight); } buttonPanel.AddChild(view3DWidget.GenerateHorizontalRule()); }