diff options
Diffstat (limited to 'Project/ElementDataObject.cpp')
-rw-r--r-- | Project/ElementDataObject.cpp | 71 |
1 files changed, 50 insertions, 21 deletions
diff --git a/Project/ElementDataObject.cpp b/Project/ElementDataObject.cpp index e4752ea..5df312c 100644 --- a/Project/ElementDataObject.cpp +++ b/Project/ElementDataObject.cpp @@ -1,39 +1,68 @@ #include "ElectricCalculation.h" #include "ElementDataObject.h" -ElementDataObject::ElementDataObject(Workspace* workspace) : wxDataObjectSimple(wxDataFormat("PSPCopy")) +ElementDataObject::ElementDataObject(Workspace* workspace) + : wxDataObjectSimple(wxDataFormat("PSPCopy")) { - m_allElements.GetElementsFromList(workspace->GetElementList()); - std::vector<Text*> textList = workspace->GetTextList(); - - std::vector<Bus*> busList = m_allElements.GetBusList(); - for(int i = 0; i<(int)busList.size(); i++) { - Bus* origBus = busList[i]; - if(origBus->IsSelected()) { - Bus* copyBus = new Bus(); - *copyBus = *origBus; - m_elementsLists->busList.push_back(copyBus); + 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); + } + } + + 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() -{ -} +ElementDataObject::~ElementDataObject() {} -size_t ElementDataObject::GetDataSize() const -{ - return sizeof(void*); -} +size_t ElementDataObject::GetDataSize() const { return sizeof(void*); } bool ElementDataObject::GetDataHere(void* buf) const { - *(ElementsLists**)buf = m_elementsLists; - return true; + *(ElementsLists**)buf = m_elementsLists; + return true; } bool ElementDataObject::SetData(size_t len, const void* buf) { m_elementsLists = *(ElementsLists**)buf; - return true; + return true; } |