diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp index e4030a2d5ea0e4622a6d7dcbac74e69accedc2d3..8e8e8e655b2eaaf8d7512a55fb726a0ee02bd09e 100644 --- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp +++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp @@ -164,10 +164,10 @@ namespace armarx widget.groupBoxSkillExecutions->layout(), widget.groupBoxSkills, - widget.splitter_2->layout(), + widget.splitter_2, widget.groupBoxSkillDetails, - widget.splitter_2->layout(), + widget.splitter_2, widget.updateWidgetLayout, @@ -240,6 +240,7 @@ namespace armarx void SkillManagerMonitorWidgetController::connectGui() { + /* connect(this, &SkillManagerMonitorWidgetController::disconnect, this->mem_wrapper, @@ -248,6 +249,7 @@ namespace armarx &SkillManagerMonitorWidgetController::disconnect, this->viewer, &skills::gui::SkillMemoryGUI::disconnect); + */ } SkillManagerMonitorWidgetController::~SkillManagerMonitorWidgetController() diff --git a/source/RobotAPI/libraries/skills_gui/SkillMemoryGui.cpp b/source/RobotAPI/libraries/skills_gui/SkillMemoryGui.cpp index d32f0dd866c39aa49cd79dbc37c8911a6a44aa6a..faacc352f9eab07ec12df979071727448083e7ba 100644 --- a/source/RobotAPI/libraries/skills_gui/SkillMemoryGui.cpp +++ b/source/RobotAPI/libraries/skills_gui/SkillMemoryGui.cpp @@ -7,15 +7,21 @@ namespace armarx::skills::gui SkillMemoryGUI::SkillMemoryGUI(QTreeWidget* _skillExecutionTreeWidget, QLayout* _skillExecutionTreeWidgetParentLayout, QGroupBox* _skillGroupBox, - QLayout* _skillGroupBoxParentLayout, + QSplitter* _skillGroupBoxParentLayout, QGroupBox* _skillDetailGroupBox, - QLayout* _skillDetailGroupBoxParentLayout, + QSplitter* _skillDetailGroupBoxParentLayout, QHBoxLayout* _updateWidgetLayout, std::shared_ptr<SkillManagerWrapper> _memory) { Logging::setTag("SkillMemoryGui"); + // parameter check + ARMARX_CHECK(_skillExecutionTreeWidgetParentLayout); + ARMARX_CHECK(_skillGroupBoxParentLayout); + ARMARX_CHECK(_skillDetailGroupBoxParentLayout); + ARMARX_CHECK(_memory); + // setup memory this->memory = _memory; @@ -40,6 +46,12 @@ namespace armarx::skills::gui _skillDetailGroupBox, this->skillDetailGroupBox, _skillDetailGroupBoxParentLayout); } + void + SkillMemoryGUI::disconnect() + { + ARMARX_ERROR << "Not implemented"; + } + void SkillMemoryGUI::connectSignals() { diff --git a/source/RobotAPI/libraries/skills_gui/SkillMemoryGui.h b/source/RobotAPI/libraries/skills_gui/SkillMemoryGui.h index 5af80c8e3778ae99485caf03cf48394cf64a85ad..b0b6baf228bd50a4c73f0e2bc29f89ad6bb7aea2 100644 --- a/source/RobotAPI/libraries/skills_gui/SkillMemoryGui.h +++ b/source/RobotAPI/libraries/skills_gui/SkillMemoryGui.h @@ -2,6 +2,7 @@ #define SKILLMEMORYGUI_H #include <QHBoxLayout> +#include <QSplitter> #include <QTreeWidget> #include <QWidget> @@ -24,14 +25,17 @@ namespace armarx::skills::gui SkillMemoryGUI(QTreeWidget* _skillExecutionTreeWidget, QLayout* _skillExecutionTreeWidgetParentLayout, QGroupBox* _skillGroupBox, - QLayout* _skillGroupBoxParentLayout, + QSplitter* _skillGroupBoxParentLayout, QGroupBox* _skillDetailGroupBox, - QLayout* _skillDetailGroupBoxParentLayout, + QSplitter* _skillDetailGroupBoxParentLayout, QHBoxLayout* _updateWidgetLayout, std::shared_ptr<SkillManagerWrapper> _memory); public slots: + /** + * @brief Resets all widgets when disconnecting + */ void disconnect(); private: diff --git a/source/RobotAPI/libraries/skills_gui/gui_utils.h b/source/RobotAPI/libraries/skills_gui/gui_utils.h index 1b7b810ad31455a5a1957dce3fb0a56eba21bfe5..ea985c405bf075cbad0ec7f81472f5539f6c1b99 100644 --- a/source/RobotAPI/libraries/skills_gui/gui_utils.h +++ b/source/RobotAPI/libraries/skills_gui/gui_utils.h @@ -5,11 +5,12 @@ #include <QSpinBox> #include <QWidget> +#include "qsplitter.h" + class QLayout; class QSplitter; class QTreeWidgetItem; - namespace armarx::gui { /** @@ -30,10 +31,9 @@ namespace armarx::gui */ void clearItem(QTreeWidgetItem* item); - - template <class WidgetT> - void replaceWidget(WidgetT*& old, QWidget* neu, QLayout* parentLayout) + void + replaceWidget(WidgetT*& old, QWidget* neu, QLayout* parentLayout) { QLayoutItem* oldItem = parentLayout->replaceWidget(old, neu); if (oldItem) @@ -44,6 +44,20 @@ namespace armarx::gui } } + template <class WidgetT> + void + replaceWidget(WidgetT*& old, QWidget* neu, QSplitter* parentLayout) + { + int index = parentLayout->indexOf(old); + QWidget* oldItem = parentLayout->replaceWidget(index, neu); + if (oldItem) + { + delete oldItem; + delete old; + old = nullptr; + } + } + /** * @brief Let items in `layout` be children of a splitter. * @@ -71,4 +85,4 @@ namespace armarx::gui int numDigits; int base; }; -} +} // namespace armarx::gui