diff --git a/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp b/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp index 35be06032527f3d35d3b50468168842b82c8ab72..f67f869475e8b28b7357637e040436108fc47261 100644 --- a/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp +++ b/source/RobotAPI/libraries/armem_gui/MemoryViewer.cpp @@ -300,30 +300,42 @@ namespace armarx::armem::gui { ARMARX_IMPORTANT << "Resolving memory ID: " << id; + aron::typenavigator::ObjectNavigatorPtr segmentType; + wm::EntityInstance instance; try { const wm::Memory* data = getSingleMemoryData(id.memoryName); if (data) { + segmentType = data->getProviderSegment(id).aronType(); + if (id.hasInstanceIndex()) { - const wm::EntityInstance& instance = data->getEntityInstance(id); + instance = data->getEntityInstance(id); } else if (id.hasTimestamp()) { const wm::EntitySnapshot& snapshot = data->getEntitySnapshot(id); + instance = snapshot.getInstance(0); } else if (id.hasEntityName()) { const wm::Entity& entity = data->getEntity(id); + instance = entity.getLatestSnapshot().getInstance(0); } } + else + { + return; + } } catch (const armem::error::ArMemError& e) { ARMARX_WARNING << e.what(); statusLabel->setText(e.what()); } + + instanceGroup->view->addInstanceView(instance, segmentType); } void MemoryViewer::updateMemoryTree() diff --git a/source/RobotAPI/libraries/armem_gui/instance/GroupBox.cpp b/source/RobotAPI/libraries/armem_gui/instance/GroupBox.cpp index 187120df303ada4d116ccc1a2dfbd457619469a6..ff828d4437f042c7857332ec3957f9b5f55c60a5 100644 --- a/source/RobotAPI/libraries/armem_gui/instance/GroupBox.cpp +++ b/source/RobotAPI/libraries/armem_gui/instance/GroupBox.cpp @@ -19,6 +19,7 @@ namespace armarx::armem::gui::instance useTypeInfoCheckBox->setChecked(true); QHBoxLayout* checkBoxLayout = new QHBoxLayout(); + checkBoxLayout->setDirection(QBoxLayout::RightToLeft); checkBoxLayout->addWidget(useTypeInfoCheckBox); layout->addWidget(view); diff --git a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp index 90ff5082dbf2944593428d92181272889c471f0a..f7518291e2ad40f6e657af751e54c80644c88364 100644 --- a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp +++ b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.cpp @@ -104,7 +104,7 @@ namespace armarx::armem::gui::instance instance = &memory.getEntityInstance(id); if (useTypeInfo) { - aronType = memory.getCoreSegment(id.coreSegmentName).getProviderSegment(id.providerSegmentName).aronType(); + aronType = memory.getProviderSegment(id).aronType(); } } catch (const armem::error::ArMemError& e) @@ -140,6 +140,18 @@ namespace armarx::armem::gui::instance } + void InstanceView::addInstanceView(const wm::EntityInstance& instance, aron::typenavigator::ObjectNavigatorPtr aronType) + { + ARMARX_IMPORTANT << "Adding instance view for instance: " << instance.id(); + InstanceView* child = new InstanceView(); + child->setStatusLabel(statusLabel); + child->setUseTypeInfo(useTypeInfo); + splitter->addWidget(child); + + child->update(instance, aronType); + } + + void InstanceView::updateInstanceID(const MemoryID& id) { const std::vector<std::string> items = id.getAllItems(); diff --git a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h index dea3580b42d787d9da20ea8f0e98b8b20a39e8e1..371112ee51b44b1174971c1648958ae36904072e 100644 --- a/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h +++ b/source/RobotAPI/libraries/armem_gui/instance/InstanceView.h @@ -38,6 +38,8 @@ namespace armarx::armem::gui::instance void update(const wm::EntityInstance& instance, aron::typenavigator::ObjectNavigatorPtr aronType = nullptr); void update(); + void addInstanceView(const wm::EntityInstance& instance, aron::typenavigator::ObjectNavigatorPtr aronType = nullptr); + signals: