Use generic rather than printer scope
- Issue MatterHackers/MCCentral#3494 "New Part" crashes with null reference exception
This commit is contained in:
parent
455426d84c
commit
e563334b4d
4 changed files with 48 additions and 58 deletions
|
|
@ -660,6 +660,42 @@ namespace MatterHackers.MatterControl
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public double SceneTreeHeight
|
||||
{
|
||||
get
|
||||
{
|
||||
if (double.TryParse(UserSettings.Instance.get(UserSettingsKey.SceneTreeHeight), out double controlHeight))
|
||||
{
|
||||
return Math.Max(controlHeight, 35);
|
||||
}
|
||||
|
||||
return 35;
|
||||
}
|
||||
set
|
||||
{
|
||||
var minimumValue = Math.Max(value, 35);
|
||||
UserSettings.Instance.set(UserSettingsKey.SceneTreeHeight, minimumValue.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public double SelectedObjectEditorHeight
|
||||
{
|
||||
get
|
||||
{
|
||||
if (double.TryParse(UserSettings.Instance.get(UserSettingsKey.SelectedObjectEditorHeight), out double controlHeight))
|
||||
{
|
||||
return Math.Max(controlHeight, 35);
|
||||
}
|
||||
|
||||
return 120;
|
||||
}
|
||||
set
|
||||
{
|
||||
var minimumValue = Math.Max(value, 35);
|
||||
UserSettings.Instance.set(UserSettingsKey.SelectedObjectEditorHeight, minimumValue.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class PrinterViewState
|
||||
|
|
@ -768,42 +804,6 @@ namespace MatterHackers.MatterControl
|
|||
UserSettings.Instance.set(UserSettingsKey.SelectedObjectPanelWidth, minimumValue.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public double SceneTreeHeight
|
||||
{
|
||||
get
|
||||
{
|
||||
if (double.TryParse(UserSettings.Instance.get(UserSettingsKey.SceneTreeHeight), out double controlHeight))
|
||||
{
|
||||
return Math.Max(controlHeight, 35);
|
||||
}
|
||||
|
||||
return 35;
|
||||
}
|
||||
set
|
||||
{
|
||||
var minimumValue = Math.Max(value, 35);
|
||||
UserSettings.Instance.set(UserSettingsKey.SceneTreeHeight, minimumValue.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public double SelectedObjectEditorHeight
|
||||
{
|
||||
get
|
||||
{
|
||||
if (double.TryParse(UserSettings.Instance.get(UserSettingsKey.SelectedObjectEditorHeight), out double controlHeight))
|
||||
{
|
||||
return Math.Max(controlHeight, 35);
|
||||
}
|
||||
|
||||
return 120;
|
||||
}
|
||||
set
|
||||
{
|
||||
var minimumValue = Math.Max(value, 35);
|
||||
UserSettings.Instance.set(UserSettingsKey.SelectedObjectEditorHeight, minimumValue.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class PrinterConfig
|
||||
|
|
|
|||
|
|
@ -250,7 +250,7 @@ namespace MatterHackers.MatterControl.DesignTools.Operations
|
|||
|
||||
return currentTransform;
|
||||
}
|
||||
|
||||
|
||||
public static Vector3 GetCenter(this IObject3D item)
|
||||
{
|
||||
return item.GetAxisAlignedBoundingBox(Matrix4X4.Identity).Center;
|
||||
|
|
|
|||
|
|
@ -48,9 +48,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
private IObject3D item = new Object3D();
|
||||
|
||||
private ThemeConfig theme;
|
||||
private BedConfig sceneContext;
|
||||
private View3DWidget view3DWidget;
|
||||
private InteractiveScene scene;
|
||||
private PrinterConfig printer;
|
||||
private SectionWidget editorSection;
|
||||
private TextButton editButton;
|
||||
|
||||
|
|
@ -58,7 +57,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
private InlineTitleEdit inlineTitleEdit;
|
||||
private BottomResizeContainer editorColumn;
|
||||
|
||||
public SelectedObjectPanel(View3DWidget view3DWidget, InteractiveScene scene, ThemeConfig theme, PrinterConfig printer)
|
||||
public SelectedObjectPanel(View3DWidget view3DWidget, BedConfig sceneContext, ThemeConfig theme)
|
||||
: base(FlowDirection.TopToBottom)
|
||||
{
|
||||
this.HAnchor = HAnchor.Stretch;
|
||||
|
|
@ -66,8 +65,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
this.Padding = 0;
|
||||
this.view3DWidget = view3DWidget;
|
||||
this.theme = theme;
|
||||
this.scene = scene;
|
||||
this.printer = printer;
|
||||
this.sceneContext = sceneContext;
|
||||
|
||||
this.ContentPanel = new FlowLayoutWidget(FlowDirection.TopToBottom)
|
||||
{
|
||||
|
|
@ -91,7 +89,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
{
|
||||
HAnchor = HAnchor.Stretch,
|
||||
VAnchor = VAnchor.Absolute,
|
||||
Height = printer.ViewState.SelectedObjectEditorHeight
|
||||
Height = sceneContext.ViewState.SelectedObjectEditorHeight
|
||||
};
|
||||
|
||||
var toolbar = new Toolbar(theme)
|
||||
|
|
@ -102,6 +100,8 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
};
|
||||
editorColumn.AddChild(toolbar);
|
||||
|
||||
var scene = sceneContext.Scene;
|
||||
|
||||
editButton = new TextButton("Edit".Localize(), theme)
|
||||
{
|
||||
BackgroundColor = theme.MinimalShade,
|
||||
|
|
@ -252,11 +252,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
public void SetActiveItem(IObject3D selectedItem)
|
||||
{
|
||||
if (!scene.HasSelection)
|
||||
{
|
||||
this.Parent.Visible = false;
|
||||
return;
|
||||
}
|
||||
|
||||
var selectedItemType = selectedItem.GetType();
|
||||
|
||||
|
|
@ -266,8 +261,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
this.item = selectedItem;
|
||||
|
||||
var viewMode = printer?.ViewState.ViewMode;
|
||||
|
||||
HashSet<IObject3DEditor> mappedEditors = ApplicationController.Instance.GetEditorsForType(selectedItemType);
|
||||
|
||||
var activeEditors = new List<(IObject3DEditor, IObject3D, string)>();
|
||||
|
|
@ -358,7 +351,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
button.EnsureAvailablity();
|
||||
button.Click += (s, e) =>
|
||||
{
|
||||
nodeOperation.Operation(selectedItem, scene).ConfigureAwait(false);
|
||||
nodeOperation.Operation(selectedItem, sceneContext.Scene).ConfigureAwait(false);
|
||||
};
|
||||
|
||||
buttons.Add(button);
|
||||
|
|
@ -410,7 +403,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
public override void OnClosed(ClosedEventArgs e)
|
||||
{
|
||||
printer.ViewState.SelectedObjectEditorHeight = editorColumn.Height;
|
||||
sceneContext.ViewState.SelectedObjectEditorHeight = editorColumn.Height;
|
||||
base.OnClosed(e);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
TrackballTumbleWidget.TransformState = TrackBallTransformType.Rotation;
|
||||
|
||||
selectedObjectPanel = new SelectedObjectPanel(this, Scene, theme, printer)
|
||||
selectedObjectPanel = new SelectedObjectPanel(this, sceneContext, theme)
|
||||
{
|
||||
VAnchor = VAnchor.Stretch,
|
||||
};
|
||||
|
|
@ -187,7 +187,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
{
|
||||
HAnchor = HAnchor.Stretch,
|
||||
VAnchor = VAnchor.Absolute,
|
||||
Height = Printer.ViewState.SceneTreeHeight
|
||||
Height = sceneContext.ViewState.SceneTreeHeight
|
||||
};
|
||||
modelViewSidePanel.AddChild(treeSection);
|
||||
|
||||
|
|
@ -365,10 +365,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
|
|||
|
||||
public override void OnClosed(ClosedEventArgs e)
|
||||
{
|
||||
if (Printer != null)
|
||||
{
|
||||
Printer.ViewState.SceneTreeHeight = treeSection.Height;
|
||||
}
|
||||
sceneContext.ViewState.SceneTreeHeight = treeSection.Height;
|
||||
|
||||
viewControls3D.TransformStateChanged -= ViewControls3D_TransformStateChanged;
|
||||
Scene.SelectionChanged -= Scene_SelectionChanged;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue