From 91ff0d4a885c49cd949bba3d2f1f47f989b2f313 Mon Sep 17 00:00:00 2001 From: Lars Brubaker Date: Thu, 7 Jun 2018 18:16:16 -0700 Subject: [PATCH] Improved selected object editor panel issue: MatterHackers/MCCentral#3536 Consider if Object3D items should have coupling to MatterControl --- .../ResizeContainer/BottomResizeContainer.cs | 14 ++++++++ PartPreviewWindow/SelectedObjectPanel.cs | 36 +++++++++++-------- Submodules/MatterSlice | 2 +- 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/CustomWidgets/ResizeContainer/BottomResizeContainer.cs b/CustomWidgets/ResizeContainer/BottomResizeContainer.cs index 21093d710..464a9df9a 100644 --- a/CustomWidgets/ResizeContainer/BottomResizeContainer.cs +++ b/CustomWidgets/ResizeContainer/BottomResizeContainer.cs @@ -29,6 +29,7 @@ either expressed or implied, of the FreeBSD Project. using MatterHackers.Agg; using MatterHackers.Agg.UI; +using System; namespace MatterHackers.MatterControl.CustomWidgets { @@ -49,6 +50,7 @@ namespace MatterHackers.MatterControl.CustomWidgets this.SpliterBarColor = theme.SplitterBackground; } + public event EventHandler Resized; public Color SpliterBarColor { get; set; } public int SplitterHeight @@ -65,6 +67,11 @@ namespace MatterHackers.MatterControl.CustomWidgets } } + protected virtual void OnResized(EventArgs e) + { + this.Resized?.Invoke(this, e); + } + public override void OnDraw(Graphics2D graphics2D) { graphics2D.FillRectangle(LocalBounds.Left, LocalBounds.Bottom, LocalBounds.Right, LocalBounds.Bottom + this.SplitterHeight, this.SpliterBarColor); @@ -106,6 +113,13 @@ namespace MatterHackers.MatterControl.CustomWidgets public override void OnMouseUp(MouseEventArgs mouseEvent) { + var mouseUpY = TransformToScreenSpace(mouseEvent.Position).Y; + if (mouseDownOnBar + && mouseUpY != mouseDownY) + { + OnResized(null); + } + mouseDownOnBar = false; base.OnMouseUp(mouseEvent); } diff --git a/PartPreviewWindow/SelectedObjectPanel.cs b/PartPreviewWindow/SelectedObjectPanel.cs index 27a3b21d1..800abd896 100644 --- a/PartPreviewWindow/SelectedObjectPanel.cs +++ b/PartPreviewWindow/SelectedObjectPanel.cs @@ -50,12 +50,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow private ThemeConfig theme; private BedConfig sceneContext; private View3DWidget view3DWidget; - private SectionWidget editorSection; + private SectionWidget selectedObjectEditorSection; private TextButton editButton; private GuiWidget editorPanel; private InlineTitleEdit inlineTitleEdit; - private BottomResizeContainer editorColumn; + private BottomResizeContainer selectedObjectEditorColumn; public SelectedObjectPanel(View3DWidget view3DWidget, BedConfig sceneContext, ThemeConfig theme) : base(FlowDirection.TopToBottom) @@ -85,7 +85,7 @@ namespace MatterHackers.MatterControl.PartPreviewWindow this.AddChild(scrollable); - editorColumn = new BottomResizeContainer(theme) + selectedObjectEditorColumn = new BottomResizeContainer(theme) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Absolute, @@ -98,7 +98,12 @@ namespace MatterHackers.MatterControl.PartPreviewWindow HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Fit }; - editorColumn.AddChild(toolbar); + selectedObjectEditorColumn.AddChild(toolbar); + + selectedObjectEditorColumn.Resized += (s, e) => + { + sceneContext.ViewState.SelectedObjectEditorHeight = selectedObjectEditorColumn.Height; + }; var scene = sceneContext.Scene; @@ -178,8 +183,9 @@ namespace MatterHackers.MatterControl.PartPreviewWindow scene.SelectionChanged += (s, e) => removeButton.Enabled = scene.SelectedItem?.CanRemove == true; toolbar.AddChild(removeButton); + // Add container used to host the current specialized editor for the selection - editorColumn.AddChild(editorPanel = new FlowLayoutWidget(FlowDirection.TopToBottom) + selectedObjectEditorColumn.AddChild(editorPanel = new FlowLayoutWidget(FlowDirection.TopToBottom) { HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Fit, @@ -195,18 +201,26 @@ namespace MatterHackers.MatterControl.PartPreviewWindow } }; - editorSection = new SectionWidget("Editor", editorColumn, theme, serializationKey: UserSettingsKey.EditorPanelExpanded, defaultExpansion: true, setContentVAnchor: false) + var selectedObjectEditorColumnBody = new GuiWidget() { + HAnchor = HAnchor.Stretch, VAnchor = VAnchor.Fit }; + selectedObjectEditorColumnBody.AddChild(selectedObjectEditorColumn); + + selectedObjectEditorSection = new SectionWidget("Editor", selectedObjectEditorColumnBody, theme, serializationKey: UserSettingsKey.EditorPanelExpanded, defaultExpansion: true) + { + VAnchor = VAnchor.Fit, + }; + // TODO: Replace hackery with practical solution - if (editorSection.Children.FirstOrDefault() is ExpandCheckboxButton checkbox) + if (selectedObjectEditorSection.Children.FirstOrDefault() is ExpandCheckboxButton checkbox) { checkbox.ReplaceChild(checkbox.Children[1], inlineTitleEdit); } - this.ContentPanel.AddChild(editorSection); + this.ContentPanel.AddChild(selectedObjectEditorSection); var colorSection = new SectionWidget( "Color".Localize(), @@ -400,11 +414,5 @@ namespace MatterHackers.MatterControl.PartPreviewWindow children.Add(content); }); } - - public override void OnClosed(ClosedEventArgs e) - { - sceneContext.ViewState.SelectedObjectEditorHeight = editorColumn.Height; - base.OnClosed(e); - } } } \ No newline at end of file diff --git a/Submodules/MatterSlice b/Submodules/MatterSlice index b9b5f5904..b19589fc2 160000 --- a/Submodules/MatterSlice +++ b/Submodules/MatterSlice @@ -1 +1 @@ -Subproject commit b9b5f59042a6404dd99a61a9e295f072ab6f915b +Subproject commit b19589fc2ebfa4db00f691c8421cb718aef32145