summaryrefslogtreecommitdiffstats
path: root/Project/Workspace.cpp
diff options
context:
space:
mode:
authorThales1330 <thaleslima.ufu@gmail.com>2016-08-29 17:26:50 -0300
committerThales1330 <thaleslima.ufu@gmail.com>2016-08-29 17:26:50 -0300
commit06e57f5c75772dcba902e3032c756f79090f3424 (patch)
treeaef78570496dae05d2945e0190bd4591ec799cd0 /Project/Workspace.cpp
parent8e00906e0517b335a6c33f682334bda3c1eadb69 (diff)
downloadPSP.git-06e57f5c75772dcba902e3032c756f79090f3424.tar.gz
PSP.git-06e57f5c75772dcba902e3032c756f79090f3424.tar.xz
PSP.git-06e57f5c75772dcba902e3032c756f79090f3424.zip
Delete implemented
Diffstat (limited to 'Project/Workspace.cpp')
-rw-r--r--Project/Workspace.cpp66
1 files changed, 60 insertions, 6 deletions
diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp
index 22d3858..10e58d3 100644
--- a/Project/Workspace.cpp
+++ b/Project/Workspace.cpp
@@ -226,14 +226,21 @@ void Workspace::OnRightClickDown(wxMouseEvent& event)
menu.Connect(wxEVT_COMMAND_MENU_SELECTED,
wxCommandEventHandler(Workspace::OnPopupClick), NULL, this);
PopupMenu(&menu);
+ redraw = true;
}
element->ResetPickboxes();
- redraw = true;
+
+ if(redraw){
+ Redraw();
+ redraw = false;
+ }
+ // If the last element was removed using the menu, we must leave the "search for" to prevent error.
+ break;
}
}
+
}
}
- if(redraw) Redraw();
}
void Workspace::OnLeftClickUp(wxMouseEvent& event)
@@ -507,6 +514,28 @@ void Workspace::OnKeyDown(wxKeyEvent& event)
}
}
break;
+ case WXK_DELETE: // Delete selected elements
+ {
+ for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) {
+ Element* element = *it;
+
+ if(element->IsSelected()) {
+ for(auto itp = m_elementList.begin(); itp != m_elementList.end(); ++itp) {
+ Element* child = *itp;
+ // Parent's element being deleted...
+ for(int i = 0; i < (int)child->GetParentList().size(); i++) {
+ Element* parent = child->GetParentList()[i];
+ if(parent == element) {
+ child->RemoveParent(parent);
+ }
+ }
+ }
+ m_elementList.erase(it--);
+ }
+ }
+ Redraw();
+ }
+ break;
case 'R': // Rotate the selected elements.
{
for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) {
@@ -626,17 +655,42 @@ void Workspace::OnPopupClick(wxCommandEvent& event)
{
element->Rotate();
for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) {
- Element* nonEditedElement = *it;
+ Element* iElement = *it;
// Parent's element rotating...
- for(int i = 0; i < (int)nonEditedElement->GetParentList().size(); i++) {
- Element* parent = nonEditedElement->GetParentList()[i];
+ for(int i = 0; i < (int)iElement->GetParentList().size(); i++) {
+ Element* parent = iElement->GetParentList()[i];
if(parent == element) {
- nonEditedElement->RotateNode(parent);
+ iElement->RotateNode(parent);
}
}
}
Redraw();
}
break;
+ case ID_DELETE:
+ {
+ for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) {
+ Element* iElement = *it;
+
+ if(element == iElement) {
+ for(auto itp = m_elementList.begin(); itp != m_elementList.end(); ++itp) {
+ Element* child = *itp;
+ // Parent's element being deleted...
+ for(int i = 0; i < (int)child->GetParentList().size(); i++) {
+ Element* parent = child->GetParentList()[i];
+ if(parent == element) {
+ child->RemoveParent(parent);
+ }
+ }
+ }
+ m_elementList.erase(it--);
+ }
+ }
+ Redraw();
+ }
+ break;
}
+ delete menu;
}
+
+void Workspace::DeleteElement(Element* element) {}