diff options
Diffstat (limited to 'Project/Workspace.cpp')
-rw-r--r-- | Project/Workspace.cpp | 39 |
1 files changed, 38 insertions, 1 deletions
diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp index 79bb61c..da01c8d 100644 --- a/Project/Workspace.cpp +++ b/Project/Workspace.cpp @@ -9,6 +9,7 @@ #include "SyncMotor.h" #include "Load.h" #include "Inductor.h" +#include "Capacitor.h" // Camera Camera::Camera() @@ -184,7 +185,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) foundElement = true; } - // Click in an element + // Click in an element. else if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) { if(!foundElement) { @@ -203,6 +204,11 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) m_mode = MODE_MOVE_ELEMENT; } } + + // Click in a switch. + else if(element->SwitchesContains(m_camera->ScreenToWorld(event.GetPosition()))) { + element->SetOnline(element->IsOnline() ? false : true); + } } } @@ -216,6 +222,24 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event) event.Skip(); } +void Workspace::OnLeftDoubleClick(wxMouseEvent& event) +{ + for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) { + Element* element = *it; + + // Click in an element. + if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) + { + //Open the form. + } + + // Click in a switch. + else if(element->SwitchesContains(m_camera->ScreenToWorld(event.GetPosition()))) { + element->SetOnline(element->IsOnline() ? false : true); + } + } +} + void Workspace::OnRightClickDown(wxMouseEvent& event) { bool redraw = false; @@ -645,6 +669,19 @@ void Workspace::OnKeyDown(wxKeyEvent& event) } } break; + case 'C': + { + if(m_mode != MODE_INSERT) { + if(event.GetModifiers() == wxMOD_SHIFT) { // Insert a capacitor. + Capacitor* newCapacitor = new Capacitor(); + m_elementList.push_back(newCapacitor); + m_mode = MODE_INSERT; + m_statusBar->SetStatusText(_("Insert Capacitor: Click on a buses, ESC to cancel.")); + Redraw(); + } + } + } + break; default: break; } |