summaryrefslogtreecommitdiffstats
path: root/Project/Workspace.cpp
diff options
context:
space:
mode:
authorThales Lima Oliveira <thaleslima.ufu@gmail.com>2017-09-09 19:13:03 -0300
committerGitHub <noreply@github.com>2017-09-09 19:13:03 -0300
commitdcb1934ec64c928efdfa561519d2e46a3c3cb0db (patch)
treec1bf65c2bd297d44e258067155292d9798f4c8c9 /Project/Workspace.cpp
parent926af7f34aaf5aebdbac0cbc550ed75647874258 (diff)
parent91b9c3f9909955443e74dedb248fc48fa984709b (diff)
downloadPSP.git-dcb1934ec64c928efdfa561519d2e46a3c3cb0db.tar.gz
PSP.git-dcb1934ec64c928efdfa561519d2e46a3c3cb0db.tar.xz
PSP.git-dcb1934ec64c928efdfa561519d2e46a3c3cb0db.zip
Merge pull request #34 from Thales1330/wip-datareport
Wip datareport
Diffstat (limited to 'Project/Workspace.cpp')
-rw-r--r--Project/Workspace.cpp61
1 files changed, 53 insertions, 8 deletions
diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp
index 4ef610d..ddbf470 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) {
@@ -179,6 +180,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event)
// Click in selected element node.
if(element->NodeContains(m_camera->ScreenToWorld(clickPoint)) != 0 && element->IsSelected()) {
m_mode = MODE_MOVE_NODE;
+ m_disconnectedElement = true;
foundElement = true;
}
@@ -204,6 +206,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 +235,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 +248,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 +301,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 +313,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();
}
@@ -364,6 +378,7 @@ void Workspace::OnLeftClickUp(wxMouseEvent& event)
// The child have a parent that is the element.
if(parent == element) {
child->UpdateNodes();
+ m_disconnectedElement = true;
}
}
}
@@ -441,6 +456,12 @@ void Workspace::OnLeftClickUp(wxMouseEvent& event)
if(updateVoltages) {
ValidateElementsVoltages();
}
+
+ if(m_continuousCalc && m_disconnectedElement) {
+ m_disconnectedElement = false;
+ RunStaticStudies();
+ }
+
m_selectionRect = wxRect2DDouble(0, 0, 0, 0);
Redraw();
UpdateStatusBar();
@@ -704,9 +725,7 @@ void Workspace::OnKeyDown(wxKeyEvent& event)
}
// Tests - Ctrl + Shift + L
if(event.ControlDown() && event.ShiftDown()) {
- ControlEditor* ce =
- new ControlEditor(this, IOControl::IN_TERMINAL_VOLTAGE | IOControl::OUT_FIELD_VOLTAGE);
- ce->Show();
+ UpdateTextElements();
}
} break;
case 'T': // Insert a transformer.
@@ -1030,6 +1049,8 @@ void Workspace::Fit()
}
if(!GetElementsCorners(leftUpCorner, rightDownCorner, elementList)) return;
+ wxPoint2DDouble middleCoords = (leftUpCorner + rightDownCorner) / 2.0;
+
int width = 0.0;
int height = 0.0;
GetSize(&width, &height);
@@ -1043,8 +1064,8 @@ void Workspace::Fit()
m_camera->SetScale(scale);
- m_camera->StartTranslation(leftUpCorner);
- m_camera->SetTranslation(wxPoint2DDouble(0, 0));
+ m_camera->StartTranslation(middleCoords);
+ m_camera->SetTranslation(wxPoint2DDouble(width / 2, height / 2));
Redraw();
}
@@ -1117,7 +1138,7 @@ void Workspace::UpdateTextElements()
{
for(auto it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {
Text* text = *it;
- text->UpdateText(100e6);
+ text->UpdateText(m_properties->GetSimulationPropertiesData().basePower);
}
}
@@ -1444,3 +1465,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;
+}