Newer
Older
#include "RobotAPI/libraries/skills_gui/skill_details/ProfileMenuWidget.h"
#include "RobotAPI/libraries/skills_gui/skill_details/SkillDetailsTreeWidget.h"
void
SkillDetailGroupBox::updateSkillDetails(SkillID& _skillId)
{
if (_skillId.skillName == SkillID::UNKNOWN)
return;
auto const& skills = memory->getSkills();
std::optional<skills::ProviderID> provider_opt;
// check skillId
if (_skillId.isProviderSpecified())
{
provider_opt = _skillId.providerId;
}
else
{
// find first provider to provide the skill
provider_opt = SkillManagerWrapper::findFirstProvider(skills, _skillId);
}
if (provider_opt == std::nullopt)
{
// skill was not found in snapshot. Abort...
return;
}
// construct skill id (with guaranteed valid provider)
skills::SkillID skillId = {provider_opt, _skillId.skillName};
// Maybe the search doesn't include the shown skill?
if (skills.count(skillId.providerId.value()) == 0 ||
skills.at(skillId.providerId.value()).count(skillId) == 0)
{
// reset details widget
skillDetailsTreeWidget->resetWidget();
return;
}
// get skill description
skills::SkillDescription descr = skills.at(skillId.providerId.value()).at(skillId);
// ------------ update widgets ------------
// setup groupBox
this->setTitle(QString::fromStdString(skillId.toString()));
// setup table view
skillDetailsTreeWidget->updateContents(skillId, descr);
// description widget
skillDescriptionWidget->setSkillDescription(descr);
// add new profiles for this skill
// TODO: Where stored?
}
SkillDetailGroupBox::connectGui(std::string observerName)
skillDetailsTreeWidget->setEditTriggers(QAbstractItemView::EditTrigger::NoEditTriggers);
SkillDetailGroupBox::handleExecutionRequest()
auto data = skillDetailsTreeWidget->getConfigAsAron();
auto skillId = skillDetailsTreeWidget->getShownId();
if (skillId.has_value())
{
memory->startExecutionWithParams(skillId.value(), data);
}
void
SkillDetailGroupBox::resizeEvent(QResizeEvent* event)
{
QGroupBox::resizeEvent(event);
skillDetailsTreeWidget->resizeContents();
}
this->setTitle(QString::fromStdString(GROUP_BOX_TITLE));
this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
this->executeSkillButton = new QPushButton();
this->profileMenuWidget = new ProfileMenuWidget(this->memory, this);
this->skillDetailsTreeWidget = new SkillDetailsTreeWidget(this->memory, this);
this->skillDescriptionWidget = new SkillDescriptionWidget(this);
this->layout = new QVBoxLayout();
this->splitter = new QSplitter();
splitter->setOrientation(Qt::Orientation::Vertical);
// Layouting
this->setLayout(layout);
layout->addWidget(this->profileMenuWidget);
layout->addWidget(splitter);
splitter->addWidget(this->skillDescriptionWidget);
splitter->addWidget(this->skillDetailsTreeWidget);
layout->addWidget(this->executeSkillButton);
// Text
this->executeSkillButton->setText(
QString::fromStdString(SkillDetailGroupBox::EXECUTE_SKILL_BUTTON_TEXT));
{
QPixmap pix(QString::fromStdString(":icons/run.svg"));
QIcon icon(pix);
this->executeSkillButton->setIcon(icon);
}
void
SkillDetailGroupBox::connectSignals()
{
connect(executeSkillButton,
&QPushButton::clicked,
this,
&SkillDetailGroupBox::handleExecutionRequest);
connect(this,
&SkillDetailGroupBox::disconnectGui,
skillDetailsTreeWidget,
&SkillDetailsTreeWidget::disconnectGui);
connect(this,
&SkillDetailGroupBox::updateGui,
skillDetailsTreeWidget,
&SkillDetailsTreeWidget::updateGui);
// profile buttons
connect(profileMenuWidget->copyArgsToClipboard,
&QPushButton::clicked,
skillDetailsTreeWidget,
&SkillDetailsTreeWidget::copyCurrentConfig);
connect(profileMenuWidget->copySkillIdToClipboard,
&QPushButton::clicked,
skillDetailsTreeWidget,
&SkillDetailsTreeWidget::copyCurrentSkillID);
connect(profileMenuWidget->setArgsFromClipboard,
&QPushButton::clicked,
skillDetailsTreeWidget,
&SkillDetailsTreeWidget::pasteCurrentConfig);
connect(profileMenuWidget->resetArgsToProfile,
&QPushButton::clicked,
skillDetailsTreeWidget,
&SkillDetailsTreeWidget::resetCurrentConfig);
connect(profileMenuWidget->changesSelector,
&QPushButton::pressed,
skillDetailsTreeWidget,
&SkillDetailsTreeWidget::reloadLastParameters);
connect(skillDetailsTreeWidget,
&SkillDetailsTreeWidget::updated,
profileMenuWidget,
&ProfileMenuWidget::updateChangesSelector);