Migrate View3D>Edit>Display options to ViewControls3D overflow menu

This commit is contained in:
John Lewin 2017-05-22 18:17:35 -07:00
parent 72a8a5c2fc
commit f9c769998d
8 changed files with 244 additions and 195 deletions

View file

@ -48,10 +48,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
public CheckBox expandMaterialOptions { get; private set; }
public CheckBox expandRotateOptions { get; private set; }
public CheckBox expandViewOptions { get; private set; }
public FlowLayoutWidget rotateOptionContainer;
private FlowLayoutWidget viewOptionContainer;
private FlowLayoutWidget materialOptionContainer;
// TODO: Remove debugging variables and draw functions once drag items are positioning correctly
@ -154,52 +152,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
view3DWidget.AddMaterialControls(materialOptionContainer);
}
// put in the view options
{
expandViewOptions = ExpandMenuOptionFactory.GenerateCheckBoxButton("Display".Localize().ToUpper(),
View3DWidget.ArrowRight,
View3DWidget.ArrowDown);
expandViewOptions.Margin = new BorderDouble(bottom: 2);
buttonPanel.AddChild(expandViewOptions);
expandViewOptions.CheckedStateChanged += expandViewOptions_CheckedStateChanged;
viewOptionContainer = new FlowLayoutWidget(FlowDirection.TopToBottom);
viewOptionContainer.HAnchor = HAnchor.ParentLeftRight;
viewOptionContainer.Padding = new BorderDouble(left: 4);
viewOptionContainer.Visible = false;
{
CheckBox showBedCheckBox = new CheckBox("Show Print Bed".Localize(), textColor: ActiveTheme.Instance.PrimaryTextColor);
showBedCheckBox.Checked = true;
showBedCheckBox.CheckedStateChanged += (sender, e) =>
{
view3DWidget.meshViewerWidget.RenderBed = showBedCheckBox.Checked;
};
viewOptionContainer.AddChild(showBedCheckBox);
if (buildHeight > 0)
{
CheckBox showBuildVolumeCheckBox = new CheckBox("Show Print Area".Localize(), textColor: ActiveTheme.Instance.PrimaryTextColor);
showBuildVolumeCheckBox.Checked = false;
showBuildVolumeCheckBox.Margin = new BorderDouble(bottom: 5);
showBuildVolumeCheckBox.CheckedStateChanged += (sender, e) =>
{
view3DWidget.meshViewerWidget.RenderBuildVolume = showBuildVolumeCheckBox.Checked;
};
viewOptionContainer.AddChild(showBuildVolumeCheckBox);
}
if (UserSettings.Instance.IsTouchScreen)
{
UserSettings.Instance.set("defaultRenderSetting", RenderTypes.Shaded.ToString());
}
else
{
view3DWidget.CreateRenderTypeRadioButtons(viewOptionContainer);
}
}
buttonPanel.AddChild(viewOptionContainer);
}
// Add vertical spacer
this.AddChild(new GuiWidget()
{
@ -250,7 +202,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
if (expandMaterialOptions.Checked == true)
{
expandRotateOptions.Checked = false;
expandViewOptions.Checked = false;
}
materialOptionContainer.Visible = expandMaterialOptions.Checked;
}
@ -261,26 +212,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
{
if (expandRotateOptions.Checked == true)
{
expandViewOptions.Checked = false;
expandMaterialOptions.Checked = false;
}
rotateOptionContainer.Visible = expandRotateOptions.Checked;
}
}
private void expandViewOptions_CheckedStateChanged(object sender, EventArgs e)
{
if (viewOptionContainer.Visible != expandViewOptions.Checked)
{
if (expandViewOptions.Checked == true)
{
expandRotateOptions.Checked = false;
expandMaterialOptions.Checked = false;
}
viewOptionContainer.Visible = expandViewOptions.Checked;
}
}
private void AddGridSnapSettings(GuiWidget widgetToAddTo)
{
FlowLayoutWidget container = new FlowLayoutWidget()

View file

@ -1692,121 +1692,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
AddRotateControls(Sidebar.rotateOptionContainer);
}
internal void CreateRenderTypeRadioButtons(FlowLayoutWidget viewOptionContainer)
{
string renderTypeString = UserSettings.Instance.get(UserSettingsKey.defaultRenderSetting);
if (renderTypeString == null)
{
if (UserSettings.Instance.IsTouchScreen)
{
renderTypeString = "Shaded";
}
else
{
renderTypeString = "Outlines";
}
UserSettings.Instance.set(UserSettingsKey.defaultRenderSetting, renderTypeString);
}
RenderOpenGl.RenderTypes renderType;
bool canParse = Enum.TryParse<RenderOpenGl.RenderTypes>(renderTypeString, out renderType);
if (canParse)
{
meshViewerWidget.RenderType = renderType;
}
{
RadioButton renderTypeCheckBox = new RadioButton("Shaded".Localize(), textColor: ActiveTheme.Instance.PrimaryTextColor);
renderTypeCheckBox.Checked = (meshViewerWidget.RenderType == RenderTypes.Shaded);
renderTypeCheckBox.CheckedStateChanged += (sender, e) =>
{
if (renderTypeCheckBox.Checked)
{
meshViewerWidget.RenderType = RenderTypes.Shaded;
UserSettings.Instance.set(UserSettingsKey.defaultRenderSetting, meshViewerWidget.RenderType.ToString());
}
};
viewOptionContainer.AddChild(renderTypeCheckBox);
}
{
RadioButton renderTypeCheckBox = new RadioButton("Outlines".Localize(), textColor: ActiveTheme.Instance.PrimaryTextColor);
renderTypeCheckBox.Checked = (meshViewerWidget.RenderType == RenderTypes.Outlines);
renderTypeCheckBox.CheckedStateChanged += (sender, e) =>
{
if (renderTypeCheckBox.Checked)
{
meshViewerWidget.RenderType = RenderTypes.Outlines;
UserSettings.Instance.set(UserSettingsKey.defaultRenderSetting, meshViewerWidget.RenderType.ToString());
}
};
viewOptionContainer.AddChild(renderTypeCheckBox);
}
{
RadioButton renderTypeCheckBox = new RadioButton("Polygons".Localize(), textColor: ActiveTheme.Instance.PrimaryTextColor);
renderTypeCheckBox.Checked = (meshViewerWidget.RenderType == RenderTypes.Polygons);
renderTypeCheckBox.CheckedStateChanged += (sender, e) =>
{
if (renderTypeCheckBox.Checked)
{
meshViewerWidget.RenderType = RenderTypes.Polygons;
UserSettings.Instance.set(UserSettingsKey.defaultRenderSetting, meshViewerWidget.RenderType.ToString());
}
};
viewOptionContainer.AddChild(renderTypeCheckBox);
}
{
RadioButton renderTypeCheckBox = new RadioButton("Overhang".Localize(), textColor: ActiveTheme.Instance.PrimaryTextColor);
renderTypeCheckBox.Checked = (meshViewerWidget.RenderType == RenderTypes.Overhang);
renderTypeCheckBox.CheckedStateChanged += (sender, e) =>
{
if (renderTypeCheckBox.Checked)
{
meshViewerWidget.RenderType = RenderTypes.Overhang;
UserSettings.Instance.set("defaultRenderSetting", meshViewerWidget.RenderType.ToString());
foreach (var meshAndTransform in Scene.VisibleMeshes(Matrix4X4.Identity))
{
meshAndTransform.MeshData.MarkAsChanged();
// change the color to be the right thing
GLMeshTrianglePlugin glMeshPlugin = GLMeshTrianglePlugin.Get(meshAndTransform.MeshData, (faceEdge) =>
{
Vector3 normal = faceEdge.containingFace.normal;
normal = Vector3.TransformVector(normal, meshAndTransform.Matrix).GetNormal();
VertexColorData colorData = new VertexColorData();
double startColor = 223.0 / 360.0;
double endColor = 5.0 / 360.0;
double delta = endColor - startColor;
RGBA_Bytes color = RGBA_Floats.FromHSL(startColor, .99, .49).GetAsRGBA_Bytes();
if (normal.z < 0)
{
color = RGBA_Floats.FromHSL(startColor - delta * normal.z, .99, .49).GetAsRGBA_Bytes();
}
colorData.red = color.red;
colorData.green = color.green;
colorData.blue = color.blue;
return colorData;
});
}
}
else
{
foreach (var meshTransform in Scene.VisibleMeshes(Matrix4X4.Identity))
{
// turn off the overhang colors
}
}
};
viewOptionContainer.AddChild(renderTypeCheckBox);
}
}
public List<IObject3DEditor> objectEditors = new List<IObject3DEditor>();
public Dictionary<Type, HashSet<IObject3DEditor>> objectEditorsByType = new Dictionary<Type, HashSet<IObject3DEditor>>();