DataTreeBuilder.cpp
Go to the documentation of this file.
1 #include "DataTreeBuilder.h"
2 
3 #include <QTreeWidgetItem>
4 
6 
8 {
9 
11  {
12  }
13 
14  void
15  DataTreeBuilder::updateTree(QTreeWidgetItem* parent, const aron::data::DictPtr& data)
16  {
17  DictBuilder builder = getDictBuilder();
18  builder.setUpdateItemFn(
19  [this, &data](const std::string& key, QTreeWidgetItem* item)
20  {
21  auto child = data->getElement(key);
22  this->update(item, key, child, data->getPath());
23  return true;
24  });
25 
26  builder.updateTreeWithContainer(parent, data->getAllKeys());
27  }
28 
29  void
30  DataTreeBuilder::updateTree(QTreeWidgetItem* parent, const aron::data::ListPtr& data)
31  {
32 
33  ListBuilder builder = getListBuilder();
34  builder.setUpdateItemFn(
35  [this, &data](size_t key, QTreeWidgetItem* item)
36  {
37  auto child = data->getElement(key);
38  this->update(item, std::to_string(key), child, data->getPath());
39  return true;
40  });
41 
42  builder.updateTreeWithContainer(parent, getIndex(data->childrenSize()));
43  }
44 
45  void
46  DataTreeBuilder::update(QTreeWidgetItem* item,
47  const std::string& key,
49  const aron::Path& parentPath)
50  {
51  if (data)
52  {
53  this->setRowTexts(item, key, data);
54 
56  {
57  updateTree(item, cast);
58  }
59  else if (auto cast = aron::data::List::DynamicCast(data))
60  {
61  updateTree(item, cast);
62  }
63  }
64  else
65  {
66  // Optional data?
67  this->setRowTexts(item, key, "(none)");
68  auto empty = std::make_shared<aron::data::Dict>(parentPath.withElement(key));
69  updateTree(item, empty);
70  }
71  }
72 } // namespace armarx::armem::gui::instance
armarx::aron::Path::withElement
Path withElement(const std::string &, bool escape=false) const
Definition: Path.cpp:163
armarx::armem::gui::instance::DataTreeBuilderBase::setRowTexts
void setRowTexts(QTreeWidgetItem *item, const std::string &key, const std::string &value, const std::string &typeName="") const
Definition: DataTreeBuilderBase.cpp:48
armarx::conversions::cast
CvT cast(const auto &pt)
Definition: opencv.h:33
armarx::armem::gui::instance::DataTreeBuilder::DataTreeBuilder
DataTreeBuilder()
Definition: DataTreeBuilder.cpp:10
armarx::armem::gui::instance::DataTreeBuilderBase::getListBuilder
ListBuilder getListBuilder() const
Definition: DataTreeBuilderBase.cpp:82
armarx::armem::gui::instance::DataTreeBuilder::update
void update(QTreeWidgetItem *item, const std::string &key, const aron::data::VariantPtr &data, const aron::Path &parentPath)
Definition: DataTreeBuilder.cpp:46
TreeWidgetBuilder.h
cxxopts::empty
bool empty(const std::string &s)
Definition: cxxopts.hpp:234
armarx::aron::data::detail::SpecializedVariantBase< data::dto::Dict, Dict >::DynamicCast
static PointerType DynamicCast(const VariantPtr &n)
Definition: SpecializedVariant.h:116
armarx::aron::Path
The Path class.
Definition: Path.h:35
armarx::aron::data::VariantPtr
std::shared_ptr< Variant > VariantPtr
Definition: forward_declarations.h:11
DataTreeBuilder.h
armarx::TreeWidgetBuilder::updateTreeWithContainer
void updateTreeWithContainer(ParentT *parent, const ContainerT &elements)
Update the tree with the iterable container.
Definition: TreeWidgetBuilder.h:355
armarx::armem::gui::instance
Definition: AronDataView.cpp:3
data
uint8_t data[1]
Definition: EtherCATFrame.h:68
armarx::TreeWidgetBuilder
A class to efficiently build and maintain sorted items of QTreeWidget or QTreeWidgetItem based on a s...
Definition: DataTreeBuilderBase.h:10
armarx::TreeWidgetBuilder::setUpdateItemFn
void setUpdateItemFn(UpdateItemFn updateItemFn)
Definition: TreeWidgetBuilder.h:73
armarx::armem::gui::instance::DataTreeBuilderBase::getDictBuilder
DictBuilder getDictBuilder() const
Definition: DataTreeBuilderBase.cpp:72
armarx::to_string
const std::string & to_string(const std::string &s)
Definition: StringHelpers.h:41
armarx::aron::data::DictPtr
std::shared_ptr< Dict > DictPtr
Definition: Dict.h:41
armarx::armem::gui::instance::DataTreeBuilder::updateTree
void updateTree(QTreeWidgetItem *parent, const aron::data::DictPtr &data)
Definition: DataTreeBuilder.cpp:15
armarx::aron::data::ListPtr
std::shared_ptr< List > ListPtr
Definition: List.h:40
armarx::armem::gui::instance::DataTreeBuilderBase::getIndex
std::vector< size_t > getIndex(size_t size) const
Definition: DataTreeBuilderBase.cpp:99