summaryrefslogtreecommitdiffstats
path: root/Project/ElementDataObject.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Project/ElementDataObject.cpp')
-rw-r--r--Project/ElementDataObject.cpp67
1 files changed, 18 insertions, 49 deletions
diff --git a/Project/ElementDataObject.cpp b/Project/ElementDataObject.cpp
index 5df312c..ff2feed 100644
--- a/Project/ElementDataObject.cpp
+++ b/Project/ElementDataObject.cpp
@@ -1,60 +1,29 @@
-#include "ElectricCalculation.h"
#include "ElementDataObject.h"
-ElementDataObject::ElementDataObject(Workspace* workspace)
- : wxDataObjectSimple(wxDataFormat("PSPCopy"))
+ElementDataObject::ElementDataObject() : wxDataObjectSimple(wxDataFormat("PSPCopy"))
{
- if(workspace) {
- m_elementsLists = new ElementsLists();
-
- ElectricCalculation m_allElements;
- std::vector<Element*> elementsList = workspace->GetElementList();
- std::vector<Text*> textList = workspace->GetTextList();
-
- m_allElements.GetElementsFromList(elementsList);
-
- std::vector<Bus*> busList = m_allElements.GetBusList();
- for(int i = 0; i < (int)busList.size(); i++) {
- Bus* origBus = busList[i];
-
- // Set bus number.
- auto data = origBus->GetEletricalData();
- data.number = i;
- origBus->SetElectricalData(data);
-
- if(origBus->IsSelected()) {
- Bus* copyBus = new Bus();
- *copyBus = *origBus;
- m_elementsLists->busList.push_back(copyBus);
- }
- }
+ m_elementsLists = new ElementsLists();
+}
- std::vector<Line*> lineList = m_allElements.GetLineList();
- for(int i = 0; i < (int)lineList.size(); i++) {
- Line* origLine = lineList[i];
- if(origLine->IsSelected()) {
- Line* copyLine = new Line();
- *copyLine = *origLine;
- m_elementsLists->lineList.push_back(copyLine);
- }
- }
-
- std::vector<Transformer*> transformerList = m_allElements.GetTransformerList();
- for(int i = 0; i < (int)transformerList.size(); i++) {
- Transformer* origTransformer = transformerList[i];
- if(origTransformer->IsSelected()) {
- Transformer* copyTransformer = new Transformer();
- *copyTransformer = *origTransformer;
- m_elementsLists->transformerList.push_back(copyTransformer);
- }
- }
- }
+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;