summaryrefslogtreecommitdiffstats
path: root/Project
diff options
context:
space:
mode:
Diffstat (limited to 'Project')
-rw-r--r--Project/Bus.cpp9
-rw-r--r--Project/Bus.h1
-rw-r--r--Project/Capacitor.cpp40
-rw-r--r--Project/Capacitor.h3
-rw-r--r--Project/Element.cpp165
-rw-r--r--Project/Element.h26
-rw-r--r--Project/ElementDataObject.cpp39
-rw-r--r--Project/ElementDataObject.h29
-rw-r--r--Project/IndMotor.cpp7
-rw-r--r--Project/IndMotor.h3
-rw-r--r--Project/Inductor.cpp42
-rw-r--r--Project/Inductor.h3
-rw-r--r--Project/Line.cpp17
-rw-r--r--Project/Line.h1
-rw-r--r--Project/Load.cpp17
-rw-r--r--Project/Load.h3
-rw-r--r--Project/Machines.cpp11
-rw-r--r--Project/PowerFlow.cpp8
-rw-r--r--Project/Project.mk20
-rw-r--r--Project/Project.project2
-rw-r--r--Project/Project.txt2
-rw-r--r--Project/Release/Branch.cpp.obin35888 -> 36478 bytes
-rw-r--r--Project/Release/Bus.cpp.obin44473 -> 51482 bytes
-rw-r--r--Project/Release/BusForm.cpp.obin119004 -> 119004 bytes
-rw-r--r--Project/Release/Capacitor.cpp.obin45966 -> 51864 bytes
-rw-r--r--Project/Release/ElectricCalculation.cpp.obin74373 -> 74373 bytes
-rw-r--r--Project/Release/Element.cpp.obin158555 -> 161826 bytes
-rw-r--r--Project/Release/ElementDataObject.cpp.obin0 -> 22207 bytes
-rw-r--r--Project/Release/ElementDataObject.cpp.o.d752
-rw-r--r--Project/Release/FileHanding.cpp.obin197048 -> 197048 bytes
-rw-r--r--Project/Release/FileHanding.cpp.o.d32
-rw-r--r--Project/Release/GeneratorStabForm.cpp.obin104202 -> 104202 bytes
-rw-r--r--Project/Release/IndMotor.cpp.obin38830 -> 44699 bytes
-rw-r--r--Project/Release/IndMotorForm.cpp.obin87116 -> 87116 bytes
-rw-r--r--Project/Release/Inductor.cpp.obin45871 -> 51732 bytes
-rw-r--r--Project/Release/Line.cpp.obin164116 -> 170313 bytes
-rw-r--r--Project/Release/LineForm.cpp.obin101112 -> 101112 bytes
-rw-r--r--Project/Release/Load.cpp.obin44518 -> 50527 bytes
-rw-r--r--Project/Release/LoadForm.cpp.obin86741 -> 86741 bytes
-rw-r--r--Project/Release/Machines.cpp.obin40526 -> 41245 bytes
-rw-r--r--Project/Release/MainFrame.cpp.obin156024 -> 155520 bytes
-rw-r--r--Project/Release/MainFrame.cpp.o.d32
-rw-r--r--Project/Release/PSP-UFU.exebin4417854 -> 4451624 bytes
-rw-r--r--Project/Release/PowerFlow.cpp.obin43132 -> 31888 bytes
-rw-r--r--Project/Release/ReactiveShuntElementForm.cpp.obin93115 -> 93115 bytes
-rw-r--r--Project/Release/Shunt.cpp.obin36425 -> 37015 bytes
-rw-r--r--Project/Release/SwitchingForm.cpp.obin107046 -> 107046 bytes
-rw-r--r--Project/Release/SyncGenerator.cpp.obin43934 -> 50365 bytes
-rw-r--r--Project/Release/SyncMachineForm.cpp.obin123729 -> 123729 bytes
-rw-r--r--Project/Release/SyncMotor.cpp.obin40220 -> 47540 bytes
-rw-r--r--Project/Release/Text.cpp.obin103098 -> 110498 bytes
-rw-r--r--Project/Release/TextForm.cpp.obin165817 -> 165817 bytes
-rw-r--r--Project/Release/Transformer.cpp.obin51523 -> 57842 bytes
-rw-r--r--Project/Release/TransformerForm.cpp.obin108670 -> 108670 bytes
-rw-r--r--Project/Release/Workspace.cpp.obin210774 -> 224878 bytes
-rw-r--r--Project/Release/Workspace.cpp.o.d39
-rw-r--r--Project/Release/main.cpp.o.d8
-rw-r--r--Project/SyncGenerator.cpp7
-rw-r--r--Project/SyncGenerator.h3
-rw-r--r--Project/SyncMotor.cpp7
-rw-r--r--Project/SyncMotor.h3
-rw-r--r--Project/Text.cpp7
-rw-r--r--Project/Text.h3
-rw-r--r--Project/Transformer.cpp19
-rw-r--r--Project/Transformer.h3
-rw-r--r--Project/Workspace.cpp234
-rw-r--r--Project/Workspace.h10
67 files changed, 1404 insertions, 203 deletions
diff --git a/Project/Bus.cpp b/Project/Bus.cpp
index f41b0d1..dffe8fc 100644
--- a/Project/Bus.cpp
+++ b/Project/Bus.cpp
@@ -53,7 +53,7 @@ void Bus::Draw(wxPoint2DDouble translation, double scale) const
glRotated(m_angle, 0.0, 0.0, 1.0);
glTranslated(-m_position.m_x, -m_position.m_y, 0.0);
- glColor4d(0.0, 0.3, 1.0, 1.0);
+ glColor4dv(m_busColour.GetRGBA());
DrawRectangle(m_position, m_width, m_height);
// Pop the old matrix back.
glPopMatrix();
@@ -186,3 +186,10 @@ bool Bus::ShowForm(wxWindow* parent, Element* element)
busForm->Destroy();
return false;
}
+
+Element* Bus::GetCopy()
+{
+ Bus* copy = new Bus();
+ *copy = *this;
+ return copy;
+}
diff --git a/Project/Bus.h b/Project/Bus.h
index 470d4cb..acf22ab 100644
--- a/Project/Bus.h
+++ b/Project/Bus.h
@@ -46,6 +46,7 @@ public:
Bus(wxPoint2DDouble position);
Bus(wxPoint2DDouble position, wxString name);
~Bus();
+ virtual Element* GetCopy();
virtual bool AddParent(Element* parent, wxPoint2DDouble position) { return true; }
virtual bool Contains(wxPoint2DDouble position) const;
virtual bool Intersects(wxRect2DDouble rect) const;
diff --git a/Project/Capacitor.cpp b/Project/Capacitor.cpp
index 332582d..a4320c9 100644
--- a/Project/Capacitor.cpp
+++ b/Project/Capacitor.cpp
@@ -1,19 +1,26 @@
#include "ReactiveShuntElementForm.h"
#include "Capacitor.h"
-Capacitor::Capacitor() : Shunt() {}
-Capacitor::Capacitor(wxString name) : Shunt() { m_electricalData.name = name; }
+Capacitor::Capacitor()
+ : Shunt()
+{
+}
+Capacitor::Capacitor(wxString name)
+ : Shunt()
+{
+ m_electricalData.name = name;
+}
Capacitor::~Capacitor() {}
bool Capacitor::AddParent(Element* parent, wxPoint2DDouble position)
{
if(parent) {
m_parentList.push_back(parent);
wxPoint2DDouble parentPt =
- parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position.
- parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
- parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back.
+ parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position.
+ parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
+ parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back.
- m_position = parentPt + wxPoint2DDouble(0.0, 100.0); // Shifts the position to the down of the bus.
+ m_position = parentPt + wxPoint2DDouble(0.0, 100.0); // Shifts the position to the down of the bus.
m_width = 40;
m_height = 30;
m_rect = wxRect2DDouble(m_position.m_x - m_width / 2.0, m_position.m_y - m_height / 2.0, m_width, m_height);
@@ -26,7 +33,7 @@ bool Capacitor::AddParent(Element* parent, wxPoint2DDouble position)
m_inserted = true;
wxRect2DDouble genRect(0, 0, 0, 0);
- m_switchRect.push_back(genRect); // Push a general rectangle.
+ m_switchRect.push_back(genRect); // Push a general rectangle.
UpdateSwitches();
return true;
@@ -36,6 +43,12 @@ bool Capacitor::AddParent(Element* parent, wxPoint2DDouble position)
void Capacitor::Draw(wxPoint2DDouble translation, double scale) const
{
+ OpenGLColour elementColour;
+ if(m_online)
+ elementColour = m_onlineElementColour;
+ else
+ elementColour = m_offlineElementColour;
+
if(m_inserted) {
std::vector<wxPoint2DDouble> capPts;
capPts.push_back(wxPoint2DDouble(m_position.m_x - m_width / 2.0, m_position.m_y - m_height / 2.0));
@@ -45,7 +58,7 @@ void Capacitor::Draw(wxPoint2DDouble translation, double scale) const
if(m_selected) {
glLineWidth(1.5 + m_borderSize * 2.0);
- glColor4d(0.0, 0.5, 1.0, 0.5);
+ glColor4dv(m_selectionColour.GetRGBA());
DrawLine(m_pointList);
@@ -65,7 +78,7 @@ void Capacitor::Draw(wxPoint2DDouble translation, double scale) const
}
// Draw Capacitor (layer 2).
glLineWidth(1.5);
- glColor4d(0.2, 0.2, 0.2, 1.0);
+ glColor4dv(elementColour.GetRGBA());
DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);
DrawLine(m_pointList);
@@ -76,7 +89,7 @@ void Capacitor::Draw(wxPoint2DDouble translation, double scale) const
glRotated(m_angle, 0.0, 0.0, 1.0);
glTranslated(-m_position.m_x, -m_position.m_y, 0.0);
- glColor4d(0.2, 0.2, 0.2, 1.0);
+ glColor4dv(elementColour.GetRGBA());
DrawLine(capPts, GL_LINES);
DrawGround(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 10.0));
@@ -149,3 +162,10 @@ CapacitorElectricalData Capacitor::GetPUElectricalData(double systemPowerBase)
return data;
}
+
+Element* Capacitor::GetCopy()
+{
+ Capacitor* copy = new Capacitor();
+ *copy = *this;
+ return copy;
+}
diff --git a/Project/Capacitor.h b/Project/Capacitor.h
index 248ec6c..fdacb42 100644
--- a/Project/Capacitor.h
+++ b/Project/Capacitor.h
@@ -17,7 +17,8 @@ class Capacitor : public Shunt
Capacitor();
Capacitor(wxString name);
~Capacitor();
-
+
+ virtual Element* GetCopy();
virtual bool AddParent(Element* parent, wxPoint2DDouble position);
virtual void Draw(wxPoint2DDouble translation, double scale) const;
virtual bool Contains(wxPoint2DDouble position) const;
diff --git a/Project/Element.cpp b/Project/Element.cpp
index 8ced79b..4de5ebd 100644
--- a/Project/Element.cpp
+++ b/Project/Element.cpp
@@ -1,13 +1,23 @@
#include "Element.h"
-Element::Element() {}
+Element::Element()
+{
+ m_busColour.SetRGBA(0.0, 0.3, 1.0, 1.0);
+ m_onlineElementColour.SetRGBA(0.2, 0.2, 0.2, 1.0);
+ m_offlineElementColour.SetRGBA(0.5, 0.5, 0.5, 1.0);
+ m_closedSwitchColour.SetRGBA(0.0, 0.4, 0.0, 1.0);
+ m_openedSwitchColour.SetRGBA(1.0, 0.1, 0.1, 1.0);
+ m_selectionColour.SetRGBA(0.0, 0.5, 1.0, 0.5);
+ m_powerFlowArrowColour.SetRGBA(1.0, 0.51, 0.0, 1.0);
+}
+
Element::~Element() {}
+
void Element::SetPosition(const wxPoint2DDouble position)
{
m_position = position;
- m_rect =
- wxRect2DDouble(m_position.m_x - m_width / 2.0 - m_borderSize, m_position.m_y - m_height / 2.0 - m_borderSize,
- m_width + 2.0 * m_borderSize, m_height + 2.0 * m_borderSize);
+ m_rect = wxRect2DDouble(m_position.m_x - m_width / 2.0 - m_borderSize,
+ m_position.m_y - m_height / 2.0 - m_borderSize, m_width + 2.0 * m_borderSize, m_height + 2.0 * m_borderSize);
}
void Element::DrawCircle(wxPoint2DDouble position, double radius, int numSegments, GLenum mode) const
@@ -21,11 +31,11 @@ void Element::DrawCircle(wxPoint2DDouble position, double radius, int numSegment
}
void Element::DrawArc(wxPoint2DDouble position,
- double radius,
- double initAngle,
- double finalAngle,
- int numSegments,
- GLenum mode) const
+ double radius,
+ double initAngle,
+ double finalAngle,
+ int numSegments,
+ GLenum mode) const
{
double initAngRad = wxDegToRad(initAngle);
double finalAngRad = wxDegToRad(finalAngle);
@@ -48,7 +58,7 @@ void Element::DrawTriangle(std::vector<wxPoint2DDouble> points, GLenum mode) con
void Element::DrawRectangle(wxPoint2DDouble position, double width, double height, GLenum mode) const
{
- glBegin(mode); // TODO: GL_QUADS é obsoleto (OpenGL 3.0+), encontrar outra solução.
+ glBegin(mode); // TODO: GL_QUADS é obsoleto (OpenGL 3.0+), encontrar outra solução.
glVertex2d(position.m_x - width / 2.0, position.m_y - height / 2.0);
glVertex2d(position.m_x - width / 2.0, position.m_y + height / 2.0);
glVertex2d(position.m_x + width / 2.0, position.m_y + height / 2.0);
@@ -58,7 +68,7 @@ void Element::DrawRectangle(wxPoint2DDouble position, double width, double heigh
void Element::DrawRectangle(wxPoint2DDouble* points, GLenum mode) const
{
- glBegin(mode); // TODO: GL_QUADS é obsoleto (OpenGL 3.0+), encontrar outra solução.
+ glBegin(mode); // TODO: GL_QUADS é obsoleto (OpenGL 3.0+), encontrar outra solução.
glVertex2d(points[0].m_x, points[0].m_y);
glVertex2d(points[1].m_x, points[1].m_y);
glVertex2d(points[2].m_x, points[2].m_y);
@@ -89,9 +99,9 @@ wxPoint2DDouble Element::RotateAtPosition(wxPoint2DDouble pointToRotate, double
double radAngle = angle;
if(degrees) radAngle = wxDegToRad(angle);
return wxPoint2DDouble(std::cos(radAngle) * (pointToRotate.m_x - m_position.m_x) -
- std::sin(radAngle) * (pointToRotate.m_y - m_position.m_y) + m_position.m_x,
- std::sin(radAngle) * (pointToRotate.m_x - m_position.m_x) +
- std::cos(radAngle) * (pointToRotate.m_y - m_position.m_y) + m_position.m_y);
+ std::sin(radAngle) * (pointToRotate.m_y - m_position.m_y) + m_position.m_x,
+ std::sin(radAngle) * (pointToRotate.m_x - m_position.m_x) +
+ std::cos(radAngle) * (pointToRotate.m_y - m_position.m_y) + m_position.m_y);
}
void Element::StartMove(wxPoint2DDouble position)
@@ -109,31 +119,30 @@ wxPoint2DDouble Element::GetSwitchPoint(Element* parent, wxPoint2DDouble parentP
// Rotate the second point (to compare).
double angle = parent->GetAngle();
- secondPoint =
- wxPoint2DDouble(std::cos(wxDegToRad(-angle)) * (secondPoint.m_x - parentPoint.m_x) -
- std::sin(wxDegToRad(-angle)) * (secondPoint.m_y - parentPoint.m_y) + parentPoint.m_x,
- std::sin(wxDegToRad(-angle)) * (secondPoint.m_x - parentPoint.m_x) +
- std::cos(wxDegToRad(-angle)) * (secondPoint.m_y - parentPoint.m_y) + parentPoint.m_y);
+ secondPoint = wxPoint2DDouble(std::cos(wxDegToRad(-angle)) * (secondPoint.m_x - parentPoint.m_x) -
+ std::sin(wxDegToRad(-angle)) * (secondPoint.m_y - parentPoint.m_y) + parentPoint.m_x,
+ std::sin(wxDegToRad(-angle)) * (secondPoint.m_x - parentPoint.m_x) +
+ std::cos(wxDegToRad(-angle)) * (secondPoint.m_y - parentPoint.m_y) + parentPoint.m_y);
// Rotate
if(secondPoint.m_y > parentPoint.m_y) angle -= 180.0;
return wxPoint2DDouble(std::cos(wxDegToRad(angle)) * (swPoint.m_x - parentPoint.m_x) -
- std::sin(wxDegToRad(angle)) * (swPoint.m_y - parentPoint.m_y) + parentPoint.m_x,
- std::sin(wxDegToRad(angle)) * (swPoint.m_x - parentPoint.m_x) +
- std::cos(wxDegToRad(angle)) * (swPoint.m_y - parentPoint.m_y) + parentPoint.m_y);
+ std::sin(wxDegToRad(angle)) * (swPoint.m_y - parentPoint.m_y) + parentPoint.m_x,
+ std::sin(wxDegToRad(angle)) * (swPoint.m_x - parentPoint.m_x) +
+ std::cos(wxDegToRad(angle)) * (swPoint.m_y - parentPoint.m_y) + parentPoint.m_y);
}
wxPoint2DDouble Element::WorldToScreen(wxPoint2DDouble translation, double scale, double offsetX, double offsetY) const
{
return wxPoint2DDouble(m_position.m_x + offsetX + translation.m_x, m_position.m_y + offsetY + translation.m_y) *
- scale;
+ scale;
}
wxPoint2DDouble Element::WorldToScreen(wxPoint2DDouble position,
- wxPoint2DDouble translation,
- double scale,
- double offsetX,
- double offsetY) const
+ wxPoint2DDouble translation,
+ double scale,
+ double offsetX,
+ double offsetY) const
{
return wxPoint2DDouble(position.m_x + offsetX + translation.m_x, position.m_y + offsetY + translation.m_y) * scale;
}
@@ -147,14 +156,14 @@ void Element::DrawPoint(wxPoint2DDouble position, double size) const
}
bool Element::RotatedRectanglesIntersects(wxRect2DDouble rect1,
- wxRect2DDouble rect2,
- double angle1,
- double angle2) const
+ wxRect2DDouble rect2,
+ double angle1,
+ double angle2) const
{
- wxPoint2DDouble rect1Corners[4] = {rect1.GetLeftTop(), rect1.GetLeftBottom(), rect1.GetRightBottom(),
- rect1.GetRightTop()};
- wxPoint2DDouble rect2Corners[4] = {rect2.GetLeftTop(), rect2.GetLeftBottom(), rect2.GetRightBottom(),
- rect2.GetRightTop()};
+ wxPoint2DDouble rect1Corners[4] = { rect1.GetLeftTop(), rect1.GetLeftBottom(), rect1.GetRightBottom(),
+ rect1.GetRightTop() };
+ wxPoint2DDouble rect2Corners[4] = { rect2.GetLeftTop(), rect2.GetLeftBottom(), rect2.GetRightBottom(),
+ rect2.GetRightTop() };
wxPoint2DDouble rect1Center(rect1.m_x + rect1.m_width / 2.0, rect1.m_y + rect1.m_height / 2.0);
wxPoint2DDouble rect2Center(rect2.m_x + rect2.m_width / 2.0, rect2.m_y + rect2.m_height / 2.0);
@@ -163,28 +172,26 @@ bool Element::RotatedRectanglesIntersects(wxRect2DDouble rect1,
double radAngle2 = wxDegToRad(angle2);
for(int i = 0; i < 4; i++) {
- rect1Corners[i] =
- wxPoint2DDouble(std::cos(radAngle1) * (rect1Corners[i].m_x - rect1Center.m_x) -
- std::sin(radAngle1) * (rect1Corners[i].m_y - rect1Center.m_y) + rect1Center.m_x,
- std::sin(radAngle1) * (rect1Corners[i].m_x - rect1Center.m_x) +
- std::cos(radAngle1) * (rect1Corners[i].m_y - rect1Center.m_y) + rect1Center.m_y);
-
- rect2Corners[i] =
- wxPoint2DDouble(std::cos(radAngle2) * (rect2Corners[i].m_x - rect2Center.m_x) -
- std::sin(radAngle2) * (rect2Corners[i].m_y - rect2Center.m_y) + rect2Center.m_x,
- std::sin(radAngle2) * (rect2Corners[i].m_x - rect2Center.m_x) +
- std::cos(radAngle2) * (rect2Corners[i].m_y - rect2Center.m_y) + rect2Center.m_y);
+ rect1Corners[i] = wxPoint2DDouble(std::cos(radAngle1) * (rect1Corners[i].m_x - rect1Center.m_x) -
+ std::sin(radAngle1) * (rect1Corners[i].m_y - rect1Center.m_y) + rect1Center.m_x,
+ std::sin(radAngle1) * (rect1Corners[i].m_x - rect1Center.m_x) +
+ std::cos(radAngle1) * (rect1Corners[i].m_y - rect1Center.m_y) + rect1Center.m_y);
+
+ rect2Corners[i] = wxPoint2DDouble(std::cos(radAngle2) * (rect2Corners[i].m_x - rect2Center.m_x) -
+ std::sin(radAngle2) * (rect2Corners[i].m_y - rect2Center.m_y) + rect2Center.m_x,
+ std::sin(radAngle2) * (rect2Corners[i].m_x - rect2Center.m_x) +
+ std::cos(radAngle2) * (rect2Corners[i].m_y - rect2Center.m_y) + rect2Center.m_y);
}
//[Ref] http://www.gamedev.net/page/resources/_/technical/game-programming/2d-rotated-rectangle-collision-r2604
// Find the rectangles axis to project
- wxPoint2DDouble axis[4] = {rect1Corners[3] - rect1Corners[0], rect1Corners[3] - rect1Corners[2],
- rect2Corners[3] - rect2Corners[0], rect2Corners[3] - rect2Corners[2]};
+ wxPoint2DDouble axis[4] = { rect1Corners[3] - rect1Corners[0], rect1Corners[3] - rect1Corners[2],
+ rect2Corners[3] - rect2Corners[0], rect2Corners[3] - rect2Corners[2] };
// Calculate the projected points to each axis
- wxPoint2DDouble rect1ProjPts[4][4]; // [axis][corner]
- wxPoint2DDouble rect2ProjPts[4][4]; // [axis][corner]
+ wxPoint2DDouble rect1ProjPts[4][4]; // [axis][corner]
+ wxPoint2DDouble rect2ProjPts[4][4]; // [axis][corner]
for(int i = 0; i < 4; i++) {
double den = axis[i].m_x * axis[i].m_x + axis[i].m_y * axis[i].m_y;
for(int j = 0; j < 4; j++) {
@@ -197,8 +204,8 @@ bool Element::RotatedRectanglesIntersects(wxRect2DDouble rect1,
}
// Calculate the scalar value to identify the max and min values on projections
- double rect1Scalar[4][4]; //[axis][corner]
- double rect2Scalar[4][4]; //[axis][corner]
+ double rect1Scalar[4][4]; //[axis][corner]
+ double rect2Scalar[4][4]; //[axis][corner]
for(int i = 0; i < 4; i++) {
for(int j = 0; j < 4; j++) {
rect1Scalar[i][j] = rect1ProjPts[i][j].m_x * axis[i].m_x + rect1ProjPts[i][j].m_y * axis[i].m_y;
@@ -237,10 +244,10 @@ bool Element::RotatedRectanglesIntersects(wxRect2DDouble rect1,
void Element::UpdateSwitches()
{
// General method, to one switch only.
- wxPoint2DDouble swCenter = wxPoint2DDouble((m_pointList[0].m_x + m_pointList[1].m_x) / 2.0,
- (m_pointList[0].m_y + m_pointList[1].m_y) / 2.0);
- m_switchRect[0] = wxRect2DDouble(swCenter.m_x - m_switchSize / 2.0, swCenter.m_y - m_switchSize / 2.0, m_switchSize,
- m_switchSize);
+ wxPoint2DDouble swCenter = wxPoint2DDouble(
+ (m_pointList[0].m_x + m_pointList[1].m_x) / 2.0, (m_pointList[0].m_y + m_pointList[1].m_y) / 2.0);
+ m_switchRect[0] = wxRect2DDouble(
+ swCenter.m_x - m_switchSize / 2.0, swCenter.m_y - m_switchSize / 2.0, m_switchSize, m_switchSize);
}
void Element::DrawSwitches() const
@@ -250,20 +257,20 @@ void Element::DrawSwitches() const
Element* parent = *it;
if(parent) {
if(m_online) {
- glColor4d(0.0, 0.4, 0.0, 1.0); // green
+ glColor4dv(m_closedSwitchColour.GetRGBA());
} else {
- glColor4d(1.0, 0.1, 0.1, 1.0); // red
+ glColor4dv(m_openedSwitchColour.GetRGBA());
}
glPushMatrix();
glTranslated(m_switchRect[i].GetPosition().m_x + m_switchSize / 2.0,
- m_switchRect[i].GetPosition().m_y + m_switchSize / 2.0, 0.0);
+ m_switchRect[i].GetPosition().m_y + m_switchSize / 2.0, 0.0);
glRotated(parent->GetAngle(), 0.0, 0.0, 1.0);
glTranslated(-m_switchRect[i].GetPosition().m_x - m_switchSize / 2.0,
- -m_switchRect[i].GetPosition().m_y - m_switchSize / 2.0, 0.0);
+ -m_switchRect[i].GetPosition().m_y - m_switchSize / 2.0, 0.0);
DrawRectangle(m_switchRect[i].GetPosition() + wxPoint2DDouble(m_switchSize / 2.0, m_switchSize / 2.0),
- m_switchSize, m_switchSize);
+ m_switchSize, m_switchSize);
glPopMatrix();
}
@@ -310,8 +317,8 @@ void Element::CalculateBoundaries(wxPoint2DDouble& leftUp, wxPoint2DDouble& righ
// Check rect corners boundaries.
// Get rectangle corners
- wxPoint2DDouble rectCorner[4] = {m_rect.GetLeftTop(), m_rect.GetLeftBottom(), m_rect.GetRightBottom(),
- m_rect.GetRightTop()};
+ wxPoint2DDouble rectCorner[4] = { m_rect.GetLeftTop(), m_rect.GetLeftBottom(), m_rect.GetRightBottom(),
+ m_rect.GetRightTop() };
// Rotate corners.
for(int i = 0; i < 4; ++i) {
rectCorner[i] = RotateAtPosition(rectCorner[i], m_angle);
@@ -390,7 +397,7 @@ wxString Element::StringFromDouble(double value, int minDecimal)
void Element::CalculatePowerFlowPts(std::vector<wxPoint2DDouble> edges)
{
- double arrowRate = 100.0; // One arrow to each "arrowRate" distance in pixels.
+ double arrowRate = 100.0; // One arrow to each "arrowRate" distance in pixels.
if(edges.size() < 2) return;
@@ -413,7 +420,7 @@ void Element::CalculatePowerFlowPts(std::vector<wxPoint2DDouble> edges)
for(int i = 0; i < numArrows; i++) {
wxPoint2DDouble arrowCenter(pt1.m_x + ((rotPt2.m_x - pt1.m_x) / double(numArrows + 1)) * double(i + 1),
- pt1.m_y + ((rotPt2.m_y - pt1.m_y) / double(numArrows + 1)) * double(i + 1));
+ pt1.m_y + ((rotPt2.m_y - pt1.m_y) / double(numArrows + 1)) * double(i + 1));
std::vector<wxPoint2DDouble> triPts;
triPts.push_back(arrowCenter + wxPoint2DDouble(5.0, 0.0));
@@ -434,8 +441,32 @@ void Element::CalculatePowerFlowPts(std::vector<wxPoint2DDouble> edges)
void Element::DrawPowerFlowPts() const
{
- glColor4d(1.0, 0.51, 0.0, 1.0);
- for(int i = 0; i < (int)m_powerFlowArrow.size(); i++) {
- DrawTriangle(m_powerFlowArrow[i]);
+ if(m_online) {
+ glColor4dv(m_powerFlowArrowColour.GetRGBA());
+ for(int i = 0; i < (int)m_powerFlowArrow.size(); i++) {
+ DrawTriangle(m_powerFlowArrow[i]);
+ }
+ }
+}
+
+void Element::ReplaceParent(Element* oldParent, Element* newParent)
+{
+ for(int i = 0; i < (int)m_parentList.size(); i++) {
+ if(m_parentList[i] == oldParent) m_parentList[i] = newParent;
}
}
+
+void OpenGLColour::SetRGBA(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)
+{
+ rgba[0] = red;
+ rgba[1] = green;
+ rgba[2] = blue;
+ rgba[3] = alpha;
+}
+
+OpenGLColour::OpenGLColour() { SetRGBA(1.0, 1.0, 1.0, 1.0); }
+
+OpenGLColour::OpenGLColour(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)
+{
+ SetRGBA(red, green, blue, alpha);
+}
diff --git a/Project/Element.h b/Project/Element.h
index 512fc8f..67e0762 100644
--- a/Project/Element.h
+++ b/Project/Element.h
@@ -82,6 +82,18 @@ struct SwitchingData {
std::vector<double> swTime;
};
+class OpenGLColour
+{
+public:
+ OpenGLColour();
+ OpenGLColour(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
+ virtual ~OpenGLColour() {}
+ void SetRGBA(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
+ const GLdouble* GetRGBA() const { return rgba; }
+protected:
+ GLdouble rgba[4];
+};
+
class Element
{
public:
@@ -111,13 +123,13 @@ public:
bool IsPickboxShown() const { return m_showPickbox; }
bool IsOnline() const { return m_online; }
virtual std::vector<wxPoint2DDouble> GetPointList() const { return m_pointList; }
-
// Pure-virtuals methods
virtual bool AddParent(Element* parent, wxPoint2DDouble position) = 0;
virtual bool Contains(wxPoint2DDouble position) const = 0;
virtual bool Intersects(wxRect2DDouble rect) const = 0;
// General methods
+ virtual Element* GetCopy() { return NULL; }
virtual void Draw(wxPoint2DDouble translation, double scale) const {};
virtual void Rotate(bool clockwise = true) {}
virtual bool GetContextMenu(wxMenu& menu) { return false; }
@@ -129,6 +141,7 @@ public:
virtual void UpdateNodes() {}
virtual bool SetNodeParent(Element* parent) { return false; }
virtual void RemoveParent(Element* parent) {}
+ virtual void ReplaceParent(Element* oldParent, Element* newParent);
virtual void RotateNode(Element* parent, bool clockwise = true) {}
virtual wxPoint2DDouble
GetSwitchPoint(Element* parent, wxPoint2DDouble parentPoint, wxPoint2DDouble secondPoint) const;
@@ -172,13 +185,11 @@ public:
virtual std::vector<Element*> GetParentList() const { return m_parentList; }
virtual wxPoint2DDouble GetMoveStartPosition() const { return m_moveStartPt; }
virtual wxPoint2DDouble GetMovePosition() const { return m_movePos; }
-
virtual void CalculateBoundaries(wxPoint2DDouble& leftUp, wxPoint2DDouble& rightBottom) const;
virtual void GeneralMenuItens(wxMenu& menu);
virtual bool ShowForm(wxWindow* parent, Element* element) { return false; }
-
bool DoubleFromString(wxWindow* parent, wxString strValue, double& value, wxString errorMsg);
bool IntFromString(wxWindow* parent, wxString strValue, int& value, wxString errorMsg);
@@ -190,7 +201,6 @@ public:
virtual SwitchingData GetSwitchingData() { return m_swData; }
virtual void SetPowerFlowDirection(PowerFlowDirection pfDirection) { m_pfDirection = pfDirection; }
virtual PowerFlowDirection GetPowerFlowDirection() const { return m_pfDirection; }
-
// Static methods
static wxString StringFromDouble(double value, int minDecimal = 1);
@@ -206,6 +216,14 @@ protected:
double m_rotationAngle = 45.0;
double m_switchSize = 10.0;
+ OpenGLColour m_busColour;
+ OpenGLColour m_onlineElementColour;
+ OpenGLColour m_offlineElementColour;
+ OpenGLColour m_closedSwitchColour;
+ OpenGLColour m_openedSwitchColour;
+ OpenGLColour m_selectionColour;
+ OpenGLColour m_powerFlowArrowColour;
+
std::vector<wxRect2DDouble> m_switchRect;
std::vector<std::vector<wxPoint2DDouble> > m_powerFlowArrow;
diff --git a/Project/ElementDataObject.cpp b/Project/ElementDataObject.cpp
new file mode 100644
index 0000000..a5ac165
--- /dev/null
+++ b/Project/ElementDataObject.cpp
@@ -0,0 +1,39 @@
+#include "ElementDataObject.h"
+
+ElementDataObject::ElementDataObject()
+ : wxDataObjectSimple(wxDataFormat("PSPCopy"))
+{
+ m_elementsLists = new ElementsLists();
+}
+
+ElementDataObject::ElementDataObject(std::vector<Element*> elementList)
+ : wxDataObjectSimple(wxDataFormat("PSPCopy"))
+{
+ m_elementsLists = new ElementsLists();
+ if(elementList.size() > 0) {
+ // Separate buses (parents) from the rest of the elements (childs).
+ for(auto it = elementList.begin(), itEnd = elementList.end(); it != itEnd; ++it) {
+ Element* copy = (*it)->GetCopy();
+ if(copy) {
+ if(typeid(*copy) == typeid(Bus))
+ m_elementsLists->parentList.push_back((Bus*)copy);
+ else
+ m_elementsLists->elementList.push_back(copy);
+ }
+ }
+ }
+}
+
+ElementDataObject::~ElementDataObject() {}
+size_t ElementDataObject::GetDataSize() const { return sizeof(void*); }
+bool ElementDataObject::GetDataHere(void* buf) const
+{
+ *(ElementsLists**)buf = m_elementsLists;
+ return true;
+}
+
+bool ElementDataObject::SetData(size_t len, const void* buf)
+{
+ m_elementsLists = *(ElementsLists**)buf;
+ return true;
+}
diff --git a/Project/ElementDataObject.h b/Project/ElementDataObject.h
new file mode 100644
index 0000000..646e76c
--- /dev/null
+++ b/Project/ElementDataObject.h
@@ -0,0 +1,29 @@
+#ifndef ELEMENTDATAOBJECT_H
+#define ELEMENTDATAOBJECT_H
+
+#include "Workspace.h"
+#include <wx/dataobj.h>
+
+struct ElementsLists {
+ std::vector<Element*> elementList;
+ std::vector<Bus*> parentList;
+};
+
+class ElementDataObject : public wxDataObjectSimple
+{
+public:
+ ElementDataObject();
+ ElementDataObject(std::vector<Element*> elementList);
+ ~ElementDataObject();
+
+ size_t GetDataSize() const override;
+ bool GetDataHere(void* buf) const override;
+ bool SetData(size_t len, const void* buf) override;
+
+ ElementsLists* GetElementsLists() { return m_elementsLists; }
+
+protected:
+ ElementsLists* m_elementsLists;
+};
+
+#endif // ELEMENTDATAOBJECT_H
diff --git a/Project/IndMotor.cpp b/Project/IndMotor.cpp
index 7a56466..fc30f12 100644
--- a/Project/IndMotor.cpp
+++ b/Project/IndMotor.cpp
@@ -75,3 +75,10 @@ IndMotorElectricalData IndMotor::GetPUElectricalData(double systemPowerBase)
return data;
}
+
+Element* IndMotor::GetCopy()
+{
+ IndMotor* copy = new IndMotor();
+ *copy = *this;
+ return copy;
+}
diff --git a/Project/IndMotor.h b/Project/IndMotor.h
index 491c714..03c64d7 100644
--- a/Project/IndMotor.h
+++ b/Project/IndMotor.h
@@ -20,7 +20,8 @@ class IndMotor : public Machines
IndMotor();
IndMotor(wxString name);
~IndMotor();
-
+
+ virtual Element* GetCopy();
virtual void DrawSymbol() const;
virtual bool GetContextMenu(wxMenu& menu);
virtual bool ShowForm(wxWindow* parent, Element* element);
diff --git a/Project/Inductor.cpp b/Project/Inductor.cpp
index 9c13f15..b3f80d9 100644
--- a/Project/Inductor.cpp
+++ b/Project/Inductor.cpp
@@ -1,19 +1,26 @@
#include "ReactiveShuntElementForm.h"
#include "Inductor.h"
-Inductor::Inductor() : Shunt() {}
-Inductor::Inductor(wxString name) : Shunt() { m_electricalData.name = name; }
+Inductor::Inductor()
+ : Shunt()
+{
+}
+Inductor::Inductor(wxString name)
+ : Shunt()
+{
+ m_electricalData.name = name;
+}
Inductor::~Inductor() {}
bool Inductor::AddParent(Element* parent, wxPoint2DDouble position)
{
if(parent) {
m_parentList.push_back(parent);
wxPoint2DDouble parentPt =
- parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position.
- parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
- parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back.
+ parent->RotateAtPosition(position, -parent->GetAngle()); // Rotate click to horizontal position.
+ parentPt.m_y = parent->GetPosition().m_y; // Centralize on bus.
+ parentPt = parent->RotateAtPosition(parentPt, parent->GetAngle()); // Rotate back.
- m_position = parentPt + wxPoint2DDouble(0.0, 100.0); // Shifts the position to the down of the bus.
+ m_position = parentPt + wxPoint2DDouble(0.0, 100.0); // Shifts the position to the down of the bus.
m_width = 20.0;
m_height = 70.0;
m_rect = wxRect2DDouble(m_position.m_x - m_width / 2.0, m_position.m_y - m_height / 2.0, m_width, m_height);
@@ -26,7 +33,7 @@ bool Inductor::AddParent(Element* parent, wxPoint2DDouble position)
m_inserted = true;
wxRect2DDouble genRect(0, 0, 0, 0);
- m_switchRect.push_back(genRect); // Push a general rectangle.
+ m_switchRect.push_back(genRect); // Push a general rectangle.
UpdateSwitches();
return true;
@@ -36,10 +43,16 @@ bool Inductor::AddParent(Element* parent, wxPoint2DDouble position)
void Inductor::Draw(wxPoint2DDouble translation, double scale) const
{
+ OpenGLColour elementColour;
+ if(m_online)
+ elementColour = m_onlineElementColour;
+ else
+ elementColour = m_offlineElementColour;
+
if(m_inserted) {
if(m_selected) {
glLineWidth(1.5 + m_borderSize * 2.0);
- glColor4d(0.0, 0.5, 1.0, 0.5);
+ glColor4dv(m_selectionColour.GetRGBA());
DrawLine(m_pointList);
@@ -61,7 +74,7 @@ void Inductor::Draw(wxPoint2DDouble translation, double scale) const
}
// Draw Load (layer 2).
glLineWidth(1.5);
- glColor4d(0.2, 0.2, 0.2, 1.0);
+ glColor4dv(elementColour.GetRGBA());
DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);
DrawLine(m_pointList);
@@ -72,7 +85,7 @@ void Inductor::Draw(wxPoint2DDouble translation, double scale) const
glRotated(m_angle, 0.0, 0.0, 1.0);
glTranslated(-m_position.m_x, -m_position.m_y, 0.0);
- glColor4d(0.2, 0.2, 0.2, 1.0);
+ glColor4dv(elementColour.GetRGBA());
DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 10.0), 10, 45, 270, 10, GL_LINE_STRIP);
DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 25.0), 10, 45, 315, 10, GL_LINE_STRIP);
DrawArc(m_position + wxPoint2DDouble(0, -m_height / 2.0 + 40.0), 10, 90, 315, 10, GL_LINE_STRIP);
@@ -140,6 +153,13 @@ InductorElectricalData Inductor::GetPUElectricalData(double systemPowerBase)
default:
break;
}
-
+
return data;
}
+
+Element* Inductor::GetCopy()
+{
+ Inductor* copy = new Inductor();
+ *copy = *this;
+ return copy;
+}
diff --git a/Project/Inductor.h b/Project/Inductor.h
index f157d1c..84acc18 100644
--- a/Project/Inductor.h
+++ b/Project/Inductor.h
@@ -17,7 +17,8 @@ class Inductor : public Shunt
Inductor();
Inductor(wxString name);
~Inductor();
-
+
+ virtual Element* GetCopy();
virtual bool AddParent(Element* parent, wxPoint2DDouble position);
virtual void Draw(wxPoint2DDouble translation, double scale) const;
virtual bool Contains(wxPoint2DDouble position) const;
diff --git a/Project/Line.cpp b/Project/Line.cpp
index 836ca3c..3180cf8 100644
--- a/Project/Line.cpp
+++ b/Project/Line.cpp
@@ -31,6 +31,10 @@ 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;
+
std::vector<wxPoint2DDouble> pointList = m_pointList;
if(!m_inserted && pointList.size() > 0) {
wxPoint2DDouble secondPoint = m_position;
@@ -44,7 +48,7 @@ void Line::Draw(wxPoint2DDouble translation, double scale) const
// Line selected (Layer 1).
if(m_selected) {
glLineWidth(1.5 + m_borderSize * 2.0);
- glColor4d(0.0, 0.5, 1.0, 0.5);
+ glColor4dv(m_selectionColour.GetRGBA());
DrawLine(pointList);
// Draw nodes selection.
@@ -58,7 +62,7 @@ void Line::Draw(wxPoint2DDouble translation, double scale) const
// Draw line (Layer 2)
glLineWidth(1.5);
- glColor4d(0.2, 0.2, 0.2, 1.0);
+ glColor4dv(elementColour.GetRGBA());
DrawLine(pointList);
if(m_inserted) {
@@ -68,7 +72,7 @@ void Line::Draw(wxPoint2DDouble translation, double scale) const
// Draw nodes.
if(pointList.size() > 0) {
- glColor4d(0.2, 0.2, 0.2, 1.0);
+ glColor4dv(elementColour.GetRGBA());
DrawCircle(pointList[0], 5.0, 10, GL_POLYGON);
if(m_inserted) {
DrawCircle(pointList[pointList.size() - 1], 5.0, 10, GL_POLYGON);
@@ -487,3 +491,10 @@ void Line::SetPointList(std::vector<wxPoint2DDouble> pointList)
UpdateSwitchesPosition();
UpdatePowerFlowArrowsPosition();
}
+
+Element* Line::GetCopy()
+{
+ Line* copy = new Line();
+ *copy = *this;
+ return copy;
+}
diff --git a/Project/Line.h b/Project/Line.h
index 2a2902c..7000701 100644
--- a/Project/Line.h
+++ b/Project/Line.h
@@ -45,6 +45,7 @@ class Line : public Branch
virtual void MoveNode(Element* parent, wxPoint2DDouble position);
virtual bool SetNodeParent(Element* parent);
virtual wxCursor GetBestPickboxCursor() const { return wxCURSOR_SIZING; }
+ virtual Element* GetCopy();
virtual bool AddParent(Element* parent, wxPoint2DDouble position);
virtual bool Intersects(wxRect2DDouble rect) const;
virtual void MovePickbox(wxPoint2DDouble position);
diff --git a/Project/Load.cpp b/Project/Load.cpp
index 9889215..f5afda3 100644
--- a/Project/Load.cpp
+++ b/Project/Load.cpp
@@ -40,11 +40,15 @@ bool Load::AddParent(Element* parent, wxPoint2DDouble position)
void Load::Draw(wxPoint2DDouble translation, double scale) const
{
+ OpenGLColour elementColour;
+ if(m_online) elementColour = m_onlineElementColour;
+ else elementColour = m_offlineElementColour;
+
if(m_inserted) {
// Draw Selection (layer 1).
if(m_selected) {
glLineWidth(1.5 + m_borderSize * 2.0);
- glColor4d(0.0, 0.5, 1.0, 0.5);
+ glColor4dv(m_selectionColour.GetRGBA());
std::vector<wxPoint2DDouble> selTriangPts;
selTriangPts.push_back(m_triangPts[0] + m_position +
wxPoint2DDouble(-m_borderSize / scale, -m_borderSize / scale));
@@ -69,7 +73,7 @@ void Load::Draw(wxPoint2DDouble translation, double scale) const
glLineWidth(1.5);
// Draw node.
- glColor4d(0.2, 0.2, 0.2, 1.0);
+ glColor4dv(elementColour.GetRGBA());
DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);
DrawLine(m_pointList);
@@ -85,7 +89,7 @@ void Load::Draw(wxPoint2DDouble translation, double scale) const
glTranslated(m_position.m_x, m_position.m_y, 0.0);
glRotated(m_angle, 0.0, 0.0, 1.0);
glTranslated(-m_position.m_x, -m_position.m_y, 0.0);
- glColor4d(0.2, 0.2, 0.2, 1.0);
+ glColor4dv(elementColour.GetRGBA());
DrawTriangle(triangPts);
glPopMatrix();
}
@@ -160,3 +164,10 @@ LoadElectricalData Load::GetPUElectricalData(double systemPowerBase)
return data;
}
+
+Element* Load::GetCopy()
+{
+ Load* copy = new Load();
+ *copy = *this;
+ return copy;
+}
diff --git a/Project/Load.h b/Project/Load.h
index 3c6dd48..88bedaa 100644
--- a/Project/Load.h
+++ b/Project/Load.h
@@ -26,7 +26,8 @@ class Load : public Shunt
Load();
Load(wxString name);
~Load();
-
+
+ virtual Element* GetCopy();
virtual bool AddParent(Element* parent, wxPoint2DDouble position);
virtual void Draw(wxPoint2DDouble translation, double scale) const;
virtual void Rotate(bool clockwise = true);
diff --git a/Project/Machines.cpp b/Project/Machines.cpp
index c24deaf..bda8a7a 100644
--- a/Project/Machines.cpp
+++ b/Project/Machines.cpp
@@ -35,12 +35,15 @@ bool Machines::AddParent(Element* parent, wxPoint2DDouble position)
void Machines::Draw(wxPoint2DDouble translation, double scale) const
{
+ OpenGLColour elementColour;
+ if(m_online) elementColour = m_onlineElementColour;
+ else elementColour = m_offlineElementColour;
+
if(m_inserted) {
-
// Draw Selection (layer 1).
if(m_selected) {
glLineWidth(1.5 + m_borderSize * 2.0);
- glColor4d(0.0, 0.5, 1.0, 0.5);
+ glColor4dv(m_selectionColour.GetRGBA());
DrawCircle(m_position, 25.0 + (m_borderSize + 1.5) / scale, 20, GL_POLYGON);
DrawLine(m_pointList);
@@ -52,7 +55,7 @@ void Machines::Draw(wxPoint2DDouble translation, double scale) const
glLineWidth(1.5);
// Draw node.
- glColor4d(0.2, 0.2, 0.2, 1.0);
+ glColor4dv(elementColour.GetRGBA());
DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);
DrawLine(m_pointList);
@@ -63,7 +66,7 @@ void Machines::Draw(wxPoint2DDouble translation, double scale) const
glColor4d(1.0, 1.0, 1.0, 1.0);
DrawCircle(m_position, 25.0, 20, GL_POLYGON);
- glColor4d(0.2, 0.2, 0.2, 1.0);
+ glColor4dv(elementColour.GetRGBA());
DrawCircle(m_position, 25.0, 20);
// Draw machine symbol.
diff --git a/Project/PowerFlow.cpp b/Project/PowerFlow.cpp
index 023ce26..c94d8d8 100644
--- a/Project/PowerFlow.cpp
+++ b/Project/PowerFlow.cpp
@@ -278,13 +278,5 @@ bool PowerFlow::RunGaussSeidel(double systemPowerBase,
UpdateElementsPowerFlow(voltage, power, oldBusType, reactiveLimit, systemPowerBase);
- wxString str = "";
- for(auto itb = m_busList.begin(); itb != m_busList.end(); itb++) {
- Bus* bus = *itb;
- BusElectricalData data = bus->GetEletricalData();
- str += wxString::Format("%.5f/_%.2f\n", std::abs(data.voltage), wxRadToDeg(std::arg(data.voltage)));
- }
- wxLogMessage(str);
-
return true;
}
diff --git a/Project/Project.mk b/Project/Project.mk
index bd0847f..6d4aebd 100644
--- a/Project/Project.mk
+++ b/Project/Project.mk
@@ -13,7 +13,7 @@ CurrentFileName :=
CurrentFilePath :=
CurrentFileFullPath :=
User :=Thales
-Date :=15/12/2016
+Date :=29/12/2016
CodeLitePath :="C:/Program Files/CodeLite"
LinkerName :=C:/TDM-GCC-64/bin/g++.exe
SharedObjectLinkerName :=C:/TDM-GCC-64/bin/g++.exe -shared -fPIC
@@ -64,11 +64,11 @@ AS := C:/TDM-GCC-64/bin/as.exe
CodeLiteDir:=C:\Program Files\CodeLite
WXWIN:=C:\wxWidgets-3.1.0
WXCFG:=gcc_dll\mswu
-Objects0=$(IntermediateDirectory)/main.cpp$(ObjectSuffix) $(IntermediateDirectory)/win_resources.rc$(ObjectSuffix) $(IntermediateDirectory)/Text.cpp$(ObjectSuffix) $(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix) $(IntermediateDirectory)/wxGLString.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrame.cpp$(ObjectSuffix) $(IntermediateDirectory)/Workspace.cpp$(ObjectSuffix) $(IntermediateDirectory)/FileHanding.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrameBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/WorkspaceBitmaps.cpp$(ObjectSuffix) \
- $(IntermediateDirectory)/BusFormBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElementFormBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrameBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/WorkspaceBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElementForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/Bus.cpp$(ObjectSuffix) $(IntermediateDirectory)/Line.cpp$(ObjectSuffix) $(IntermediateDirectory)/Transformer.cpp$(ObjectSuffix) $(IntermediateDirectory)/Machines.cpp$(ObjectSuffix) $(IntermediateDirectory)/SyncGenerator.cpp$(ObjectSuffix) \
- $(IntermediateDirectory)/IndMotor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Branch.cpp$(ObjectSuffix) $(IntermediateDirectory)/SyncMotor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Shunt.cpp$(ObjectSuffix) $(IntermediateDirectory)/Load.cpp$(ObjectSuffix) $(IntermediateDirectory)/Inductor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Capacitor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Element.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElectricCalculation.cpp$(ObjectSuffix) $(IntermediateDirectory)/PowerFlow.cpp$(ObjectSuffix) \
- $(IntermediateDirectory)/BusForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/GeneratorStabForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/LineForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/SwitchingForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/TransformerForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/LoadForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/IndMotorForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/SyncMachineForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/TextForm.cpp$(ObjectSuffix) \
-
+Objects0=$(IntermediateDirectory)/main.cpp$(ObjectSuffix) $(IntermediateDirectory)/win_resources.rc$(ObjectSuffix) $(IntermediateDirectory)/Text.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElementDataObject.cpp$(ObjectSuffix) $(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix) $(IntermediateDirectory)/wxGLString.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrame.cpp$(ObjectSuffix) $(IntermediateDirectory)/Workspace.cpp$(ObjectSuffix) $(IntermediateDirectory)/FileHanding.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrameBitmaps.cpp$(ObjectSuffix) \
+ $(IntermediateDirectory)/WorkspaceBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/BusFormBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElementFormBitmaps.cpp$(ObjectSuffix) $(IntermediateDirectory)/MainFrameBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/WorkspaceBase.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElementForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/Bus.cpp$(ObjectSuffix) $(IntermediateDirectory)/Line.cpp$(ObjectSuffix) $(IntermediateDirectory)/Transformer.cpp$(ObjectSuffix) $(IntermediateDirectory)/Machines.cpp$(ObjectSuffix) \
+ $(IntermediateDirectory)/SyncGenerator.cpp$(ObjectSuffix) $(IntermediateDirectory)/IndMotor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Branch.cpp$(ObjectSuffix) $(IntermediateDirectory)/SyncMotor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Shunt.cpp$(ObjectSuffix) $(IntermediateDirectory)/Load.cpp$(ObjectSuffix) $(IntermediateDirectory)/Inductor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Capacitor.cpp$(ObjectSuffix) $(IntermediateDirectory)/Element.cpp$(ObjectSuffix) $(IntermediateDirectory)/ElectricCalculation.cpp$(ObjectSuffix) \
+ $(IntermediateDirectory)/PowerFlow.cpp$(ObjectSuffix) $(IntermediateDirectory)/BusForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/GeneratorStabForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/LineForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/SwitchingForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/TransformerForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/LoadForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/ReactiveShuntElementForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/IndMotorForm.cpp$(ObjectSuffix) $(IntermediateDirectory)/SyncMachineForm.cpp$(ObjectSuffix) \
+ $(IntermediateDirectory)/TextForm.cpp$(ObjectSuffix)
@@ -117,6 +117,14 @@ $(IntermediateDirectory)/Text.cpp$(DependSuffix): Text.cpp
$(IntermediateDirectory)/Text.cpp$(PreprocessSuffix): Text.cpp
$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/Text.cpp$(PreprocessSuffix) Text.cpp
+$(IntermediateDirectory)/ElementDataObject.cpp$(ObjectSuffix): ElementDataObject.cpp $(IntermediateDirectory)/ElementDataObject.cpp$(DependSuffix)
+ $(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/ElementDataObject.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/ElementDataObject.cpp$(ObjectSuffix) $(IncludePath)
+$(IntermediateDirectory)/ElementDataObject.cpp$(DependSuffix): ElementDataObject.cpp
+ @$(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) -MG -MP -MT$(IntermediateDirectory)/ElementDataObject.cpp$(ObjectSuffix) -MF$(IntermediateDirectory)/ElementDataObject.cpp$(DependSuffix) -MM ElementDataObject.cpp
+
+$(IntermediateDirectory)/ElementDataObject.cpp$(PreprocessSuffix): ElementDataObject.cpp
+ $(CXX) $(CXXFLAGS) $(IncludePCH) $(IncludePath) $(PreprocessOnlySwitch) $(OutputSwitch) $(IntermediateDirectory)/ElementDataObject.cpp$(PreprocessSuffix) ElementDataObject.cpp
+
$(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix): ArtMetro.cpp $(IntermediateDirectory)/ArtMetro.cpp$(DependSuffix)
$(CXX) $(IncludePCH) $(SourceSwitch) "C:/Users/Thales/Documents/GitHub/PSP/Project/ArtMetro.cpp" $(CXXFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/ArtMetro.cpp$(ObjectSuffix) $(IncludePath)
$(IntermediateDirectory)/ArtMetro.cpp$(DependSuffix): ArtMetro.cpp
diff --git a/Project/Project.project b/Project/Project.project
index 5d4b6d2..b04dc78 100644
--- a/Project/Project.project
+++ b/Project/Project.project
@@ -29,6 +29,7 @@
<File Name="PowerFlow.cpp"/>
</VirtualDirectory>
<File Name="Text.cpp"/>
+ <File Name="ElementDataObject.cpp"/>
</VirtualDirectory>
<VirtualDirectory Name="view">
<File Name="ArtMetro.cpp"/>
@@ -81,6 +82,7 @@
<File Name="rapidXML/rapidxml_print.hpp"/>
<File Name="rapidXML/rapidxml_utils.hpp"/>
</VirtualDirectory>
+ <File Name="ElementDataObject.h"/>
</VirtualDirectory>
<VirtualDirectory Name="view">
<File Name="ArtMetro.h"/>
diff --git a/Project/Project.txt b/Project/Project.txt
index 1792b21..f3ca292 100644
--- a/Project/Project.txt
+++ b/Project/Project.txt
@@ -1 +1 @@
-./Release/main.cpp.o ./Release/win_resources.rc.o ./Release/Text.cpp.o ./Release/ArtMetro.cpp.o ./Release/wxGLString.cpp.o ./Release/MainFrame.cpp.o ./Release/Workspace.cpp.o ./Release/FileHanding.cpp.o ./Release/MainFrameBitmaps.cpp.o ./Release/WorkspaceBitmaps.cpp.o ./Release/BusFormBitmaps.cpp.o ./Release/ElementFormBitmaps.cpp.o ./Release/MainFrameBase.cpp.o ./Release/WorkspaceBase.cpp.o ./Release/ElementForm.cpp.o ./Release/Bus.cpp.o ./Release/Line.cpp.o ./Release/Transformer.cpp.o ./Release/Machines.cpp.o ./Release/SyncGenerator.cpp.o ./Release/IndMotor.cpp.o ./Release/Branch.cpp.o ./Release/SyncMotor.cpp.o ./Release/Shunt.cpp.o ./Release/Load.cpp.o ./Release/Inductor.cpp.o ./Release/Capacitor.cpp.o ./Release/Element.cpp.o ./Release/ElectricCalculation.cpp.o ./Release/PowerFlow.cpp.o ./Release/BusForm.cpp.o ./Release/GeneratorStabForm.cpp.o ./Release/LineForm.cpp.o ./Release/SwitchingForm.cpp.o ./Release/TransformerForm.cpp.o ./Release/LoadForm.cpp.o ./Release/ReactiveShuntElementForm.cpp.o ./Release/IndMotorForm.cpp.o ./Release/SyncMachineForm.cpp.o ./Release/TextForm.cpp.o
+./Release/main.cpp.o ./Release/win_resources.rc.o ./Release/Text.cpp.o ./Release/ElementDataObject.cpp.o ./Release/ArtMetro.cpp.o ./Release/wxGLString.cpp.o ./Release/MainFrame.cpp.o ./Release/Workspace.cpp.o ./Release/FileHanding.cpp.o ./Release/MainFrameBitmaps.cpp.o ./Release/WorkspaceBitmaps.cpp.o ./Release/BusFormBitmaps.cpp.o ./Release/ElementFormBitmaps.cpp.o ./Release/MainFrameBase.cpp.o ./Release/WorkspaceBase.cpp.o ./Release/ElementForm.cpp.o ./Release/Bus.cpp.o ./Release/Line.cpp.o ./Release/Transformer.cpp.o ./Release/Machines.cpp.o ./Release/SyncGenerator.cpp.o ./Release/IndMotor.cpp.o ./Release/Branch.cpp.o ./Release/SyncMotor.cpp.o ./Release/Shunt.cpp.o ./Release/Load.cpp.o ./Release/Inductor.cpp.o ./Release/Capacitor.cpp.o ./Release/Element.cpp.o ./Release/ElectricCalculation.cpp.o ./Release/PowerFlow.cpp.o ./Release/BusForm.cpp.o ./Release/GeneratorStabForm.cpp.o ./Release/LineForm.cpp.o ./Release/SwitchingForm.cpp.o ./Release/TransformerForm.cpp.o ./Release/LoadForm.cpp.o ./Release/ReactiveShuntElementForm.cpp.o ./Release/IndMotorForm.cpp.o ./Release/SyncMachineForm.cpp.o ./Release/TextForm.cpp.o
diff --git a/Project/Release/Branch.cpp.o b/Project/Release/Branch.cpp.o
index 0f29378..2fde385 100644
--- a/Project/Release/Branch.cpp.o
+++ b/Project/Release/Branch.cpp.o
Binary files differ
diff --git a/Project/Release/Bus.cpp.o b/Project/Release/Bus.cpp.o
index 41a53aa..a8b586f 100644
--- a/Project/Release/Bus.cpp.o
+++ b/Project/Release/Bus.cpp.o
Binary files differ
diff --git a/Project/Release/BusForm.cpp.o b/Project/Release/BusForm.cpp.o
index 917f8b4..028f7ff 100644
--- a/Project/Release/BusForm.cpp.o
+++ b/Project/Release/BusForm.cpp.o
Binary files differ
diff --git a/Project/Release/Capacitor.cpp.o b/Project/Release/Capacitor.cpp.o
index 80ab190..7ce764b 100644
--- a/Project/Release/Capacitor.cpp.o
+++ b/Project/Release/Capacitor.cpp.o
Binary files differ
diff --git a/Project/Release/ElectricCalculation.cpp.o b/Project/Release/ElectricCalculation.cpp.o
index 3d144b8..0c9d36d 100644
--- a/Project/Release/ElectricCalculation.cpp.o
+++ b/Project/Release/ElectricCalculation.cpp.o
Binary files differ
diff --git a/Project/Release/Element.cpp.o b/Project/Release/Element.cpp.o
index 3abe5a3..866bd66 100644
--- a/Project/Release/Element.cpp.o
+++ b/Project/Release/Element.cpp.o
Binary files differ
diff --git a/Project/Release/ElementDataObject.cpp.o b/Project/Release/ElementDataObject.cpp.o
new file mode 100644
index 0000000..1982cfa
--- /dev/null
+++ b/Project/Release/ElementDataObject.cpp.o
Binary files differ
diff --git a/Project/Release/ElementDataObject.cpp.o.d b/Project/Release/ElementDataObject.cpp.o.d
new file mode 100644
index 0000000..e58264b
--- /dev/null
+++ b/Project/Release/ElementDataObject.cpp.o.d
@@ -0,0 +1,752 @@
+Release/ElementDataObject.cpp.o: ElementDataObject.cpp \
+ ElementDataObject.h Workspace.h C:/wxWidgets-3.1.0/include/wx/dcclient.h \
+ C:/wxWidgets-3.1.0/include/wx/dc.h \
+ C:/wxWidgets-3.1.0/include/wx/object.h \
+ C:/wxWidgets-3.1.0/include/wx/memory.h \
+ C:/wxWidgets-3.1.0/include/wx/defs.h \
+ C:/wxWidgets-3.1.0/include/wx/platform.h \
+ C:/wxWidgets-3.1.0/include/wx/compiler.h \
+ C:/wxWidgets-3.1.0/lib/gcc_dll/mswu/wx/setup.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/libraries.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/gccpriv.h \
+ C:/wxWidgets-3.1.0/include/wx/chkconf.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/chkconf.h \
+ C:/wxWidgets-3.1.0/include/wx/version.h \
+ C:/wxWidgets-3.1.0/include/wx/cpp.h \
+ C:/wxWidgets-3.1.0/include/wx/dlimpexp.h \
+ C:/wxWidgets-3.1.0/include/wx/debug.h \
+ C:/wxWidgets-3.1.0/include/wx/chartype.h \
+ C:/wxWidgets-3.1.0/include/wx/windowid.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/winundef.h \
+ C:/wxWidgets-3.1.0/include/wx/features.h \
+ C:/wxWidgets-3.1.0/include/wx/string.h \
+ C:/wxWidgets-3.1.0/include/wx/wxcrtbase.h \
+ C:/wxWidgets-3.1.0/include/wx/strvararg.h \
+ C:/wxWidgets-3.1.0/include/wx/strconv.h \
+ C:/wxWidgets-3.1.0/include/wx/buffer.h \
+ C:/wxWidgets-3.1.0/include/wx/fontenc.h \
+ C:/wxWidgets-3.1.0/include/wx/unichar.h \
+ C:/wxWidgets-3.1.0/include/wx/stringimpl.h \
+ C:/wxWidgets-3.1.0/include/wx/beforestd.h \
+ C:/wxWidgets-3.1.0/include/wx/afterstd.h \
+ C:/wxWidgets-3.1.0/include/wx/stringops.h \
+ C:/wxWidgets-3.1.0/include/wx/iosfwrap.h \
+ C:/wxWidgets-3.1.0/include/wx/msgout.h \
+ C:/wxWidgets-3.1.0/include/wx/xti.h C:/wxWidgets-3.1.0/include/wx/rtti.h \
+ C:/wxWidgets-3.1.0/include/wx/flags.h \
+ C:/wxWidgets-3.1.0/include/wx/xti2.h \
+ C:/wxWidgets-3.1.0/include/wx/intl.h \
+ C:/wxWidgets-3.1.0/include/wx/translation.h \
+ C:/wxWidgets-3.1.0/include/wx/language.h \
+ C:/wxWidgets-3.1.0/include/wx/hashmap.h \
+ C:/wxWidgets-3.1.0/include/wx/wxcrt.h \
+ C:/wxWidgets-3.1.0/include/wx/scopedptr.h \
+ C:/wxWidgets-3.1.0/include/wx/checkeddelete.h \
+ C:/wxWidgets-3.1.0/include/wx/colour.h \
+ C:/wxWidgets-3.1.0/include/wx/gdiobj.h \
+ C:/wxWidgets-3.1.0/include/wx/variant.h \
+ C:/wxWidgets-3.1.0/include/wx/arrstr.h \
+ C:/wxWidgets-3.1.0/include/wx/list.h \
+ C:/wxWidgets-3.1.0/include/wx/vector.h \
+ C:/wxWidgets-3.1.0/include/wx/scopeguard.h \
+ C:/wxWidgets-3.1.0/include/wx/except.h \
+ C:/wxWidgets-3.1.0/include/wx/meta/movable.h \
+ C:/wxWidgets-3.1.0/include/wx/meta/pod.h \
+ C:/wxWidgets-3.1.0/include/wx/meta/if.h \
+ C:/wxWidgets-3.1.0/include/wx/longlong.h \
+ C:/wxWidgets-3.1.0/include/wx/datetime.h \
+ C:/wxWidgets-3.1.0/include/wx/anystr.h \
+ C:/wxWidgets-3.1.0/include/wx/dynarray.h \
+ C:/wxWidgets-3.1.0/include/wx/any.h \
+ C:/wxWidgets-3.1.0/include/wx/typeinfo.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/colour.h \
+ C:/wxWidgets-3.1.0/include/wx/font.h \
+ C:/wxWidgets-3.1.0/include/wx/gdicmn.h \
+ C:/wxWidgets-3.1.0/include/wx/math.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/font.h \
+ C:/wxWidgets-3.1.0/include/wx/bitmap.h \
+ C:/wxWidgets-3.1.0/include/wx/image.h \
+ C:/wxWidgets-3.1.0/include/wx/stream.h \
+ C:/wxWidgets-3.1.0/include/wx/filefn.h \
+ C:/wxWidgets-3.1.0/include/wx/imagbmp.h \
+ C:/wxWidgets-3.1.0/include/wx/imagpng.h \
+ C:/wxWidgets-3.1.0/include/wx/versioninfo.h \
+ C:/wxWidgets-3.1.0/include/wx/imaggif.h \
+ C:/wxWidgets-3.1.0/include/wx/imagpcx.h \
+ C:/wxWidgets-3.1.0/include/wx/imagjpeg.h \
+ C:/wxWidgets-3.1.0/include/wx/imagtga.h \
+ C:/wxWidgets-3.1.0/include/wx/imagtiff.h \
+ C:/wxWidgets-3.1.0/include/wx/imagpnm.h \
+ C:/wxWidgets-3.1.0/include/wx/imagxpm.h \
+ C:/wxWidgets-3.1.0/include/wx/imagiff.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/bitmap.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/gdiimage.h \
+ C:/wxWidgets-3.1.0/include/wx/palette.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/palette.h \
+ C:/wxWidgets-3.1.0/include/wx/brush.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/brush.h \
+ C:/wxWidgets-3.1.0/include/wx/pen.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/pen.h \
+ C:/wxWidgets-3.1.0/include/wx/region.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/region.h \
+ C:/wxWidgets-3.1.0/include/wx/affinematrix2d.h \
+ C:/wxWidgets-3.1.0/include/wx/affinematrix2dbase.h \
+ C:/wxWidgets-3.1.0/include/wx/geometry.h \
+ C:/wxWidgets-3.1.0/include/wx/utils.h \
+ C:/wxWidgets-3.1.0/include/wx/meta/implicitconversion.h \
+ C:/wxWidgets-3.1.0/include/wx/mousestate.h \
+ C:/wxWidgets-3.1.0/include/wx/kbdstate.h \
+ C:/wxWidgets-3.1.0/include/wx/platinfo.h \
+ C:/wxWidgets-3.1.0/include/wx/msgdlg.h \
+ C:/wxWidgets-3.1.0/include/wx/dialog.h \
+ C:/wxWidgets-3.1.0/include/wx/toplevel.h \
+ C:/wxWidgets-3.1.0/include/wx/nonownedwnd.h \
+ C:/wxWidgets-3.1.0/include/wx/window.h \
+ C:/wxWidgets-3.1.0/include/wx/event.h \
+ C:/wxWidgets-3.1.0/include/wx/clntdata.h \
+ C:/wxWidgets-3.1.0/include/wx/cursor.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/cursor.h \
+ C:/wxWidgets-3.1.0/include/wx/thread.h \
+ C:/wxWidgets-3.1.0/include/wx/tracker.h \
+ C:/wxWidgets-3.1.0/include/wx/meta/convertible.h \
+ C:/wxWidgets-3.1.0/include/wx/meta/removeref.h \
+ C:/wxWidgets-3.1.0/include/wx/validate.h \
+ C:/wxWidgets-3.1.0/include/wx/accel.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/accel.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/window.h \
+ C:/wxWidgets-3.1.0/include/wx/settings.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/nonownedwnd.h \
+ C:/wxWidgets-3.1.0/include/wx/iconbndl.h \
+ C:/wxWidgets-3.1.0/include/wx/icon.h \
+ C:/wxWidgets-3.1.0/include/wx/iconloc.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/icon.h \
+ C:/wxWidgets-3.1.0/include/wx/weakref.h \
+ C:/wxWidgets-3.1.0/include/wx/meta/int2type.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/toplevel.h \
+ C:/wxWidgets-3.1.0/include/wx/containr.h \
+ C:/wxWidgets-3.1.0/include/wx/sharedptr.h \
+ C:/wxWidgets-3.1.0/include/wx/atomic.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/wrapwin.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/dialog.h \
+ C:/wxWidgets-3.1.0/include/wx/panel.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/panel.h \
+ C:/wxWidgets-3.1.0/include/wx/stockitem.h \
+ C:/wxWidgets-3.1.0/include/wx/generic/msgdlgg.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/msgdlg.h \
+ C:/wxWidgets-3.1.0/include/wx/statusbr.h \
+ C:/wxWidgets-3.1.0/include/wx/control.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/control.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/statusbar.h \
+ C:/wxWidgets-3.1.0/include/wx/tooltip.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h \
+ C:/wxWidgets-3.1.0/include/wx/clipbrd.h \
+ C:/wxWidgets-3.1.0/include/wx/dataobj.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/clipbrd.h WorkspaceBase.h \
+ C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.h \
+ C:/wxWidgets-3.1.0/include/wx/filesys.h \
+ C:/wxWidgets-3.1.0/include/wx/filename.h \
+ C:/wxWidgets-3.1.0/include/wx/file.h \
+ C:/wxWidgets-3.1.0/include/wx/convauto.h \
+ C:/wxWidgets-3.1.0/include/wx/artprov.h \
+ C:/wxWidgets-3.1.0/include/wx/xrc/xmlreshandler.h \
+ C:/wxWidgets-3.1.0/include/wx/imaglist.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/imaglist.h \
+ C:/wxWidgets-3.1.0/include/wx/xrc/xh_bmp.h \
+ C:/wxWidgets-3.1.0/include/wx/sizer.h \
+ C:/wxWidgets-3.1.0/include/wx/glcanvas.h \
+ C:/wxWidgets-3.1.0/include/wx/app.h \
+ C:/wxWidgets-3.1.0/include/wx/eventfilter.h \
+ C:/wxWidgets-3.1.0/include/wx/build.h \
+ C:/wxWidgets-3.1.0/include/wx/cmdargs.h \
+ C:/wxWidgets-3.1.0/include/wx/init.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/init.h \
+ C:/wxWidgets-3.1.0/include/wx/log.h \
+ C:/wxWidgets-3.1.0/include/wx/generic/logg.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/app.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/glcanvas.h \
+ C:/wxWidgets-3.1.0/include/wx/persist.h \
+ C:/wxWidgets-3.1.0/include/wx/confbase.h \
+ C:/wxWidgets-3.1.0/include/wx/base64.h \
+ C:/wxWidgets-3.1.0/include/wx/persist/toplevel.h \
+ C:/wxWidgets-3.1.0/include/wx/persist/window.h \
+ C:/wxWidgets-3.1.0/include/wx/display.h \
+ C:/wxWidgets-3.1.0/include/wx/vidmode.h \
+ C:/wxWidgets-3.1.0/include/wx/persist/bookctrl.h \
+ C:/wxWidgets-3.1.0/include/wx/bookctrl.h \
+ C:/wxWidgets-3.1.0/include/wx/withimages.h \
+ C:/wxWidgets-3.1.0/include/wx/notebook.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/notebook.h \
+ C:/wxWidgets-3.1.0/include/wx/persist/treebook.h \
+ C:/wxWidgets-3.1.0/include/wx/treebook.h \
+ C:/wxWidgets-3.1.0/include/wx/treectrl.h \
+ C:/wxWidgets-3.1.0/include/wx/treebase.h \
+ C:/wxWidgets-3.1.0/include/wx/itemid.h \
+ C:/wxWidgets-3.1.0/include/wx/textctrl.h \
+ C:/wxWidgets-3.1.0/include/wx/textentry.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/textentry.h \
+ C:/wxWidgets-3.1.0/include/wx/ioswrap.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/textctrl.h \
+ C:/wxWidgets-3.1.0/include/wx/systhemectrl.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/treectrl.h Bus.h BusForm.h \
+ ElementForm.h C:/wxWidgets-3.1.0/include/wx/stattext.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/stattext.h \
+ C:/wxWidgets-3.1.0/include/wx/choice.h \
+ C:/wxWidgets-3.1.0/include/wx/ctrlsub.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ctrlsub.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/choice.h \
+ C:/wxWidgets-3.1.0/include/wx/checkbox.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/checkbox.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ownerdrawnbutton.h \
+ C:/wxWidgets-3.1.0/include/wx/button.h \
+ C:/wxWidgets-3.1.0/include/wx/anybutton.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/anybutton.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/button.h \
+ C:/wxWidgets-3.1.0/include/wx/statbox.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/statbox.h \
+ C:/wxWidgets-3.1.0/include/wx/statline.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/statline.h \
+ C:/wxWidgets-3.1.0/include/wx/propgrid/manager.h \
+ C:/wxWidgets-3.1.0/include/wx/propgrid/propgrid.h \
+ C:/wxWidgets-3.1.0/include/wx/scrolwin.h \
+ C:/wxWidgets-3.1.0/include/wx/generic/scrolwin.h \
+ C:/wxWidgets-3.1.0/include/wx/recguard.h \
+ C:/wxWidgets-3.1.0/include/wx/time.h \
+ C:/wxWidgets-3.1.0/include/wx/propgrid/property.h \
+ C:/wxWidgets-3.1.0/include/wx/propgrid/propgriddefs.h \
+ C:/wxWidgets-3.1.0/include/wx/hashset.h \
+ C:/wxWidgets-3.1.0/include/wx/tokenzr.h \
+ C:/wxWidgets-3.1.0/include/wx/propgrid/propgridiface.h \
+ C:/wxWidgets-3.1.0/include/wx/propgrid/propgridpagestate.h \
+ C:/wxWidgets-3.1.0/include/wx/propgrid/props.h \
+ C:/wxWidgets-3.1.0/include/wx/propgrid/editors.h \
+ C:/wxWidgets-3.1.0/include/wx/listbox.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/listbox.h \
+ C:/wxWidgets-3.1.0/include/wx/valtext.h \
+ C:/wxWidgets-3.1.0/include/wx/toolbar.h \
+ C:/wxWidgets-3.1.0/include/wx/tbarbase.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/toolbar.h \
+ C:/wxWidgets-3.1.0/include/wx/headerctrl.h \
+ C:/wxWidgets-3.1.0/include/wx/headercol.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/headerctrl.h \
+ C:/wxWidgets-3.1.0/include/wx/propgrid/advprops.h \
+ C:/wxWidgets-3.1.0/include/wx/spinbutt.h \
+ C:/wxWidgets-3.1.0/include/wx/range.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/spinbutt.h \
+ C:/wxWidgets-3.1.0/include/wx/listctrl.h \
+ C:/wxWidgets-3.1.0/include/wx/listbase.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/listctrl.h Element.h \
+ C:/wxWidgets-3.1.0/include/wx/menu.h \
+ C:/wxWidgets-3.1.0/include/wx/menuitem.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/menuitem.h \
+ C:/wxWidgets-3.1.0/include/wx/ownerdrw.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ownerdrw.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/menu.h
+
+ElementDataObject.h:
+
+Workspace.h:
+
+C:/wxWidgets-3.1.0/include/wx/dcclient.h:
+
+C:/wxWidgets-3.1.0/include/wx/dc.h:
+
+C:/wxWidgets-3.1.0/include/wx/object.h:
+
+C:/wxWidgets-3.1.0/include/wx/memory.h:
+
+C:/wxWidgets-3.1.0/include/wx/defs.h:
+
+C:/wxWidgets-3.1.0/include/wx/platform.h:
+
+C:/wxWidgets-3.1.0/include/wx/compiler.h:
+
+C:/wxWidgets-3.1.0/lib/gcc_dll/mswu/wx/setup.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/libraries.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/gccpriv.h:
+
+C:/wxWidgets-3.1.0/include/wx/chkconf.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/chkconf.h:
+
+C:/wxWidgets-3.1.0/include/wx/version.h:
+
+C:/wxWidgets-3.1.0/include/wx/cpp.h:
+
+C:/wxWidgets-3.1.0/include/wx/dlimpexp.h:
+
+C:/wxWidgets-3.1.0/include/wx/debug.h:
+
+C:/wxWidgets-3.1.0/include/wx/chartype.h:
+
+C:/wxWidgets-3.1.0/include/wx/windowid.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/winundef.h:
+
+C:/wxWidgets-3.1.0/include/wx/features.h:
+
+C:/wxWidgets-3.1.0/include/wx/string.h:
+
+C:/wxWidgets-3.1.0/include/wx/wxcrtbase.h:
+
+C:/wxWidgets-3.1.0/include/wx/strvararg.h:
+
+C:/wxWidgets-3.1.0/include/wx/strconv.h:
+
+C:/wxWidgets-3.1.0/include/wx/buffer.h:
+
+C:/wxWidgets-3.1.0/include/wx/fontenc.h:
+
+C:/wxWidgets-3.1.0/include/wx/unichar.h:
+
+C:/wxWidgets-3.1.0/include/wx/stringimpl.h:
+
+C:/wxWidgets-3.1.0/include/wx/beforestd.h:
+
+C:/wxWidgets-3.1.0/include/wx/afterstd.h:
+
+C:/wxWidgets-3.1.0/include/wx/stringops.h:
+
+C:/wxWidgets-3.1.0/include/wx/iosfwrap.h:
+
+C:/wxWidgets-3.1.0/include/wx/msgout.h:
+
+C:/wxWidgets-3.1.0/include/wx/xti.h:
+
+C:/wxWidgets-3.1.0/include/wx/rtti.h:
+
+C:/wxWidgets-3.1.0/include/wx/flags.h:
+
+C:/wxWidgets-3.1.0/include/wx/xti2.h:
+
+C:/wxWidgets-3.1.0/include/wx/intl.h:
+
+C:/wxWidgets-3.1.0/include/wx/translation.h:
+
+C:/wxWidgets-3.1.0/include/wx/language.h:
+
+C:/wxWidgets-3.1.0/include/wx/hashmap.h:
+
+C:/wxWidgets-3.1.0/include/wx/wxcrt.h:
+
+C:/wxWidgets-3.1.0/include/wx/scopedptr.h:
+
+C:/wxWidgets-3.1.0/include/wx/checkeddelete.h:
+
+C:/wxWidgets-3.1.0/include/wx/colour.h:
+
+C:/wxWidgets-3.1.0/include/wx/gdiobj.h:
+
+C:/wxWidgets-3.1.0/include/wx/variant.h:
+
+C:/wxWidgets-3.1.0/include/wx/arrstr.h:
+
+C:/wxWidgets-3.1.0/include/wx/list.h:
+
+C:/wxWidgets-3.1.0/include/wx/vector.h:
+
+C:/wxWidgets-3.1.0/include/wx/scopeguard.h:
+
+C:/wxWidgets-3.1.0/include/wx/except.h:
+
+C:/wxWidgets-3.1.0/include/wx/meta/movable.h:
+
+C:/wxWidgets-3.1.0/include/wx/meta/pod.h:
+
+C:/wxWidgets-3.1.0/include/wx/meta/if.h:
+
+C:/wxWidgets-3.1.0/include/wx/longlong.h:
+
+C:/wxWidgets-3.1.0/include/wx/datetime.h:
+
+C:/wxWidgets-3.1.0/include/wx/anystr.h:
+
+C:/wxWidgets-3.1.0/include/wx/dynarray.h:
+
+C:/wxWidgets-3.1.0/include/wx/any.h:
+
+C:/wxWidgets-3.1.0/include/wx/typeinfo.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/colour.h:
+
+C:/wxWidgets-3.1.0/include/wx/font.h:
+
+C:/wxWidgets-3.1.0/include/wx/gdicmn.h:
+
+C:/wxWidgets-3.1.0/include/wx/math.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/font.h:
+
+C:/wxWidgets-3.1.0/include/wx/bitmap.h:
+
+C:/wxWidgets-3.1.0/include/wx/image.h:
+
+C:/wxWidgets-3.1.0/include/wx/stream.h:
+
+C:/wxWidgets-3.1.0/include/wx/filefn.h:
+
+C:/wxWidgets-3.1.0/include/wx/imagbmp.h:
+
+C:/wxWidgets-3.1.0/include/wx/imagpng.h:
+
+C:/wxWidgets-3.1.0/include/wx/versioninfo.h:
+
+C:/wxWidgets-3.1.0/include/wx/imaggif.h:
+
+C:/wxWidgets-3.1.0/include/wx/imagpcx.h:
+
+C:/wxWidgets-3.1.0/include/wx/imagjpeg.h:
+
+C:/wxWidgets-3.1.0/include/wx/imagtga.h:
+
+C:/wxWidgets-3.1.0/include/wx/imagtiff.h:
+
+C:/wxWidgets-3.1.0/include/wx/imagpnm.h:
+
+C:/wxWidgets-3.1.0/include/wx/imagxpm.h:
+
+C:/wxWidgets-3.1.0/include/wx/imagiff.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/bitmap.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/gdiimage.h:
+
+C:/wxWidgets-3.1.0/include/wx/palette.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/palette.h:
+
+C:/wxWidgets-3.1.0/include/wx/brush.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/brush.h:
+
+C:/wxWidgets-3.1.0/include/wx/pen.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/pen.h:
+
+C:/wxWidgets-3.1.0/include/wx/region.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/region.h:
+
+C:/wxWidgets-3.1.0/include/wx/affinematrix2d.h:
+
+C:/wxWidgets-3.1.0/include/wx/affinematrix2dbase.h:
+
+C:/wxWidgets-3.1.0/include/wx/geometry.h:
+
+C:/wxWidgets-3.1.0/include/wx/utils.h:
+
+C:/wxWidgets-3.1.0/include/wx/meta/implicitconversion.h:
+
+C:/wxWidgets-3.1.0/include/wx/mousestate.h:
+
+C:/wxWidgets-3.1.0/include/wx/kbdstate.h:
+
+C:/wxWidgets-3.1.0/include/wx/platinfo.h:
+
+C:/wxWidgets-3.1.0/include/wx/msgdlg.h:
+
+C:/wxWidgets-3.1.0/include/wx/dialog.h:
+
+C:/wxWidgets-3.1.0/include/wx/toplevel.h:
+
+C:/wxWidgets-3.1.0/include/wx/nonownedwnd.h:
+
+C:/wxWidgets-3.1.0/include/wx/window.h:
+
+C:/wxWidgets-3.1.0/include/wx/event.h:
+
+C:/wxWidgets-3.1.0/include/wx/clntdata.h:
+
+C:/wxWidgets-3.1.0/include/wx/cursor.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/cursor.h:
+
+C:/wxWidgets-3.1.0/include/wx/thread.h:
+
+C:/wxWidgets-3.1.0/include/wx/tracker.h:
+
+C:/wxWidgets-3.1.0/include/wx/meta/convertible.h:
+
+C:/wxWidgets-3.1.0/include/wx/meta/removeref.h:
+
+C:/wxWidgets-3.1.0/include/wx/validate.h:
+
+C:/wxWidgets-3.1.0/include/wx/accel.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/accel.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/window.h:
+
+C:/wxWidgets-3.1.0/include/wx/settings.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/nonownedwnd.h:
+
+C:/wxWidgets-3.1.0/include/wx/iconbndl.h:
+
+C:/wxWidgets-3.1.0/include/wx/icon.h:
+
+C:/wxWidgets-3.1.0/include/wx/iconloc.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/icon.h:
+
+C:/wxWidgets-3.1.0/include/wx/weakref.h:
+
+C:/wxWidgets-3.1.0/include/wx/meta/int2type.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/toplevel.h:
+
+C:/wxWidgets-3.1.0/include/wx/containr.h:
+
+C:/wxWidgets-3.1.0/include/wx/sharedptr.h:
+
+C:/wxWidgets-3.1.0/include/wx/atomic.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/wrapwin.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/dialog.h:
+
+C:/wxWidgets-3.1.0/include/wx/panel.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/panel.h:
+
+C:/wxWidgets-3.1.0/include/wx/stockitem.h:
+
+C:/wxWidgets-3.1.0/include/wx/generic/msgdlgg.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/msgdlg.h:
+
+C:/wxWidgets-3.1.0/include/wx/statusbr.h:
+
+C:/wxWidgets-3.1.0/include/wx/control.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/control.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/statusbar.h:
+
+C:/wxWidgets-3.1.0/include/wx/tooltip.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h:
+
+C:/wxWidgets-3.1.0/include/wx/clipbrd.h:
+
+C:/wxWidgets-3.1.0/include/wx/dataobj.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/clipbrd.h:
+
+WorkspaceBase.h:
+
+C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.h:
+
+C:/wxWidgets-3.1.0/include/wx/filesys.h:
+
+C:/wxWidgets-3.1.0/include/wx/filename.h:
+
+C:/wxWidgets-3.1.0/include/wx/file.h:
+
+C:/wxWidgets-3.1.0/include/wx/convauto.h:
+
+C:/wxWidgets-3.1.0/include/wx/artprov.h:
+
+C:/wxWidgets-3.1.0/include/wx/xrc/xmlreshandler.h:
+
+C:/wxWidgets-3.1.0/include/wx/imaglist.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/imaglist.h:
+
+C:/wxWidgets-3.1.0/include/wx/xrc/xh_bmp.h:
+
+C:/wxWidgets-3.1.0/include/wx/sizer.h:
+
+C:/wxWidgets-3.1.0/include/wx/glcanvas.h:
+
+C:/wxWidgets-3.1.0/include/wx/app.h:
+
+C:/wxWidgets-3.1.0/include/wx/eventfilter.h:
+
+C:/wxWidgets-3.1.0/include/wx/build.h:
+
+C:/wxWidgets-3.1.0/include/wx/cmdargs.h:
+
+C:/wxWidgets-3.1.0/include/wx/init.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/init.h:
+
+C:/wxWidgets-3.1.0/include/wx/log.h:
+
+C:/wxWidgets-3.1.0/include/wx/generic/logg.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/app.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/glcanvas.h:
+
+C:/wxWidgets-3.1.0/include/wx/persist.h:
+
+C:/wxWidgets-3.1.0/include/wx/confbase.h:
+
+C:/wxWidgets-3.1.0/include/wx/base64.h:
+
+C:/wxWidgets-3.1.0/include/wx/persist/toplevel.h:
+
+C:/wxWidgets-3.1.0/include/wx/persist/window.h:
+
+C:/wxWidgets-3.1.0/include/wx/display.h:
+
+C:/wxWidgets-3.1.0/include/wx/vidmode.h:
+
+C:/wxWidgets-3.1.0/include/wx/persist/bookctrl.h:
+
+C:/wxWidgets-3.1.0/include/wx/bookctrl.h:
+
+C:/wxWidgets-3.1.0/include/wx/withimages.h:
+
+C:/wxWidgets-3.1.0/include/wx/notebook.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/notebook.h:
+
+C:/wxWidgets-3.1.0/include/wx/persist/treebook.h:
+
+C:/wxWidgets-3.1.0/include/wx/treebook.h:
+
+C:/wxWidgets-3.1.0/include/wx/treectrl.h:
+
+C:/wxWidgets-3.1.0/include/wx/treebase.h:
+
+C:/wxWidgets-3.1.0/include/wx/itemid.h:
+
+C:/wxWidgets-3.1.0/include/wx/textctrl.h:
+
+C:/wxWidgets-3.1.0/include/wx/textentry.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/textentry.h:
+
+C:/wxWidgets-3.1.0/include/wx/ioswrap.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/textctrl.h:
+
+C:/wxWidgets-3.1.0/include/wx/systhemectrl.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/treectrl.h:
+
+Bus.h:
+
+BusForm.h:
+
+ElementForm.h:
+
+C:/wxWidgets-3.1.0/include/wx/stattext.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/stattext.h:
+
+C:/wxWidgets-3.1.0/include/wx/choice.h:
+
+C:/wxWidgets-3.1.0/include/wx/ctrlsub.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ctrlsub.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/choice.h:
+
+C:/wxWidgets-3.1.0/include/wx/checkbox.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/checkbox.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ownerdrawnbutton.h:
+
+C:/wxWidgets-3.1.0/include/wx/button.h:
+
+C:/wxWidgets-3.1.0/include/wx/anybutton.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/anybutton.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/button.h:
+
+C:/wxWidgets-3.1.0/include/wx/statbox.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/statbox.h:
+
+C:/wxWidgets-3.1.0/include/wx/statline.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/statline.h:
+
+C:/wxWidgets-3.1.0/include/wx/propgrid/manager.h:
+
+C:/wxWidgets-3.1.0/include/wx/propgrid/propgrid.h:
+
+C:/wxWidgets-3.1.0/include/wx/scrolwin.h:
+
+C:/wxWidgets-3.1.0/include/wx/generic/scrolwin.h:
+
+C:/wxWidgets-3.1.0/include/wx/recguard.h:
+
+C:/wxWidgets-3.1.0/include/wx/time.h:
+
+C:/wxWidgets-3.1.0/include/wx/propgrid/property.h:
+
+C:/wxWidgets-3.1.0/include/wx/propgrid/propgriddefs.h:
+
+C:/wxWidgets-3.1.0/include/wx/hashset.h:
+
+C:/wxWidgets-3.1.0/include/wx/tokenzr.h:
+
+C:/wxWidgets-3.1.0/include/wx/propgrid/propgridiface.h:
+
+C:/wxWidgets-3.1.0/include/wx/propgrid/propgridpagestate.h:
+
+C:/wxWidgets-3.1.0/include/wx/propgrid/props.h:
+
+C:/wxWidgets-3.1.0/include/wx/propgrid/editors.h:
+
+C:/wxWidgets-3.1.0/include/wx/listbox.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/listbox.h:
+
+C:/wxWidgets-3.1.0/include/wx/valtext.h:
+
+C:/wxWidgets-3.1.0/include/wx/toolbar.h:
+
+C:/wxWidgets-3.1.0/include/wx/tbarbase.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/toolbar.h:
+
+C:/wxWidgets-3.1.0/include/wx/headerctrl.h:
+
+C:/wxWidgets-3.1.0/include/wx/headercol.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/headerctrl.h:
+
+C:/wxWidgets-3.1.0/include/wx/propgrid/advprops.h:
+
+C:/wxWidgets-3.1.0/include/wx/spinbutt.h:
+
+C:/wxWidgets-3.1.0/include/wx/range.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/spinbutt.h:
+
+C:/wxWidgets-3.1.0/include/wx/listctrl.h:
+
+C:/wxWidgets-3.1.0/include/wx/listbase.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/listctrl.h:
+
+Element.h:
+
+C:/wxWidgets-3.1.0/include/wx/menu.h:
+
+C:/wxWidgets-3.1.0/include/wx/menuitem.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/menuitem.h:
+
+C:/wxWidgets-3.1.0/include/wx/ownerdrw.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ownerdrw.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/menu.h:
diff --git a/Project/Release/FileHanding.cpp.o b/Project/Release/FileHanding.cpp.o
index ba53135..7483e5a 100644
--- a/Project/Release/FileHanding.cpp.o
+++ b/Project/Release/FileHanding.cpp.o
Binary files differ
diff --git a/Project/Release/FileHanding.cpp.o.d b/Project/Release/FileHanding.cpp.o.d
index 65cccdd..ba0c881 100644
--- a/Project/Release/FileHanding.cpp.o.d
+++ b/Project/Release/FileHanding.cpp.o.d
@@ -138,7 +138,13 @@ Release/FileHanding.cpp.o: FileHanding.cpp FileHanding.h \
C:/wxWidgets-3.1.0/include/wx/msw/control.h \
C:/wxWidgets-3.1.0/include/wx/msw/statusbar.h \
C:/wxWidgets-3.1.0/include/wx/tooltip.h \
- C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h WorkspaceBase.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h \
+ C:/wxWidgets-3.1.0/include/wx/clipbrd.h \
+ C:/wxWidgets-3.1.0/include/wx/dataobj.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/clipbrd.h WorkspaceBase.h \
C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.h \
C:/wxWidgets-3.1.0/include/wx/filesys.h \
C:/wxWidgets-3.1.0/include/wx/filename.h \
@@ -251,10 +257,6 @@ Release/FileHanding.cpp.o: FileHanding.cpp FileHanding.h \
C:/wxWidgets-3.1.0/include/wx/dcmemory.h \
C:/wxWidgets-3.1.0/include/wx/dcprint.h \
C:/wxWidgets-3.1.0/include/wx/dcscreen.h \
- C:/wxWidgets-3.1.0/include/wx/dataobj.h \
- C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h \
- C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h \
- C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h \
C:/wxWidgets-3.1.0/include/wx/bmpbuttn.h \
C:/wxWidgets-3.1.0/include/wx/msw/bmpbuttn.h \
C:/wxWidgets-3.1.0/include/wx/checklst.h \
@@ -573,6 +575,18 @@ C:/wxWidgets-3.1.0/include/wx/tooltip.h:
C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h:
+C:/wxWidgets-3.1.0/include/wx/clipbrd.h:
+
+C:/wxWidgets-3.1.0/include/wx/dataobj.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/clipbrd.h:
+
WorkspaceBase.h:
C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.h:
@@ -835,14 +849,6 @@ C:/wxWidgets-3.1.0/include/wx/dcprint.h:
C:/wxWidgets-3.1.0/include/wx/dcscreen.h:
-C:/wxWidgets-3.1.0/include/wx/dataobj.h:
-
-C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h:
-
-C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h:
-
-C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h:
-
C:/wxWidgets-3.1.0/include/wx/bmpbuttn.h:
C:/wxWidgets-3.1.0/include/wx/msw/bmpbuttn.h:
diff --git a/Project/Release/GeneratorStabForm.cpp.o b/Project/Release/GeneratorStabForm.cpp.o
index 64bbc6c..51022f9 100644
--- a/Project/Release/GeneratorStabForm.cpp.o
+++ b/Project/Release/GeneratorStabForm.cpp.o
Binary files differ
diff --git a/Project/Release/IndMotor.cpp.o b/Project/Release/IndMotor.cpp.o
index 8afaa98..672e91e 100644
--- a/Project/Release/IndMotor.cpp.o
+++ b/Project/Release/IndMotor.cpp.o
Binary files differ
diff --git a/Project/Release/IndMotorForm.cpp.o b/Project/Release/IndMotorForm.cpp.o
index 1a91d40..9d803e3 100644
--- a/Project/Release/IndMotorForm.cpp.o
+++ b/Project/Release/IndMotorForm.cpp.o
Binary files differ
diff --git a/Project/Release/Inductor.cpp.o b/Project/Release/Inductor.cpp.o
index 36cb0b0..e7c996a 100644
--- a/Project/Release/Inductor.cpp.o
+++ b/Project/Release/Inductor.cpp.o
Binary files differ
diff --git a/Project/Release/Line.cpp.o b/Project/Release/Line.cpp.o
index 53728d5..ba713e2 100644
--- a/Project/Release/Line.cpp.o
+++ b/Project/Release/Line.cpp.o
Binary files differ
diff --git a/Project/Release/LineForm.cpp.o b/Project/Release/LineForm.cpp.o
index 3f0094a..298d75a 100644
--- a/Project/Release/LineForm.cpp.o
+++ b/Project/Release/LineForm.cpp.o
Binary files differ
diff --git a/Project/Release/Load.cpp.o b/Project/Release/Load.cpp.o
index 8d03c53..f38aae6 100644
--- a/Project/Release/Load.cpp.o
+++ b/Project/Release/Load.cpp.o
Binary files differ
diff --git a/Project/Release/LoadForm.cpp.o b/Project/Release/LoadForm.cpp.o
index ed59b46..2072699 100644
--- a/Project/Release/LoadForm.cpp.o
+++ b/Project/Release/LoadForm.cpp.o
Binary files differ
diff --git a/Project/Release/Machines.cpp.o b/Project/Release/Machines.cpp.o
index 68a1fc6..1ea13c6 100644
--- a/Project/Release/Machines.cpp.o
+++ b/Project/Release/Machines.cpp.o
Binary files differ
diff --git a/Project/Release/MainFrame.cpp.o b/Project/Release/MainFrame.cpp.o
index 8db3bdb..a7639f0 100644
--- a/Project/Release/MainFrame.cpp.o
+++ b/Project/Release/MainFrame.cpp.o
Binary files differ
diff --git a/Project/Release/MainFrame.cpp.o.d b/Project/Release/MainFrame.cpp.o.d
index c8ce32c..5b1e3df 100644
--- a/Project/Release/MainFrame.cpp.o.d
+++ b/Project/Release/MainFrame.cpp.o.d
@@ -196,7 +196,13 @@ Release/MainFrame.cpp.o: MainFrame.cpp MainFrame.h \
C:/wxWidgets-3.1.0/include/wx/dc.h \
C:/wxWidgets-3.1.0/include/wx/affinematrix2d.h \
C:/wxWidgets-3.1.0/include/wx/affinematrix2dbase.h \
- C:/wxWidgets-3.1.0/include/wx/geometry.h WorkspaceBase.h \
+ C:/wxWidgets-3.1.0/include/wx/geometry.h \
+ C:/wxWidgets-3.1.0/include/wx/clipbrd.h \
+ C:/wxWidgets-3.1.0/include/wx/dataobj.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/clipbrd.h WorkspaceBase.h \
C:/wxWidgets-3.1.0/include/wx/glcanvas.h \
C:/wxWidgets-3.1.0/include/wx/app.h \
C:/wxWidgets-3.1.0/include/wx/eventfilter.h \
@@ -263,10 +269,6 @@ Release/MainFrame.cpp.o: MainFrame.cpp MainFrame.h \
C:/wxWidgets-3.1.0/include/wx/dcmemory.h \
C:/wxWidgets-3.1.0/include/wx/dcprint.h \
C:/wxWidgets-3.1.0/include/wx/dcscreen.h \
- C:/wxWidgets-3.1.0/include/wx/dataobj.h \
- C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h \
- C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h \
- C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h \
C:/wxWidgets-3.1.0/include/wx/bmpbuttn.h \
C:/wxWidgets-3.1.0/include/wx/msw/bmpbuttn.h \
C:/wxWidgets-3.1.0/include/wx/checklst.h \
@@ -703,6 +705,18 @@ C:/wxWidgets-3.1.0/include/wx/affinematrix2dbase.h:
C:/wxWidgets-3.1.0/include/wx/geometry.h:
+C:/wxWidgets-3.1.0/include/wx/clipbrd.h:
+
+C:/wxWidgets-3.1.0/include/wx/dataobj.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/clipbrd.h:
+
WorkspaceBase.h:
C:/wxWidgets-3.1.0/include/wx/glcanvas.h:
@@ -875,14 +889,6 @@ C:/wxWidgets-3.1.0/include/wx/dcprint.h:
C:/wxWidgets-3.1.0/include/wx/dcscreen.h:
-C:/wxWidgets-3.1.0/include/wx/dataobj.h:
-
-C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h:
-
-C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h:
-
-C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h:
-
C:/wxWidgets-3.1.0/include/wx/bmpbuttn.h:
C:/wxWidgets-3.1.0/include/wx/msw/bmpbuttn.h:
diff --git a/Project/Release/PSP-UFU.exe b/Project/Release/PSP-UFU.exe
index d477b79..c66b8dc 100644
--- a/Project/Release/PSP-UFU.exe
+++ b/Project/Release/PSP-UFU.exe
Binary files differ
diff --git a/Project/Release/PowerFlow.cpp.o b/Project/Release/PowerFlow.cpp.o
index 1da8b90..670fffe 100644
--- a/Project/Release/PowerFlow.cpp.o
+++ b/Project/Release/PowerFlow.cpp.o
Binary files differ
diff --git a/Project/Release/ReactiveShuntElementForm.cpp.o b/Project/Release/ReactiveShuntElementForm.cpp.o
index 58f30f9..951d7f8 100644
--- a/Project/Release/ReactiveShuntElementForm.cpp.o
+++ b/Project/Release/ReactiveShuntElementForm.cpp.o
Binary files differ
diff --git a/Project/Release/Shunt.cpp.o b/Project/Release/Shunt.cpp.o
index 4ad87ec..2706951 100644
--- a/Project/Release/Shunt.cpp.o
+++ b/Project/Release/Shunt.cpp.o
Binary files differ
diff --git a/Project/Release/SwitchingForm.cpp.o b/Project/Release/SwitchingForm.cpp.o
index c5b64f5..00668c4 100644
--- a/Project/Release/SwitchingForm.cpp.o
+++ b/Project/Release/SwitchingForm.cpp.o
Binary files differ
diff --git a/Project/Release/SyncGenerator.cpp.o b/Project/Release/SyncGenerator.cpp.o
index 1c75992..ec0e7ae 100644
--- a/Project/Release/SyncGenerator.cpp.o
+++ b/Project/Release/SyncGenerator.cpp.o
Binary files differ
diff --git a/Project/Release/SyncMachineForm.cpp.o b/Project/Release/SyncMachineForm.cpp.o
index 0c315ad..8239d77 100644
--- a/Project/Release/SyncMachineForm.cpp.o
+++ b/Project/Release/SyncMachineForm.cpp.o
Binary files differ
diff --git a/Project/Release/SyncMotor.cpp.o b/Project/Release/SyncMotor.cpp.o
index 7d9b66b..c882bf6 100644
--- a/Project/Release/SyncMotor.cpp.o
+++ b/Project/Release/SyncMotor.cpp.o
Binary files differ
diff --git a/Project/Release/Text.cpp.o b/Project/Release/Text.cpp.o
index cd86899..2f2c0b8 100644
--- a/Project/Release/Text.cpp.o
+++ b/Project/Release/Text.cpp.o
Binary files differ
diff --git a/Project/Release/TextForm.cpp.o b/Project/Release/TextForm.cpp.o
index 7d9de3f..6881ff3 100644
--- a/Project/Release/TextForm.cpp.o
+++ b/Project/Release/TextForm.cpp.o
Binary files differ
diff --git a/Project/Release/Transformer.cpp.o b/Project/Release/Transformer.cpp.o
index bca1767..449b86c 100644
--- a/Project/Release/Transformer.cpp.o
+++ b/Project/Release/Transformer.cpp.o
Binary files differ
diff --git a/Project/Release/TransformerForm.cpp.o b/Project/Release/TransformerForm.cpp.o
index 1cff932..58055cf 100644
--- a/Project/Release/TransformerForm.cpp.o
+++ b/Project/Release/TransformerForm.cpp.o
Binary files differ
diff --git a/Project/Release/Workspace.cpp.o b/Project/Release/Workspace.cpp.o
index 9c5c5b2..d2d4a85 100644
--- a/Project/Release/Workspace.cpp.o
+++ b/Project/Release/Workspace.cpp.o
Binary files differ
diff --git a/Project/Release/Workspace.cpp.o.d b/Project/Release/Workspace.cpp.o.d
index 580e64d..f67b8e6 100644
--- a/Project/Release/Workspace.cpp.o.d
+++ b/Project/Release/Workspace.cpp.o.d
@@ -138,7 +138,13 @@ Release/Workspace.cpp.o: Workspace.cpp Workspace.h \
C:/wxWidgets-3.1.0/include/wx/msw/control.h \
C:/wxWidgets-3.1.0/include/wx/msw/statusbar.h \
C:/wxWidgets-3.1.0/include/wx/tooltip.h \
- C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h WorkspaceBase.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h \
+ C:/wxWidgets-3.1.0/include/wx/clipbrd.h \
+ C:/wxWidgets-3.1.0/include/wx/dataobj.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/clipbrd.h WorkspaceBase.h \
C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.h \
C:/wxWidgets-3.1.0/include/wx/filesys.h \
C:/wxWidgets-3.1.0/include/wx/filename.h \
@@ -239,8 +245,9 @@ Release/Workspace.cpp.o: Workspace.cpp Workspace.h \
C:/wxWidgets-3.1.0/include/wx/msw/ownerdrw.h \
C:/wxWidgets-3.1.0/include/wx/msw/menu.h Line.h LineForm.h Branch.h \
Transformer.h SyncGenerator.h Machines.h IndMotor.h SyncMotor.h Load.h \
- LoadForm.h Shunt.h Inductor.h Capacitor.h Text.h wxGLString.h \
- C:/wxWidgets-3.1.0/include/wx/wx.h C:/wxWidgets-3.1.0/include/wx/hash.h \
+ LoadForm.h Shunt.h Inductor.h Capacitor.h ElementDataObject.h Text.h \
+ wxGLString.h C:/wxWidgets-3.1.0/include/wx/wx.h \
+ C:/wxWidgets-3.1.0/include/wx/hash.h \
C:/wxWidgets-3.1.0/include/wx/stopwatch.h \
C:/wxWidgets-3.1.0/include/wx/timer.h \
C:/wxWidgets-3.1.0/include/wx/module.h \
@@ -250,10 +257,6 @@ Release/Workspace.cpp.o: Workspace.cpp Workspace.h \
C:/wxWidgets-3.1.0/include/wx/dcmemory.h \
C:/wxWidgets-3.1.0/include/wx/dcprint.h \
C:/wxWidgets-3.1.0/include/wx/dcscreen.h \
- C:/wxWidgets-3.1.0/include/wx/dataobj.h \
- C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h \
- C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h \
- C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h \
C:/wxWidgets-3.1.0/include/wx/bmpbuttn.h \
C:/wxWidgets-3.1.0/include/wx/msw/bmpbuttn.h \
C:/wxWidgets-3.1.0/include/wx/checklst.h \
@@ -569,6 +572,18 @@ C:/wxWidgets-3.1.0/include/wx/tooltip.h:
C:/wxWidgets-3.1.0/include/wx/msw/tooltip.h:
+C:/wxWidgets-3.1.0/include/wx/clipbrd.h:
+
+C:/wxWidgets-3.1.0/include/wx/dataobj.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/clipbrd.h:
+
WorkspaceBase.h:
C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.h:
@@ -803,6 +818,8 @@ Inductor.h:
Capacitor.h:
+ElementDataObject.h:
+
Text.h:
wxGLString.h:
@@ -829,14 +846,6 @@ C:/wxWidgets-3.1.0/include/wx/dcprint.h:
C:/wxWidgets-3.1.0/include/wx/dcscreen.h:
-C:/wxWidgets-3.1.0/include/wx/dataobj.h:
-
-C:/wxWidgets-3.1.0/include/wx/msw/ole/dataform.h:
-
-C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj.h:
-
-C:/wxWidgets-3.1.0/include/wx/msw/ole/dataobj2.h:
-
C:/wxWidgets-3.1.0/include/wx/bmpbuttn.h:
C:/wxWidgets-3.1.0/include/wx/msw/bmpbuttn.h:
diff --git a/Project/Release/main.cpp.o.d b/Project/Release/main.cpp.o.d
index 165c4a0..ddea6d9 100644
--- a/Project/Release/main.cpp.o.d
+++ b/Project/Release/main.cpp.o.d
@@ -139,7 +139,9 @@ Release/main.cpp.o: main.cpp C:/wxWidgets-3.1.0/include/wx/app.h \
C:/wxWidgets-3.1.0/include/wx/msw/panel.h \
C:/wxWidgets-3.1.0/include/wx/stockitem.h \
C:/wxWidgets-3.1.0/include/wx/generic/msgdlgg.h \
- C:/wxWidgets-3.1.0/include/wx/msw/msgdlg.h MainFrameBase.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/msgdlg.h \
+ C:/wxWidgets-3.1.0/include/wx/filedlg.h \
+ C:/wxWidgets-3.1.0/include/wx/msw/filedlg.h MainFrameBase.h \
C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.h \
C:/wxWidgets-3.1.0/include/wx/filesys.h \
C:/wxWidgets-3.1.0/include/wx/filename.h \
@@ -489,6 +491,10 @@ C:/wxWidgets-3.1.0/include/wx/generic/msgdlgg.h:
C:/wxWidgets-3.1.0/include/wx/msw/msgdlg.h:
+C:/wxWidgets-3.1.0/include/wx/filedlg.h:
+
+C:/wxWidgets-3.1.0/include/wx/msw/filedlg.h:
+
MainFrameBase.h:
C:/wxWidgets-3.1.0/include/wx/xrc/xmlres.h:
diff --git a/Project/SyncGenerator.cpp b/Project/SyncGenerator.cpp
index 463c56d..c20bff1 100644
--- a/Project/SyncGenerator.cpp
+++ b/Project/SyncGenerator.cpp
@@ -135,3 +135,10 @@ void SyncGenerator::SetNominalVoltage(std::vector<double> nominalVoltage, std::v
m_electricalData.nominalVoltageUnit = nominalVoltageUnit[0];
}
}
+
+Element* SyncGenerator::GetCopy()
+{
+ SyncGenerator* copy = new SyncGenerator();
+ *copy = *this;
+ return copy;
+}
diff --git a/Project/SyncGenerator.h b/Project/SyncGenerator.h
index 0ff3f6a..3fe5a3b 100644
--- a/Project/SyncGenerator.h
+++ b/Project/SyncGenerator.h
@@ -67,7 +67,8 @@ public:
SyncGenerator();
SyncGenerator(wxString name);
~SyncGenerator();
-
+
+ virtual Element* GetCopy();
virtual void Init();
virtual void DrawSymbol() const;
virtual bool GetContextMenu(wxMenu& menu);
diff --git a/Project/SyncMotor.cpp b/Project/SyncMotor.cpp
index 2f9c3ce..13ea5e4 100644
--- a/Project/SyncMotor.cpp
+++ b/Project/SyncMotor.cpp
@@ -97,3 +97,10 @@ SyncMotorElectricalData SyncMotor::GetPUElectricalData(double systemPowerBase)
return data;
}
+
+Element* SyncMotor::GetCopy()
+{
+ SyncMotor* copy = new SyncMotor();
+ *copy = *this;
+ return copy;
+}
diff --git a/Project/SyncMotor.h b/Project/SyncMotor.h
index 1f65386..a7eecd8 100644
--- a/Project/SyncMotor.h
+++ b/Project/SyncMotor.h
@@ -62,7 +62,8 @@ class SyncMotor : public Machines
SyncMotor();
SyncMotor(wxString name);
~SyncMotor();
-
+
+ virtual Element* GetCopy();
virtual void DrawSymbol() const;
virtual bool GetContextMenu(wxMenu& menu);
virtual SyncMotorElectricalData GetElectricalData() { return m_electricalData; }
diff --git a/Project/Text.cpp b/Project/Text.cpp
index f012044..05915f7 100644
--- a/Project/Text.cpp
+++ b/Project/Text.cpp
@@ -894,3 +894,10 @@ void Text::UpdateText(double systemPowerBase)
} break;
}
}
+
+Element* Text::GetCopy()
+{
+ Text* copy = new Text();
+ *copy = *this;
+ return copy;
+}
diff --git a/Project/Text.h b/Project/Text.h
index 80f35fa..36a6704 100644
--- a/Project/Text.h
+++ b/Project/Text.h
@@ -50,7 +50,8 @@ class Text : public Element
Text();
Text(wxPoint2DDouble position);
~Text();
-
+
+ virtual Element* GetCopy();
virtual bool AddParent(Element* parent, wxPoint2DDouble position) { return true; };
virtual bool Contains(wxPoint2DDouble position) const;
virtual void Draw(wxPoint2DDouble translation, double scale);
diff --git a/Project/Transformer.cpp b/Project/Transformer.cpp
index 42fffaf..2ba6850 100644
--- a/Project/Transformer.cpp
+++ b/Project/Transformer.cpp
@@ -92,12 +92,16 @@ 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_inserted) {
// Draw selection (layer 1).
if(m_selected) {
// Push the current matrix on stack.
glLineWidth(1.5 + m_borderSize * 2.0);
- glColor4d(0.0, 0.5, 1.0, 0.5);
+ glColor4dv(m_selectionColour.GetRGBA());
DrawLine(m_pointList);
glPushMatrix();
// Rotate the matrix around the object position.
@@ -124,12 +128,12 @@ void Transformer::Draw(wxPoint2DDouble translation, double scale) const
// Draw transformer (layer 2).
// Transformer line
glLineWidth(1.5);
- glColor4d(0.2, 0.2, 0.2, 1.0);
+ glColor4dv(elementColour.GetRGBA());
DrawLine(m_pointList);
// Draw nodes.
if(m_pointList.size() > 0) {
- glColor4d(0.2, 0.2, 0.2, 1.0);
+ glColor4dv(elementColour.GetRGBA());
DrawCircle(m_pointList[0], 5.0, 10, GL_POLYGON);
if(m_inserted) {
DrawCircle(m_pointList[m_pointList.size() - 1], 5.0, 10, GL_POLYGON);
@@ -150,7 +154,7 @@ void Transformer::Draw(wxPoint2DDouble translation, double scale) const
DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20, 20, GL_POLYGON);
DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20, 20, GL_POLYGON);
- glColor4d(0.2, 0.2, 0.2, 1.0);
+ glColor4dv(elementColour.GetRGBA());
DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(20.0, 20.0), 20, 20);
DrawCircle(m_rect.GetPosition() + wxPoint2DDouble(50.0, 20.0), 20, 20);
@@ -374,3 +378,10 @@ void Transformer::SetPowerFlowDirection(PowerFlowDirection pfDirection)
m_pfDirection = pfDirection;
UpdatePowerFlowArrowsPosition();
}
+
+Element* Transformer::GetCopy()
+{
+ Transformer* copy = new Transformer();
+ *copy = *this;
+ return copy;
+}
diff --git a/Project/Transformer.h b/Project/Transformer.h
index 79e2380..5020fbd 100644
--- a/Project/Transformer.h
+++ b/Project/Transformer.h
@@ -57,7 +57,8 @@ class Transformer : public Branch
Transformer();
Transformer(wxString name);
virtual ~Transformer();
-
+
+ virtual Element* GetCopy();
virtual bool AddParent(Element* parent, wxPoint2DDouble position);
virtual bool Contains(wxPoint2DDouble position) const;
virtual void Draw(wxPoint2DDouble translation, double scale) const;
diff --git a/Project/Workspace.cpp b/Project/Workspace.cpp
index bdb8211..2894ed2 100644
--- a/Project/Workspace.cpp
+++ b/Project/Workspace.cpp
@@ -10,6 +10,7 @@
#include "Load.h"
#include "Inductor.h"
#include "Capacitor.h"
+#include "ElementDataObject.h"
#include "Text.h"
@@ -158,7 +159,7 @@ void Workspace::SetViewport()
void Workspace::OnLeftClickDown(wxMouseEvent& event)
{
bool foundElement = false;
- if(m_mode == MODE_INSERT_TEXT) {
+ if(m_mode == MODE_INSERT_TEXT || m_mode == MODE_PASTE) {
m_mode = MODE_EDIT;
} else if(m_mode == MODE_INSERT || m_mode == MODE_DRAG_INSERT || m_mode == MODE_DRAG_INSERT_TEXT) {
// Get the last element inserted on the list.
@@ -534,7 +535,8 @@ void Workspace::OnMouseMotion(wxMouseEvent& event)
}
} break;
- case MODE_MOVE_ELEMENT: {
+ case MODE_MOVE_ELEMENT:
+ case MODE_PASTE: {
for(auto it = m_elementList.begin(); it != m_elementList.end(); ++it) {
Element* element = *it;
// Parent's element moving...
@@ -769,6 +771,15 @@ void Workspace::OnKeyDown(wxKeyEvent& event)
m_mode = MODE_INSERT;
m_statusBar->SetStatusText(_("Insert Capacitor: Click on a buses, ESC to cancel."));
Redraw();
+ } else if(event.GetModifiers() == wxMOD_CONTROL) { // Copy.
+ CopySelection();
+ }
+ }
+ } break;
+ case 'V': {
+ if(!insertingElement) {
+ if(event.GetModifiers() == wxMOD_CONTROL) {
+ Paste();
}
}
} break;
@@ -788,6 +799,10 @@ void Workspace::UpdateStatusBar()
m_statusBar->SetStatusText(_("MODE: DRAG"), 1);
} break;
+ case MODE_PASTE: {
+ m_statusBar->SetStatusText(_("MODE: PASTE"), 1);
+ }
+
case MODE_INSERT:
case MODE_INSERT_TEXT:
case MODE_DRAG_INSERT:
@@ -953,41 +968,53 @@ void Workspace::DeleteSelectedElements()
Redraw();
}
-void Workspace::Fit()
+bool Workspace::GetElementsCorners(wxPoint2DDouble& leftUpCorner,
+ wxPoint2DDouble& rightDownCorner,
+ std::vector<Element*> elementList)
{
- if(m_elementList.size() > 0) {
- wxPoint2DDouble leftUpCorner(0, 0);
- wxPoint2DDouble rightDownCorner(0, 0);
- m_elementList[0]->CalculateBoundaries(leftUpCorner, rightDownCorner);
+ if(elementList.size() == 0) return false;
- for(auto it = m_elementList.begin() + 1; it != m_elementList.end(); it++) {
- Element* element = *it;
- wxPoint2DDouble leftUp;
- wxPoint2DDouble rightDown;
- element->CalculateBoundaries(leftUp, rightDown);
- if(leftUp.m_x < leftUpCorner.m_x) leftUpCorner.m_x = leftUp.m_x;
- if(leftUp.m_y < leftUpCorner.m_y) leftUpCorner.m_y = leftUp.m_y;
- if(rightDown.m_x > rightDownCorner.m_x) rightDownCorner.m_x = rightDown.m_x;
- if(rightDown.m_y > rightDownCorner.m_y) rightDownCorner.m_y = rightDown.m_y;
- }
+ elementList[0]->CalculateBoundaries(leftUpCorner, rightDownCorner);
- int width = 0.0;
- int height = 0.0;
- GetSize(&width, &height);
+ for(auto it = elementList.begin() + 1, itEnd = elementList.end(); it != itEnd; it++) {
+ Element* element = *it;
+ wxPoint2DDouble leftUp;
+ wxPoint2DDouble rightDown;
+ element->CalculateBoundaries(leftUp, rightDown);
+ if(leftUp.m_x < leftUpCorner.m_x) leftUpCorner.m_x = leftUp.m_x;
+ if(leftUp.m_y < leftUpCorner.m_y) leftUpCorner.m_y = leftUp.m_y;
+ if(rightDown.m_x > rightDownCorner.m_x) rightDownCorner.m_x = rightDown.m_x;
+ if(rightDown.m_y > rightDownCorner.m_y) rightDownCorner.m_y = rightDown.m_y;
+ }
+ return true;
+}
- double scaleX = double(width) / (rightDownCorner.m_x - leftUpCorner.m_x);
- double scaleY = double(height) / (rightDownCorner.m_y - leftUpCorner.m_y);
+void Workspace::Fit()
+{
+ wxPoint2DDouble leftUpCorner(0, 0);
+ wxPoint2DDouble rightDownCorner(0, 0);
+ std::vector<Element*> elementList = m_elementList;
+ for(auto it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {
+ elementList.push_back(*it);
+ }
- double scale = scaleX < scaleY ? scaleX : scaleY;
- if(scale > m_camera->GetZoomMax()) scale = m_camera->GetZoomMax();
- if(scale < m_camera->GetZoomMin()) scale = m_camera->GetZoomMin();
+ if(!GetElementsCorners(leftUpCorner, rightDownCorner, elementList)) return;
+ int width = 0.0;
+ int height = 0.0;
+ GetSize(&width, &height);
- m_camera->SetScale(scale);
+ double scaleX = double(width) / (rightDownCorner.m_x - leftUpCorner.m_x);
+ double scaleY = double(height) / (rightDownCorner.m_y - leftUpCorner.m_y);
- m_camera->StartTranslation(leftUpCorner);
- m_camera->SetTranslation(wxPoint2DDouble(0, 0));
- Redraw();
- }
+ double scale = scaleX < scaleY ? scaleX : scaleY;
+ if(scale > m_camera->GetZoomMax()) scale = m_camera->GetZoomMax();
+ if(scale < m_camera->GetZoomMin()) scale = m_camera->GetZoomMin();
+
+ m_camera->SetScale(scale);
+
+ m_camera->StartTranslation(leftUpCorner);
+ m_camera->SetTranslation(wxPoint2DDouble(0, 0));
+ Redraw();
}
void Workspace::ValidateBusesVoltages(Element* initialBus)
@@ -1062,3 +1089,150 @@ void Workspace::UpdateTextElements()
text->UpdateText(100e6);
}
}
+
+void Workspace::CopySelection()
+{
+ std::vector<Element*> selectedElements;
+ // The buses need to be numerated to associate the child's parents to the copies.
+ int busNumber = 0;
+ for(auto it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; ++it) {
+ Element* element = *it;
+ if(typeid(*element) == typeid(Bus)) {
+ Bus* bus = (Bus*)element;
+ auto data = bus->GetEletricalData();
+ data.number = busNumber;
+ bus->SetElectricalData(data);
+ busNumber++;
+ }
+ if(element->IsSelected()) {
+ selectedElements.push_back(element);
+ }
+ }
+ for(auto it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; ++it) {
+ Text* text = *it;
+ if(text->IsSelected()) {
+ selectedElements.push_back(text);
+ }
+ }
+ ElementDataObject* dataObject = new ElementDataObject(selectedElements);
+ wxTheClipboard->SetData(dataObject);
+ wxTheClipboard->Close();
+}
+
+bool Workspace::Paste()
+{
+ if(wxTheClipboard->Open()) {
+ ElementDataObject dataObject;
+
+ if(wxTheClipboard->IsSupported(wxDataFormat("PSPCopy"))) {
+ if(!wxTheClipboard->GetData(dataObject)) {
+ wxMessageDialog dialog(this, _("It was not possible to paste from clipboard."), _("Error"),
+ wxOK | wxCENTER | wxICON_ERROR, wxDefaultPosition);
+ dialog.ShowModal();
+ wxTheClipboard->Close();
+ return false;
+ }
+ } else {
+ wxTheClipboard->Close();
+ return false;
+ }
+ wxTheClipboard->Close();
+
+ UnselectAll();
+
+ std::vector<Element*> pastedElements;
+ ElementsLists* elementsLists = dataObject.GetElementsLists();
+
+ // Paste buses (parents).
+ auto parentList = elementsLists->parentList;
+ std::vector<Bus*> pastedBusList; // To set new parents;
+ for(auto it = parentList.begin(), itEnd = parentList.end(); it != itEnd; ++it) {
+ Element* copy = (*it)->GetCopy();
+ if(copy) {
+ pastedElements.push_back((Bus*)copy);
+ pastedBusList.push_back((Bus*)copy);
+ m_elementList.push_back((Bus*)copy);
+ }
+ }
+
+ // Paste other elements.
+ auto elementLists = elementsLists->elementList;
+ for(auto it = elementLists.begin(), itEnd = elementLists.end(); it != itEnd; ++it) {
+ Element* copy = (*it)->GetCopy();
+ if(copy) {
+ // Check if is text element
+ if(typeid(*copy) == typeid(Text)) {
+ Text* text = (Text*)copy;
+ // Check if element associated with the text exists.
+ bool elementExist = false;
+ for(int i = 0; i < (int)m_elementList.size(); i++) {
+ if(text->GetElement() == m_elementList[i]) {
+ elementExist = true;
+ break;
+ }
+ }
+ if(elementExist) {
+ pastedElements.push_back(copy);
+ m_textList.push_back((Text*)copy);
+ }
+ } else {
+ // Change the parent if copied, otherwise remove it.
+ for(int j = 0; j < (int)copy->GetParentList().size(); j++) {
+ Bus* currentParent = (Bus*)copy->GetParentList()[j];
+ if(currentParent) {
+ int parentNumber = currentParent->GetEletricalData().number;
+ bool parentCopied = false;
+ for(int k = 0; k < (int)pastedBusList.size(); k++) {
+ Bus* newParent = pastedBusList[k];
+ if(parentNumber == newParent->GetEletricalData().number)
+ copy->ReplaceParent(currentParent, newParent);
+ }
+ if(!parentCopied) copy->RemoveParent(currentParent);
+ }
+ }
+
+ pastedElements.push_back(copy);
+ m_elementList.push_back(copy);
+ }
+ }
+ }
+
+ // Move elements (and nodes) to the mouse position.
+ // The start position it's the center of the pasted objects.
+ wxPoint2DDouble leftUpCorner, rightDownCorner;
+ GetElementsCorners(leftUpCorner, rightDownCorner, pastedElements);
+ wxPoint2DDouble startPosition = (leftUpCorner + rightDownCorner) / 2.0;
+ for(auto it = pastedElements.begin(), itEnd = pastedElements.end(); it != itEnd; ++it) {
+ Element* element = *it;
+ element->StartMove(startPosition);
+ element->Move(m_camera->GetMousePosition());
+ for(int i = 0; i < (int)element->GetParentList().size(); i++) {
+ Element* parent = element->GetParentList()[i];
+ element->MoveNode(parent, m_camera->GetMousePosition());
+ }
+ }
+ } else {
+ wxMessageDialog dialog(this, _("It was not possible to paste from clipboard."), _("Error"),
+ wxOK | wxCENTER | wxICON_ERROR, wxDefaultPosition);
+ dialog.ShowModal();
+ return false;
+ }
+
+ Redraw();
+ m_mode = MODE_PASTE;
+ m_statusBar->SetStatusText(_("Click to paste."));
+ UpdateStatusBar();
+ return true;
+}
+
+void Workspace::UnselectAll()
+{
+ for(auto it = m_elementList.begin(), itEnd = m_elementList.end(); it != itEnd; it++) {
+ Element* element = *it;
+ element->SetSelected(false);
+ }
+ for(auto it = m_textList.begin(), itEnd = m_textList.end(); it != itEnd; it++) {
+ Text* text = *it;
+ text->SetSelected(false);
+ }
+}
diff --git a/Project/Workspace.h b/Project/Workspace.h
index d0ac2be..21a1a56 100644
--- a/Project/Workspace.h
+++ b/Project/Workspace.h
@@ -6,6 +6,7 @@
#include <wx/dcclient.h>
#include <wx/msgdlg.h>
#include <wx/statusbr.h>
+#include <wx/clipbrd.h>
#include "WorkspaceBase.h"
#include "Bus.h"
@@ -21,6 +22,7 @@ class SyncMotor;
class Load;
class Inductor;
class Capacitor;
+class ElementDataObject;
class Text;
@@ -36,7 +38,8 @@ enum WorkspaceMode {
MODE_DRAG_INSERT_TEXT,
MODE_INSERT,
MODE_INSERT_TEXT,
- MODE_SELECTION_RECT
+ MODE_SELECTION_RECT,
+ MODE_PASTE
};
enum ElementID {
@@ -67,6 +70,9 @@ public:
WorkspaceMode GetWorkspaceMode() const { return m_mode; }
Camera* GetCamera() const { return m_camera; }
+ void CopySelection();
+ bool Paste();
+
wxFileName GetSavedPath() const { return m_savedPath; }
void SetName(wxString name) { m_name = name; }
@@ -79,7 +85,9 @@ public:
void Redraw() { m_glCanvas->Refresh(); }
void RotateSelectedElements(bool clockwise = true);
void DeleteSelectedElements();
+ bool GetElementsCorners(wxPoint2DDouble& leftUpCorner, wxPoint2DDouble& rightDownCorner, std::vector<Element*> elementList);
void Fit();
+ void UnselectAll();
void ValidateBusesVoltages(Element* initialBus);
void ValidateElementsVoltages();