Added undo shape keybind (ctrl + z)

This commit is contained in:
Jaex 2016-08-15 23:48:27 +03:00
parent a371ca7df4
commit a38c79e46c

View file

@ -85,7 +85,7 @@ private set
UpdateCursor(); UpdateCursor();
} }
DeselectShape(); DeselectCurrentShape();
OnCurrentShapeTypeChanged(currentShapeType); OnCurrentShapeTypeChanged(currentShapeType);
} }
@ -284,7 +284,7 @@ private void CreateContextMenu()
tsmiDeleteAll = new ToolStripMenuItem(Resources.ShapeManager_CreateContextMenu_Delete_all_objects); tsmiDeleteAll = new ToolStripMenuItem(Resources.ShapeManager_CreateContextMenu_Delete_all_objects);
tsmiDeleteAll.Image = Resources.minus; tsmiDeleteAll.Image = Resources.minus;
tsmiDeleteAll.Click += (sender, e) => ClearAll(); tsmiDeleteAll.Click += (sender, e) => DeleteAllShapes();
cmsContextMenu.Items.Add(tsmiDeleteAll); cmsContextMenu.Items.Add(tsmiDeleteAll);
#endregion Selected object #endregion Selected object
@ -921,16 +921,6 @@ private void form_KeyDown(object sender, KeyEventArgs e)
case Keys.Menu: case Keys.Menu:
IsSnapResizing = true; IsSnapResizing = true;
break; break;
case Keys.Insert:
if (IsCreating)
{
EndRegionSelection();
}
else
{
StartRegionSelection();
}
break;
case Keys.Left: case Keys.Left:
case Keys.A: case Keys.A:
isLeftPressed = true; isLeftPressed = true;
@ -949,9 +939,26 @@ private void form_KeyDown(object sender, KeyEventArgs e)
break; break;
} }
switch (e.KeyData)
{
case Keys.Insert:
if (IsCreating)
{
EndRegionSelection();
}
else
{
StartRegionSelection();
}
break;
case Keys.Control | Keys.Z:
UndoShape();
break;
}
if (form.Mode == RectangleRegionMode.Annotation && !IsCreating) if (form.Mode == RectangleRegionMode.Annotation && !IsCreating)
{ {
switch (e.KeyCode) switch (e.KeyData)
{ {
case Keys.Tab: case Keys.Tab:
SwapShapeType(); SwapShapeType();
@ -1059,14 +1066,6 @@ private void form_KeyUp(object sender, KeyEventArgs e)
case Keys.Menu: case Keys.Menu:
IsSnapResizing = false; IsSnapResizing = false;
break; break;
case Keys.Delete:
DeleteCurrentShape();
if (IsCreating)
{
EndRegionSelection();
}
break;
case Keys.Left: case Keys.Left:
case Keys.A: case Keys.A:
isLeftPressed = false; isLeftPressed = false;
@ -1085,9 +1084,21 @@ private void form_KeyUp(object sender, KeyEventArgs e)
break; break;
} }
switch (e.KeyData)
{
case Keys.Delete:
DeleteCurrentShape();
if (IsCreating)
{
EndRegionSelection();
}
break;
}
if (form.Mode == RectangleRegionMode.Annotation) if (form.Mode == RectangleRegionMode.Annotation)
{ {
switch (e.KeyCode) switch (e.KeyData)
{ {
case Keys.Apps: case Keys.Apps:
OpenOptionsMenu(); OpenOptionsMenu();
@ -1168,7 +1179,7 @@ private void StartRegionSelection()
} }
else if (!IsCreating) // Create new shape else if (!IsCreating) // Create new shape
{ {
DeselectShape(); DeselectCurrentShape();
shape = AddShape(); shape = AddShape();
@ -1502,38 +1513,43 @@ private void SelectIntersectShape()
} }
} }
private void DeselectShape() private void DeselectShape(BaseShape shape)
{ {
CurrentShape = null; if (shape == CurrentShape)
NodesVisible = false; {
CurrentShape = null;
NodesVisible = false;
}
}
private void DeselectCurrentShape()
{
DeselectShape(CurrentShape);
}
private void DeleteShape(BaseShape shape)
{
if (shape != null)
{
Shapes.Remove(shape);
DeselectShape(shape);
}
} }
private void DeleteCurrentShape() private void DeleteCurrentShape()
{ {
BaseShape shape = CurrentShape; DeleteShape(CurrentShape);
if (shape != null)
{
Shapes.Remove(shape);
DeselectShape();
}
} }
private void DeleteIntersectShape() private void DeleteIntersectShape()
{ {
BaseShape shape = GetIntersectShape(); DeleteShape(GetIntersectShape());
if (shape != null)
{
Shapes.Remove(shape);
DeselectShape();
}
} }
private void ClearAll() private void DeleteAllShapes()
{ {
Shapes.Clear(); Shapes.Clear();
DeselectShape(); DeselectCurrentShape();
} }
public BaseShape GetIntersectShape() public BaseShape GetIntersectShape()
@ -1561,6 +1577,14 @@ public bool IsShapeIntersect()
return GetIntersectShape() != null; return GetIntersectShape() != null;
} }
public void UndoShape()
{
if (Shapes.Count > 0)
{
DeleteShape(Shapes[Shapes.Count - 1]);
}
}
private void UpdateNodes() private void UpdateNodes()
{ {
BaseShape shape = CurrentShape; BaseShape shape = CurrentShape;