DataView.h
Go to the documentation of this file.
1#pragma once
2
3#include <deque>
4#include <optional>
5#include <variant>
6
7#include <QGroupBox>
8#include <QMenu>
9#include <QWidget>
10
11#include <SimoxUtility/color/ColorMap.h>
12
14
18
19
20class QGroupBox;
21class QLabel;
22class QSplitter;
23class QTreeWidget;
24class QTreeWidgetItem;
25
27{
28 class ImageView;
31
32 class DataView : public QWidget, public armarx::Logging
33 {
34 Q_OBJECT
35
36 public:
37 DataView();
38
39 virtual ~DataView() = default;
40
41 void setStatusLabel(QLabel* statusLabel);
42 void setUseTypeInfo(bool enable);
43
44 virtual void update() = 0;
45
46 void addDataView(DataView* dataView);
47
48
49 signals:
50
51 void updated();
52 void useTypeInfoChanged(bool enable);
54 void actionsMenuRequested(const MemoryID& memoryID,
55 QWidget* parent,
56 const QPoint& pos,
57 QMenu* menu);
58
59 protected slots:
60
61 virtual void prepareTreeContextMenu(const QPoint& pos);
62
63 void showImageView(const aron::Path& elementPath);
64 void removeImageView();
65
66
67 private:
68 QAction* makeActionResolveMemoryID(const MemoryID& id);
69 std::vector<QAction*> makeActionsCopyDataToClipboard();
70 std::vector<QAction*> makeActionsCopyDataToClipboard(const aron::Path& path);
71 std::vector<QAction*> makeCopyActions(const aron::data::VariantPtr& element,
72 const aron::type::VariantPtr& elementType);
73
74
75 protected:
77 virtual void updateData(const aron::data::DictPtr& data,
78 aron::type::ObjectPtr aronType = nullptr);
79 virtual QMenu* buildActionsMenu(const QPoint& pos);
80 QAction* makeActionCopyMemoryID(const MemoryID& id);
82
83 void showErrorMessage(const std::string& message);
84
85 static std::optional<aron::Path> getElementPath(const QTreeWidgetItem* item);
86 std::optional<MemoryID> getElementMemoryID(const aron::Path& elementPath);
87
88 protected:
89 enum class Columns
90 {
91 KEY = 0,
92 VALUE = 1,
93 TYPE = 2,
94 };
95
97 bool useTypeInfo = true;
98
99 QSplitter* splitter;
100
101 QTreeWidget* tree;
102 QTreeWidgetItem* treeItemData;
103
104 class ImageView : public QGroupBox
105 {
106 public:
107 ImageView();
108
110
113
115
116 struct Limits
117 {
118 float min = std::numeric_limits<float>::max();
119 float max = -std::numeric_limits<float>::max();
120 };
121
122 /// Color map to visualize depth images.
123 simox::ColorMap cmap;
124 /// History over first n extremal depth values used to calibrate the colormap.
125 std::deque<Limits> limitsHistory;
126 /// In this context, n.
128 };
129
131
132 QLabel* statusLabel = nullptr;
133 };
134
135} // namespace armarx::armem::gui::instance
Base Class for all Logging classes.
Definition Logging.h:240
const size_t limitsHistoryMaxSize
In this context, n.
Definition DataView.h:127
QImage convertDepth32ToRGB32(const aron::data::NDArray &aron)
Definition DataView.cpp:489
simox::ColorMap cmap
Color map to visualize depth images.
Definition DataView.h:123
std::deque< Limits > limitsHistory
History over first n extremal depth values used to calibrate the colormap.
Definition DataView.h:125
void memoryIdResolutionRequested(const MemoryID &id)
void addDataView(DataView *dataView)
Definition DataView.cpp:79
QAction * makeActionCopyMemoryID(const MemoryID &id)
Definition DataView.cpp:232
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:101
virtual aron::data::DictPtr getData()=0
void showErrorMessage(const std::string &message)
Definition DataView.cpp:133
static std::optional< aron::Path > getElementPath(const QTreeWidgetItem *item)
Definition DataView.cpp:142
void updateImageView(const aron::data::DictPtr &data)
Definition DataView.cpp:576
void showImageView(const aron::Path &elementPath)
Definition DataView.cpp:458
aron::type::ObjectPtr currentAronType
Definition DataView.h:96
virtual QMenu * buildActionsMenu(const QPoint &pos)
Definition DataView.cpp:343
void setStatusLabel(QLabel *statusLabel)
Definition DataView.cpp:65
std::optional< MemoryID > getElementMemoryID(const aron::Path &elementPath)
Definition DataView.cpp:157
virtual void prepareTreeContextMenu(const QPoint &pos)
Definition DataView.cpp:443
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