From e42d780e96f93f2ce0d3bd0eb4a6f2e74d98ac2b Mon Sep 17 00:00:00 2001 From: Fabian Peller <fabian.peller-konrad@kit.edu> Date: Wed, 15 Nov 2023 08:03:49 +0100 Subject: [PATCH] fix designated initializers. Readd missing method from MR --- .../SkillManagerMonitorWidgetController.cpp | 50 +++++++++++++++++-- .../SkillManagerMonitorWidgetController.h | 14 ++++-- .../provider/SkillProviderComponentPlugin.cpp | 7 +-- 3 files changed, 58 insertions(+), 13 deletions(-) diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp index 72a1aff30..4a6b6d898 100644 --- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp +++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp @@ -22,9 +22,12 @@ #include "SkillManagerMonitorWidgetController.h" +#include <optional> #include <regex> #include <string> +#include <SimoxUtility/algorithm/string.h> + #include <RobotAPI/libraries/skills/core/Skill.h> #include "aronTreeWidget/visitors/AronTreeWidgetConverter.h" @@ -35,9 +38,11 @@ #include "aronTreeWidget/modal/text/AronTreeWidgetTextInputModalController.h" // debug +#include <QAction> #include <QClipboard> #include <QDoubleSpinBox> #include <QGridLayout> +#include <QMenu> #include <QTextBrowser> #include <RobotAPI/libraries/aron/converter/json/NLohmannJSONConverter.h> @@ -54,6 +59,9 @@ //configSk namespace armarx { + const skills::SkillID SkillManagerMonitorWidgetController::SelectedSkill::UNK_SKILL_ID = + skills::SkillID{.providerId = ::std::nullopt, .skillName = skills::SkillID::UNKNOWN}; + QPointer<QDialog> SkillManagerMonitorWidgetController::getConfigDialog(QWidget* parent) { @@ -88,6 +96,38 @@ namespace armarx // Others namespace armarx { + void + SkillManagerMonitorWidgetController::prepareAndRunMenu(const QPoint& pos) + { + QMenu* menu = new QMenu(); + + // 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); + + QAction* rerunSkillAction = new QAction("Re-run with similar params", this); + menu->addAction(stopSkillAction); + menu->addAction(rerunSkillAction); + connect(stopSkillAction, + &QAction::triggered, + this, + &SkillManagerMonitorWidgetController::stopSkill); + connect(rerunSkillAction, + &QAction::triggered, + this, + &SkillManagerMonitorWidgetController::rerunSkillWithSimilarParams); + + // Temporarily disable rerun-skill-Action + rerunSkillAction->setDisabled(true); + + // open menu + menu->popup(widget.treeWidgetSkillExecutions->viewport()->mapToGlobal(pos)); + } + SkillExecutionInfoTreeWidgetItem* SkillExecutionInfoTreeWidgetItem::SearchRecursiveForMatch( SkillExecutionInfoTreeWidgetItem* haystack, @@ -255,7 +295,7 @@ namespace armarx for (auto it = update.begin(); it != update.end();) { - if (boost::algorithm::to_lower_copy(skills::SkillID::FromIce(it->first).skillName) + if (simox::alg::to_lower(skills::SkillID::FromIce(it->first).skillName) .find(this->currentSkillSearch.toLower().toStdString())) { update.erase(it++); @@ -540,10 +580,10 @@ namespace armarx char hostname[HOST_NAME_MAX]; gethostname(hostname, HOST_NAME_MAX); - skills::SkillExecutionRequest req(selectedSkill.skillId, - "Skills.Manager GUI (hostname: " + std::string(hostname) + - ")", - params); + skills::SkillExecutionRequest req{ + .skillId = selectedSkill.skillId, + .executorName = "Skills.Manager GUI (hostname: " + std::string(hostname) + ")", + .parameters = params}; ARMARX_CHECK(selectedSkill.skillId.isFullySpecified()); // sanity check ARMARX_IMPORTANT << "Executing skill from GUI: " << selectedSkill.skillId << "."; diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h index 318ef468b..d20cb0835 100644 --- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h +++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h @@ -164,18 +164,22 @@ namespace armarx // User Input struct SelectedSkill { + static const skills::SkillID UNK_SKILL_ID; + skills::SkillID skillId; skills::SkillExecutionID skillExecutionId; // make default constructable SelectedSkill() : - skillId({}, skills::SkillID::UNKNOWN), - skillExecutionId({{}, skills::SkillID::UNKNOWN}, - skills::SkillExecutionID::UNKNOWN, - armarx::core::time::DateTime::Invalid()) + skillId(UNK_SKILL_ID), + skillExecutionId{.skillId = UNK_SKILL_ID, + .executorName = skills::SkillExecutionID::UNKNOWN, + .executionStartedTime = armarx::core::time::DateTime::Invalid()} { } - } selectedSkill; + } + + selectedSkill; void executeSkillWithParams(skills::SkillID skillId, aron::data::DictPtr params); void matchSkillUpdateToSearch(std::map<skills::manager::dto::SkillID, diff --git a/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp b/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp index e4d3235a3..a42d78082 100644 --- a/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp +++ b/source/RobotAPI/libraries/skills/provider/SkillProviderComponentPlugin.cpp @@ -190,9 +190,10 @@ namespace armarx::plugins { ARMARX_CHECK(executionRequest.skillId.isFullySpecified()); - skills::SkillExecutionID executionId(executionRequest.skillId, - executionRequest.executorName, - armarx::core::time::DateTime::Now()); + skills::SkillExecutionID executionId{.skillId = executionRequest.skillId, + .executorName = executionRequest.executorName, + .executionStartedTime = + armarx::core::time::DateTime::Now()}; skills::SkillStatusUpdate ret{ {executionId, executionRequest.parameters, executionRequest.callbackInterface}}; -- GitLab