MCPcopy Create free account
hub / github.com/BehaviorTree/Groot / onDestroySubTree

Method onDestroySubTree

bt_editor/mainwindow.cpp:786–837  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

784}
785
786void MainWindow::onDestroySubTree(const QString &ID)
787{
788 auto sub_container = getTabByName(ID);
789
790 for(auto& it: _tab_info)
791 {
792 if( it.first == ID )
793 {
794 continue;
795 }
796 auto container = it.second;
797 auto tree = BuildTreeFromScene(container->scene());
798 for( const auto& abs_node: tree.nodes())
799 {
800 auto qt_node = abs_node.graphic_node;
801 auto bt_node = dynamic_cast<BehaviorTreeDataModel*>(qt_node->nodeDataModel());
802 if(bt_node->nodeType() == NodeType::SUBTREE && bt_node->instanceName() == ID)
803 {
804 auto new_node = qt_node;
805 auto subtree_model = dynamic_cast<SubtreeNodeModel*>(bt_node);
806 if( subtree_model && subtree_model->expanded() == false )
807 {
808 new_node = subTreeExpand( *container, *qt_node,
809 SubtreeExpandOption::SUBTREE_EXPAND );
810 }
811 container->lockSubtreeEditing(*new_node, false, false);
812 container->onSmartRemove( new_node );
813 }
814 }
815 container->nodeReorder();
816 }
817
818 for( int index = 0; index < ui->tabWidget->count(); index++)
819 {
820 if( ui->tabWidget->tabText(index) == ID)
821 {
822 sub_container->scene()->clearScene();
823 sub_container->deleteLater();
824 ui->tabWidget->removeTab( index );
825 _tab_info.erase(ID);
826 break;
827 }
828 }
829
830 if( ui->tabWidget->count() == 1 )
831 {
832 onTabSetMainTree(0);
833 }
834
835 // TODO: this is a work around until we find a better solution
836 clearUndoStacks();
837}
838
839void MainWindow::onModelRemoveRequested(QString ID)
840{

Callers

nothing calls this directly

Calls 8

BuildTreeFromSceneFunction · 0.85
sceneMethod · 0.80
nodeTypeMethod · 0.80
expandedMethod · 0.80
lockSubtreeEditingMethod · 0.80
onSmartRemoveMethod · 0.80
nodeReorderMethod · 0.80
clearSceneMethod · 0.80

Tested by

no test coverage detected