Skip to content
Snippets Groups Projects
Commit 138a52d5 authored by Peter Albrecht's avatar Peter Albrecht
Browse files

Implemented skill search

parent 8b4c8220
No related branches found
No related tags found
No related merge requests found
...@@ -154,6 +154,9 @@ ...@@ -154,6 +154,9 @@
<item row="4" column="0"> <item row="4" column="0">
<widget class="QLineEdit" name="lineEditSearch"> <widget class="QLineEdit" name="lineEditSearch">
<property name="text"> <property name="text">
<string/>
</property>
<property name="placeholderText">
<string>Search...</string> <string>Search...</string>
</property> </property>
</widget> </widget>
......
...@@ -22,8 +22,11 @@ ...@@ -22,8 +22,11 @@
#include "SkillManagerMonitorWidgetController.h" #include "SkillManagerMonitorWidgetController.h"
#include <regex>
#include <string> #include <string>
#include <boost/algorithm/string.hpp>
#include <RobotAPI/libraries/skills/core/Skill.h> #include <RobotAPI/libraries/skills/core/Skill.h>
#include "aronTreeWidget/visitors/AronTreeWidgetConverter.h" #include "aronTreeWidget/visitors/AronTreeWidgetConverter.h"
...@@ -142,6 +145,7 @@ namespace armarx ...@@ -142,6 +145,7 @@ namespace armarx
widget.doubleSpinBoxUpdateFreq->setMaximum(20); widget.doubleSpinBoxUpdateFreq->setMaximum(20);
widget.doubleSpinBoxUpdateFreq->setSingleStep(0.5); widget.doubleSpinBoxUpdateFreq->setSingleStep(0.5);
widget.doubleSpinBoxUpdateFreq->setSuffix(" Hz"); widget.doubleSpinBoxUpdateFreq->setSuffix(" Hz");
this->currentSkillSearch = QString("");
refreshSkillsResultTimer = new QTimer(this); refreshSkillsResultTimer = new QTimer(this);
updateTimerFrequency(); updateTimerFrequency();
...@@ -189,6 +193,15 @@ namespace armarx ...@@ -189,6 +193,15 @@ namespace armarx
&QPushButton::clicked, &QPushButton::clicked,
this, this,
&SkillManagerMonitorWidgetController::refreshSkills); &SkillManagerMonitorWidgetController::refreshSkills);
connect(widget.pushButtonSearch,
&QPushButton::clicked,
this,
&SkillManagerMonitorWidgetController::searchSkills);
// alternatively run search when pressing enter
connect(widget.lineEditSearch,
&QLineEdit::returnPressed,
this,
&SkillManagerMonitorWidgetController::searchSkills);
} }
SkillManagerMonitorWidgetController::~SkillManagerMonitorWidgetController() SkillManagerMonitorWidgetController::~SkillManagerMonitorWidgetController()
...@@ -235,6 +248,12 @@ namespace armarx ...@@ -235,6 +248,12 @@ namespace armarx
refreshSkillsResultTimer->setInterval(f); refreshSkillsResultTimer->setInterval(f);
} }
void
SkillManagerMonitorWidgetController::searchSkills()
{
this->currentSkillSearch = widget.lineEditSearch->text();
}
void void
SkillManagerMonitorWidgetController::refreshSkillsAndExecutions() SkillManagerMonitorWidgetController::refreshSkillsAndExecutions()
{ {
...@@ -245,6 +264,29 @@ namespace armarx ...@@ -245,6 +264,29 @@ namespace armarx
} }
} }
void
SkillManagerMonitorWidgetController::matchSkillUpdateToSearch(
std::map<skills::manager::dto::SkillID, skills::manager::dto::SkillDescription>& update)
{
if (this->currentSkillSearch.isEmpty())
{
return;
}
for (auto it = update.begin(); it != update.end();)
{
if (boost::algorithm::to_lower_copy(skills::SkillID::FromIce(it->first).skillName)
.find(this->currentSkillSearch.toLower().toStdString()))
{
update.erase(it++);
}
else
{
++it;
}
}
}
void void
SkillManagerMonitorWidgetController::refreshSkills() SkillManagerMonitorWidgetController::refreshSkills()
{ {
...@@ -261,6 +303,7 @@ namespace armarx ...@@ -261,6 +303,7 @@ namespace armarx
std::scoped_lock l(updateMutex); std::scoped_lock l(updateMutex);
auto managerSkills = memory->getSkillDescriptions(); auto managerSkills = memory->getSkillDescriptions();
this->matchSkillUpdateToSearch(managerSkills);
// completely recreate internal skills map // completely recreate internal skills map
skills.clear(); skills.clear();
......
...@@ -133,6 +133,8 @@ namespace armarx ...@@ -133,6 +133,8 @@ namespace armarx
void prepareAndRunMenu(const QPoint& pos); void prepareAndRunMenu(const QPoint& pos);
void rerunSkillWithSimilarParams(); void rerunSkillWithSimilarParams();
void searchSkills();
private: private:
aron::data::DictPtr getConfigAsAron() const; aron::data::DictPtr getConfigAsAron() const;
...@@ -143,6 +145,7 @@ namespace armarx ...@@ -143,6 +145,7 @@ namespace armarx
*/ */
Ui::SkillManagerMonitorWidget widget; Ui::SkillManagerMonitorWidget widget;
QPointer<SimpleConfigDialog> dialog; QPointer<SimpleConfigDialog> dialog;
QString currentSkillSearch;
std::string observerName = "SkillManager"; std::string observerName = "SkillManager";
skills::dti::SkillMemoryInterfacePrx memory = nullptr; skills::dti::SkillMemoryInterfacePrx memory = nullptr;
...@@ -172,6 +175,8 @@ namespace armarx ...@@ -172,6 +175,8 @@ namespace armarx
} selectedSkill; } selectedSkill;
void executeSkillWithParams(skills::SkillID skillId, aron::data::DictPtr params); void executeSkillWithParams(skills::SkillID skillId, aron::data::DictPtr params);
void matchSkillUpdateToSearch(std::map<skills::manager::dto::SkillID,
skills::manager::dto::SkillDescription>& update);
// Helper to get the treeWidgetItem easily // Helper to get the treeWidgetItem easily
QTreeWidgetItem* skillsArgumentsTreeWidgetItem = nullptr; QTreeWidgetItem* skillsArgumentsTreeWidgetItem = nullptr;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment