summaryrefslogtreecommitdiffstats
path: root/Project/Transformer.cpp
diff options
context:
space:
mode:
authorThales Lima Oliveira <thaleslima.ufu@gmail.com>2017-01-05 19:37:42 -0200
committerGitHub <noreply@github.com>2017-01-05 19:37:42 -0200
commit9df133274802731220546d1f9383c213193c8413 (patch)
tree9c6e2fa2a45d6c6c4c14d8711b2b89066bfb37d7 /Project/Transformer.cpp
parentc5343c718cf80620c2fc7452a4315f7ddb9e5826 (diff)
parentb6f96ca48bc156898df79deba63d270b393fb150 (diff)
downloadPSP.git-9df133274802731220546d1f9383c213193c8413.tar.gz
PSP.git-9df133274802731220546d1f9383c213193c8413.tar.xz
PSP.git-9df133274802731220546d1f9383c213193c8413.zip
Merge pull request #5 from Thales1330/opt/element-parent-search
Opt element parent search
Diffstat (limited to 'Project/Transformer.cpp')
-rw-r--r--Project/Transformer.cpp79
1 files changed, 68 insertions, 11 deletions
diff --git a/Project/Transformer.cpp b/Project/Transformer.cpp
index 2ba6850..7db7813 100644
--- a/Project/Transformer.cpp
+++ b/Project/Transformer.cpp
@@ -28,6 +28,7 @@ bool Transformer::AddParent(Element* parent, wxPoint2DDouble position)
if(m_parentList.size() == 0) {
m_position = position;
m_parentList.push_back(parent);
+ parent->AddChild(this);
wxPoint2DDouble parentPt =
parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position.
parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
@@ -43,6 +44,7 @@ bool Transformer::AddParent(Element* parent, wxPoint2DDouble position)
// Second bus.
else if(parent != m_parentList[0]) {
m_parentList.push_back(parent);
+ parent->AddChild(this);
wxPoint2DDouble parentPt =
parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position.
parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
@@ -93,9 +95,11 @@ bool Transformer::Contains(wxPoint2DDouble position) const
void Transformer::Draw(wxPoint2DDouble translation, double scale) const
{
OpenGLColour elementColour;
- if(m_online) elementColour = m_onlineElementColour;
- else elementColour = m_offlineElementColour;
-
+ if(m_online)
+ elementColour = m_onlineElementColour;
+ else
+ elementColour = m_offlineElementColour;
+
if(m_inserted) {
// Draw selection (layer 1).
if(m_selected) {
@@ -220,12 +224,18 @@ void Transformer::MoveNode(Element* parent, wxPoint2DDouble position)
} else {
if(m_activeNodeID == 1) {
m_pointList[0] = m_movePts[0] + position - m_moveStartPt;
- m_parentList[0] = NULL;
- m_online = false;
+ if(m_parentList[0]) {
+ m_parentList[0]->RemoveChild(this);
+ m_parentList[0] = NULL;
+ m_online = false;
+ }
} else if(m_activeNodeID == 2) {
m_pointList[m_pointList.size() - 1] = m_movePts[m_pointList.size() - 1] + position - m_moveStartPt;
- m_parentList[1] = NULL;
- m_online = false;
+ if(m_parentList[1]) {
+ m_parentList[1]->RemoveChild(this);
+ m_parentList[1] = NULL;
+ m_online = false;
+ }
}
}
@@ -243,7 +253,7 @@ void Transformer::StartMove(wxPoint2DDouble position)
bool Transformer::GetContextMenu(wxMenu& menu)
{
- menu.Append(ID_EDIT_TRANSFORMER, _("Edit tranformer"));
+ menu.Append(ID_EDIT_ELEMENT, _("Edit tranformer"));
GeneralMenuItens(menu);
return true;
}
@@ -381,7 +391,54 @@ void Transformer::SetPowerFlowDirection(PowerFlowDirection pfDirection)
Element* Transformer::GetCopy()
{
- Transformer* copy = new Transformer();
- *copy = *this;
- return copy;
+ Transformer* copy = new Transformer();
+ *copy = *this;
+ return copy;
+}
+
+wxString Transformer::GetTipText() const
+{
+ wxString tipText = m_electricalData.name;
+ wxString primVoltage = StringFromDouble(m_electricalData.primaryNominalVoltage);
+ switch(m_electricalData.primaryNominalVoltageUnit) {
+ case UNIT_V: {
+ primVoltage += _(" V");
+ } break;
+ case UNIT_kV: {
+ primVoltage += _(" kV");
+ } break;
+ default:
+ break;
+ }
+ wxString secVoltage = StringFromDouble(m_electricalData.secondaryNominalVoltage);
+ switch(m_electricalData.secondaryNominalVoltageUnit) {
+ case UNIT_V: {
+ secVoltage += _(" V");
+ } break;
+ case UNIT_kV: {
+ secVoltage += _(" kV");
+ } break;
+ default:
+ break;
+ }
+
+ tipText += "\n" + primVoltage + " / " + secVoltage;
+
+ if(m_online) {
+ tipText += "\n";
+ int busNumber[2];
+ busNumber[0] = static_cast<Bus*>(m_parentList[0])->GetEletricalData().number + 1;
+ busNumber[1] = static_cast<Bus*>(m_parentList[1])->GetEletricalData().number + 1;
+
+ tipText += _("\nP") + wxString::Format("(%d-%d) = ", busNumber[0], busNumber[1]) +
+ wxString::FromDouble(m_electricalData.powerFlow[0].real(), 5) + _(" p.u.");
+ tipText += _("\nQ") + wxString::Format("(%d-%d) = ", busNumber[0], busNumber[1]) +
+ wxString::FromDouble(m_electricalData.powerFlow[0].imag(), 5) + _(" p.u.");
+ tipText += _("\nP") + wxString::Format("(%d-%d) = ", busNumber[1], busNumber[0]) +
+ wxString::FromDouble(m_electricalData.powerFlow[1].real(), 5) + _(" p.u.");
+ tipText += _("\nQ") + wxString::Format("(%d-%d) = ", busNumber[1], busNumber[0]) +
+ wxString::FromDouble(m_electricalData.powerFlow[1].imag(), 5) + _(" p.u.");
+ }
+
+ return tipText;
}