Fix loading state - SelectedObjectPanel/LayerPosition/TumbleCube

This commit is contained in:
John Lewin 2017-11-29 16:40:46 -08:00
parent a28e92bd27
commit 98b109df13
5 changed files with 28 additions and 33 deletions

View file

@ -105,9 +105,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
HAnchor = HAnchor.Right | HAnchor.Absolute,
Width = 60,
Margin = new BorderDouble(0, 80, 8, 42),
Maximum = sceneContext.LoadedGCode?.LayerCount ?? 1
};
view3DContainer.AddChild(layerScrollbar);
layerRenderRatioSlider = new DoubleSolidSlider(new Vector2(), SliceLayerSelector.SliderWidth);
layerRenderRatioSlider.FirstValue = 0;
layerRenderRatioSlider.FirstValueChanged += (s, e) =>
@ -130,12 +131,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
};
view3DContainer.AddChild(layerRenderRatioSlider);
sceneContext.LoadedGCodeChanged += BedPlate_LoadedGCodeChanged;
view3DContainer.AddChild(PrintProgressWidget(printer));
AddSettingsTabBar(leftToRight, view3DWidget);
sceneContext.LoadedGCodeChanged += BedPlate_LoadedGCodeChanged;
view3DWidget.BoundsChanged += (s, e) =>
{
SetSliderSizes();
@ -209,19 +210,21 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
gcode3DWidget.Visible = viewMode == PartViewMode.Layers3D;
gcode2DWidget.Visible = viewMode == PartViewMode.Layers2D;
view3DWidget.meshViewerWidget.IsActive = !showSliceLayers;
view3DWidget.meshViewerWidget.ModelView = viewMode == PartViewMode.Model;
if (showSliceLayers)
{
printer.Bed.Scene.ClearSelection();
}
var slidersVisible = sceneContext.RenderInfo != null && showSliceLayers;
var slidersVisible = viewMode != PartViewMode.Model && printer.Bed.LoadedGCode?.LayerCount > 0;
layerScrollbar.Visible = slidersVisible;
layerRenderRatioSlider.Visible = slidersVisible;
view3DWidget.selectedObjectContainer.Visible = !showSliceLayers && sceneContext.Scene.HasSelection;
view3DWidget.selectedObjectContainer.Visible = view3DWidget.meshViewerWidget.ModelView
&& sceneContext.Scene.HasSelection
&& printer?.ViewState.ViewMode != PartViewMode.Layers2D;
}
private GCodeFile loadedGCode => sceneContext.LoadedGCode;
@ -422,7 +425,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private void Parent_KeyDown(object sender, KeyEventArgs keyEvent)
{
if (gcode3DWidget.Visible)
if (gcode3DWidget.Visible
|| gcode2DWidget.Visible)
{
switch (keyEvent.KeyCode)
{

View file

@ -50,10 +50,10 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
private ThemeConfig theme;
private View3DWidget view3DWidget;
private InteractiveScene scene;
private PrinterConfig printer;
private Dictionary<Type, HashSet<IObject3DEditor>> objectEditorsByType;
public SelectedObjectPanel(View3DWidget view3DWidget, InteractiveScene scene, ThemeConfig theme)
public SelectedObjectPanel(View3DWidget view3DWidget, InteractiveScene scene, ThemeConfig theme, PrinterConfig printer)
: base(FlowDirection.TopToBottom)
{
this.HAnchor |= HAnchor.Left;
@ -64,6 +64,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
this.view3DWidget = view3DWidget;
this.theme = theme;
this.scene = scene;
this.printer = printer;
this.AddChild(itemName = new TextWidget("", textColor: ActiveTheme.Instance.PrimaryTextColor)
{
@ -167,7 +168,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
this.editorPanel.RemoveAllChildren();
this.Parent.Visible = true;
var viewMode = printer?.ViewState.ViewMode;
this.Parent.Visible = viewMode == null || viewMode == PartViewMode.Model;
HashSet<IObject3DEditor> mappedEditors;
objectEditorsByType.TryGetValue(selectedItem.GetType(), out mappedEditors);
@ -200,12 +203,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
HAnchor = HAnchor.Stretch
};
//dropDownList.SelectionChanged += (s, e) =>
//{
// ShowObjectEditor(
// mappedEditors.Where(m => m.Name == dropDownList.SelectedLabel).FirstOrDefault());
//};
foreach (IObject3DEditor editor in mappedEditors)
{
MenuItem menuItem = dropDownList.AddItem(editor.Name);

View file

@ -75,18 +75,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
this.AddChild(labelContainer);
}
public override void OnLoad(EventArgs args)
{
this.AddChild(new TumbleCubeControl(this)
{
Margin = new BorderDouble(50, 0, 0, 50),
VAnchor = VAnchor.Top,
HAnchor = HAnchor.Left,
});
base.OnLoad(args);
}
internal void SetRenderTarget(GuiWidget renderSource)
{
renderSource.AfterDraw += RenderSource_DrawExtra;

View file

@ -317,7 +317,7 @@ namespace MatterHackers.MeshVisualizer
public RenderTypes RenderType
{
get => this.IsActive ? renderType : RenderTypes.Wireframe;
get => this.ModelView ? renderType : RenderTypes.Wireframe;
set
{
if (renderType != value)
@ -415,7 +415,7 @@ namespace MatterHackers.MeshVisualizer
base.OnClosed(e);
}
public bool IsActive { get; set; } = true;
public bool ModelView { get; set; } = true;
private void DrawObject(IObject3D object3D, List<IObject3D> transparentMeshes, bool parentSelected, DrawEventArgs e)
{

View file

@ -428,7 +428,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
this.TrackballTumbleWidget.TransformState = TrackBallController.MouseDownType.Rotation;
selectedObjectPanel = new SelectedObjectPanel(this, this.Scene, theme)
selectedObjectPanel = new SelectedObjectPanel(this, this.Scene, theme, printer)
{
BackgroundColor = theme.InteractionLayerOverlayColor,
VAnchor = VAnchor.Top | VAnchor.Fit,
@ -444,9 +444,16 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
SplitterWidth = theme.SplitterWidth,
Visible = false,
};
this.AddChild(selectedObjectContainer);
this.InteractionLayer.AddChild(selectedObjectContainer);
selectedObjectContainer.AddChild(selectedObjectPanel);
this.InteractionLayer.AddChild(new TumbleCubeControl(this.InteractionLayer)
{
Margin = new BorderDouble(50, 0, 0, 50),
VAnchor = VAnchor.Top,
HAnchor = HAnchor.Left,
});
UiThread.RunOnIdle(AutoSpin);
// Wire up CommunicationStateChanged to lock footer bar when SyncToPrint is enabled
@ -1786,7 +1793,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
var selectedItem = Scene.SelectedItem;
if (materialButtons?.Count > 0)
{
bool setSelection = false;