46 lines
No EOL
1 KiB
C#
46 lines
No EOL
1 KiB
C#
using MatterHackers.Agg.UI;
|
|
using MatterHackers.PolygonMesh;
|
|
using MatterHackers.VectorMath;
|
|
using System.Linq;
|
|
using MatterHackers.DataConverters3D;
|
|
|
|
namespace MatterHackers.MatterControl.PartPreviewWindow
|
|
{
|
|
internal class CopyUndoCommand : IUndoRedoCommand
|
|
{
|
|
private int newItemIndex;
|
|
private View3DWidget view3DWidget;
|
|
|
|
IObject3D addedObject3D;
|
|
|
|
bool wasLastItem;
|
|
|
|
public CopyUndoCommand(View3DWidget view3DWidget, int newItemIndex)
|
|
{
|
|
this.view3DWidget = view3DWidget;
|
|
this.newItemIndex = newItemIndex;
|
|
|
|
addedObject3D = view3DWidget.Scene.Children[newItemIndex];
|
|
|
|
wasLastItem = view3DWidget.Scene.Children.Last() == addedObject3D;
|
|
}
|
|
|
|
public void Undo()
|
|
{
|
|
view3DWidget.Scene.Children.RemoveAt(newItemIndex);
|
|
|
|
if (wasLastItem)
|
|
{
|
|
view3DWidget.Scene.SelectLastChild();
|
|
}
|
|
view3DWidget.PartHasBeenChanged();
|
|
}
|
|
|
|
public void Do()
|
|
{
|
|
view3DWidget.Scene.Children.Insert(newItemIndex, addedObject3D);
|
|
view3DWidget.Invalidate();
|
|
view3DWidget.Scene.SelectLastChild();
|
|
}
|
|
}
|
|
} |