Files
BionxControl/nodes/services/ntxheadnode.h

46 lines
1.1 KiB
C
Raw Permalink Normal View History

2026-04-02 15:15:28 +02:00
#ifndef NTX_HEADNODE_H
#define NTX_HEADNODE_H
#include <ntxinode.h>
#include <ntxclipboard.h>
#include <memory>
namespace ntx
{
class NtxINode;
using NtxNodePtr = std::shared_ptr<NtxINode>;
class NtxHeadNode
{
public:
NtxHeadNode() = default;
~NtxHeadNode() = default;
NtxHeadNode(const NtxHeadNode&) = delete;
NtxHeadNode& operator=(const NtxHeadNode&) = delete;
NtxHeadNode(NtxHeadNode&&) = default;
NtxHeadNode& operator=(NtxHeadNode&&) = default;
bool copyNode(NtxNodePtr node);
bool cutNode(NtxNodePtr node);
NtxNodePtr pasteNode(NtxNodePtr parent, int index = -1);
bool addNode(NtxNodePtr parent, NtxNodePtr node, int index = -1);
bool deleteNode(NtxNodePtr node);
bool hasClipboard() const;
void clearClipboard();
NtxNodePtr peekClipboard() const;
private:
NtxClipboard m_clipboard; // ← Eigene Klasse als Member!
bool m_isCutOperation{false};
bool validateNode(NtxNodePtr node) const;
bool canAddToParent(NtxNodePtr parent, NtxNodePtr child) const;
};
} // namespace ntx
#endif // NTX_HEADNODE_H