diff --git a/MatterControlLib/DesignTools/Interfaces/ICustomEditorDraw.cs b/MatterControlLib/DesignTools/Interfaces/ICustomEditorDraw.cs new file mode 100644 index 000000000..89350be7f --- /dev/null +++ b/MatterControlLib/DesignTools/Interfaces/ICustomEditorDraw.cs @@ -0,0 +1,40 @@ +/* +Copyright (c) 2018, Lars Brubaker, John Lewin +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the FreeBSD Project. +*/ + +using System.Collections.Generic; +using MatterHackers.Agg.UI; +using MatterHackers.MatterControl.PartPreviewWindow; + +namespace MatterHackers.MatterControl.DesignTools +{ + public interface ICustomEditorDraw : IEditorDrawControled + { + void AddEditorTransparents(Object3DControlsLayer object3DControlLayer, List transparentMeshes, DrawEventArgs e); + } +} \ No newline at end of file diff --git a/MatterControlLib/DesignTools/Interfaces/IEditorDraw.cs b/MatterControlLib/DesignTools/Interfaces/IEditorDraw.cs index 85d6f6e8f..e52772882 100644 --- a/MatterControlLib/DesignTools/Interfaces/IEditorDraw.cs +++ b/MatterControlLib/DesignTools/Interfaces/IEditorDraw.cs @@ -1,5 +1,5 @@ /* -Copyright (c) 2018, Lars Brubaker, John Lewin +Copyright (c) 2023, Lars Brubaker, John Lewin All rights reserved. Redistribution and use in source and binary forms, with or without @@ -27,28 +27,17 @@ of the authors and should not be interpreted as representing official policies, either expressed or implied, of the FreeBSD Project. */ -using System.Collections.Generic; using MatterHackers.Agg.UI; using MatterHackers.MatterControl.PartPreviewWindow; using MatterHackers.VectorMath; namespace MatterHackers.MatterControl.DesignTools { - public interface IEditorDraw + public interface IEditorDraw { void DrawEditor(Object3DControlsLayer object3DControlLayer, DrawEventArgs e); /// The worldspace AABB of any 3D editing geometry drawn by DrawEditor. AxisAlignedBoundingBox GetEditorWorldspaceAABB(Object3DControlsLayer layer); } - - public interface IEditorDrawControled : IEditorDraw - { - bool DoEditorDraw(bool isSelected); - } - - public interface ICustomEditorDraw : IEditorDrawControled - { - void AddEditorTransparents(Object3DControlsLayer object3DControlLayer, List transparentMeshes, DrawEventArgs e); - } } \ No newline at end of file diff --git a/MatterControlLib/DesignTools/Interfaces/IEditorDrawControled.cs b/MatterControlLib/DesignTools/Interfaces/IEditorDrawControled.cs new file mode 100644 index 000000000..822dad989 --- /dev/null +++ b/MatterControlLib/DesignTools/Interfaces/IEditorDrawControled.cs @@ -0,0 +1,36 @@ +/* +Copyright (c) 2023, Lars Brubaker, John Lewin +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the FreeBSD Project. +*/ + +namespace MatterHackers.MatterControl.DesignTools +{ + public interface IEditorDrawControled : IEditorDraw + { + bool DoEditorDraw(bool isSelected); + } +} \ No newline at end of file diff --git a/MatterControlLib/DesignTools/Interfaces/Object3DUiWindowManager.cs b/MatterControlLib/DesignTools/Interfaces/Object3DUiWindowManager.cs new file mode 100644 index 000000000..a386df9a4 --- /dev/null +++ b/MatterControlLib/DesignTools/Interfaces/Object3DUiWindowManager.cs @@ -0,0 +1,116 @@ +/* +Copyright (c) 2018, Lars Brubaker, John Lewin +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the FreeBSD Project. +*/ + +using MatterHackers.Agg; +using MatterHackers.Agg.UI; +using MatterHackers.DataConverters3D; +using MatterHackers.MatterControl.PartPreviewWindow; +using MatterHackers.VectorMath; +using System.Linq; + +namespace MatterHackers.MatterControl.DesignTools +{ + public class Object3DUiWindowManager + { + public WindowWidget WindowWidget { get; private set; } + private Object3DControlsLayer controlLayer; + private IObject3D item; + + public Object3DUiWindowManager() + { + } + + public void CreateWidgetIfRequired(IObject3D item, Object3DControlsLayer controlLayer, string title) + { + if (WindowWidget == null + || WindowWidget.Parents().Count() == 0) + { + if (WindowWidget != null) + { + WindowWidget.Close(); + } + + this.controlLayer = controlLayer; + this.item = item; + var theme = ApplicationController.Instance.Theme; + WindowWidget = new WindowWidget(theme, new RectangleDouble(10, 10, 400, 200)) + { + BackgroundColor = theme.BackgroundColor.WithAlpha(200), + }; + + WindowWidget.AddTitleBar(title, null); + + controlLayer.GuiSurface.AddChild(WindowWidget); + controlLayer.GuiSurface.AfterDraw += GuiSurface_AfterDraw; + } + } + + private void GuiSurface_AfterDraw(object sender, DrawEventArgs e) + { + if (!controlLayer.Scene.Contains(item)) + { + WindowWidget.Close(); + if (sender is GuiWidget guiWidget) + { + guiWidget.AfterDraw -= GuiSurface_AfterDraw; + } + } + else + { + if (controlLayer.Scene.SelectedItem == item) + { + WindowWidget.Visible = true; + } + else + { + WindowWidget.Visible = false; + } + } + } + + + public void AddObject3DControls(Object3DControlsLayer object3DControlsLayer) + { + throw new System.NotImplementedException(); + } + + public void Close() + { + if (WindowWidget != null) + { + WindowWidget.Close(); + } + } + + public AxisAlignedBoundingBox GetEditorWorldspaceAABB(Object3DControlsLayer layer) + { + throw new System.NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/StaticData/Translations/Master.txt b/StaticData/Translations/Master.txt index 6fa79b44c..0659db0d7 100644 --- a/StaticData/Translations/Master.txt +++ b/StaticData/Translations/Master.txt @@ -424,6 +424,9 @@ Translated:As the time to print a layer decreases to this, the fan speed will be English:Ascending Translated:Ascending +English:Assets Folder +Translated:Assets Folder + English:At least 1 part must be selected Translated:At least 1 part must be selected @@ -3493,6 +3496,9 @@ Translated:Part Cooling Fan English:Part Cooling Fan {i} Translated:Part Cooling Fan {i} +English:Part Plater +Translated:Part Plater + English:Part Settings Translated:Part Settings @@ -3799,6 +3805,9 @@ Translated:Print History English:Print History Note Translated:Print History Note +English:Print Job Manager +Translated:Print Job Manager + English:Print Leveling Translated:Print Leveling diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index 8cc9cabda..56c48da39 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit 8cc9cabda4490c7121aa4c626dbf2757031aa38b +Subproject commit 56c48da395b850d67732e984d14c3666f78228ff