40 const char* locale =
"C";
41 ss.imbue(std::locale(locale));
42 ss << std::fixed << std::setprecision(precision) << number;
51 AronTreeWidgetSetterVisitor::checkTreeWidgetItemForSimilarName(
const std::string& name)
const
59 auto descr = castedThis->aronType->getDescriptor();
65 std::string
n = el->text(0).toStdString();
68 ARMARX_WARNING_S <<
"Could not set a tree widget value for the element with key '"
69 << name <<
"' because it is different from the expected name '" <<
n
80 if (((
size_t)parent->childCount()) < numChildren)
84 size_t childrenToAdd = numChildren - parent->childCount();
85 for (
size_t j = 0; j < childrenToAdd; ++j)
87 AronTreeWidgetCreatorVisitor childCreator(parent);
92 else if ((
size_t)parent->childCount() > numChildren)
94 size_t numChilds = (size_t)parent->childCount() - numChildren;
96 for (
size_t j = 0; j < numChilds; ++j)
98 parent->removeChild(parent->child(parent->childCount() - 1));
108 if (i->getPath().size() == 0 ||
109 checkTreeWidgetItemForSimilarName(i->getPath().getLastElement()))
114 adjustNumberOfChildren(aronTreeWidget, i->childrenSize());
118 for (
const auto& [key, value] : i->getElements())
120 el->child(
x)->setText(0, {key.c_str()});
126 if (el->
aronType && el->
aronType->getMaybe() != armarx::aron::type::Maybe::NONE)
128 el->setCheckState(2, Qt::CheckState::Checked);
137 if (checkTreeWidgetItemForSimilarName(i->getPath().getLastElement()))
141 adjustNumberOfChildren(aronTreeWidget, i->childrenSize());
144 for (
const auto& value : i->getElements())
148 auto* currChild = el->child(
x);
150 currChild->setText(0, listNum.c_str());
156 aronTreeWidget->setText(1, numElemsText);
158 auto currFont = aronTreeWidget->font(1);
159 currFont.setItalic(
true);
160 aronTreeWidget->setFont(1, currFont);
162 if (el->
aronType && el->
aronType->getMaybe() != armarx::aron::type::Maybe::NONE)
164 el->setCheckState(2, Qt::CheckState::Checked);
171 const std::shared_ptr<armarx::aron::type::Matrix>& matrixType,
175 auto elemType = matrixType->getElementType();
176 auto* rawData = arr->getData();
178 auto toString = [elemType, rawData](
size_t elementNr) -> std::string
182 case aron::type::matrix::ElementType::FLOAT32:
184 static_assert(
sizeof(
float) == 4);
185 float* interpreted =
reinterpret_cast<float*
>(rawData);
186 float laundered = std::launder(interpreted)[elementNr];
189 case aron::type::matrix::ElementType::FLOAT64:
191 static_assert(
sizeof(double) == 8);
192 double* interpreted =
reinterpret_cast<double*
>(rawData);
193 float laundered = std::launder(interpreted)[elementNr];
196 case aron::type::matrix::ElementType::UINT8:
198 auto* interpreted =
reinterpret_cast<uint8_t*
>(rawData);
199 auto laudered = std::launder(interpreted)[elementNr];
202 case aron::type::matrix::ElementType::UINT16:
204 auto* interpreted =
reinterpret_cast<uint16_t*
>(rawData);
205 auto laudered = std::launder(interpreted)[elementNr];
208 case aron::type::matrix::ElementType::UINT32:
210 auto* interpreted =
reinterpret_cast<uint32_t*
>(rawData);
211 auto laudered = std::launder(interpreted)[elementNr];
214 case aron::type::matrix::ElementType::INT8:
216 auto* interpreted =
reinterpret_cast<int8_t*
>(rawData);
217 auto laudered = std::launder(interpreted)[elementNr];
220 case aron::type::matrix::ElementType::INT16:
222 int16_t* interpreted =
reinterpret_cast<int16_t*
>(rawData);
223 int16_t laudered = std::launder(interpreted)[elementNr];
226 case aron::type::matrix::ElementType::INT32:
228 int32_t* interpreted =
reinterpret_cast<int32_t*
>(rawData);
229 int32_t laudered = std::launder(interpreted)[elementNr];
232 case aron::type::matrix::ElementType::INT64:
234 int64_t* interpreted =
reinterpret_cast<int64_t*
>(rawData);
235 int64_t laudered = std::launder(interpreted)[elementNr];
243 for (
size_t row = 0; (int)row < matrixType->getRows(); ++row)
245 for (
size_t col = 0; (int)col < matrixType->getCols(); ++col)
247 matrixWidget->
setText(row, col, toString(row * matrixType->getCols() + col));
254 std::shared_ptr<armarx::aron::type::Quaternion>& quatType,
258 auto elemType = quatType->getElementType();
259 auto rawData = arr->getData();
260 auto shape = arr->getShape();
262 auto toString = [elemType, rawData](
size_t elementNr) -> std::string
266 case aron::type::quaternion::ElementType::FLOAT32:
268 static_assert(
sizeof(
float) == 4);
269 float* interpreted =
reinterpret_cast<float*
>(rawData);
270 float laundered = std::launder(interpreted)[elementNr];
273 case aron::type::quaternion::ElementType::FLOAT64:
275 static_assert(
sizeof(double) == 8);
276 double* interpreted =
reinterpret_cast<double*
>(rawData);
278 float laundered = std::launder(interpreted)[elementNr];
284 for (
size_t i = 0; i < 4; ++i)
298 auto matrixCast = aron::type::Matrix::DynamicCast(el->aronType);
301 auto* rootWidget = el->treeWidget();
306 if (matrixCast && matrixWidget)
310 else if (quaternionCast && quaternionWidget)
317 <<
"we do not support raw NDArrays. Ask Fabian Peller for more information.";
320 if (el->aronType && el->aronType->getMaybe() != armarx::aron::type::Maybe::NONE)
322 el->setCheckState(2, Qt::CheckState::Checked);
330 if (checkTreeWidgetItemForSimilarName(i->getPath().getLastElement()))
334 auto newText = QString::fromStdString(
usString<int>(i->getValue()));
338 enumWidget->setText(newText);
343 el->setText(1, newText);
346 if (el->
aronType && el->
aronType->getMaybe() != armarx::aron::type::Maybe::NONE)
348 el->setCheckState(2, Qt::CheckState::Checked);
357 if (checkTreeWidgetItemForSimilarName(i->getPath().getLastElement()))
360 el->setText(1, QString::fromStdString(
usString<long>(i->getValue())));
362 if (el->
aronType && el->
aronType->getMaybe() != armarx::aron::type::Maybe::NONE)
364 el->setCheckState(2, Qt::CheckState::Checked);
372 if (checkTreeWidgetItemForSimilarName(i->getPath().getLastElement()))
376 QString
qstr = QString::fromStdString(repr);
377 el->setText(1,
qstr);
378 if (el->
aronType && el->
aronType->getMaybe() != armarx::aron::type::Maybe::NONE)
380 el->setCheckState(2, Qt::CheckState::Checked);
389 if (checkTreeWidgetItemForSimilarName(i->getPath().getLastElement()))
394 if (el->
aronType && el->
aronType->getMaybe() != armarx::aron::type::Maybe::NONE)
396 el->setCheckState(2, Qt::CheckState::Checked);
405 if (checkTreeWidgetItemForSimilarName(i->getPath().getLastElement()))
408 el->setText(1, QString::fromStdString(
usString<bool>(i->getValue())));
410 if (el->
aronType && el->
aronType->getMaybe() != armarx::aron::type::Maybe::NONE)
412 el->setCheckState(2, Qt::CheckState::Checked);
421 if (checkTreeWidgetItemForSimilarName(i->getPath().getLastElement()))
424 el->setText(1, QString::fromStdString(i->getValue()));
426 if (el->
aronType && el->
aronType->getMaybe() != armarx::aron::type::Maybe::NONE)
428 el->setCheckState(2, Qt::CheckState::Checked);
436 ARMARX_WARNING_S <<
"Received an unknown type when trying to set a skill argument type "
437 "from an aron data object.";
static Quaternion & DynamicCast(Variant &n)
#define ARMARX_CHECK(expression)
Shortcut for ARMARX_CHECK_EXPRESSION.
#define ARMARX_CHECK_NOT_NULL(ptr)
This macro evaluates whether ptr is not null and if it turns out to be false it will throw an Express...
#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...
#define ARMARX_ERROR
The logging level for unexpected behaviour, that must be fixed.
#define ARMARX_WARNING_S
The logging level for unexpected behaviour, but not a serious problem.
std::shared_ptr< Dict > DictPtr
std::shared_ptr< List > ListPtr
std::shared_ptr< Bool > BoolPtr
std::shared_ptr< Float > FloatPtr
std::shared_ptr< NDArray > NDArrayPtr
std::shared_ptr< Long > LongPtr
std::shared_ptr< Int > IntPtr
void visit(VisitorImplementation &v, typename VisitorImplementation::Input &o)
std::shared_ptr< Double > DoublePtr
std::shared_ptr< String > StringPtr
void visit(VisitorImplementation &v, typename VisitorImplementation::Input &t)
The visit function.
QString generateNumElementsText(int num)
void visitQuaternion(QuaternionWidget *quatWidget, std::shared_ptr< armarx::aron::type::Quaternion > &quatType, const aron::data::NDArrayPtr &arr)
void visitMatrix(EditMatrixWidget *matrixWidget, const std::shared_ptr< armarx::aron::type::Matrix > &matrixType, const aron::data::NDArrayPtr &arr)
This file offers overloads of toIce() and fromIce() functions for STL container types.
constexpr auto n() noexcept
typename VisitorBase< const data::VariantPtr >::Input Input