From 2c51ea3c969a61604af9da9bae66dcf8cc37e435 Mon Sep 17 00:00:00 2001
From: Peter Albrecht <albrecpe@gmail.com>
Date: Thu, 21 Dec 2023 20:05:34 +0100
Subject: [PATCH] Removed replaced legacy code

---
 .../SkillManagerMonitorWidget.ui              | 174 +----
 .../SkillManagerMonitorWidgetController.cpp   | 687 ------------------
 .../SkillManagerMonitorWidgetController.h     | 127 +---
 3 files changed, 3 insertions(+), 985 deletions(-)

diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidget.ui b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidget.ui
index 82569fa85..73bb1a8f7 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidget.ui
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidget.ui
@@ -97,44 +97,7 @@
        <property name="title">
         <string>Manager</string>
        </property>
-       <layout class="QGridLayout" name="gridLayout">
-        <item row="5" column="0" colspan="3">
-         <widget class="QTreeWidget" name="treeWidgetSkills">
-          <column>
-           <property name="text">
-            <string>Skill</string>
-           </property>
-          </column>
-          <column>
-           <property name="text">
-            <string>HasInputType</string>
-           </property>
-          </column>
-          <column>
-           <property name="text">
-            <string>HasOutputType</string>
-           </property>
-          </column>
-         </widget>
-        </item>
-        <item row="4" column="1">
-         <widget class="QPushButton" name="pushButtonSearch">
-          <property name="text">
-           <string>Search</string>
-          </property>
-         </widget>
-        </item>
-        <item row="4" column="0">
-         <widget class="QLineEdit" name="lineEditSearch">
-          <property name="text">
-           <string/>
-          </property>
-          <property name="placeholderText">
-           <string>Search...</string>
-          </property>
-         </widget>
-        </item>
-       </layout>
+       <layout class="QGridLayout" name="gridLayout"/>
       </widget>
       <widget class="QGroupBox" name="groupBoxSkillDetails">
        <property name="enabled">
@@ -149,140 +112,7 @@
        <property name="title">
         <string>Skill Details</string>
        </property>
-       <layout class="QVBoxLayout" name="verticalLayout">
-        <item>
-         <widget class="QSplitter" name="splitter_2">
-          <property name="enabled">
-           <bool>true</bool>
-          </property>
-          <property name="sizePolicy">
-           <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-            <horstretch>0</horstretch>
-            <verstretch>0</verstretch>
-           </sizepolicy>
-          </property>
-          <property name="orientation">
-           <enum>Qt::Vertical</enum>
-          </property>
-          <property name="childrenCollapsible">
-           <bool>false</bool>
-          </property>
-          <widget class="QWidget" name="groupBoxSkillDetailsTop" native="true">
-           <layout class="QVBoxLayout" name="verticalLayout_2">
-            <property name="leftMargin">
-             <number>0</number>
-            </property>
-            <property name="topMargin">
-             <number>0</number>
-            </property>
-            <property name="rightMargin">
-             <number>0</number>
-            </property>
-            <property name="bottomMargin">
-             <number>0</number>
-            </property>
-            <item>
-             <layout class="QGridLayout" name="gridLayout_5">
-              <item row="0" column="0">
-               <widget class="QPushButton" name="pushButtonPaste">
-                <property name="text">
-                 <string>Set args from clipboard</string>
-                </property>
-               </widget>
-              </item>
-              <item row="0" column="3">
-               <widget class="QPushButton" name="pushButtonReset">
-                <property name="text">
-                 <string>Reset args to profile</string>
-                </property>
-               </widget>
-              </item>
-              <item row="1" column="0" colspan="4">
-               <widget class="QComboBox" name="comboBoxProfiles">
-                <item>
-                 <property name="text">
-                  <string>&lt;No Profile selected. Using root&gt;</string>
-                 </property>
-                </item>
-               </widget>
-              </item>
-              <item row="0" column="1">
-               <widget class="QPushButton" name="pushButtonCopy">
-                <property name="text">
-                 <string>Copy args to clipboard</string>
-                </property>
-               </widget>
-              </item>
-              <item row="0" column="2">
-               <widget class="QLabel" name="label_2">
-                <property name="text">
-                 <string/>
-                </property>
-               </widget>
-              </item>
-             </layout>
-            </item>
-            <item>
-             <widget class="QWidget" name="skillDescription" native="true"/>
-            </item>
-           </layout>
-          </widget>
-          <widget class="QWidget" name="groupBoxSkillDetailsBottom" native="true">
-           <layout class="QVBoxLayout" name="verticalLayout_3">
-            <property name="leftMargin">
-             <number>0</number>
-            </property>
-            <property name="topMargin">
-             <number>0</number>
-            </property>
-            <property name="rightMargin">
-             <number>0</number>
-            </property>
-            <property name="bottomMargin">
-             <number>0</number>
-            </property>
-            <item>
-             <widget class="QTreeWidget" name="treeWidgetSkillDetails">
-              <property name="contextMenuPolicy">
-               <enum>Qt::CustomContextMenu</enum>
-              </property>
-              <property name="editTriggers">
-               <set>QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed</set>
-              </property>
-              <column>
-               <property name="text">
-                <string>Key</string>
-               </property>
-              </column>
-              <column>
-               <property name="text">
-                <string>Value</string>
-               </property>
-              </column>
-              <column>
-               <property name="text">
-                <string>Type</string>
-               </property>
-              </column>
-              <column>
-               <property name="text">
-                <string>defaultValue (hidden in GUI)</string>
-               </property>
-              </column>
-             </widget>
-            </item>
-            <item>
-             <widget class="QPushButton" name="pushButtonExecuteSkill">
-              <property name="text">
-               <string>Request Execution</string>
-              </property>
-             </widget>
-            </item>
-           </layout>
-          </widget>
-         </widget>
-        </item>
-       </layout>
+       <layout class="QVBoxLayout" name="verticalLayout"/>
       </widget>
      </widget>
     </widget>
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
index 39c7763ac..909f514ba 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
@@ -58,8 +58,6 @@
 //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)
