copy paste repaired
This commit is contained in:
+18
-10
@@ -115,24 +115,25 @@ namespace VISEQ::GRAPH{
|
|||||||
VEC_SPTR_Node GraphManager::getCopiesOfSelectedNodes(){
|
VEC_SPTR_Node GraphManager::getCopiesOfSelectedNodes(){
|
||||||
VEC_SPTR_Node copied_nodes;
|
VEC_SPTR_Node copied_nodes;
|
||||||
for(auto n : selected_nodes){
|
for(auto n : selected_nodes){
|
||||||
copied_nodes.insert(copied_nodes.end(), std::make_shared<Node>(*n));
|
//copied_nodes.insert(copied_nodes.end(), std::make_shared<Node>(*n));
|
||||||
/*if(n->getNodeType() == NodeType::MIDINODE) copied_nodes.insert(copied_nodes.end(), std::make_shared<MidiNode>(*n));*/
|
|
||||||
/*if(n->getNodeType() == NodeType::CONFIGNODE) copied_nodes.insert(copied_nodes.end(), std::make_shared<ConfigNode>(*n));*/
|
if(n->getNodeType() == NodeType::MIDINODE) copied_nodes.insert(copied_nodes.end(), std::dynamic_pointer_cast<MidiNode>(n));
|
||||||
|
if(n->getNodeType() == NodeType::CONFIGNODE) copied_nodes.insert(copied_nodes.end(), std::dynamic_pointer_cast<ConfigNode>(n));
|
||||||
|
|
||||||
copied_nodes.back()->deselect();
|
copied_nodes.back()->deselect();
|
||||||
}
|
}
|
||||||
return copied_nodes;
|
return copied_nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
SPTR_Node GraphManager::copyNode(SPTR_Node n, Vec2Df position){
|
SPTR_Node GraphManager::copyNode(const SPTR_Node n, Vec2Df position){
|
||||||
std::cout << "copy basenode" << std::endl;
|
std::cout << "copy basenode" << std::endl;
|
||||||
nodes.insert(nodes.end(), std::make_shared<Node>(*n));
|
if(n->getNodeType() == NodeType::MIDINODE) nodes.insert(nodes.end(), std::dynamic_pointer_cast<MidiNode>(n));
|
||||||
/*if(n->getNodeType() == NodeType::MIDINODE) nodes.insert(nodes.end(), std::make_shared<MidiNode>(*n));*/
|
if(n->getNodeType() == NodeType::CONFIGNODE) nodes.insert(nodes.end(), std::dynamic_pointer_cast<ConfigNode>(n));
|
||||||
/*if(n->getNodeType() == NodeType::CONFIGNODE) nodes.insert(nodes.end(), std::make_shared<ConfigNode>(*n));*/
|
|
||||||
nodes.back()->setPosition(position);
|
nodes.back()->setPosition(position);
|
||||||
return nodes.back();
|
return nodes.back();
|
||||||
}
|
}
|
||||||
|
|
||||||
SPTR_Node GraphManager::copyNode(std::shared_ptr<MidiNode> n, Vec2Df position){
|
SPTR_Node GraphManager::copyNode(const std::shared_ptr<MidiNode> n, Vec2Df position){
|
||||||
std::cout << "copy midinode" << std::endl;
|
std::cout << "copy midinode" << std::endl;
|
||||||
nodes.insert(nodes.end(), std::make_shared<MidiNode>(*n));
|
nodes.insert(nodes.end(), std::make_shared<MidiNode>(*n));
|
||||||
nodes.back()->clearConnectors();
|
nodes.back()->clearConnectors();
|
||||||
@@ -291,6 +292,8 @@ namespace VISEQ::GRAPH{
|
|||||||
|
|
||||||
void GraphManager::pasteNodesAndEdges(VEC_SPTR_Node nodes, Vec2Df position){
|
void GraphManager::pasteNodesAndEdges(VEC_SPTR_Node nodes, Vec2Df position){
|
||||||
|
|
||||||
|
deselect();
|
||||||
|
std::cout << "nodes size " << nodes.size() << std::endl;
|
||||||
VEC_SPTR_Edge copy_connections;
|
VEC_SPTR_Edge copy_connections;
|
||||||
for(auto c : edges){
|
for(auto c : edges){
|
||||||
if(std::ranges::contains(nodes, c->start.lock()) && std::ranges::contains(nodes, c->end.lock())) {
|
if(std::ranges::contains(nodes, c->start.lock()) && std::ranges::contains(nodes, c->end.lock())) {
|
||||||
@@ -298,18 +301,22 @@ namespace VISEQ::GRAPH{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
std::cout << "copy_connections size " << copy_connections.size() << std::endl;
|
std::cout << "copy_connections size " << copy_connections.size() << std::endl;
|
||||||
|
Vec2Df insert_pos = nodes.begin()->get()->position;
|
||||||
for(auto old_node : nodes){
|
for(auto old_node : nodes){
|
||||||
SPTR_Node new_node;
|
SPTR_Node new_node;
|
||||||
|
|
||||||
if(old_node->getNodeType() == NodeType::MIDINODE) {
|
if(old_node->getNodeType() == NodeType::MIDINODE) {
|
||||||
new_node = copyNode(std::dynamic_pointer_cast<MidiNode>(old_node), position + old_node->drag_offset);
|
std::cout << "node type midi" << std::endl;
|
||||||
|
new_node = copyNode(std::dynamic_pointer_cast<MidiNode>(old_node), (old_node->position - insert_pos) + position);
|
||||||
} else {
|
} else {
|
||||||
|
std::cout << "not node type midi" << std::endl;
|
||||||
new_node = copyNode(old_node, position + old_node->drag_offset);
|
new_node = copyNode(old_node, position + old_node->drag_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
old_node->selected = false;
|
||||||
new_node->copied = false;
|
new_node->copied = false;
|
||||||
new_node->selected = true;
|
new_node->selected = true;
|
||||||
|
|
||||||
|
|
||||||
//TODO copy connectors
|
//TODO copy connectors
|
||||||
|
|
||||||
@@ -325,6 +332,7 @@ namespace VISEQ::GRAPH{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
std::ranges::copy(copy_connections.begin(), copy_connections.end(), std::back_inserter(edges));
|
std::ranges::copy(copy_connections.begin(), copy_connections.end(), std::back_inserter(edges));
|
||||||
|
addToSelection();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GraphManager::update(){
|
void GraphManager::update(){
|
||||||
|
|||||||
Reference in New Issue
Block a user