Exemple #1
0
        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;
        }
Exemple #2
0
        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;
        }
Exemple #3
0
        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());
        }