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

Added memory communicator base class

parent c60a6099
No related branches found
No related tags found
1 merge request!406Refactor skill memory GUI
Pipeline #16206 failed
......@@ -48,6 +48,9 @@ set(SOURCES
skill_executions/SkillExecutionTreeWidgetItem.cpp
memory/SkillMemoryProxy.cpp
memory/MemoryCommunicatorBase.cpp
skills/SkillTreeWidget.cpp
)
set(HEADERS
aron_tree_widget/visitors/AronTreeWidgetCreator.h
......@@ -77,6 +80,9 @@ set(HEADERS
skill_executions/SkillExecutionTreeWidgetItem.h
memory/SkillMemoryProxy.h
memory/MemoryCommunicatorBase.h
skills/SkillTreeWidget.h
)
armarx_gui_library("${LIB_NAME}" "${SOURCES}" "${GUI_MOC_HDRS}" "${GUI_UIS}" "" "${LIBRARIES}")
......
#include "MemoryCommunicatorBase.h"
#ifndef MEMORYCOMMUNICATOR_H
#define MEMORYCOMMUNICATOR_H
#include "SkillMemoryProxy.h"
namespace armarx::skills::gui
{
/*
* This base class holds a skill memory proxy.
*/
class MemoryCommunicatorBase
{
protected:
// We don't want to instantiate the base class
MemoryCommunicatorBase(std::shared_ptr<SkillMemoryProxy> _memory) : memory(_memory)
{
}
std::shared_ptr<SkillMemoryProxy> memory;
};
} // namespace armarx::skills::gui
#endif // MEMORYCOMMUNICATOR_H
......@@ -51,7 +51,7 @@ namespace armarx::skills::gui
/*
* Returns a snapshot, which contains the most current update from memory.
* Calling this function will not use an Ice call!
* Calling this function will *not* use an Ice call!
* Use this instead of holding the state in a widget.
*/
Snapshot& getLatestUpdate();
......@@ -65,7 +65,8 @@ namespace armarx::skills::gui
void fetchUpdates();
private:
skills::dti::SkillMemoryInterfacePrx* memory = nullptr;
mutable std::mutex updateMutex;
skills::dti::SkillMemoryInterfacePrx* memory;
Snapshot snapshot;
};
} // namespace armarx::skills::gui
......
......@@ -7,14 +7,16 @@
#include "RobotAPI/libraries/skills/core/SkillExecutionID.h"
#include "../memory/MemoryCommunicatorBase.h"
#include "SkillExecutionTreeWidgetItem.h"
namespace armarx::skills::gui
{
class SkillExecutionTreeWidget : public QTreeWidget
class SkillExecutionTreeWidget : public QTreeWidget, public MemoryCommunicatorBase
{
public:
SkillExecutionTreeWidget(QWidget* parent) : QTreeWidget(parent)
SkillExecutionTreeWidget(QWidget* parent, std::shared_ptr<SkillMemoryProxy> _memory) :
QTreeWidget(parent), MemoryCommunicatorBase(_memory)
{
}
......
......@@ -6,23 +6,20 @@
#include <RobotAPI/libraries/skills/core/SkillExecutionID.h>
#include <RobotAPI/libraries/skills/core/SkillStatusUpdate.h>
#include "../memory/MemoryCommunicatorBase.h"
#include "SkillExecutionTreeWidgetItem.h"
namespace armarx::skills::gui
{
class SkillExecutionTreeWidgetItem : QTreeWidgetItem
class SkillExecutionTreeWidgetItem : QTreeWidgetItem, public MemoryCommunicatorBase
{
public:
SkillExecutionTreeWidgetItem() = delete;
// After constructing an item, it must be manually inserted into the tree!
SkillExecutionTreeWidgetItem(const skills::SkillExecutionID& id) : executionId(id)
{
}
// When using this constructor, the new item will be appended to the bottom of the tree
SkillExecutionTreeWidgetItem(const skills::SkillExecutionID& id, QTreeWidget* parent) :
QTreeWidgetItem(parent), executionId(id)
SkillExecutionTreeWidgetItem(const skills::SkillExecutionID& id,
std::shared_ptr<SkillMemoryProxy> _memory) :
MemoryCommunicatorBase(_memory), executionId(id)
{
}
......@@ -36,8 +33,7 @@ namespace armarx::skills::gui
private slots:
void runContextMenu(const QPoint& pos);
private:
// private since we don't want to overwrite the executionId
protected:
skills::SkillExecutionID executionId;
};
} // namespace armarx::skills::gui
......
#include "SkillTreeWidget.h"
#ifndef ARMARX_SKILLS_GUI_SKILLTREEWIDGET_H
#define ARMARX_SKILLS_GUI_SKILLTREEWIDGET_H
#include <QTreeWidget>
#include "../memory/MemoryCommunicatorBase.h"
namespace armarx::skills::gui
{
class SkillTreeWidget : public QTreeWidget, public MemoryCommunicatorBase
{
public:
SkillTreeWidget(QWidget* parent, std::shared_ptr<SkillMemoryProxy> _memory) :
QTreeWidget(parent), MemoryCommunicatorBase(_memory)
{
}
};
} // namespace armarx::skills::gui
#endif // ARMARX_SKILLS_GUI_SKILLTREEWIDGET_H
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