summaryrefslogtreecommitdiffstats
path: root/Project/Workspace.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Project/Workspace.cpp')
-rw-r--r--Project/Workspace.cpp43
1 files changed, 33 insertions, 10 deletions
diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp
index d09efad..7f9cce4 100644
--- a/Project/Workspace.cpp
+++ b/Project/Workspace.cpp
@@ -203,7 +203,7 @@ void Workspace::OnLeftClickDown(wxMouseEvent& event)
} else {
bool clickPickbox = false;
for(auto it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {
- Element* element = *it;
+ PowerElement* element = *it;
element->ResetPickboxes(); // Reset pickbox state.
// Set movement initial position (not necessarily will be moved).
@@ -277,7 +277,7 @@ void Workspace::OnLeftDoubleClick(wxMouseEvent& event)
bool redraw = false;
for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) {
- Element* element = *it;
+ PowerElement* element = *it;
// Click in an element.
if(element->Contains(m_camera->ScreenToWorld(event.GetPosition()))) {
@@ -332,7 +332,7 @@ void Workspace::OnLeftDoubleClick(wxMouseEvent& event)
for(auto it = m_textList.begin(); it != m_textList.end(); ++it) {
Text* text = *it;
if(text->Contains(m_camera->ScreenToWorld(event.GetPosition()))) {
- text->ShowForm(this, m_elementList);
+ text->ShowForm(this, GetElementList());
redraw = true;
}
}
@@ -1075,7 +1075,7 @@ void Workspace::Fit()
{
wxPoint2DDouble leftUpCorner(0, 0);
wxPoint2DDouble rightDownCorner(0, 0);
- std::vector<Element*> elementList = m_elementList;
+ std::vector<Element*> elementList = GetElementList();
for(auto it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {
elementList.push_back(*it);
}
@@ -1134,7 +1134,7 @@ void Workspace::ValidateBusesVoltages(Element* initialBus)
void Workspace::ValidateElementsVoltages()
{
for(auto it = m_elementList.begin(); it != m_elementList.end(); it++) {
- Element* child = *it;
+ PowerElement* child = *it;
std::vector<double> nominalVoltage;
std::vector<ElectricalUnit> nominalVoltageUnit;
@@ -1151,7 +1151,7 @@ void Workspace::ValidateElementsVoltages()
bool Workspace::RunPowerFlow()
{
- PowerFlow pf(m_elementList);
+ PowerFlow pf(GetElementList());
bool result = pf.RunGaussSeidel();
if(!result) {
wxMessageDialog msgDialog(this, pf.GetErrorMessage(), _("Error"), wxOK | wxCENTRE | wxICON_ERROR);
@@ -1234,7 +1234,7 @@ bool Workspace::Paste()
if(copy) {
pastedElements.push_back(copy);
pastedBusList.push_back(static_cast<Bus*>(copy));
- m_elementList.push_back(copy);
+ m_elementList.push_back(static_cast<PowerElement*>(copy));
}
}
@@ -1277,7 +1277,7 @@ bool Workspace::Paste()
}
pastedElements.push_back(copy);
- m_elementList.push_back(copy);
+ m_elementList.push_back(static_cast<PowerElement*>(copy));
}
}
}
@@ -1392,7 +1392,8 @@ void Workspace::SetTextList(std::vector<Text*> textList)
void Workspace::SetElementList(std::vector<Element*> elementList)
{
m_elementList.clear();
- for(auto it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) m_elementList.push_back(*it);
+ for(auto it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it)
+ m_elementList.push_back(static_cast<PowerElement*>(*it));
}
void Workspace::OnIdle(wxIdleEvent& event)
@@ -1417,7 +1418,7 @@ std::vector<Element*> Workspace::GetAllElements() const
bool Workspace::RunFault()
{
- Fault fault(m_elementList);
+ Fault fault(GetElementList());
bool result = fault.RunFaultCalculation(100e6);
if(!result) {
wxMessageDialog msgDialog(this, fault.GetErrorMessage(), _("Error"), wxOK | wxCENTRE | wxICON_ERROR);
@@ -1429,3 +1430,25 @@ bool Workspace::RunFault()
return result;
}
+
+std::vector<Element*> Workspace::GetElementList() const
+{
+ std::vector<Element*> elementList;
+ for(auto it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) elementList.push_back(*it);
+ return elementList;
+}
+
+bool Workspace::RunSCPower()
+{
+ Fault fault(GetElementList());
+ bool result = fault.RunSCPowerCalcutation(100e6);
+ if(!result) {
+ wxMessageDialog msgDialog(this, fault.GetErrorMessage(), _("Error"), wxOK | wxCENTRE | wxICON_ERROR);
+ msgDialog.ShowModal();
+ }
+
+ UpdateTextElements();
+ Redraw();
+
+ return result;
+}