@@ -95,62 +93,6 @@ namespace armarx
 // Others
 namespace armarx
 {
-    /*
-    void
-    SkillManagerMonitorWidgetController::prepareAndRunMenu(const QPoint& pos)
-    {
-        QMenu* menu = new QMenu();
-
-        // Stop skill
-        QAction* stopSkillAction = new QAction("Stop execution", 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,
-        const skills::SkillExecutionID& needle)
-    {
-        if (!haystack)
-        {
-            return nullptr;
-        }
-
-        if (needle == haystack->executionId)
-        {
-            return haystack;
-        }
-        for (int i = 0; i < haystack->childCount(); ++i)
-        {
-            auto el = static_cast<SkillExecutionInfoTreeWidgetItem*>(haystack->child(i));
-            return SkillExecutionInfoTreeWidgetItem::SearchRecursiveForMatch(el, needle);
-        }
-        return nullptr;
-    }
-*/
-
     SkillManagerMonitorWidgetController::SkillManagerMonitorWidgetController()
     {
 
@@ -171,77 +113,11 @@ namespace armarx
 
             widget.updateWidgetLayout,
 
-            widget.skillDescription,
-            widget.skillDescription->parentWidget()->layout(),
-
             widget.stopAllLayout,
 
             this->mem_wrapper);
 
         connectSignals();
-        /*
-        this->updateWidget = new PeriodicUpdateWidget(2.0, 60);
-        widget.updateWidgetLayout->insertWidget(0, updateWidget);
-
-        this->stopAllButton = new QPushButton("Stop all executions");
-        widget.stopAllLayout->addWidget(stopAllButton);
-
-
-        skillDescriptionWidget = new SkillDescriptionWidget();
-        widget.skillDescription->parentWidget()->layout()->replaceWidget(widget.skillDescription,
-                                                                         skillDescriptionWidget);
-        widget.skillDescription = skillDescriptionWidget;
-
-
-
-        connect(this->stopAllButton,
-                &QPushButton::clicked,
-                this,
-                &SkillManagerMonitorWidgetController::stopAllExecutions);
-        connect(widget.treeWidgetSkillExecutions,
-                &QTreeWidget::customContextMenuRequested,
-                this,
-                &SkillManagerMonitorWidgetController::prepareAndRunMenu);
-
-        connect(updateWidget,
-                &armarx::PeriodicUpdateWidget::update,
-                this,
-                &SkillManagerMonitorWidgetController::refreshSkillsAndExecutions);
-
-        connect(widget.pushButtonCopy,
-                &QPushButton::clicked,
-                this,
-                &SkillManagerMonitorWidgetController::copyCurrentConfig);
-        connect(widget.pushButtonPaste,
-                &QPushButton::clicked,
-                this,
-                &SkillManagerMonitorWidgetController::pasteCurrentConfig);
-
-        connect(widget.pushButtonExecuteSkill,
-                &QPushButton::clicked,
-                this,
-                &SkillManagerMonitorWidgetController::executeSelectedSkill);
-
-        connect(widget.treeWidgetSkills,
-                &QTreeWidget::currentItemChanged,
-                this,
-                &SkillManagerMonitorWidgetController::skillSelectionChanged);
-
-        connect(widget.treeWidgetSkillExecutions,
-                &QTreeWidget::currentItemChanged,
-                this,
-                &SkillManagerMonitorWidgetController::skillExecutionSelectionChanged);
-
-        connect(widget.pushButtonSearch,
-                &QPushButton::clicked,
-                this,
-                &SkillManagerMonitorWidgetController::searchSkills);
-        // alternatively run search when pressing enter
-        connect(widget.lineEditSearch,
-                &QLineEdit::returnPressed,
-                this,
-                &SkillManagerMonitorWidgetController::searchSkills);
-*/
     }
 
     void
