summaryrefslogtreecommitdiffstats
path: root/Project/ElementDataObject.cpp
blob: 5df312c0f88aab4c34511ad17b2c499cf8b41c58 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include "ElectricCalculation.h"
#include "ElementDataObject.h"

ElementDataObject::ElementDataObject(Workspace* workspace)
    : 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);
            }
        }

        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() {}

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;
}