3#include <QTreeWidgetItem>
5#include <RobotAPI/libraries/armem/aron/MemoryID.aron.generated.h>
31 [
this, &childType, &
data](
const std::string& key, QTreeWidgetItem* item)
33 auto childData =
data.getElement(key);
51 [
this, &
data](
const std::string& key, QTreeWidgetItem* item)
53 auto childData =
data.getElement(key);
71 [
this, &type](
const std::string& key) -> QTreeWidgetItem*
87 [
this, &type, &
data](
const std::string& key, QTreeWidgetItem* item)
89 auto childData =
data.getElement(key);
113 auto children =
data.getChildren();
117 [
this, &children, &childType](
size_t key, QTreeWidgetItem* item)
119 if (
auto childData = children.at(key))
121 this->
updateDispatch(item, std::to_string(key), childType, childData);
139 [
this, &
data, &childTypes](
size_t i, QTreeWidgetItem* item)
141 auto childType = i == 0 ? childTypes.first : childTypes.second;
142 auto childData =
data.getElement(
static_cast<unsigned int>(i));
144 this->
updateDispatch(item, std::to_string(i), childType, childData);
163 [
this, &
data, &childTypes](
size_t i, QTreeWidgetItem* item)
165 auto childType = (i < childTypes.size()) ? childTypes.at(i) :
nullptr;
166 auto childData =
data.getElement(
static_cast<unsigned int>(i));
168 this->
updateDispatch(item, std::to_string(i), childType, childData);
181 const std::string& key,
197 const std::string& key,
201 using namespace aron;
203 const std::string value =
206 std::string typeName;
207 if (type::IntEnumPtr enumType = type::IntEnum::DynamicCast(type))
209 typeName = enumType->getEnumName();
213 typeName = type->getFullName();
216 switch (type->getMaybe())
218 case aron::type::Maybe::OPTIONAL:
219 typeName =
"Optional[" + typeName +
"]";
230 item->setData(
columnType, Qt::UserRole,
static_cast<int>(type->getDescriptor()));
236 if (memoryIDItem && dictData)
238 arondto::MemoryID
dto;
240 dto.fromAron(dictData);
252 const auto t = type::Object::DynamicCast(type))
257 const auto t = type::Dict::DynamicCast(type))
262 const auto t = type::List::DynamicCast(type))
267 const auto t = type::Pair::DynamicCast(type))
272 const auto t = type::Tuple::DynamicCast(type))
277 const auto t = type::AnyObject::DynamicCast(type))
285 const std::string& key,
313 template <
class DataT,
class TypeT>
std::vector< size_t > getIndex(size_t size) const
armarx::TreeWidgetBuilder< std::string > DictBuilder
ListBuilder getListBuilder() const
armarx::TreeWidgetBuilder< size_t > ListBuilder
DictBuilder getDictBuilder() const
void setRowTexts(QTreeWidgetItem *item, const std::string &key, const std::string &value, const std::string &typeName="") const
QTreeWidgetItem * makeItem(const std::string &key) const
void updateTree(QTreeWidgetItem *parent, const aron::data::DictPtr &data)
void updateTree(QTreeWidgetItem *parent, const aron::type::Dict &type, const aron::data::Dict &data)
void updateDispatch(QTreeWidgetItem *item, const std::string &key, const aron::type::VariantPtr &type, const aron::data::VariantPtr &data)
void update(QTreeWidgetItem *item, const std::string &key, const aron::type::VariantPtr &type, const aron::data::VariantPtr &data)
void _updateTree(QTreeWidgetItem *item, TypeT &type, DataT &data)
static std::string getValue(const type::VariantPtr &type, const data::VariantPtr &data)
static PointerType DynamicCastAndCheck(const VariantPtr &n)
static PointerType DynamicCast(const VariantPtr &n)
VariantPtr getAcceptedType() const
VariantPtr getAcceptedType() const
VariantPtr getMemberType(const std::string &) const
bool hasMemberType(const std::string &) const
std::pair< VariantPtr, VariantPtr > getAcceptedTypes() const
std::vector< VariantPtr > getAcceptedTypes() const
#define ARMARX_CHECK_EQUAL(lhs, rhs)
This macro evaluates whether lhs is equal (==) rhs and if it turns out to be false it will throw an E...
std::string sanitizeTypeName(const std::string &typeName)
QStringList serializePath(const aron::Path &path)
const std::string rawMemoryIDTypeName
const std::string sanitizedMemoryIDTypeName
std::shared_ptr< Variant > VariantPtr
std::shared_ptr< Variant > VariantPtr
void fromAron(const T &dto, T &bo)