void GuiAppInstance::onGroupCreationFinished(const NodePtr& node, CreateNodeReason reason) { if (reason == eCreateNodeReasonUserCreate) { NodeGraph* graph = 0; boost::shared_ptr<NodeCollection> collection = node->getGroup(); assert(collection); NodeGroup* isGrp = dynamic_cast<NodeGroup*>( collection.get() ); if (isGrp) { NodeGraphI* graph_i = isGrp->getNodeGraph(); assert(graph_i); graph = dynamic_cast<NodeGraph*>(graph_i); } else { graph = _imp->_gui->getNodeGraph(); } assert(graph); if (!graph) { throw std::logic_error(""); } NodesGuiList selectedNodes = graph->getSelectedNodes(); NodeGuiPtr selectedNode; if ( !selectedNodes.empty() ) { selectedNode = selectedNodes.front(); if ( dynamic_cast<BackdropGui*>( selectedNode.get() ) ) { selectedNode.reset(); } } boost::shared_ptr<NodeGuiI> node_gui_i = node->getNodeGui(); assert(node_gui_i); NodeGuiPtr nodeGui = boost::dynamic_pointer_cast<NodeGui>(node_gui_i); graph->moveNodesForIdealPosition(nodeGui, selectedNode, true); } AppInstance::onGroupCreationFinished(node, reason); /*std::list<ViewerInstance* > viewers; node->hasViewersConnected(&viewers); for (std::list<ViewerInstance* >::iterator it2 = viewers.begin(); it2 != viewers.end(); ++it2) { (*it2)->renderCurrentFrame(false); }*/ }
void GuiAppInstance::onGroupCreationFinished(const NodePtr& node, const NodeSerializationPtr& serialization, bool autoConnect) { NodeGuiIPtr node_gui_i = node->getNodeGui(); if (autoConnect && !serialization && node_gui_i) { NodeGraph* graph = 0; NodeCollectionPtr collection = node->getGroup(); assert(collection); NodeGroupPtr isGrp = toNodeGroup(collection); if (isGrp) { NodeGraphI* graph_i = isGrp->getNodeGraph(); assert(graph_i); graph = dynamic_cast<NodeGraph*>(graph_i); } else { graph = _imp->_gui->getNodeGraph(); } assert(graph); if (!graph) { throw std::logic_error(""); } NodesGuiList selectedNodes = graph->getSelectedNodes(); NodeGuiPtr selectedNode; if ( !selectedNodes.empty() ) { selectedNode = selectedNodes.front(); if (toBackdropGui(selectedNode) ) { selectedNode.reset(); } } NodeGuiPtr nodeGui = boost::dynamic_pointer_cast<NodeGui>(node_gui_i); graph->moveNodesForIdealPosition(nodeGui, selectedNode, true); } AppInstance::onGroupCreationFinished(node, serialization, autoConnect); /*std::list<ViewerInstancePtr> viewers; node->hasViewersConnected(&viewers); for (std::list<ViewerInstancePtr>::iterator it2 = viewers.begin(); it2 != viewers.end(); ++it2) { (*it2)->renderCurrentFrame(false); }*/ }