@@ -292,567 +168,4 @@ namespace armarx
         emit disconnectGui();
     }
 
-    /*
-    void
-    SkillManagerMonitorWidgetController::searchSkills()
-    {
-        this->currentSkillSearch = widget.lineEditSearch->text();
-    }
-
-    void
-    SkillManagerMonitorWidgetController::refreshSkillsAndExecutions()
-    {
-        refreshSkills();
-        refreshExecutions();
-    }
-
-    void
-    SkillManagerMonitorWidgetController::matchSkillUpdateToSearch(
-        std::map<skills::manager::dto::SkillID, skills::manager::dto::SkillDescription>& update)
-    {
-
-        if (this->currentSkillSearch.isEmpty())
-        {
-            return;
-        }
-
-        // TODO: whitespace to wildcard
-
-        std::string search = this->currentSkillSearch.toLower().toStdString();
-        std::transform(search.begin(), search.end(), search.begin(),
-                       [](unsigned char c){ return std::tolower(c); });
-
-        for (auto it = update.begin(); it != update.end();)
-        {
-            if (simox::alg::to_lower(skills::SkillID::FromIce(it->first).skillName)
-                    .find(this->currentSkillSearch.toLower().toStdString()))
-            {
-                it = update.erase(it);
-            }
-            else
-            {
-                ++it;
-            }
-        }
-
-    }
-
-    void
-    SkillManagerMonitorWidgetController::refreshSkills()
-    {
-        if (!memory)
-        {
-            // check if null
-            return;
-        }
-
-
-        // remove non-existing ones
-        try
-        {
-            std::scoped_lock l(updateMutex);
-
-            auto managerSkills = memory->getSkillDescriptions();
-            this->matchSkillUpdateToSearch(managerSkills);
-
-            // completely recreate internal skills map
-            skills.clear();
-            for (const auto& [sid, desc] : managerSkills)
-            {
-                auto description = skills::SkillDescription::FromIce(desc);
-                auto skillId = skills::SkillID::FromIce(sid);
-                auto providerId = skillId.providerId.value_or(
-                    skills::ProviderID{.providerName = "UNKNOWN PROVIDER NAME"});
-
-                ARMARX_CHECK(skillId.isFullySpecified());
-
-                auto& providedSkillsMap = skills[providerId]; // create new if not existent
-                providedSkillsMap.insert({skillId, description});
-            }
-
-            // update tree view. Remove non-existing elements
-            int i = 0;
-            while (i < widget.treeWidgetSkills->topLevelItemCount())
-            {
-                auto* providerItem = widget.treeWidgetSkills->topLevelItem(i);
-                auto providerName = providerItem->text(0).toStdString();
-                skills::ProviderID providerId{.providerName = providerName};
-
-                if (skills.find(providerId) == skills.end())
-                {
-                    providerItem = nullptr; // reset
-                    auto remove = widget.treeWidgetSkills->takeTopLevelItem(i);
-                    delete remove;
-                    continue;
-                }
-
-                ++i;
-                auto& providedSkills = skills.at(providerId);
-
-                int j = 0;
-                while (j < providerItem->childCount())
-                {
-                    auto* skillItem = providerItem->child(j);
-                    auto skillName = skillItem->text(0).toStdString();
-
-                    skills::SkillID skillId{.providerId =
-                                                skills::ProviderID{.providerName = providerName},
-                                            .skillName = skillName};
-
-                    if (providedSkills.find(skillId) == providedSkills.end())
-                    {
-                        skillItem = nullptr;
-                        auto remove = providerItem->takeChild(j);
-                        delete remove;
-                        continue;
-                    }
-
-                    ++j;
-                }
-            }
-
-            // update tree view. Add new elements
-            for (const auto& [providerId, providedSkills] : skills)
-            {
-                QTreeWidgetItem* providerItem = nullptr;
-                for (int i = 0; i < widget.treeWidgetSkills->topLevelItemCount(); ++i)
-                {
-                    auto el = widget.treeWidgetSkills->topLevelItem(i);
-                    auto providerName = el->text(0).toStdString();
-                    skills::ProviderID elProviderId{.providerName = providerName};
-
-                    if (providerId == elProviderId)
-                    {
-                        providerItem = el;
-                        break;
-                    }
-                }
-
-                if (!providerItem)
-                {
-                    providerItem = new QTreeWidgetItem(widget.treeWidgetSkills);
-                    providerItem->setText(0, QString::fromStdString(providerId.providerName));
-                }
-
-                for (const auto& [skillId, skill] : providedSkills)
-                {
-                    QTreeWidgetItem* skillItem = nullptr;
-                    for (int i = 0; i < providerItem->childCount(); ++i)
-                    {
-                        auto el = providerItem->child(i);
-                        auto skillName = el->text(0).toStdString();
-                        skills::SkillID elSkillId{providerId, skillName};
-
-                        if (skillId == elSkillId)
-                        {
-                            skillItem = el;
-                            break;
-                        }
-                    }
-
-                    if (!skillItem)
-                    {
-                        skillItem = new SkillInfoTreeWidgetItem(skill, providerItem);
-                        skillItem->setText(0, QString::fromStdString(skillId.skillName));
-                    }
-                }
-            }
-        }
-        catch (...)
-        {
-            // perhaps the manager died during the method?
-        }
-    }
-
-    void
-    SkillManagerMonitorWidgetController::refreshExecutions()
-    {
-        static std::map<skills::SkillStatus, std::string> ExecutionStatus2String = {
-            // Main states
-            {skills::SkillStatus::Constructing, "Constructing"},
-            {skills::SkillStatus::Initializing, "Initializing"},
-            {skills::SkillStatus::Preparing, "Preparing"},
-            {skills::SkillStatus::Running, "Running"},
-
-            // Terminating
-            {skills::SkillStatus::Aborted, "Aborted"},
-            {skills::SkillStatus::Failed, "Failed"},
-            {skills::SkillStatus::Succeeded, "Succeeded"}};
-
-        if (!memory)
-        {
-            // check if null
-            return;
-        }
-
-        try
-        {
-            std::scoped_lock l(updateMutex);
-
-            auto currentManagerStatuses = memory->getSkillExecutionStatuses();
-
-            for (const auto& [k, v] : currentManagerStatuses)
-            {
-                auto executionId = skills::SkillExecutionID::FromIce(k);
-                auto statusUpdate = skills::SkillStatusUpdate::FromIce(v);
-
-                // update maps
-                skillStatusUpdates[executionId] = statusUpdate;
-                //skillExecutionParams.insert_or_assign(executionId,
-                //                                      statusUpdate.usedParameterization);
-
-                SkillExecutionInfoTreeWidgetItem* found = nullptr;
-                for (int i = 0; i < widget.treeWidgetSkillExecutions->topLevelItemCount(); ++i)
-                {
-                    auto c = static_cast<SkillExecutionInfoTreeWidgetItem*>(
-                        widget.treeWidgetSkillExecutions->topLevelItem(i));
-
-                    found =
-                        SkillExecutionInfoTreeWidgetItem::SearchRecursiveForMatch(c, executionId);
-
-                    if (found)
-                    {
-                        for (std::pair<skills::SkillStatus, std::string> i : ExecutionStatus2String)
-                        {
-                            if (i.first == statusUpdate.status)
-                            {
-                                found->setText(3, QString::fromStdString(i.second));
-                            }
-                        }
-
-                        break;
-                    }
-                }
-
-                if (!found)
-                {
-                    // TODO: Sort to executor!
-                    auto item = new SkillExecutionInfoTreeWidgetItem(executionId);
-
-                    item->setText(0,
-                                  QString::fromStdString(
-                                      executionId.executionStartedTime.toDateTimeString()));
-                    item->setText(1, QString::fromStdString(executionId.executorName));
-                    item->setText(2, QString::fromStdString(executionId.skillId.toString()));
-                    for (std::pair<skills::SkillStatus, std::string> i : ExecutionStatus2String)
-                    {
-                        if (i.first == statusUpdate.status)
-                        {
-                            item->setText(3, QString::fromStdString(i.second));
-                        }
-                    }
-
-                    widget.treeWidgetSkillExecutions->insertTopLevelItem(0, item);
-                }
-            }
-        }
-        catch (...)
-        {
-            // perhaps the manager died during the method?
-        }
-    }
-
-    void
-    SkillManagerMonitorWidgetController::executeSelectedSkill()
-    {
-        auto data = getConfigAsAron();
-        executeSkillWithParams(selectedSkill.skillId, data);
-    }
-
-    void
-    SkillManagerMonitorWidgetController::rerunSkillWithSimilarParams()
-    {
-        // TODO: disabled until skillparameterization is replaced
-        //skills::SkillParameterization selectedExecutionParams =
-        //skillExecutionParams.at(selectedSkill.skillExecutionId);
-        //executeSkillWithParams(selectedSkill.skillExecutionId.skillId,
-        //                       selectedExecutionParams.parameterization);
-
-        executeSelectedSkill();
-    }
-
-
-    void
-    SkillManagerMonitorWidgetController::executeSkillWithParams(skills::SkillID skillId,
-                                                                aron::data::DictPtr params)
-    {
-        std::scoped_lock l(updateMutex);
-
-        auto providerId = skillId.providerId;
-        if (!providerId.has_value())
-        {
-            return;
-        }
-        const auto& skillDescriptions = skills.at(providerId.value());
-        if (skillDescriptions.find(skillId) == skillDescriptions.end())
-        {
-            return;
-        }
-
-        char hostname[HOST_NAME_MAX];
-        gethostname(hostname, HOST_NAME_MAX);
-
-        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 << ".";
-        // Note that we execute the skill in a seperate thread so that the GUI thread does not freeze.
-        memory->begin_executeSkill(req.toManagerIce());
-    }
-
-    void
-    SkillManagerMonitorWidgetController::stopAllExecutions()
-    {
-        QTreeWidget const* tree = widget.treeWidgetSkillExecutions;
-
-        int const max_retries = 3;
-        int left_retries = max_retries;
-        bool retry = false;
-
-        do
-        {
-            retry = false;
-
-            for (ssize_t i = 0; i < tree->topLevelItemCount(); ++i)
-            {
-                SkillExecutionInfoTreeWidgetItem const* item =
-                    dynamic_cast<SkillExecutionInfoTreeWidgetItem*>(
-                        widget.treeWidgetSkillExecutions->topLevelItem(i));
-
-                if (not item)
-                {
-                    // At this point, dynamic-casting failed and we don't know anything about the
-                    // type.
-                    ARMARX_ERROR << "Cannot stop unknown skill.";
-                    retry = true;
-                    continue;
-                }
-
-                try
-                {
-                    ARMARX_INFO << "Aborting skill '" << item->executionId.skillId.skillName
-                                << "'...";
-                    memory->abortSkillAsync(item->executionId.toManagerIce());
-                }
-                catch (Ice::Exception const& e)
-                {
-                    retry = true;
-                    ARMARX_ERROR << "Unhandeled Ice exception while aborting skill '"
-                                 << item->executionId.skillId.skillName << "'.";
-                }
-                catch (...)
-                {
-                    retry = true;
-                    ARMARX_ERROR << "Unhandled error while aborting skill '"
-                                 << item->executionId.skillId.skillName << "'.";
-                }
-            }
-
-            if (retry)
-            {
-                left_retries -= 1;
-
-                if (left_retries > 0)
-                {
-                    ARMARX_WARNING << "There where errors aborting skills.  Retrying...";
-                }
-                else
-                {
-                    ARMARX_ERROR << "Couldn't abort all skills after " << max_retries
-                                 << " tries.  Giving up.";
-                    retry = false;
-                }
-            }
-        } while (retry);
-    }
-
-    void
-    SkillManagerMonitorWidgetController::stopSkill()
-    {
-        std::scoped_lock l(updateMutex);
-
-        if (selectedSkill.skillExecutionId.skillId.fullySpecified())
-        {
-            ARMARX_INFO << "The user requested to stop a skill, which was not fully specified!";
-            return;
-        }
-
-        const auto& skillDescriptions = skills.at(*selectedSkill.skillId.providerId);
-        if (!skillDescriptions.count(selectedSkill.skillId.skillName))
-        {
-            return;
-        }
-
-        ARMARX_INFO << "Stopping skill from GUI: " << selectedSkill.skillExecutionId.toString();
-
-        memory->abortSkillAsync(selectedSkill.skillExecutionId.toManagerIce());
-    }
-
-    void
-    SkillManagerMonitorWidgetController::skillExecutionSelectionChanged(QTreeWidgetItem* current,
-                                                                        QTreeWidgetItem*)
-    {
-        std::scoped_lock l(updateMutex);
-        widget.groupBoxSkillExecutions->setEnabled(false);
-
-        if (!current)
-        {
-            // gui has died?
-            return;
-        }
-
-        auto c = static_cast<SkillExecutionInfoTreeWidgetItem*>(current);
-        selectedSkill.skillExecutionId = c->executionId;
-        widget.groupBoxSkillExecutions->setEnabled(true);
-    }
-
-    void
-    SkillManagerMonitorWidgetController::skillSelectionChanged(QTreeWidgetItem* current,
-                                                               QTreeWidgetItem*)
-    {
-        std::scoped_lock l(updateMutex);
-        widget.groupBoxSkillDetails->setEnabled(false);
-
-        if (!current)
-        {
-            // gui has died?
-            return;
-        }
-
-        if (!current->parent())
-        {
-            // no parent available. Perhaps provider clicked? Reset selected skill.
-            selectedSkill.skillId = SelectedSkill::UNK_SKILL_ID;
-            return;
-        }
-
-        auto c = static_cast<SkillInfoTreeWidgetItem*>(current);
-        auto skillDescription = c->skillDescription;
-
-
-        if (selectedSkill.skillId == skillDescription.skillId)
-        {
-            // no change
-            return;
-        }
-
-        selectedSkill.skillId = skillDescription.skillId;
-
-        // setup groupBox
-        widget.groupBoxSkillDetails->setTitle(
-            QString::fromStdString(selectedSkill.skillId.toString()));
-        widget.groupBoxSkillDetails->setEnabled(true);
-
-        // setup table view
-        widget.treeWidgetSkillDetails->clear();
-        aronTreeWidgetController = nullptr;
-        skillsArgumentsTreeWidgetItem = nullptr;
-
-        // We assert that the skill exists
-        ARMARX_CHECK(skills.count(*selectedSkill.skillId.providerId) > 0);
-        ARMARX_CHECK(skills.at(*selectedSkill.skillId.providerId).count(selectedSkill.skillId) > 0);
-        auto skillDesc = skills.at(*selectedSkill.skillId.providerId).at(selectedSkill.skillId);
-
-        {
-            auto it = new QTreeWidgetItem(widget.treeWidgetSkillDetails,
-                                          {QString::fromStdString("Name"),
-                                           QString::fromStdString(skillDesc.skillId.skillName)});
-            widget.treeWidgetSkillDetails->addTopLevelItem(it);
-        }
-
-        {
-            auto it = new QTreeWidgetItem(widget.treeWidgetSkillDetails,
-                                          {QString::fromStdString("Description"),
-                                           QString::fromStdString(skillDesc.description)});
-            widget.treeWidgetSkillDetails->addTopLevelItem(it);
-        }
-
-        {
-            auto it = new QTreeWidgetItem(
-                widget.treeWidgetSkillDetails,
-                {QString::fromStdString("Timeout"),
-                 QString::fromStdString(std::to_string(skillDesc.timeout.toMilliSeconds())) +
-                     " ms"});
-            widget.treeWidgetSkillDetails->addTopLevelItem(it);
-        }
-
-        // select root profile
-        widget.comboBoxProfiles->setCurrentIndex(0);
-
-        // remove any profile
-        while (widget.comboBoxProfiles->count() > 1)
-        {
-            widget.comboBoxProfiles->removeItem(1);
-        }
-
-        // add new profiles for this skill
-        // TODO: Where stored?
-
-        skillsArgumentsTreeWidgetItem = new QTreeWidgetItem(widget.treeWidgetSkillDetails,
-                                                            {QString::fromStdString("Arguments")});
-        auto aron_args = skillDesc.parametersType;
-        auto default_args_of_profile = skillDesc.rootProfileDefaults;
-
-        aronTreeWidgetController =
-            std::make_shared<AronTreeWidgetController>(widget.treeWidgetSkillDetails,
-                                                       skillsArgumentsTreeWidgetItem,
-                                                       aron_args,
-                                                       default_args_of_profile);
-
-        // automatically expand args
-        skillsArgumentsTreeWidgetItem->setExpanded(true);
-    }
-
-    aron::data::DictPtr
-    SkillManagerMonitorWidgetController::getConfigAsAron() const
-    {
-        // create argument aron (if there is an accepted type set)
-        if (aronTreeWidgetController)
-        {
-            return aronTreeWidgetController->convertToAron();
-        }
-        return nullptr;
-    }
-
-    void
-    SkillManagerMonitorWidgetController::copyCurrentConfig()
-    {
-        auto data = getConfigAsAron();
-        if (!data)
-        {
-            return;
-        }
-
-        auto json = aron::data::converter::AronNlohmannJSONConverter::ConvertToNlohmannJSON(data);
-        QClipboard* clipboard = QApplication::clipboard();
-        clipboard->setText(QString::fromStdString(json.dump(2)));
-    }
-
-    void
-    SkillManagerMonitorWidgetController::pasteCurrentConfig()
-    {
-        QClipboard* clipboard = QApplication::clipboard();
-        std::string s = clipboard->text().toStdString();
-        nlohmann::json json = nlohmann::json::parse(s);
-        auto data =
-            aron::data::converter::AronNlohmannJSONConverter::ConvertFromNlohmannJSONObject(json);
-
-        if (!aronTreeWidgetController)
-        {
-            return;
-        }
-
-        aronTreeWidgetController->setFromAron(data);
-    }
-
-    void
-    SkillManagerMonitorWidgetController::resetCurrentConfig()
-    {
-        // TODO
-    }
-*/
-
 } // namespace armarx
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h
index 800bd6b22..ca80a304b 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h
@@ -33,7 +33,6 @@
 #include <ArmarXGui/libraries/ArmarXGuiBase/ArmarXGuiPlugin.h>
 #include <ArmarXGui/libraries/SimpleConfigDialog/SimpleConfigDialog.h>
 
