DataView.h
Go to the documentation of this file.
1#pragma once
2
3#include <deque>
4#include <optional>
5#include <variant>
6#include <vector>
7
8#include <QGroupBox>
9#include <QMenu>
10#include <QWidget>
11
12#include <SimoxUtility/color/ColorMap.h>
13
15
20
21
22class QGroupBox;
23class QLabel;
24class QSplitter;
25class QTreeWidget;
26class QTreeWidgetItem;
27
29{
31}
32
34{
35 class ImageView;
38
39 class DataView : public QWidget, public armarx::Logging
40 {
41 Q_OBJECT
42
43 public:
44 DataView();
45
46 virtual ~DataView() = default;
47
48 void setStatusLabel(QLabel* statusLabel);
49 void setUseTypeInfo(bool enable);
51
52 virtual void update() = 0;
53
54 void addDataView(DataView* dataView);
55
56
57 signals:
58
59 void updated();
60 void useTypeInfoChanged(bool enable);
62 void actionsMenuRequested(const MemoryID& memoryID,
63 QWidget* parent,
64 const QPoint& pos,
65 QMenu* menu);
66
67 protected slots:
68
69 virtual void prepareTreeContextMenu(const QPoint& pos);
70
71 void showImageView(const aron::Path& elementPath);
72 void removeImageView();
73
74
75 private:
76 QAction* makeActionResolveMemoryID(const MemoryID& id);
77 std::vector<QAction*> makeActionsCopyDataToClipboard();
78 std::vector<QAction*> makeActionsCopyDataToClipboard(const aron::Path& path);
79 std::vector<QAction*> makeCopyActions(const aron::data::VariantPtr& element,
80 const aron::type::VariantPtr& elementType);
81
82 QAction* makeActionToggleLivePlot(const MemoryID& entityID,
83 const std::vector<aron::Path>& leafPaths);
84 static std::vector<aron::Path>
85 collectPlottableLeafPaths(const aron::data::VariantPtr& element);
86
87
88 protected:
90 virtual void updateData(const aron::data::DictPtr& data,
91 aron::type::ObjectPtr aronType = nullptr);
92 virtual QMenu* buildActionsMenu(const QPoint& pos);
93 virtual std::optional<MemoryID> getCurrentEntityID() const;
94 QAction* makeActionCopyMemoryID(const MemoryID& id);
96
98
99 void showErrorMessage(const std::string& message);
100
101 static std::optional<aron::Path> getElementPath(const QTreeWidgetItem* item);
102 std::optional<MemoryID> getElementMemoryID(const aron::Path& elementPath);
103
104 protected:
105 enum class Columns
106 {
107 KEY = 0,
108 VALUE = 1,
109 TYPE = 2,
110 };
111
113 bool useTypeInfo = true;
114
115 QSplitter* splitter;
116
117 QTreeWidget* tree;
118 QTreeWidgetItem* treeItemData;
119
120 class ImageView : public QGroupBox
121 {
122 public:
123 ImageView();
124
126
129
131
132 struct Limits
133 {
134 float min = std::numeric_limits<float>::max();
135 float max = -std::numeric_limits<float>::max();
136 };
137
138 /// Color map to visualize depth images.
139 simox::ColorMap cmap;
140 /// History over first n extremal depth values used to calibrate the colormap.
141 std::deque<Limits> limitsHistory;
142 /// In this context, n.
144 };
145
147
148 QLabel* statusLabel = nullptr;
149
151 };
152
153} // namespace armarx::armem::gui::instance
Base Class for all Logging classes.
Definition Logging.h:240
Streams selected memory values to the DebugObserver for live plotting.
const size_t limitsHistoryMaxSize
In this context, n.
Definition DataView.h:143
QImage convertDepth32ToRGB32(const aron::data::NDArray &aron)
Definition DataView.cpp:652
simox::ColorMap cmap
Color map to visualize depth images.
Definition DataView.h:139
std::deque< Limits > limitsHistory
History over first n extremal depth values used to calibrate the colormap.
Definition DataView.h:141
void memoryIdResolutionRequested(const MemoryID &id)
void setLivePlotController(controller::LivePlotController *controller)
Definition DataView.cpp:86
void addDataView(DataView *dataView)
Definition DataView.cpp:105
controller::LivePlotController * _livePlotController
Definition DataView.h:150
QAction * makeActionCopyMemoryID(const MemoryID &id)
Definition DataView.cpp:261
void actionsMenuRequested(const MemoryID &memoryID, QWidget *parent, const QPoint &pos, QMenu *menu)
virtual void updateData(const aron::data::DictPtr &data, aron::type::ObjectPtr aronType=nullptr)
Definition DataView.cpp:128
virtual aron::data::DictPtr getData()=0
void showErrorMessage(const std::string &message)
Definition DataView.cpp:162
virtual std::optional< MemoryID > getCurrentEntityID() const
Definition DataView.cpp:99
static std::optional< aron::Path > getElementPath(const QTreeWidgetItem *item)
Definition DataView.cpp:171
void updateImageView(const aron::data::DictPtr &data)
Definition DataView.cpp:739
void showImageView(const aron::Path &elementPath)
Definition DataView.cpp:621
aron::type::ObjectPtr currentAronType
Definition DataView.h:112
virtual QMenu * buildActionsMenu(const QPoint &pos)
Definition DataView.cpp:372
void setStatusLabel(QLabel *statusLabel)
Definition DataView.cpp:72
std::optional< MemoryID > getElementMemoryID(const aron::Path &elementPath)
Definition DataView.cpp:186
virtual void prepareTreeContextMenu(const QPoint &pos)
Definition DataView.cpp:606
A widget drawing an image in itself.
Definition ImageView.h:34
The Path class.
Definition Path.h:36
std::shared_ptr< Dict > DictPtr
Definition Dict.h:42
std::shared_ptr< Variant > VariantPtr
std::shared_ptr< Object > ObjectPtr
Definition Object.h:36
std::shared_ptr< Variant > VariantPtr