Skip to content

Commit 5df8d58

Browse files
committed
__shared_blackboard added to SubTrees
1 parent 1962fd2 commit 5df8d58

File tree

3 files changed

+46
-4
lines changed

3 files changed

+46
-4
lines changed

bt_editor/bt_editor_base.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ const NodeModels &BuiltinNodeModels()
198198
for( const auto& it: factory.manifests())
199199
{
200200
const auto& model_name = it.first;
201-
if( model_name == "SubTree")
201+
if( model_name == "SubTree" || model_name == "SubTreePlus" )
202202
{
203203
continue;
204204
}

bt_editor/custom_node_dialog.cpp

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,11 +117,14 @@ NodeModel CustomNodeDialog::getTreeNodeModel() const
117117
}
118118
for (int row=0; row < ui->tableWidget->rowCount(); row++ )
119119
{
120+
PortModel port_model;
120121
const QString key = ui->tableWidget->item(row,0)->text();
122+
121123
auto combo = static_cast<QComboBox*>(ui->tableWidget->cellWidget(row,1));
122-
const QString direction = combo->currentText();
123124

124-
PortModel port_model;
125+
const QString direction = (combo) ? combo->currentText() :
126+
ui->tableWidget->item(row,1)->text();
127+
125128
port_model.direction = BT::convertFromString<PortDirection>(direction.toStdString());
126129
port_model.default_value = ui->tableWidget->item(row,2)->text();
127130
port_model.description = ui->tableWidget->item(row,3)->text();
@@ -249,3 +252,40 @@ void CustomNodeDialog::on_pushButtonRemove_pressed()
249252
}
250253
checkValid();
251254
}
255+
256+
void CustomNodeDialog::on_comboBox_currentIndexChanged(const QString &node_type)
257+
{
258+
auto shared_items = ui->tableWidget->findItems("__shared_blackboard", Qt::MatchExactly);
259+
if ( node_type == "SubTree")
260+
{
261+
if( shared_items.empty() )
262+
{
263+
int row = ui->tableWidget->rowCount();
264+
ui->tableWidget->setRowCount(row+1);
265+
266+
auto key_item = new QTableWidgetItem ("__shared_blackboard");
267+
key_item->setFlags(key_item->flags() & ~Qt::ItemIsEditable );
268+
269+
auto direction_item = new QTableWidgetItem ("Input");
270+
direction_item->setFlags(direction_item->flags() & ~Qt::ItemIsEditable );
271+
272+
auto value_item = new QTableWidgetItem ("false");
273+
274+
auto description_item = new QTableWidgetItem ("If false (default), the Subtree has an isolated blackboard and needs port remapping");
275+
description_item->setFlags(description_item->flags() & ~Qt::ItemIsEditable );
276+
277+
ui->tableWidget->setItem(row, 0, key_item);
278+
ui->tableWidget->setItem(row, 1, direction_item);
279+
ui->tableWidget->setItem(row, 2, value_item);
280+
ui->tableWidget->setItem(row, 3, description_item);
281+
}
282+
}
283+
else
284+
{
285+
for( const auto& item: shared_items)
286+
{
287+
ui->tableWidget->removeRow( item->row() );
288+
}
289+
}
290+
checkValid();
291+
}

bt_editor/custom_node_dialog.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ private slots:
3434

3535
void on_tableWidget_itemSelectionChanged();
3636

37-
private:
37+
void on_comboBox_currentIndexChanged(const QString &node_type);
38+
39+
private:
3840
Ui::CustomNodeDialog *ui;
3941
const NodeModels &_models;
4042
QValidator *_validator;

0 commit comments

Comments
 (0)