void Gui::createGroupGui(const NodePtr & group, CreateNodeReason reason) { boost::shared_ptr<NodeGroup> isGrp = boost::dynamic_pointer_cast<NodeGroup>( group->getEffectInstance()->shared_from_this() ); assert(isGrp); boost::shared_ptr<NodeCollection> collection = boost::dynamic_pointer_cast<NodeCollection>(isGrp); assert(collection); TabWidget* where = 0; if (_imp->_lastFocusedGraph) { TabWidget* isTab = dynamic_cast<TabWidget*>( _imp->_lastFocusedGraph->parentWidget() ); if (isTab) { where = isTab; } else { QMutexLocker k(&_imp->_panesMutex); assert( !_imp->_panes.empty() ); where = _imp->_panes.front(); } } QGraphicsScene* scene = new QGraphicsScene(this); scene->setItemIndexMethod(QGraphicsScene::NoIndex); NodeGraph* nodeGraph = new NodeGraph(this, collection, scene, this); nodeGraph->setObjectName( QString::fromUtf8(group->getLabel().c_str()) ); _imp->_groups.push_back(nodeGraph); if ( where && reason == eCreateNodeReasonUserCreate && !getApp()->isCreatingPythonGroup() ) { where->appendTab(nodeGraph, nodeGraph); QTimer::singleShot( 25, nodeGraph, SLOT(centerOnAllNodes()) ); } else { nodeGraph->setVisible(false); } }
void Gui::createGroupGui(const NodePtr & group, const CreateNodeArgs& args) { NodeGroupPtr isGrp = toNodeGroup( group->getEffectInstance()->shared_from_this() ); assert(isGrp); NodeCollectionPtr collection = boost::dynamic_pointer_cast<NodeCollection>(isGrp); assert(collection); TabWidget* where = 0; if (_imp->_lastFocusedGraph) { TabWidget* isTab = dynamic_cast<TabWidget*>( _imp->_lastFocusedGraph->parentWidget() ); if (isTab) { where = isTab; } else { std::list<TabWidgetI*> panes = getApp()->getTabWidgetsSerialization(); assert( !panes.empty() ); where = dynamic_cast<TabWidget*>(panes.front()); } } QGraphicsScene* scene = new QGraphicsScene(this); scene->setItemIndexMethod(QGraphicsScene::NoIndex); std::string newName = isGrp->getNode()->getFullyQualifiedName(); for (std::size_t i = 0; i < newName.size(); ++i) { if (newName[i] == '.') { newName[i] = '_'; } } newName += "_NodeGraph"; std::string label = tr(" Node Graph").toStdString(); NodeGraph::makeFullyQualifiedLabel(group, &label); NodeGraph* nodeGraph = new NodeGraph(this, collection, newName, scene, this); nodeGraph->setLabel(label); nodeGraph->setObjectName( QString::fromUtf8( group->getLabel().c_str() ) ); _imp->_groups.push_back(nodeGraph); SERIALIZATION_NAMESPACE::NodeSerializationPtr serialization = args.getPropertyUnsafe<SERIALIZATION_NAMESPACE::NodeSerializationPtr>(kCreateNodeArgsPropNodeSerialization); bool showSubGraph = args.getPropertyUnsafe<bool>(kCreateNodeArgsPropSubGraphOpened); if ( showSubGraph && where && !serialization ) { where->appendTab(nodeGraph, nodeGraph); QTimer::singleShot( 25, nodeGraph, SLOT(centerOnAllNodes()) ); } else { nodeGraph->setVisible(false); } }