6 #include <QTreeWidgetItem>
16 SkillExecutionTreeWidget::runContextMenu(
const QPoint& pos)
21 QMenu* menu =
new QMenu();
24 QAction* stopSkillAction =
new QAction(
"Stop execution",
this);
25 const auto& executions =
memory->getExecutions();
34 QAction* rerunSkillAction =
new QAction(
"Re-execute with similar parameters",
this);
35 menu->addAction(stopSkillAction);
36 menu->addAction(rerunSkillAction);
37 connect(stopSkillAction,
40 &SkillExecutionTreeWidget::stopSelectedExecution);
41 connect(rerunSkillAction,
44 &SkillExecutionTreeWidget::rerunSkillWithSimilarParams);
47 menu->popup(this->viewport()->mapToGlobal(pos));
51 SkillExecutionTreeWidget::stopSelectedExecution()
53 if (!selectionValid())
59 SkillExecutionTreeWidget::rerunSkillWithSimilarParams()
61 if (!selectionValid())
64 skills::SkillExecutionID currentExecutionId = this->selectedExecution.
skillExecutionId;
65 auto executions =
memory->getExecutions();
66 if (executions.empty())
69 if (executions.count(currentExecutionId) == 0)
72 ARMARX_IMPORTANT <<
"The selected execution was not found in memory. The GUI is unable "
73 "to determine the parametrization for this execution.";
76 auto params = executions[currentExecutionId].parameters;
78 ARMARX_INFO <<
"Re-executing the skill " << currentExecutionId.skillId
79 <<
" with previous parameters.";
82 this->
memory->startExecutionWithParams(currentExecutionId.skillId, params);
93 SkillExecutionTreeWidget::setupUi()
95 this->setColumnCount(6);
97 this->setContextMenuPolicy(Qt::CustomContextMenu);
99 QTreeWidgetItem* qtreewidgetitem = this->headerItem();
100 qtreewidgetitem->setText(5,
"");
101 qtreewidgetitem->setText(4,
"");
102 qtreewidgetitem->setText(3,
"Status");
103 qtreewidgetitem->setText(2,
"SkillID");
104 qtreewidgetitem->setText(1,
"Executor");
105 qtreewidgetitem->setText(0,
"Timestamp");
107 this->setColumnWidth(4, 30);
113 SkillExecutionTreeWidget::connectSignals()
116 &QTreeWidget::customContextMenuRequested,
118 &SkillExecutionTreeWidget::runContextMenu);
120 &QTreeWidget::currentItemChanged,
122 &SkillExecutionTreeWidget::executionSelectionChanged);
126 SkillExecutionTreeWidget::selectionValid()
132 SkillExecutionTreeWidget::executionSelectionChanged(QTreeWidgetItem* current,
133 QTreeWidgetItem* previous)
136 SkillExecutionTreeWidgetItem* selected =
137 dynamic_cast<SkillExecutionTreeWidgetItem*
>(current);
147 if (
update.statuses.empty())
152 for (
const auto& [k,
v] :
update.statuses)
158 for (
int i = 0; i < this->topLevelItemCount(); ++i)
182 item->updateItem(statusUpdate.
status);