summaryrefslogtreecommitdiffstats
path: root/Project/Workspace.cpp
diff options
context:
space:
mode:
authorThales Lima Oliveira <thaleslima.ufu@gmail.com>2017-09-06 20:11:37 -0300
committerThales Lima Oliveira <thaleslima.ufu@gmail.com>2017-09-06 20:11:37 -0300
commit41b81949a92aad043caa28b0e1144348d06921f8 (patch)
tree9336697587beafbcca1ad8bcf90e750db550b927 /Project/Workspace.cpp
parent926af7f34aaf5aebdbac0cbc550ed75647874258 (diff)
downloadPSP.git-41b81949a92aad043caa28b0e1144348d06921f8.tar.gz
PSP.git-41b81949a92aad043caa28b0e1144348d06921f8.tar.xz
PSP.git-41b81949a92aad043caa28b0e1144348d06921f8.zip
Data report implementation start
Diffstat (limited to 'Project/Workspace.cpp')
-rw-r--r--Project/Workspace.cpp41
1 files changed, 39 insertions, 2 deletions
diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp
index 4ef610d..12a4ace 100644
--- a/Project/Workspace.cpp
+++ b/Project/Workspace.cpp
@@ -135,6 +135,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event)
bool foundElement = false;
Element* newElement = NULL;
bool showNewElementForm = false;
+ bool clickOnSwitch = false;
if(m_mode == MODE_INSERT_TEXT || m_mode == MODE_PASTE || m_mode == MODE_DRAG_PASTE) {
m_mode = MODE_EDIT;
} else if(m_mode == MODE_INSERT || m_mode == MODE_DRAG_INSERT || m_mode == MODE_DRAG_INSERT_TEXT) {
@@ -204,6 +205,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event)
// Click in a switch.
else if(element->SwitchesContains(m_camera->ScreenToWorld(clickPoint))) {
element->SetOnline(element->IsOnline() ? false : true);
+ clickOnSwitch = true;
}
}
@@ -232,8 +234,12 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event)
UpdateStatusBar();
if(showNewElementForm) {
- if(newElement) newElement->ShowForm(this, newElement);
+ if(newElement) {
+ newElement->ShowForm(this, newElement);
+ if(m_continuousCalc) RunStaticStudies();
+ }
}
+ if(clickOnSwitch && m_continuousCalc) RunStaticStudies();
event.Skip();
}
@@ -241,6 +247,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event)
void Workspace::OnLeftDoubleClick(wxMouseEvent& event)
{
bool elementEdited = false;
+ bool clickOnSwitch = false;
bool redraw = false;
for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) {
@@ -293,6 +300,7 @@ void Workspace::OnLeftDoubleClick(wxMouseEvent& event)
// Click in a switch.
else if(element->SwitchesContains(m_camera->ScreenToWorld(event.GetPosition()))) {
element->SetOnline(element->IsOnline() ? false : true);
+ clickOnSwitch = true;
}
}
@@ -304,7 +312,12 @@ void Workspace::OnLeftDoubleClick(wxMouseEvent& event)
redraw = true;
}
}
- if(elementEdited) UpdateTextElements();
+ if(elementEdited) {
+ UpdateTextElements();
+ if(m_continuousCalc) RunStaticStudies();
+ }
+ if(clickOnSwitch && m_continuousCalc) RunStaticStudies();
+
if(redraw) Redraw();
m_timer->Start();
}
@@ -1444,3 +1457,27 @@ void Workspace::OnMiddleDoubleClick(wxMouseEvent& event)
Fit();
event.Skip();
}
+
+bool Workspace::RunStaticStudies()
+{
+ bool pfStatus, faultStatus, scStatus;
+ pfStatus = faultStatus = scStatus = false;
+
+ pfStatus = RunPowerFlow();
+
+ if(m_properties->GetSimulationPropertiesData().faultAfterPowerFlow) {
+ if(pfStatus) faultStatus = RunFault();
+ } else {
+ faultStatus = true;
+ }
+
+ if(m_properties->GetSimulationPropertiesData().scPowerAfterPowerFlow) {
+ if(pfStatus) scStatus = RunSCPower();
+ } else {
+ scStatus = true;
+ }
+
+ if(pfStatus && faultStatus && scStatus) return true;
+
+ return false;
+}