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

Method createSubtree

bt_editor/graphic_container.cpp:254–300  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

252}
253
254void GraphicContainer::createSubtree(Node &root_node, QString subtree_name )
255{
256 bool ok = false;
257 if( subtree_name.isEmpty() )
258 {
259 subtree_name = QInputDialog::getText (
260 nullptr, tr ("SubTree Name"),
261 tr ("Insert the name of the Custom SubTree"),
262 QLineEdit::Normal, "", &ok);
263 if (!ok)
264 {
265 return;
266 }
267 }
268
269 auto main_win = dynamic_cast<MainWindow*>( parent() );
270
271 if( main_win->getTabByName(subtree_name) != nullptr ||
272 _model_registry->registeredModelsByCategory("SubTree").count( subtree_name ))
273 {
274 QMessageBox::warning( nullptr, "SubTree already exists",
275 tr("There is already a SubTree called [%1].\n"
276 "Use another name.").arg(subtree_name),
277 QMessageBox::Ok);
278 return;
279 }
280
281 addNewModel( { NodeType::SUBTREE, subtree_name, {}} );
282 QApplication::processEvents();
283
284 auto sub_tree = BuildTreeFromScene(_scene, &root_node);
285
286 for(auto& abs_node: sub_tree.nodes())
287 {
288 if( &abs_node == sub_tree.rootNode() )
289 {
290 continue;
291 }
292 _scene->removeNode( *abs_node.graphic_node );
293 abs_node.graphic_node = nullptr;
294 }
295 substituteNode( sub_tree.rootNode()->graphic_node, subtree_name);
296
297 nodeReorder();
298
299 emit requestSubTreeCreate( sub_tree, subtree_name );
300}
301
302void GraphicContainer::onNodeDoubleClicked(Node &root_node)
303{

Callers 2

testSubtreeMethod · 0.80
clearModelsMethod · 0.80

Calls 4

BuildTreeFromSceneFunction · 0.85
getTabByNameMethod · 0.80
rootNodeMethod · 0.80

Tested by 2

testSubtreeMethod · 0.64
clearModelsMethod · 0.64