From 929c758614811b63688ab82e8996501f9c8bfd30 Mon Sep 17 00:00:00 2001 From: Peter Albrecht <usnlf@student.kit.edu> Date: Wed, 25 Dec 2024 13:45:17 +0100 Subject: [PATCH] feat: skill id copy --- .../skills_gui/skill_details/ProfileMenuWidget.cpp | 6 ++++-- .../skills_gui/skill_details/ProfileMenuWidget.h | 2 ++ .../skills_gui/skill_details/SkillDetailsGroupBox.cpp | 4 ++++ .../skill_details/SkillDetailsTreeWidget.cpp | 11 +++++++++++ .../skills_gui/skill_details/SkillDetailsTreeWidget.h | 1 + 5 files changed, 22 insertions(+), 2 deletions(-) diff --git a/source/RobotAPI/libraries/skills_gui/skill_details/ProfileMenuWidget.cpp b/source/RobotAPI/libraries/skills_gui/skill_details/ProfileMenuWidget.cpp index ac56b71de..73a69456d 100644 --- a/source/RobotAPI/libraries/skills_gui/skill_details/ProfileMenuWidget.cpp +++ b/source/RobotAPI/libraries/skills_gui/skill_details/ProfileMenuWidget.cpp @@ -20,6 +20,7 @@ namespace armarx::skills::gui { setArgsFromClipboard = new QPushButton(); copyArgsToClipboard = new QPushButton(); + copySkillIdToClipboard = new QPushButton(); resetArgsToProfile = new QPushButton(); profileSelector = new QComboBox(); @@ -32,8 +33,7 @@ namespace armarx::skills::gui topLayout->addWidget(setArgsFromClipboard); topLayout->addWidget(copyArgsToClipboard); - // this is not good. We should probably use a QSpacerItem here... - topLayout->addWidget(new QLabel()); + topLayout->addWidget(copySkillIdToClipboard); topLayout->addWidget(resetArgsToProfile); this->setLayout(mainLayout); @@ -42,6 +42,8 @@ namespace armarx::skills::gui setArgsFromClipboard->setText(QString::fromStdString(SET_ARGS_BUTTON_TEXT)); copyArgsToClipboard->setText(QString::fromStdString(COPY_ARGS_BUTTON_TEXT)); copyArgsToClipboard->setIcon(getIcon("edit-copy-4.svg")); + copySkillIdToClipboard->setText(QString::fromStdString(COPY_SKILL_BUTTON_TEXT)); + copySkillIdToClipboard->setIcon(getIcon("edit-copy-4.svg")); resetArgsToProfile->setText(QString::fromStdString(RESET_ARGS_BUTTON_TEXT)); resetArgsToProfile->setIcon(getIcon("refresh-black.svg")); profileSelector->addItem(QString::fromStdString(DEFAULT_PROFILE_TEXT)); diff --git a/source/RobotAPI/libraries/skills_gui/skill_details/ProfileMenuWidget.h b/source/RobotAPI/libraries/skills_gui/skill_details/ProfileMenuWidget.h index 3046b18b8..ad6feab68 100644 --- a/source/RobotAPI/libraries/skills_gui/skill_details/ProfileMenuWidget.h +++ b/source/RobotAPI/libraries/skills_gui/skill_details/ProfileMenuWidget.h @@ -15,6 +15,7 @@ namespace armarx::skills::gui public: static const constexpr char* SET_ARGS_BUTTON_TEXT = "Set Args from Clipboard"; static const constexpr char* COPY_ARGS_BUTTON_TEXT = " Copy Args to Clipboard"; + static const constexpr char* COPY_SKILL_BUTTON_TEXT = " Copy SkillID to Clipboard"; static const constexpr char* RESET_ARGS_BUTTON_TEXT = " Reset Args to Profile"; static const constexpr char* DEFAULT_PROFILE_TEXT = "<No Profile selected. Using root>"; static const constexpr char* PROFILE_NOT_IMPLEMENTED = @@ -23,6 +24,7 @@ namespace armarx::skills::gui // contents are public, as this class is just a convenience wrapper QPushButton* setArgsFromClipboard = nullptr; QPushButton* copyArgsToClipboard = nullptr; + QPushButton* copySkillIdToClipboard = nullptr; QPushButton* resetArgsToProfile = nullptr; QComboBox* profileSelector = nullptr; diff --git a/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsGroupBox.cpp b/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsGroupBox.cpp index c83a0f9b4..07fc42bdf 100644 --- a/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsGroupBox.cpp +++ b/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsGroupBox.cpp @@ -147,6 +147,10 @@ namespace armarx::skills::gui &QPushButton::clicked, skillDetailsTreeWidget, &SkillDetailsTreeWidget::copyCurrentConfig); + connect(profileMenuWidget->copySkillIdToClipboard, + &QPushButton::clicked, + skillDetailsTreeWidget, + &SkillDetailsTreeWidget::copyCurrentSkillID); connect(profileMenuWidget->setArgsFromClipboard, &QPushButton::clicked, skillDetailsTreeWidget, diff --git a/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsTreeWidget.cpp b/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsTreeWidget.cpp index bff75ae4f..7d507847c 100644 --- a/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsTreeWidget.cpp +++ b/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsTreeWidget.cpp @@ -228,6 +228,17 @@ namespace armarx::skills::gui QClipboard* clipboard = QApplication::clipboard(); clipboard->setText(QString::fromStdString(json.dump(2))); } + + void SkillDetailsTreeWidget::copyCurrentSkillID() + { + if (not shownSkill.has_value()) + { + return; + } + + QClipboard* clipboard = QApplication::clipboard(); + clipboard->setText(QString::fromStdString(shownSkill->skillId.toString())); + } void SkillDetailsTreeWidget::pasteCurrentConfig() diff --git a/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsTreeWidget.h b/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsTreeWidget.h index cf954dceb..2cf18976a 100644 --- a/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsTreeWidget.h +++ b/source/RobotAPI/libraries/skills_gui/skill_details/SkillDetailsTreeWidget.h @@ -30,6 +30,7 @@ namespace armarx::skills::gui // this will reset the args to the profile defaults void resetCurrentConfig(); void copyCurrentConfig(); + void copyCurrentSkillID(); void disconnectGui(); void updateGui(SkillManagerWrapper::Snapshot update); void resizeContents(); -- GitLab