From 1e2b9b43a6213c61a96abb33fb50dbe47603f032 Mon Sep 17 00:00:00 2001 From: Peter Albrecht <albrecpe@gmail.com> Date: Sat, 21 Oct 2023 23:59:52 +0200 Subject: [PATCH] Disabled the 'stop skill' prompt when skill has finished --- .../SkillManagerMonitorWidgetController.cpp | 21 ++++++++++++++----- .../SkillManagerMonitorWidgetController.h | 2 +- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp index a518220d4..be7b4593e 100644 --- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp +++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp @@ -83,16 +83,25 @@ namespace armarx namespace armarx { void - SkillManagerMonitorWidgetController::prepareMenu(const QPoint& pos) + SkillManagerMonitorWidgetController::prepareAndRunMenu(const QPoint& pos) { QMenu* menu = new QMenu(); - // TODO: gray out option if skill has finished + + // Stop skill QAction* stopSkillAction = new QAction("Stop Skill", this); + skills::SkillStatus currentStatus = + skillStatusUpdates.at(selectedSkill.skillExecutionId).status; + stopSkillAction->setDisabled(currentStatus == skills::SkillStatus::Aborted || + currentStatus == skills::SkillStatus::Failed || + currentStatus == skills::SkillStatus::Succeeded); + + // TODO: re-run with similar params; remove skill entry (if finished) menu->addAction(stopSkillAction); connect(stopSkillAction, &QAction::triggered, this, &SkillManagerMonitorWidgetController::stopSkill); + // open menu menu->popup(widget.treeWidgetSkillExecutions->viewport()->mapToGlobal(pos)); } @@ -136,7 +145,7 @@ namespace armarx connect(widget.treeWidgetSkillExecutions, &QTreeWidget::customContextMenuRequested, this, - &SkillManagerMonitorWidgetController::prepareMenu); + &SkillManagerMonitorWidgetController::prepareAndRunMenu); connect(widget.doubleSpinBoxUpdateFreq, &QDoubleSpinBox::editingFinished, @@ -387,6 +396,9 @@ namespace armarx auto executionId = skills::SkillExecutionID::FromIce(k); auto statusUpdate = skills::SkillStatusUpdate::FromIce(v); + // update snapshot + skillStatusUpdates.insert_or_assign(executionId, statusUpdate); + SkillExecutionInfoTreeWidgetItem* found = nullptr; for (int i = 0; i < widget.treeWidgetSkillExecutions->topLevelItemCount(); ++i) { @@ -509,8 +521,7 @@ namespace armarx } */ - ARMARX_INFO << "Stopping skill from GUI: " - << selectedSkill.skillExecutionId.skillId.skillName; + ARMARX_INFO << "Stopping skill from GUI: " << selectedSkill.skillExecutionId.toString(); memory->abortSkill(selectedSkill.skillExecutionId.toManagerIce()); } diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h index 6d35a5279..4a7d0e79e 100644 --- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h +++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h @@ -130,7 +130,7 @@ namespace armarx void pasteCurrentConfig(); void resetCurrentConfig(); - void prepareMenu(const QPoint& pos); + void prepareAndRunMenu(const QPoint& pos); private: -- GitLab