-#include "RobotAPI/gui-plugins/SkillManagerPlugin/PeriodicUpdateWidget.h"
 #include <RobotAPI/gui-plugins/SkillManagerPlugin/ui_SkillManagerMonitorWidget.h>
 #include <RobotAPI/interface/skills/SkillMemoryInterface.h>
 #include <RobotAPI/libraries/aron/core/data/variant/All.h>
@@ -44,56 +43,8 @@
 #include <RobotAPI/libraries/skills/core/SkillStatusUpdate.h>
 #include <RobotAPI/libraries/skills_gui/SkillMemoryGui.h>
 
-#include "aronTreeWidget/AronTreeWidgetController.h"
-
 namespace armarx
 {
-    class SkillDescriptionWidget;
-
-    class SkillInfoTreeWidgetItem : public QTreeWidgetItem
-    {
-    public:
-        SkillInfoTreeWidgetItem(const skills::SkillDescription& desc, QTreeWidgetItem* parent) :
-            QTreeWidgetItem(parent), skillDescription(desc)
-        {
-        }
-
-        SkillInfoTreeWidgetItem(const skills::SkillDescription& desc, QTreeWidget* parent) :
-            QTreeWidgetItem(parent), skillDescription(desc)
-        {
-        }
-
-        skills::SkillDescription skillDescription;
-    };
-
-    class SkillExecutionInfoTreeWidgetItem : public QTreeWidgetItem
-    {
-        //Q_OBJECT
-    public:
-        SkillExecutionInfoTreeWidgetItem(const skills::SkillExecutionID& id,
-                                         QTreeWidgetItem* parent) :
-            QTreeWidgetItem(parent), executionId(id)
-        {
-        }
-
-        // After constructing an item, it must be manually inserted into the tree!
-        SkillExecutionInfoTreeWidgetItem(const skills::SkillExecutionID& id) : executionId(id)
-        {
-        }
-
-        // When using this constructor, the new item will be appended to the bottom of the tree!
-        SkillExecutionInfoTreeWidgetItem(const skills::SkillExecutionID& id, QTreeWidget* parent) :
-            QTreeWidgetItem(parent), executionId(id)
-        {
-        }
-
-        static SkillExecutionInfoTreeWidgetItem*
-        SearchRecursiveForMatch(SkillExecutionInfoTreeWidgetItem* el,
-                                const skills::SkillExecutionID& needle);
-
-        skills::SkillExecutionID executionId;
-    };
-
     class ARMARXCOMPONENT_IMPORT_EXPORT SkillManagerMonitorWidgetController :
         public armarx::ArmarXComponentWidgetControllerTemplate<SkillManagerMonitorWidgetController>
     {
@@ -128,93 +79,17 @@ namespace armarx
         void disconnectGui();
         void connectGui(std::string observerName);
 
-    private slots:
-        /*
-        void skillSelectionChanged(QTreeWidgetItem* current, QTreeWidgetItem* previous);
-        void skillExecutionSelectionChanged(QTreeWidgetItem* current, QTreeWidgetItem* previous);
-
-        void stopAllExecutions();
-        void stopSkill(); // TODO: rename
-        void executeSelectedSkill();
-
-        void refreshSkills();
-        void refreshExecutions();
-        void refreshSkillsAndExecutions();
-
-        void copyCurrentConfig();
-        void pasteCurrentConfig();
-        void resetCurrentConfig();
-
-        void prepareAndRunMenu(const QPoint& pos);
-        void rerunSkillWithSimilarParams();
-
-        void searchSkills();
-*/
-
-
-    private:
-        aron::data::DictPtr getConfigAsAron() const;
-
     private:
-        /**
-         * Widget Form
-         */
+        armarx::skills::manager::dti::SkillManagerInterfacePrx memory;
         Ui::SkillManagerMonitorWidget widget;
         std::unique_ptr<armarx::skills::gui::SkillMemoryGUI> viewer = nullptr;
         QPointer<SimpleConfigDialog> dialog;
-        QString currentSkillSearch;
 
         std::string observerName = "SkillManager";
-        skills::manager::dti::SkillManagerInterfacePrx memory = nullptr;
         std::shared_ptr<skills::gui::SkillManagerWrapper> mem_wrapper = nullptr;
 
-        // Data taken from observer (snapshot of it)
-        mutable std::mutex updateMutex;
-        std::map<skills::ProviderID, std::map<skills::SkillID, skills::SkillDescription>> skills =
-            {};
-        std::map<skills::SkillExecutionID, skills::SkillStatusUpdate> skillStatusUpdates = {};
-
-        // store copies (!) of skill descriptions
-        //std::map<skills::SkillExecutionID, skills::SkillParameterization> skillExecutionParams = {};
-
-        // User Input
-        struct SelectedSkill
-        {
-            static const skills::SkillID UNK_SKILL_ID;
-
-            skills::SkillID skillId;
-            skills::SkillExecutionID skillExecutionId;
-
-            // make default constructable
-            SelectedSkill() :
-                skillId(UNK_SKILL_ID),
-                skillExecutionId{.skillId = UNK_SKILL_ID,
-                                 .executorName = skills::SkillExecutionID::UNKNOWN,
-                                 .executionStartedTime = armarx::core::time::DateTime::Invalid()}
-            {
-            }
-        }
-
-        selectedSkill;
-
-        /*
-        void executeSkillWithParams(skills::SkillID skillId, aron::data::DictPtr params);
-        void matchSkillUpdateToSearch(std::map<skills::manager::dto::SkillID,
-                                               skills::manager::dto::SkillDescription>& update);
-*/
-
         void connectSignals();
 
-
-        PeriodicUpdateWidget* updateWidget =
-            nullptr; // TODO: this should not be held by the controller!
-        QPushButton* stopAllButton = nullptr; // also this. Oh well...
-
-        // Helper to get the treeWidgetItem easily
-        QTreeWidgetItem* skillsArgumentsTreeWidgetItem = nullptr;
-        AronTreeWidgetControllerPtr aronTreeWidgetController = nullptr;
-        SkillDescriptionWidget* skillDescriptionWidget = nullptr;
-
         // connected flag
         std::atomic_bool connected = false;
     };
-- 
GitLab