From 7aed88dbcf9d37a1f40c8cad115f055c4d69e7a9 Mon Sep 17 00:00:00 2001 From: Thales1330 Date: Thu, 29 Dec 2016 19:03:16 -0200 Subject: Parent/child optimization implemented And others bugfixes. --- Project/Line.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'Project/Line.cpp') diff --git a/Project/Line.cpp b/Project/Line.cpp index 3180cf8..4b7f6c4 100644 --- a/Project/Line.cpp +++ b/Project/Line.cpp @@ -119,6 +119,7 @@ bool Line::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. @@ -149,6 +150,7 @@ bool Line::AddParent(Element* parent, wxPoint2DDouble 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. @@ -240,14 +242,21 @@ void Line::MoveNode(Element* parent, wxPoint2DDouble position) } } } else { + // If parent is setted to NULL for the firts time, remove the parent child 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; + } } } -- cgit From 2c0b51586b3b2243ae0fdcd653139818e4b4e23e Mon Sep 17 00:00:00 2001 From: Thales1330 Date: Mon, 2 Jan 2017 19:31:11 -0200 Subject: Fast data visualization implemented --- Project/Line.cpp | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) (limited to 'Project/Line.cpp') diff --git a/Project/Line.cpp b/Project/Line.cpp index 4b7f6c4..32f4aa8 100644 --- a/Project/Line.cpp +++ b/Project/Line.cpp @@ -32,9 +32,11 @@ bool Line::Contains(wxPoint2DDouble position) const void Line::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; + std::vector pointList = m_pointList; if(!m_inserted && pointList.size() > 0) { wxPoint2DDouble secondPoint = m_position; @@ -503,7 +505,30 @@ void Line::SetPointList(std::vector pointList) Element* Line::GetCopy() { - Line* copy = new Line(); - *copy = *this; - return copy; + Line* copy = new Line(); + *copy = *this; + return copy; +} + +wxString Line::GetTipText() const +{ + wxString tipText = m_electricaData.name; + + if(m_online) { + tipText += "\n"; + int busNumber[2]; + busNumber[0] = ((Bus*)m_parentList[0])->GetEletricalData().number + 1; + busNumber[1] = ((Bus*)m_parentList[1])->GetEletricalData().number + 1; + + tipText += _("\nP") + wxString::Format("(%d-%d) = ", busNumber[0], busNumber[1]) + + wxString::FromDouble(m_electricaData.powerFlow[0].real(), 5) + _(" p.u."); + tipText += _("\nQ") + wxString::Format("(%d-%d) = ", busNumber[0], busNumber[1]) + + wxString::FromDouble(m_electricaData.powerFlow[0].imag(), 5) + _(" p.u."); + tipText += _("\nP") + wxString::Format("(%d-%d) = ", busNumber[1], busNumber[0]) + + wxString::FromDouble(m_electricaData.powerFlow[1].real(), 5) + _(" p.u."); + tipText += _("\nQ") + wxString::Format("(%d-%d) = ", busNumber[1], busNumber[0]) + + wxString::FromDouble(m_electricaData.powerFlow[1].imag(), 5) + _(" p.u."); + } + + return tipText; } -- cgit From a1932eec23589ed67d824873b37de3e83a09cd24 Mon Sep 17 00:00:00 2001 From: Thales1330 Date: Tue, 3 Jan 2017 19:03:12 -0200 Subject: Text element optimizated, but buggy Element/parent search buggy --- Project/Line.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'Project/Line.cpp') diff --git a/Project/Line.cpp b/Project/Line.cpp index 32f4aa8..d9b8f22 100644 --- a/Project/Line.cpp +++ b/Project/Line.cpp @@ -306,11 +306,17 @@ bool Line::GetContextMenu(wxMenu& menu) { menu.Append(ID_EDIT_LINE, _("Edit line")); if(m_activePickboxID == ID_PB_NONE) { - menu.Append(ID_LINE_ADD_NODE, _("Insert node")); + wxMenuItem* addNodeItem = new wxMenuItem(&menu, ID_LINE_ADD_NODE, _("Insert node")); + addNodeItem->SetBitmap(wxImage("..\\data\\images\\menu\\addNode16.png")); + menu.Append(addNodeItem); } else { - menu.Append(ID_LINE_REMOVE_NODE, _("Remove node")); + wxMenuItem* addNodeItem = new wxMenuItem(&menu, ID_LINE_REMOVE_NODE, _("Remove node")); + addNodeItem->SetBitmap(wxImage("..\\data\\images\\menu\\removeNode16.png")); + menu.Append(addNodeItem); } - menu.Append(ID_DELETE, _("Delete")); + wxMenuItem* deleteItem = new wxMenuItem(&menu, ID_DELETE, _("Delete")); + deleteItem->SetBitmap(wxImage("..\\data\\images\\menu\\delete16.png")); + menu.Append(deleteItem); return true; } -- cgit From b6f96ca48bc156898df79deba63d270b393fb150 Mon Sep 17 00:00:00 2001 From: Thales1330 Date: Thu, 5 Jan 2017 19:31:28 -0200 Subject: Text bugs fixed --- Project/Line.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'Project/Line.cpp') diff --git a/Project/Line.cpp b/Project/Line.cpp index d9b8f22..7e1755e 100644 --- a/Project/Line.cpp +++ b/Project/Line.cpp @@ -133,7 +133,7 @@ bool Line::AddParent(Element* parent, wxPoint2DDouble position) m_switchRect.push_back(genRect); UpdateSwitches(); - Bus* parentBus = (Bus*)parent; + Bus* parentBus = static_cast(parent); m_electricaData.nominalVoltage = parentBus->GetEletricalData().nominalVoltage; m_electricaData.nominalVoltageUnit = parentBus->GetEletricalData().nominalVoltageUnit; @@ -141,7 +141,7 @@ bool Line::AddParent(Element* parent, wxPoint2DDouble position) } // Second bus. else if(parent != m_parentList[0]) { - Bus* parentBus = (Bus*)parent; + Bus* parentBus = static_cast(parent); if(m_electricaData.nominalVoltage != parentBus->GetEletricalData().nominalVoltage || m_electricaData.nominalVoltageUnit != parentBus->GetEletricalData().nominalVoltageUnit) { wxMessageDialog msgDialog(NULL, _("Unable to connect two buses with different nominal voltages.\n" @@ -304,7 +304,7 @@ double Line::PointToLineDistance(wxPoint2DDouble point, int* segmentNumber) cons bool Line::GetContextMenu(wxMenu& menu) { - menu.Append(ID_EDIT_LINE, _("Edit line")); + menu.Append(ID_EDIT_ELEMENT, _("Edit line")); if(m_activePickboxID == ID_PB_NONE) { wxMenuItem* addNodeItem = new wxMenuItem(&menu, ID_LINE_ADD_NODE, _("Insert node")); addNodeItem->SetBitmap(wxImage("..\\data\\images\\menu\\addNode16.png")); @@ -397,9 +397,9 @@ bool Line::SetNodeParent(Element* parent) } if(parent->Intersects(nodeRect)) { - // If the line has no parents set the new nominal voltage, otherwise check if it's not connecting + // If the line has no parents set the new rated voltage, otherwise check if it's not connecting // two different voltages buses - Bus* parentBus = (Bus*)parent; + Bus* parentBus = static_cast(parent); if(!m_parentList[0] && !m_parentList[1]) { m_electricaData.nominalVoltage = parentBus->GetEletricalData().nominalVoltage; m_electricaData.nominalVoltageUnit = parentBus->GetEletricalData().nominalVoltageUnit; @@ -523,8 +523,8 @@ wxString Line::GetTipText() const if(m_online) { tipText += "\n"; int busNumber[2]; - busNumber[0] = ((Bus*)m_parentList[0])->GetEletricalData().number + 1; - busNumber[1] = ((Bus*)m_parentList[1])->GetEletricalData().number + 1; + busNumber[0] = static_cast(m_parentList[0])->GetEletricalData().number + 1; + busNumber[1] = static_cast(m_parentList[1])->GetEletricalData().number + 1; tipText += _("\nP") + wxString::Format("(%d-%d) = ", busNumber[0], busNumber[1]) + wxString::FromDouble(m_electricaData.powerFlow[0].real(), 5) + _(" p.u."); -- cgit