Power System Platform  2026w23a-beta
Loading...
Searching...
No Matches
ControlElementDataObject Class Reference

Clipboard payload for ControlEditor copy/paste (control elements + connection lines). More...

#include <ControlElementDataObject.h>

Inheritance diagram for ControlElementDataObject:
Collaboration diagram for ControlElementDataObject:

Public Member Functions

 ControlElementDataObject (const std::vector< std::shared_ptr< ControlElement > > &elementList, const std::vector< std::shared_ptr< ConnectionLine > > &connectionList)
 
size_t GetDataSize () const override
 
bool GetDataHere (void *buf) const override
 
bool SetData (size_t len, const void *buf) override
 
ControlElementsListsGetElementsLists ()
 

Private Attributes

ControlElementsListsm_elementsLists = nullptr
 
bool m_ownsLists = false
 

Detailed Description

Clipboard payload for ControlEditor copy/paste (control elements + connection lines).

Author
Thales Lima Oliveira thale.nosp@m.s.ol.nosp@m.iveir.nosp@m.a@uf.nosp@m.tm.ed.nosp@m.u.br
Date
08/07/2026

Uses the same pointer-passing pattern as ElementDataObject, but with explicit ownership control to avoid double-free when reading clipboard data.

Definition at line 43 of file ControlElementDataObject.h.

Constructor & Destructor Documentation

◆ ControlElementDataObject() [1/2]

ControlElementDataObject::ControlElementDataObject ( )

Definition at line 20 of file ControlElementDataObject.cpp.

21 : wxDataObjectSimple(wxDataFormat(wxT("PSPControlCopy")))
22{
23 // When used for reading clipboard data, we do NOT own the lists by default.
24 m_elementsLists = nullptr;
25 m_ownsLists = false;
26}

◆ ControlElementDataObject() [2/2]

ControlElementDataObject::ControlElementDataObject ( const std::vector< std::shared_ptr< ControlElement > > &  elementList,
const std::vector< std::shared_ptr< ConnectionLine > > &  connectionList 
)

Definition at line 28 of file ControlElementDataObject.cpp.

31 : wxDataObjectSimple(wxDataFormat(wxT("PSPControlCopy")))
32{
33 m_elementsLists = new ControlElementsLists();
34 m_elementsLists->elementList = elementList;
35 m_elementsLists->connectionList = connectionList;
36 m_ownsLists = true;
37}

◆ ~ControlElementDataObject()

ControlElementDataObject::~ControlElementDataObject ( )
override

Definition at line 39 of file ControlElementDataObject.cpp.

40{
41 if (m_ownsLists && m_elementsLists) {
42 delete m_elementsLists;
43 m_elementsLists = nullptr;
44 }
45}

Member Function Documentation

◆ GetDataHere()

bool ControlElementDataObject::GetDataHere ( void *  buf) const
override

Definition at line 52 of file ControlElementDataObject.cpp.

53{
54 *(ControlElementsLists**)buf = m_elementsLists;
55 return true;
56}

◆ GetDataSize()

size_t ControlElementDataObject::GetDataSize ( ) const
override

Definition at line 47 of file ControlElementDataObject.cpp.

48{
49 return sizeof(void*);
50}

◆ GetElementsLists()

ControlElementsLists * ControlElementDataObject::GetElementsLists ( )
inline

Definition at line 56 of file ControlElementDataObject.h.

56{ return m_elementsLists; }

◆ SetData()

bool ControlElementDataObject::SetData ( size_t  len,
const void *  buf 
)
override

Definition at line 58 of file ControlElementDataObject.cpp.

59{
60 (void)len;
61 m_elementsLists = *(ControlElementsLists**)buf;
62 // The clipboard-owned data object owns the lists, not this stack reader.
63 m_ownsLists = false;
64 return true;
65}

Member Data Documentation

◆ m_elementsLists

ControlElementsLists* ControlElementDataObject::m_elementsLists = nullptr
private

Definition at line 59 of file ControlElementDataObject.h.

◆ m_ownsLists

bool ControlElementDataObject::m_ownsLists = false
private

Definition at line 60 of file ControlElementDataObject.h.


The documentation for this class was generated from the following files: